[
  {
    "path": ".dockerignore",
    "content": ".DS_Store\n.idea\n.trash-cache\nbin\nstate\nbuild\nimages/*/build\nscripts/images/*/dist/\ndist\ntests/integration/.venv*\ntests/integration/.tox\n*/*/*/*.pyc\n*/*/*/__pycache__\n.trash-cache\nvendor/*/*/*/.git\ntmp\ndocs/_site\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "**BurmillaOS Version: (ros os version)**\n\n**Where are you running BurmillaOS? (docker-machine, AWS, GCE, baremetal, etc.)**\n\n**Which processor architecture you are using?**\n\n**Do you use some extra hardware? (GPU, etc)?**\n\n**Which console you use (default, ubuntu, centos, etc..)**\n\n**Do you use some service(s) which are not enabled by default?**\n\n**Have you installed some extra tools to console?**\n\n**Do you use some other customizations?**\n\n**Please share copy of your cloud-init (remember remove all sensitive data first)**\n```yaml\n<replace with sudo ros config export output>\n```\n"
  },
  {
    "path": ".github/workflows/create-release.yml",
    "content": "name: release\n\non:\n  workflow_dispatch:\n\njobs:\n  build:\n    runs-on: ubuntu-22.04\n    steps:\n    - uses: actions/checkout@v2\n      with:\n        fetch-depth: '0'\n\n    - name: Install github-release\n      run: |\n        sudo wget https://github.com/github-release/github-release/releases/download/v0.9.0/linux-amd64-github-release.bz2 -O /usr/local/bin/github-release.bz2\n        sudo bunzip2 /usr/local/bin/github-release.bz2\n        sudo chmod 0755 /usr/local/bin/github-release\n\n    - name: Build OS\n      run: |\n        export VERSION=$(git describe --exact-match --tags $(git log -n1 --pretty='%h'))\n        if [ -z \"$VERSION\" ]; then\n          echo \"Build is not started from tag. Will exit...\"\n          exit 1\n        fi\n        export OS_FIRMWARE=${{ github.event.inputs.firmware }}\n        export ARCH=amd64\n        make release\n\n    - name: Login to DockerHub\n      uses: docker/login-action@v1\n      with:\n        username: ${{ secrets.DOCKER_USERNAME }}\n        password: ${{ secrets.DOCKER_PASSWORD }}\n\n    - name: Publish release\n      run: ${PWD}/dist/publish.sh\n      env:\n        GITHUB_TOKEN: ${{ secrets.OS_RELEASE_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/pull-request-validation.yml",
    "content": "name: PR\non: pull_request\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v2\n\n    - name: Test with dapper\n      run: |\n        make pr-validation\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n/assets/ca.crt\n/state\n/bin\n/build\n/dist\n/gopath\n/images/*/build\n/scripts/images/vmware/assets\n.dockerfile\n*.swp\n/tests/integration/MANIFEST\n/tests/integration/.venv*\n/tests/integration/.tox\n/tests/integration/.idea\n*.pyc\n__pycache__\n/.dapper\n/.trash-cache\n/trash.lock\n.idea\n.trash-conf\n/Dockerfile.dapper*\n!/Dockerfile.dapper\nscripts/images/raspberry-pi-hypriot64/Dockerfile.dapper*\n"
  },
  {
    "path": "Dockerfile.dapper",
    "content": "FROM ubuntu:bionic\n# FROM arm64=arm64v8/ubuntu:bionic\n\n# get the apt-cacher proxy set\nARG APTPROXY=\nARG APT_ARCHIVE_SOURCE=\"archive.ubuntu.com\"\n\nRUN echo \"Acquire::http { Proxy \\\"$APTPROXY\\\"; };\" >> /etc/apt/apt.conf.d/01proxy \\\n    && cat /etc/apt/apt.conf.d/01proxy \\\n    && sed -i \"s|archive.ubuntu.com|${APT_ARCHIVE_SOURCE}|\" /etc/apt/sources.list \\\n    && cat /etc/apt/sources.list \\\n    && apt-get update \\\n    && apt-get install -y --no-install-recommends \\\n        build-essential \\\n        ca-certificates \\\n        cpio \\\n        curl \\\n        dosfstools \\\n        gccgo \\\n        genisoimage \\\n        gettext \\\n        git \\\n        isolinux \\\n        less \\\n        libblkid-dev \\\n        libmount-dev \\\n        libselinux1-dev \\\n        locales \\\n        module-init-tools \\\n        mtools \\\n        openssh-client \\\n        pkg-config \\\n        qemu \\\n        qemu-kvm \\\n        rsync \\\n        sudo \\\n        syslinux-common \\\n        vim \\\n        wget \\\n        xorriso \\\n        xz-utils \\\n        telnet\n\n########## Dapper Configuration #####################\n\nENV DAPPER_ENV VERSION DEV_BUILD RUNTEST DEBUG APTPROXY ENGINE_REGISTRY_MIRROR KERNEL_CHECK APPEND_SYSTEM_IMAGES APPEND_USER_IMAGES\nENV DAPPER_DOCKER_SOCKET true\nENV DAPPER_SOURCE /go/src/github.com/burmilla/os\nENV DAPPER_OUTPUT ./bin ./dist ./build/initrd ./build/kernel\nENV DAPPER_RUN_ARGS --privileged\nENV TRASH_CACHE ${DAPPER_SOURCE}/.trash-cache\nENV SHELL /bin/bash\nWORKDIR ${DAPPER_SOURCE}\n\n########## General Configuration #####################\nARG DAPPER_HOST_ARCH=amd64\nARG HOST_ARCH=${DAPPER_HOST_ARCH}\nARG ARCH=${HOST_ARCH}\n\nARG OS_REPO=burmilla\nARG HOSTNAME_DEFAULT=burmilla\nARG DISTRIB_ID=BurmillaOS\n\nARG KERNEL_VERSION=5.10.248-burmilla\nARG KERNEL_URL_amd64=https://github.com/burmilla/os-kernel/releases/download/v${KERNEL_VERSION}/linux-${KERNEL_VERSION}-x86.tar.gz\nARG KERNEL_URL_arm64=https://github.com/burmilla/os-kernel/releases/download/v${KERNEL_VERSION}/linux-${KERNEL_VERSION}-arm64.tar.gz\n\nARG BUILD_DOCKER_URL_amd64=https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz\nARG BUILD_DOCKER_URL_arm64=https://download.docker.com/linux/static/stable/aarch64/docker-26.1.4.tgz\n\nARG OS_RELEASES_YML=https://raw.githubusercontent.com/burmilla/releases/v2.0.x\n\nARG OS_SERVICES_REPO=https://raw.githubusercontent.com/${OS_REPO}/os-services\nARG IMAGE_NAME=${OS_REPO}/os\n\nARG OS_CONSOLE=default\nARG OS_AUTOFORMAT=false\nARG OS_FIRMWARE=true\n\nARG OS_BASE_URL_amd64=https://github.com/burmilla/os-base/releases/download/v2023.05-1/os-base_amd64.tar.xz\nARG OS_BASE_URL_arm64=https://github.com/burmilla/os-base/releases/download/v2023.05-1/os-base_arm64.tar.xz\n\nARG OS_INITRD_BASE_URL_amd64=https://github.com/burmilla/os-initrd-base/releases/download/v2023.02.10-2/os-initrd-base-amd64.tar.gz\nARG OS_INITRD_BASE_URL_arm64=https://github.com/burmilla/os-initrd-base/releases/download/v2023.02.10-2/os-initrd-base-arm64.tar.gz\n\nARG SYSTEM_DOCKER_VERSION=17.06.107\nARG SYSTEM_DOCKER_URL_amd64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-amd64-${SYSTEM_DOCKER_VERSION}.tgz\nARG SYSTEM_DOCKER_URL_arm64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-arm64-${SYSTEM_DOCKER_VERSION}.tgz\n\nARG AZURE_SERVICE=false\nARG PROXMOXVE_SERVICE=false\nARG SKIP_BUILD=false\n######################################################\n\n# Set up environment and export all ARGS as ENV\nENV ARCH=${ARCH} \\\n    HOST_ARCH=${HOST_ARCH} \\\n    XZ_DEFAULTS=\"-T0\"\n\nENV BUILD_DOCKER_URL=BUILD_DOCKER_URL_${ARCH} \\\n    BUILD_DOCKER_URL_amd64=${BUILD_DOCKER_URL_amd64} \\\n    BUILD_DOCKER_URL_arm64=${BUILD_DOCKER_URL_arm64} \\\n    DAPPER_HOST_ARCH=${DAPPER_HOST_ARCH} \\\n    DISTRIB_ID=${DISTRIB_ID} \\\n    DOWNLOADS=/usr/src/downloads \\\n    GOPATH=/go \\\n    GO_VERSION=1.19.5 \\\n    GO111MODULE=off \\\n    GOARCH=$ARCH \\\n    HOSTNAME_DEFAULT=${HOSTNAME_DEFAULT} \\\n    IMAGE_NAME=${IMAGE_NAME} \\\n    KERNEL_VERSION=${KERNEL_VERSION} \\\n    KERNEL_URL=KERNEL_URL_${ARCH} \\\n    KERNEL_URL_amd64=${KERNEL_URL_amd64} \\\n    KERNEL_URL_arm64=${KERNEL_URL_arm64} \\\n    OS_BASE_URL=OS_BASE_URL_${ARCH} \\\n    OS_BASE_URL_amd64=${OS_BASE_URL_amd64} \\\n    OS_BASE_URL_arm64=${OS_BASE_URL_arm64} \\\n    OS_INITRD_BASE_URL=OS_INITRD_BASE_URL_${ARCH} \\\n    OS_INITRD_BASE_URL_amd64=${OS_INITRD_BASE_URL_amd64} \\\n    OS_INITRD_BASE_URL_arm64=${OS_INITRD_BASE_URL_arm64} \\\n    OS_RELEASES_YML=${OS_RELEASES_YML} \\\n    OS_REPO=${OS_REPO} \\\n    OS_SERVICES_REPO=${OS_SERVICES_REPO} \\\n    OS_CONSOLE=${OS_CONSOLE} \\\n    OS_AUTOFORMAT=${OS_AUTOFORMAT} \\\n    OS_FIRMWARE=${OS_FIRMWARE} \\\n    REPO_VERSION=master \\\n    SYSTEM_DOCKER_URL=SYSTEM_DOCKER_URL_${ARCH} \\\n    SYSTEM_DOCKER_URL_amd64=${SYSTEM_DOCKER_URL_amd64} \\\n    SYSTEM_DOCKER_URL_arm64=${SYSTEM_DOCKER_URL_arm64} \\\n    AZURE_SERVICE=${AZURE_SERVICE} \\\n    PROXMOXVE_SERVICE=${PROXMOXVE_SERVICE} \\\n    SKIP_BUILD=${SKIP_BUILD}\nENV PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH\nENV GO111MODULE=off\n\nRUN mkdir -p ${DOWNLOADS}\n\n# Download kernel\nRUN rm /bin/sh && ln -s /bin/bash /bin/sh\nRUN echo \"... Downloading  ${!KERNEL_URL}\"; \\\n    if [ \"${!KERNEL_URL}\" != \"skip\" ]; then \\\n        curl -fL ${!KERNEL_URL} > ${DOWNLOADS}/kernel.tar.gz \\\n    ;fi\n\n# Install Go\nRUN curl -L https://dl.google.com/go/go${GO_VERSION}.linux-${HOST_ARCH}.tar.gz | tar -xzf - -C /usr/local && \\\n    go get github.com/burmilla/trash\n\n# Install Host Docker\nRUN curl -fL ${!BUILD_DOCKER_URL} > /tmp/docker.tgz && \\\n    tar zxvf /tmp/docker.tgz --strip-components=1 -C /usr/bin/ && \\\n    chmod +x /usr/bin/docker\n\n# Install dapper\nRUN curl -sL https://releases.rancher.com/dapper/v0.5.4/dapper-`uname -s`-`uname -m | sed 's/arm.*/arm/'` > /usr/bin/dapper && \\\n    chmod +x /usr/bin/dapper\n\nRUN cd ${DOWNLOADS} && \\\n    curl -pfL ${!OS_BASE_URL} | tar xvJf -\n\nENTRYPOINT [\"./scripts/entry\"]\nCMD [\"ci\"]\n"
  },
  {
    "path": "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"
  },
  {
    "path": "Makefile",
    "content": "TARGETS := $(shell ls scripts | grep -vE 'clean|run|help|release*|build-moby|run-moby')\n\n.dapper:\n\t@echo Downloading dapper\n\t@curl -sL https://releases.rancher.com/dapper/latest/dapper-`uname -s`-`uname -m|sed 's/v7l//'` > .dapper.tmp\n\t@@chmod +x .dapper.tmp\n\t@./.dapper.tmp -v\n\t@mv .dapper.tmp .dapper\n\n$(TARGETS): .dapper\n\t./.dapper $@\n\npr-validation: .dapper\n\tARCH=\"amd64\" \\\n\tKERNEL_URL_amd64=\"skip\" \\\n\tSKIP_BUILD=\"true\" \\\n\t./.dapper ci\n\ntrash: .dapper\n\t./.dapper -m bind trash\n\ntrash-keep: .dapper\n\t./.dapper -m bind trash -k\n\ndeps: trash\n\nbuild/initrd/.id: .dapper\n\t./.dapper prepare\n\nrun: build/initrd/.id .dapper\n\t./.dapper -m bind build-target\n\t./scripts/run\n\nbuild-moby:\n\t./scripts/build-moby\n\nrun-moby:\n\t./scripts/run-moby\n\nshell-bind: .dapper\n\t./.dapper -m bind -s\n\nclean:\n\t@./scripts/clean\n\nrelease: .dapper release-build\n\nrelease-build:\n\tmkdir -p dist\n\t./.dapper release\n\nrpi64: .dapper\n\t./scripts/release-rpi64\n\nvmware: .dapper\n\tmkdir -p dist\n\tOS_FIRMWARE=\"false\" \\\n\tAPPEND_SYSTEM_IMAGES=\"burmilla/os-openvmtools:11.2.0-5\" \\\n\t./.dapper release-vmware\n\nhyperv: .dapper\n\tmkdir -p dist\n\tOS_FIRMWARE=\"false\" \\\n\tAPPEND_SYSTEM_IMAGES=\"burmilla/os-hypervvmtools:v4.14.206-burmilla-1\" \\\n\t./.dapper release-hyperv\n\nazurebase: .dapper\n\tmkdir -p dist\n\tAZURE_SERVICE=\"true\" \\\n\tOS_FIRMWARE=\"false\" \\\n\tAPPEND_SYSTEM_IMAGES=\"burmilla/os-hypervvmtools:v4.14.206-burmilla-1 burmilla/os-waagent:v2.2.49.2-1\" \\\n\t./.dapper release-azurebase\n\n4glte: .dapper\n\tmkdir -p dist\n\tAPPEND_SYSTEM_IMAGES=\"burmilla/os-modemmanager:v1.6.4-1\" \\\n\t./.dapper release-4glte\n\nproxmoxve: .dapper\n\tmkdir -p dist\n\tPROXMOXVE_SERVICE=\"true\" \\\n\tOS_FIRMWARE=\"false\" \\\n\tAPPEND_SYSTEM_IMAGES=\"burmilla/os-qemuguestagent:v3.1.0-1\" \\\n\t./.dapper release-proxmoxve\n\nhelp:\n\t@./scripts/help\n\n.DEFAULT_GOAL := default\n\n.PHONY: $(TARGETS)\n"
  },
  {
    "path": "README.md",
    "content": "# BurmillaOS\n\nBurmillaOS is successor of [RancherOS](//github.com/rancher/os) which reached end of life.\n\n![GitHub release](https://img.shields.io/github/v/release/burmilla/os.svg)\n[![Docker Pulls](https://img.shields.io/docker/pulls/burmilla/os.svg)](https://store.docker.com/community/images/burmilla/os)\n[![Go Report Card](https://goreportcard.com/badge/github.com/burmilla/os)](https://goreportcard.com/badge/github.com/burmilla/os)\n\nThe smallest, easiest way to run Docker in production at scale.  Everything in BurmillaOS is a container managed by Docker.  This includes system services such as udev and rsyslog.  BurmillaOS includes only the bare minimum amount of software needed to run Docker.  This keeps the binary download of BurmillaOS very small.  Everything else can be pulled in dynamically through Docker.\n\n## How this works\n\nEverything in BurmillaOS is a Docker container.  We accomplish this by launching two instances of\nDocker.  One is what we call the system Docker which runs as the first process.  System Docker then launches\na container that runs the user Docker.  The user Docker is then the instance that gets primarily\nused to create containers.  We created this separation because it seemed logical and also\nit would really be bad if somebody did `docker rm -f $(docker ps -qa)` and deleted the entire OS.\n\n![How it works](./howitworks.png \"How it works\")\n\n## Documentation for BurmillaOS\n\nPlease refer to our [BurmillaOS Documentation](https://burmilla.github.io) website to read all about BurmillaOS. It has detailed information on how BurmillaOS works, getting-started and other details.\n\nPlease submit any **BurmillaOS** bugs, issues, and feature requests to [burmilla/os](//github.com/burmilla/os/issues).\n\n## License\n\nCopyright (c) 2020-2024 [BurmillaOS community](https://burmillaos.org)\n\nCopyright (c) 2014-2020 [Rancher Labs, Inc.](http://rancher.com)\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](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": "assets/rancher.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAvOcPbLWcoi0Kfw5FTun6sIkoWHI9QpSnbQqoB7X/jy6SZBUX\nkhbvMttcvnr9PYLEjEUa4xe8rdKVB1es53EIVXqrGbYHOVmxC2NgzmFBpkZ/wgrz\n216L6Aa0I0qK6pQZqbj8LErWC6/dl5/lVbDDUlCHoB2Ntg6YRmwyhvOb6ygfB8VM\nRiA8RQXbP7hPBYUsvsbKMk/41GQyuqYKth5xpeg/NVYiJSnnKTqVpVtwfn3mvfQA\nzcmTVbw82xxOaXCN1UcPLufVpqVjlIE+qmnDVQApfBqqQb0JPLMOzv1/Q0mRwimn\n3g/RuZPhmGwFM/dnylq8f5Tl31Fz0t/nPHUSBQIDAQABAoIBAGS4EhpVTvmNaF5M\nPpoP2TFNQCzAZHdeiVJzbxoFaQhvvXANau7iuZD1MyMAsouccK2VnvtcSaaoc/th\nPPh95QKmkBn6Wymx79rxlskTRAyi5DWS32ikpZYGFQAIG79tTa2XyyTWlf/POihB\nAedJgysdcuLlPwzGBVzvDZW0x/p+Ejs+etW0QBb1swcqheM9cc6RBoF/aLPyUK4i\n1ztVuzJTvTTV16xTNF93XFS177Y6toXZEaCBpuMg/XX0y0Fj4iAkSIqJoEV6MKeI\nSqQad/sVsLTwCsW+/so7jfRWtm5xRJOtNxpSUrGrNYuRBUr4VlXNZT4TOOS9BFEF\nAyTSBcECgYEA+9wnSZjEFgz/8x/xsyPCsKBhCu6nfV/mxVgTrRXuMtpzujAnKXsf\njEh1vtKH9UpbwM+gRYxZL+ZVjB2uE523hoDxqDfpVnWfItNs4OU4qougqUHBdsZe\n0t0Xjyl/17f7g7BWMXSWhTcoDlirGHtjvIDh0CXVfWvtcLaiQj0dAfUCgYEAwAH6\nJPZotxue8bUyglCrOyg3P0G9QgeQSabbCCKDyiGzKYTXqx1vxEZ+0RCKSg0D/spK\n2x7V0wearEOX/rCuQVw2r4oltUmbmq+BHYnXXz0hM0TMJs1BPZhvMhPGWq0lm1WL\nNKfAOU64hZQAPwf3Z+3B5jywQfOmwssOfAXr9dECgYBroKrRUo0I90kxNkdtTCzY\nmdCegVnlw+O0FW1jG+oMpTmrKQSzP0A+DID0qLcc5UfMX22YCt/aDk4kcFKBY3aX\n7eZXAn2eSulUUpFGke3jQ4PGkKkB/sdqyLxWm19caez7W5GZ1L618toVN2L2NVRr\nq4/UCTbwP/zZm9I/CCqrOQKBgQClQk5hd/BDAbP5B+L0RKhMX13FxTg217m5mrJU\nuxhBZmYFK0BRGCH1hlNqb9kGyVMR/l0VYeHaI2ZeNENjRACHYu3ygm3YLgWOytXP\nba+AWmXz8ZfhIbKwaD30lQ6ZRwPiQWtyI5wP9xBccDkSBzJLMlk8aCmwahyy9gB+\ngL5JsQKBgBT1ILAQvK2IGmwHFvUApXruARIvU4lrMQJ9tpYiPtpSNAPP73jUac68\nthh3zQYJfYDQbdbwnF41X6WPvbYwb7uH5PG/T2A78YSZQyMpCk+enaf8o0dOZEAH\njhnrn3KQFCRQXRUfm9O6N+S04S4uXT8++vlZucW7jEq8GW0nYxj/\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "assets/rancher.key.pub",
    "content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF\n"
  },
  {
    "path": "assets/scripts_ssh_config",
    "content": "StrictHostKeyChecking no\nUserKnownHostsFile /dev/null\nLogLevel quiet\n"
  },
  {
    "path": "cmd/cloudinitexecute/authorize_ssh_keys.go",
    "content": "package cloudinitexecute\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nconst (\n\tsshDirName             = \".ssh\"\n\tauthorizedKeysFileName = \"authorized_keys\"\n)\n\nfunc authorizeSSHKeys(username string, authorizedKeys []string, name string) error {\n\tvar uid int\n\tvar gid int\n\tvar homeDir string\n\n\tbytes, err := ioutil.ReadFile(\"/etc/passwd\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, line := range strings.Split(string(bytes), \"\\n\") {\n\t\tif strings.HasPrefix(line, username) {\n\t\t\tsplit := strings.Split(line, \":\")\n\t\t\tif len(split) < 6 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tuid, err = strconv.Atoi(split[2])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tgid, err = strconv.Atoi(split[3])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thomeDir = split[5]\n\t\t}\n\t}\n\n\tsshDir := path.Join(homeDir, sshDirName)\n\tauthorizedKeysFile := path.Join(sshDir, authorizedKeysFileName)\n\n\tif _, err := os.Stat(sshDir); os.IsNotExist(err) {\n\t\tif err = os.Mkdir(sshDir, 0700); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\tif err = os.Chown(sshDir, uid, gid); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, authorizedKey := range authorizedKeys {\n\t\tif err = authorizeSSHKey(authorizedKey, authorizedKeysFile, uid, gid); err != nil {\n\t\t\tlog.Errorf(\"Failed to authorize SSH key %s: %v\", authorizedKey, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc authorizeSSHKey(authorizedKey, authorizedKeysFile string, uid, gid int) error {\n\tauthorizedKeysFileInfo, err := os.Stat(authorizedKeysFile)\n\tif os.IsNotExist(err) {\n\t\tkeysFile, err := os.Create(authorizedKeysFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = keysFile.Chmod(0600); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = keysFile.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tauthorizedKeysFileInfo, err = os.Stat(authorizedKeysFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\tbytes, err := ioutil.ReadFile(authorizedKeysFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !strings.Contains(string(bytes), authorizedKey) {\n\t\tbytes = append(bytes, []byte(authorizedKey)...)\n\t\tbytes = append(bytes, '\\n')\n\t}\n\n\tperm := authorizedKeysFileInfo.Mode().Perm()\n\tif err = util.WriteFileAtomic(authorizedKeysFile, bytes, perm); err != nil {\n\t\treturn err\n\t}\n\n\treturn os.Chown(authorizedKeysFile, uid, gid)\n}\n"
  },
  {
    "path": "cmd/cloudinitexecute/cloudinitexecute.go",
    "content": "package cloudinitexecute\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strings\"\n\n\trancherConfig \"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"golang.org/x/net/context\"\n)\n\nconst (\n\tresizeStamp = \"/var/lib/rancher/resizefs.done\"\n\tsshKeyName  = \"rancheros-cloud-config\"\n)\n\nvar (\n\tconsole    bool\n\tpreConsole bool\n\tflags      *flag.FlagSet\n)\n\nfunc init() {\n\tflags = flag.NewFlagSet(os.Args[0], flag.ContinueOnError)\n\tflags.BoolVar(&console, \"console\", false, \"apply console configuration\")\n\tflags.BoolVar(&preConsole, \"pre-console\", false, \"apply pre-console configuration\")\n}\n\nfunc Main() {\n\tflags.Parse(os.Args[1:])\n\n\tlog.InitLogger()\n\tlog.Infof(\"Running cloud-init-execute: pre-console=%v, console=%v\", preConsole, console)\n\n\tcfg := rancherConfig.LoadConfig()\n\n\tif !console && !preConsole {\n\t\tconsole = true\n\t\tpreConsole = true\n\t}\n\n\tif console {\n\t\tApplyConsole(cfg)\n\t}\n\tif preConsole {\n\t\tapplyPreConsole(cfg)\n\t}\n}\n\nfunc ApplyConsole(cfg *rancherConfig.CloudConfig) {\n\tif len(cfg.SSHAuthorizedKeys) > 0 {\n\t\tif err := authorizeSSHKeys(\"rancher\", cfg.SSHAuthorizedKeys, sshKeyName); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := authorizeSSHKeys(\"docker\", cfg.SSHAuthorizedKeys, sshKeyName); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tWriteFiles(cfg, \"console\")\n\n\tfor _, mount := range cfg.Mounts {\n\t\tif len(mount) != 4 {\n\t\t\tlog.Errorf(\"Unable to mount %s: must specify exactly four arguments\", mount[1])\n\t\t}\n\n\t\tif mount[2] == \"nfs\" || mount[2] == \"nfs4\" {\n\t\t\tif err := os.MkdirAll(mount[1], 0755); err != nil {\n\t\t\t\tlog.Errorf(\"Unable to create mount point %s: %v\", mount[1], err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcmdArgs := []string{mount[0], mount[1], \"-t\", mount[2]}\n\t\t\tif mount[3] != \"\" {\n\t\t\t\tcmdArgs = append(cmdArgs, \"-o\", mount[3])\n\t\t\t}\n\t\t\tcmd := exec.Command(\"mount\", cmdArgs...)\n\t\t\tcmd.Stdout = os.Stdout\n\t\t\tcmd.Stderr = os.Stderr\n\t\t\tif err := cmd.Run(); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to mount %s: %v\", mount[1], err)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tdevice := util.ResolveDevice(mount[0])\n\n\t\tif mount[2] == \"swap\" {\n\t\t\tcmd := exec.Command(\"swapon\", device)\n\t\t\tcmd.Stdout = os.Stdout\n\t\t\tcmd.Stderr = os.Stderr\n\t\t\terr := cmd.Run()\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Unable to swapon %s: %v\", device, err)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := util.Mount(device, mount[1], mount[2], mount[3]); err != nil {\n\t\t\tlog.Errorf(\"Failed to mount %s: %v\", mount[1], err)\n\t\t}\n\t}\n\n\terr := util.RunCommandSequence(cfg.Runcmd)\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n}\n\nfunc WriteFiles(cfg *rancherConfig.CloudConfig, container string) {\n\tfor _, file := range cfg.WriteFiles {\n\t\tfileContainer := file.Container\n\t\tif fileContainer == \"\" {\n\t\t\tfileContainer = \"console\"\n\t\t}\n\t\tif fileContainer != container {\n\t\t\tcontinue\n\t\t}\n\n\t\tcontent, err := config.DecodeContent(file.File.Content, file.File.Encoding)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfile.File.Content = string(content)\n\t\tfile.File.Encoding = \"\"\n\n\t\tf := system.File{\n\t\t\tFile: file.File,\n\t\t}\n\t\tfullPath, err := system.WriteFile(&f, \"/\")\n\t\tif err != nil {\n\t\t\tlog.WithFields(log.Fields{\"err\": err, \"path\": fullPath}).Error(\"Error writing file\")\n\t\t\tcontinue\n\t\t}\n\t\tlog.Printf(\"Wrote file %s to filesystem\", fullPath)\n\t}\n}\n\nfunc applyPreConsole(cfg *rancherConfig.CloudConfig) {\n\tif cfg.Rancher.ResizeDevice != \"\" {\n\t\tif _, err := os.Stat(resizeStamp); os.IsNotExist(err) {\n\t\t\tif err := resizeDevice(cfg); err == nil {\n\t\t\t\tos.Create(resizeStamp)\n\t\t\t} else {\n\t\t\t\tlog.Errorf(\"Failed to resize %s: %s\", cfg.Rancher.ResizeDevice, err)\n\t\t\t}\n\t\t} else {\n\t\t\tlog.Infof(\"Skipped resizing %s because %s exists\", cfg.Rancher.ResizeDevice, resizeStamp)\n\t\t}\n\t}\n\n\tfor k, v := range cfg.Rancher.Sysctl {\n\t\telems := []string{\"/proc\", \"sys\"}\n\t\telems = append(elems, strings.Split(k, \".\")...)\n\t\tpath := path.Join(elems...)\n\t\tif err := ioutil.WriteFile(path, []byte(v), 0644); err != nil {\n\t\t\tlog.Errorf(\"Failed to set sysctl key %s: %s\", k, err)\n\t\t}\n\t}\n\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tfor _, restart := range cfg.Rancher.RestartServices {\n\t\tif err = client.ContainerRestart(context.Background(), restart, 10); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n}\n\nfunc resizeDevice(cfg *rancherConfig.CloudConfig) error {\n\tpartition := \"1\"\n\ttargetPartition := fmt.Sprintf(\"%s%s\", cfg.Rancher.ResizeDevice, partition)\n\n\tif strings.Contains(cfg.Rancher.ResizeDevice, \"mmcblk\") {\n\t\tpartition = \"2\"\n\t\ttargetPartition = fmt.Sprintf(\"%sp%s\", cfg.Rancher.ResizeDevice, partition)\n\t} else if strings.Contains(cfg.Rancher.ResizeDevice, \"nvme\") {\n\t\ttargetPartition = fmt.Sprintf(\"%sp%s\", cfg.Rancher.ResizeDevice, partition)\n\t}\n\n\tcmd := exec.Command(\"growpart\", cfg.Rancher.ResizeDevice, partition)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tcmd.Run()\n\n\tcmd = exec.Command(\"partprobe\", cfg.Rancher.ResizeDevice)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\terr := cmd.Run()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcmd = exec.Command(\"resize2fs\", targetPartition)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\terr = cmd.Run()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/cloudinitsave/cloudinitsave.go",
    "content": "// Copyright 2015 CoreOS, Inc.\n// Copyright 2015-2017 Rancher Labs, Inc.\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 cloudinitsave\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/cmd/control\"\n\t\"github.com/burmilla/os/cmd/network\"\n\trancherConfig \"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/configdrive\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/file\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/aliyun\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/azure\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/cloudstack\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/digitalocean\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/ec2\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/exoscale\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/gce\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/packet\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/proccmdline\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/proxmox\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/tftp\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/url\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/vmware\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\nconst (\n\tdatasourceInterval    = 100 * time.Millisecond\n\tdatasourceMaxInterval = 30 * time.Second\n\tdatasourceTimeout     = 5 * time.Minute\n)\n\nfunc Main() {\n\tlog.InitLogger()\n\tlog.Info(\"Running cloud-init-save\")\n\n\tif err := control.UdevSettle(); err != nil {\n\t\tlog.Errorf(\"Failed to run udev settle: %v\", err)\n\t}\n\n\tif err := saveCloudConfig(); err != nil {\n\t\tlog.Errorf(\"Failed to save cloud-config: %v\", err)\n\t}\n\n\t// exit wpa_supplicant\n\tnetconf.StopWpaSupplicant()\n\t// exit dhcpcd\n\tnetconf.StopDhcpcd()\n}\n\nfunc saveCloudConfig() error {\n\tlog.Infof(\"SaveCloudConfig\")\n\n\tcfg := rancherConfig.LoadConfig()\n\tlog.Debugf(\"init: SaveCloudConfig(pre ApplyNetworkConfig): %#v\", cfg.Rancher.Network)\n\tnetwork.ApplyNetworkConfig(cfg)\n\n\tlog.Infof(\"datasources that will be considered: %#v\", cfg.Rancher.CloudInit.Datasources)\n\tdss := getDatasources(cfg.Rancher.CloudInit.Datasources)\n\tif len(dss) == 0 {\n\t\tlog.Errorf(\"currentDatasource - none found\")\n\t\treturn nil\n\t}\n\n\tfoundDs := selectDatasource(dss)\n\tlog.Infof(\"Cloud-init datasource that was used: %s\", foundDs)\n\n\t// Apply any newly detected network config.\n\tcfg = rancherConfig.LoadConfig()\n\tlog.Debugf(\"init: SaveCloudConfig(post ApplyNetworkConfig): %#v\", cfg.Rancher.Network)\n\tnetwork.ApplyNetworkConfig(cfg)\n\n\treturn nil\n}\n\nfunc saveFiles(cloudConfigBytes, scriptBytes []byte, metadata datasource.Metadata) error {\n\tos.MkdirAll(rancherConfig.CloudConfigDir, os.ModeDir|0600)\n\n\tif len(scriptBytes) > 0 {\n\t\tlog.Infof(\"Writing to %s\", rancherConfig.CloudConfigScriptFile)\n\t\tif err := util.WriteFileAtomic(rancherConfig.CloudConfigScriptFile, scriptBytes, 500); err != nil {\n\t\t\tlog.Errorf(\"Error while writing file %s: %v\", rancherConfig.CloudConfigScriptFile, err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif len(cloudConfigBytes) > 0 {\n\t\tif err := util.WriteFileAtomic(rancherConfig.CloudConfigBootFile, cloudConfigBytes, 400); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlog.Infof(\"Wrote to %s\", rancherConfig.CloudConfigBootFile)\n\t}\n\n\tmetaDataBytes, err := yaml.Marshal(metadata)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = util.WriteFileAtomic(rancherConfig.MetaDataFile, metaDataBytes, 400); err != nil {\n\t\treturn err\n\t}\n\tlog.Infof(\"Wrote to %s\", rancherConfig.MetaDataFile)\n\n\t// if we write the empty meta yml, the merge fails.\n\t// TODO: the problem is that a partially filled one will still have merge issues, so that needs fixing - presumably by making merge more clever, and making more fields optional\n\temptyMeta, err := yaml.Marshal(datasource.Metadata{})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif bytes.Compare(metaDataBytes, emptyMeta) == 0 {\n\t\tlog.Infof(\"not writing %s: its all defaults.\", rancherConfig.CloudConfigNetworkFile)\n\t\treturn nil\n\t}\n\n\ttype nonRancherCfg struct {\n\t\tNetwork netconf.NetworkConfig `yaml:\"network,omitempty\"`\n\t}\n\ttype nonCfg struct {\n\t\tRancher nonRancherCfg `yaml:\"rancher,omitempty\"`\n\t}\n\t// write the network.yml file from metadata\n\tcc := nonCfg{\n\t\tRancher: nonRancherCfg{\n\t\t\tNetwork: metadata.NetworkConfig,\n\t\t},\n\t}\n\n\tif err := os.MkdirAll(path.Dir(rancherConfig.CloudConfigNetworkFile), 0700); err != nil {\n\t\tlog.Errorf(\"Failed to create directory for file %s: %v\", rancherConfig.CloudConfigNetworkFile, err)\n\t}\n\n\tif err := rancherConfig.WriteToFile(cc, rancherConfig.CloudConfigNetworkFile); err != nil {\n\t\tlog.Errorf(\"Failed to save config file %s: %v\", rancherConfig.CloudConfigNetworkFile, err)\n\t}\n\tlog.Infof(\"Wrote to %s\", rancherConfig.CloudConfigNetworkFile)\n\n\treturn nil\n}\n\nfunc fetchAndSave(ds datasource.Datasource) error {\n\tvar metadata datasource.Metadata\n\n\tlog.Infof(\"Fetching user-data from datasource %s\", ds)\n\tuserDataBytes, err := ds.FetchUserdata()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed fetching user-data from datasource: %v\", err)\n\t\treturn err\n\t}\n\tuserDataBytes, err = decompressIfGzip(userDataBytes)\n\tif err != nil {\n\t\tlog.Errorf(\"Failed decompressing user-data from datasource: %v\", err)\n\t\treturn err\n\t}\n\tlog.Infof(\"Fetching meta-data from datasource of type %v\", ds.Type())\n\tmetadata, err = ds.FetchMetadata()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed fetching meta-data from datasource: %v\", err)\n\t\treturn err\n\t}\n\n\tuserData := string(userDataBytes)\n\tscriptBytes := []byte{}\n\n\tif config.IsScript(userData) {\n\t\tscriptBytes = userDataBytes\n\t\tuserDataBytes = []byte{}\n\t} else if isCompose(userData) {\n\t\tif userDataBytes, err = composeToCloudConfig(userDataBytes); err != nil {\n\t\t\tlog.Errorf(\"Failed to convert compose to cloud-config syntax: %v\", err)\n\t\t\treturn err\n\t\t}\n\t} else if config.IsCloudConfig(userData) {\n\t\tif _, err := rancherConfig.ReadConfig(userDataBytes, false); err != nil {\n\t\t\tlog.WithFields(log.Fields{\"cloud-config\": userData, \"err\": err}).Warn(\"Failed to parse cloud-config, not saving.\")\n\t\t\tuserDataBytes = []byte{}\n\t\t}\n\t} else {\n\t\tlog.Errorf(\"Unrecognized user-data\\n(%s)\", userData)\n\t\tuserDataBytes = []byte{}\n\t}\n\n\tif _, err := rancherConfig.ReadConfig(userDataBytes, false); err != nil {\n\t\tlog.WithFields(log.Fields{\"cloud-config\": userData, \"err\": err}).Warn(\"Failed to parse cloud-config\")\n\t\treturn errors.New(\"Failed to parse cloud-config\")\n\t}\n\n\treturn saveFiles(userDataBytes, scriptBytes, metadata)\n}\n\n// getDatasources creates a slice of possible Datasources for cloudinit based\n// on the different source command-line flags.\nfunc getDatasources(datasources []string) []datasource.Datasource {\n\tdss := make([]datasource.Datasource, 0, 5)\n\n\tfor _, ds := range datasources {\n\t\tparts := strings.SplitN(ds, \":\", 2)\n\n\t\troot := \"\"\n\t\tif len(parts) > 1 {\n\t\t\troot = parts[1]\n\t\t}\n\n\t\tswitch parts[0] {\n\t\tcase \"*\":\n\t\t\tdss = append(dss, getDatasources([]string{\"configdrive\", \"vmware\", \"ec2\", \"digitalocean\", \"packet\", \"gce\", \"cloudstack\", \"exoscale\", \"proxmox\"})...)\n\t\tcase \"proxmox\":\n\t\t\tif root == \"\" {\n\t\t\t\troot = \"/media/pve-config\"\n\t\t\t}\n\t\t\tdss = append(dss, proxmox.NewDataSource(root))\n\t\tcase \"exoscale\":\n\t\t\tdss = append(dss, exoscale.NewDatasource(root))\n\t\tcase \"cloudstack\":\n\t\t\tfor _, source := range cloudstack.NewDatasource(root) {\n\t\t\t\tdss = append(dss, source)\n\t\t\t}\n\t\tcase \"ec2\":\n\t\t\tdss = append(dss, ec2.NewDatasource(root))\n\t\tcase \"file\":\n\t\t\tif root != \"\" {\n\t\t\t\tdss = append(dss, file.NewDatasource(root))\n\t\t\t}\n\t\tcase \"tftp\":\n\t\t\tdss = append(dss, tftp.NewDatasource(root))\n\t\tcase \"url\":\n\t\t\tif root != \"\" {\n\t\t\t\tdss = append(dss, url.NewDatasource(root))\n\t\t\t}\n\t\tcase \"cmdline\":\n\t\t\tif len(parts) == 1 {\n\t\t\t\tdss = append(dss, proccmdline.NewDatasource())\n\t\t\t}\n\t\tcase \"configdrive\":\n\t\t\tif root == \"\" {\n\t\t\t\troot = \"/media/config-2\"\n\t\t\t}\n\t\t\tdss = append(dss, configdrive.NewDatasource(root))\n\t\tcase \"digitalocean\":\n\t\t\t// TODO: should we enableDoLinkLocal() - to avoid the need for the other kernel/oem options?\n\t\t\tdss = append(dss, digitalocean.NewDatasource(root))\n\t\tcase \"gce\":\n\t\t\tdss = append(dss, gce.NewDatasource(root))\n\t\tcase \"packet\":\n\t\t\tdss = append(dss, packet.NewDatasource(root))\n\t\tcase \"vmware\":\n\t\t\t// made vmware datasource dependent on detecting vmware independently, as it crashes things otherwise\n\t\t\tv := vmware.NewDatasource(root)\n\t\t\tif v != nil {\n\t\t\t\tdss = append(dss, v)\n\t\t\t}\n\t\tcase \"aliyun\":\n\t\t\tdss = append(dss, aliyun.NewDatasource(root))\n\t\tcase \"azure\":\n\t\t\tdss = append(dss, azure.NewDatasource(root))\n\t\t}\n\t}\n\n\treturn dss\n}\n\nfunc enableDoLinkLocal() {\n\tcfg := rancherConfig.LoadConfig()\n\tdhcpTimeout := cfg.Rancher.Defaults.Network.DHCPTimeout\n\tif cfg.Rancher.Network.DHCPTimeout > 0 {\n\t\tdhcpTimeout = cfg.Rancher.Network.DHCPTimeout\n\t}\n\t_, err := netconf.ApplyNetworkConfigs(&netconf.NetworkConfig{\n\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\"eth0\": {\n\t\t\t\tIPV4LL: true,\n\t\t\t},\n\t\t},\n\t\tDHCPTimeout: dhcpTimeout,\n\t}, false, false)\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to apply link local on eth0: %v\", err)\n\t}\n}\n\n// selectDatasource attempts to choose a valid Datasource to use based on its\n// current availability. The first Datasource to report to be available is\n// returned. Datasources will be retried if possible if they are not\n// immediately available. If all Datasources are permanently unavailable or\n// datasourceTimeout is reached before one becomes available, nil is returned.\nfunc selectDatasource(sources []datasource.Datasource) datasource.Datasource {\n\tds := make(chan datasource.Datasource)\n\tstop := make(chan struct{})\n\tvar wg sync.WaitGroup\n\n\tfor _, s := range sources {\n\t\twg.Add(1)\n\t\tgo func(s datasource.Datasource) {\n\t\t\tdefer wg.Done()\n\n\t\t\tduration := datasourceInterval\n\t\t\tfor {\n\t\t\t\tlog.Infof(\"cloud-init: Checking availability of %q\", s.Type())\n\t\t\t\tif s.IsAvailable() {\n\t\t\t\t\tlog.Infof(\"cloud-init: Datasource available: %s\", s)\n\t\t\t\t\tds <- s\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif !s.AvailabilityChanges() {\n\t\t\t\t\tlog.Infof(\"cloud-init: Datasource unavailable, skipping: %s\", s)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlog.Errorf(\"cloud-init: Datasource not ready, will retry: %s\", s)\n\t\t\t\tselect {\n\t\t\t\tcase <-stop:\n\t\t\t\t\treturn\n\t\t\t\tcase <-time.After(duration):\n\t\t\t\t\tduration = pkg.ExpBackoff(duration, datasourceMaxInterval)\n\t\t\t\t}\n\t\t\t}\n\t\t}(s)\n\t}\n\n\tdone := make(chan struct{})\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(done)\n\t}()\n\n\tvar s datasource.Datasource\n\tselect {\n\tcase s = <-ds:\n\t\terr := fetchAndSave(s)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Error fetching cloud-init datasource(%s): %s\", s, err)\n\t\t}\n\tcase <-done:\n\tcase <-time.After(datasourceTimeout):\n\t}\n\n\tclose(stop)\n\treturn s\n}\n\nfunc isCompose(content string) bool {\n\treturn strings.HasPrefix(content, \"#compose\\n\")\n}\n\nfunc composeToCloudConfig(bytes []byte) ([]byte, error) {\n\tcompose := make(map[interface{}]interface{})\n\terr := yaml.Unmarshal(bytes, &compose)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn yaml.Marshal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"services\": compose,\n\t\t},\n\t})\n}\n\nconst gzipMagicBytes = \"\\x1f\\x8b\"\n\nfunc decompressIfGzip(userdataBytes []byte) ([]byte, error) {\n\tif !bytes.HasPrefix(userdataBytes, []byte(gzipMagicBytes)) {\n\t\treturn userdataBytes, nil\n\t}\n\n\treturn config.DecompressGzip(userdataBytes)\n}\n"
  },
  {
    "path": "cmd/control/autologin.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc AutologinMain() {\n\tlog.InitLogger()\n\tapp := cli.NewApp()\n\n\tapp.Name = os.Args[0]\n\tapp.Usage = \"autologin console\"\n\tapp.Version = config.Version\n\tapp.Author = \"Project Burmilla\\n\\tRancher Labs, Inc.\"\n\tapp.Email = \"burmilla@localhost.local\"\n\tapp.EnableBashCompletion = true\n\tapp.Action = autologinAction\n\tapp.HideHelp = true\n\tapp.Run(os.Args)\n}\n\nfunc autologinAction(c *cli.Context) error {\n\tcmd := exec.Command(\"/bin/stty\", \"sane\")\n\tcmd.Stderr = os.Stderr\n\tcmd.Stdout = os.Stdout\n\tcmd.Stdin = os.Stdin\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tusertty := \"\"\n\tuser := \"root\"\n\tif c.NArg() > 0 {\n\t\tusertty = c.Args().Get(0)\n\t\ts := strings.SplitN(usertty, \":\", 2)\n\t\tuser = s[0]\n\t}\n\n\tmode := filepath.Base(os.Args[0])\n\tconsole := CurrentConsole()\n\n\tcfg := config.LoadConfig()\n\n\tloginBin := \"\"\n\targs := []string{}\n\tif console == \"centos\" || console == \"fedora\" ||\n\t\tmode == \"recovery\" {\n\t\t// For some reason, centos and fedora ttyS0 and tty1 don't work with `login -f rancher`\n\t\t// until I make time to read their source, lets just give us a way to get work done\n\t\tloginBin = \"bash\"\n\t\targs = append(args, \"--login\")\n\t\tif mode == \"recovery\" {\n\t\t\tos.Setenv(\"PROMPT_COMMAND\", `echo \"[`+fmt.Sprintf(\"Recovery console %s@%s:${PWD}\", user, cfg.Hostname)+`]\"`)\n\t\t}\n\t} else {\n\t\tloginBin = \"login\"\n\t\targs = append(args, \"-f\", user)\n\t\t// TODO: add a PROMPT_COMMAND if we haven't switch-rooted\n\t}\n\n\tloginBinPath, err := exec.LookPath(loginBin)\n\tif err != nil {\n\t\tfmt.Printf(\"error finding %s in path: %s\", cmd.Args[0], err)\n\t\treturn err\n\t}\n\tos.Setenv(\"TERM\", \"linux\")\n\n\t// Causes all sorts of issues\n\t//return syscall.Exec(loginBinPath, args, os.Environ())\n\tcmd = exec.Command(loginBinPath, args...)\n\tcmd.Env = os.Environ()\n\n\tcmd.Stderr = os.Stderr\n\tcmd.Stdout = os.Stdout\n\tcmd.Stdin = os.Stdin\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"\\nError starting %s: %s\", cmd.Args[0], err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/bootstrap.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nfunc BootstrapMain() {\n\tlog.InitLogger()\n\n\tlog.Debugf(\"bootstrapAction\")\n\tif err := UdevSettle(); err != nil {\n\t\tlog.Errorf(\"Failed to run udev settle: %v\", err)\n\t}\n\n\tlog.Debugf(\"bootstrapAction: loadingConfig\")\n\tcfg := config.LoadConfig()\n\n\tlog.Debugf(\"bootstrapAction: Rngd(%v)\", cfg.Rancher.State.Rngd)\n\tif cfg.Rancher.State.Rngd {\n\t\tif err := runRngd(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run rngd: %v\", err)\n\t\t}\n\t}\n\n\tlog.Debugf(\"bootstrapAction: MdadmScan(%v)\", cfg.Rancher.State.MdadmScan)\n\tif cfg.Rancher.State.MdadmScan {\n\t\tif err := mdadmScan(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run mdadm scan: %v\", err)\n\t\t}\n\t}\n\n\tlog.Debugf(\"bootstrapAction: cryptsetup(%v)\", cfg.Rancher.State.Cryptsetup)\n\tif cfg.Rancher.State.Cryptsetup {\n\t\tif err := cryptsetup(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run cryptsetup: %v\", err)\n\t\t}\n\t}\n\n\tlog.Debugf(\"bootstrapAction: LvmScan(%v)\", cfg.Rancher.State.LvmScan)\n\tif cfg.Rancher.State.LvmScan {\n\t\tif err := vgchange(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run vgchange: %v\", err)\n\t\t}\n\t}\n\n\tstateScript := cfg.Rancher.State.Script\n\tlog.Debugf(\"bootstrapAction: stateScript(%v)\", stateScript)\n\tif stateScript != \"\" {\n\t\tif err := runStateScript(stateScript); err != nil {\n\t\t\tlog.Errorf(\"Failed to run state script: %v\", err)\n\t\t}\n\t}\n\n\tlog.Debugf(\"bootstrapAction: RunCommandSequence(%v)\", cfg.Bootcmd)\n\terr := util.RunCommandSequence(cfg.Bootcmd)\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif cfg.Rancher.State.Dev != \"\" && cfg.Rancher.State.Wait {\n\t\twaitForRoot(cfg)\n\t}\n\n\tif len(cfg.Rancher.State.Autoformat) > 0 {\n\t\tlog.Infof(\"bootstrap container: Autoformat(%v) as %s\", cfg.Rancher.State.Autoformat, \"ext4\")\n\t\tif err := autoformat(cfg.Rancher.State.Autoformat); err != nil {\n\t\t\tlog.Errorf(\"Failed to run autoformat: %v\", err)\n\t\t}\n\t}\n\n\tlog.Debugf(\"bootstrapAction: udev settle2\")\n\tif err := UdevSettle(); err != nil {\n\t\tlog.Errorf(\"Failed to run udev settle: %v\", err)\n\t}\n}\n\nfunc mdadmScan() error {\n\tcmd := exec.Command(\"mdadm\", \"--assemble\", \"--scan\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\treturn cmd.Run()\n}\n\nfunc vgchange() error {\n\tcmd := exec.Command(\"vgchange\", \"--activate\", \"ay\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\treturn cmd.Run()\n}\n\nfunc cryptsetup() error {\n\tdevices, err := util.BlkidType(\"crypto_LUKS\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, cryptdevice := range devices {\n\t\tfdRead, err := os.Open(\"/dev/console\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer fdRead.Close()\n\n\t\tfdWrite, err := os.OpenFile(\"/dev/console\", os.O_WRONLY|os.O_APPEND, 0)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer fdWrite.Close()\n\n\t\tcmd := exec.Command(\"cryptsetup\", \"luksOpen\", cryptdevice, fmt.Sprintf(\"luks-%s\", filepath.Base(cryptdevice)))\n\t\tcmd.Stdout = fdWrite\n\t\tcmd.Stderr = fdWrite\n\t\tcmd.Stdin = fdRead\n\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run cryptsetup for %s: %v\", cryptdevice, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc runRngd() error {\n\t// use /dev/urandom as random number input for rngd\n\t// this is a really bad idea\n\t// since I am simple filling the kernel entropy pool with entropy coming from the kernel itself!\n\t// but this does not need to consider the user's hw rngd drivers.\n\tcmd := exec.Command(\"rngd\", \"-r\", \"/dev/urandom\", \"-q\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\treturn cmd.Run()\n}\n\nfunc runStateScript(script string) error {\n\tf, err := ioutil.TempFile(\"\", \"\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := f.WriteString(script); err != nil {\n\t\treturn err\n\t}\n\tif err := f.Chmod(os.ModePerm); err != nil {\n\t\treturn err\n\t}\n\tif err := f.Close(); err != nil {\n\t\treturn err\n\t}\n\treturn util.RunScript(f.Name())\n}\n\nfunc waitForRoot(cfg *config.CloudConfig) {\n\tvar dev string\n\tfor i := 0; i < 30; i++ {\n\t\tdev = util.ResolveDevice(cfg.Rancher.State.Dev)\n\t\tif dev != \"\" {\n\t\t\tbreak\n\t\t}\n\t\ttime.Sleep(time.Millisecond * 1000)\n\t}\n\tif dev == \"\" {\n\t\treturn\n\t}\n\tfor i := 0; i < 30; i++ {\n\t\tif _, err := os.Stat(dev); err == nil {\n\t\t\tbreak\n\t\t}\n\t\ttime.Sleep(time.Millisecond * 1000)\n\t}\n}\n\nfunc autoformat(autoformatDevices []string) error {\n\tcmd := exec.Command(\"/usr/sbin/auto-format.sh\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tcmd.Env = []string{\n\t\t\"AUTOFORMAT=\" + strings.Join(autoformatDevices, \" \"),\n\t}\n\treturn cmd.Run()\n}\n"
  },
  {
    "path": "cmd/control/cli.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/cmd/control/service\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc Main() {\n\tlog.InitLogger()\n\tcli.VersionPrinter = func(c *cli.Context) {\n\t\tcfg := config.LoadConfig()\n\t\trunningName := cfg.Rancher.Upgrade.Image + \":\" + config.Version\n\t\tfmt.Fprintf(c.App.Writer, \"version %s from os image %s\\n\", c.App.Version, runningName)\n\t}\n\tapp := cli.NewApp()\n\n\tapp.Name = os.Args[0]\n\tapp.Usage = fmt.Sprintf(\"Control and configure BurmillaOS\\nbuilt: %s\", config.BuildDate)\n\tapp.Version = config.Version\n\tapp.Author = \"Project Burmilla\\n\\tRancher Labs, Inc.\"\n\tapp.EnableBashCompletion = true\n\tapp.Before = func(c *cli.Context) error {\n\t\tif os.Geteuid() != 0 {\n\t\t\tlog.Fatalf(\"%s: Need to be root\", os.Args[0])\n\t\t}\n\t\treturn nil\n\t}\n\n\tapp.Commands = []cli.Command{\n\t\t{\n\t\t\tName:        \"config\",\n\t\t\tShortName:   \"c\",\n\t\t\tUsage:       \"configure settings\",\n\t\t\tHideHelp:    true,\n\t\t\tSubcommands: configSubcommands(),\n\t\t},\n\t\t{\n\t\t\tName:        \"console\",\n\t\t\tUsage:       \"manage which console container is used\",\n\t\t\tHideHelp:    true,\n\t\t\tSubcommands: consoleSubcommands(),\n\t\t},\n\t\t{\n\t\t\tName:            \"console-init\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          consoleInitAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"dev\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          devAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"docker-init\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          dockerInitAction,\n\t\t},\n\t\t{\n\t\t\tName:        \"engine\",\n\t\t\tUsage:       \"manage which Docker engine is used\",\n\t\t\tHideHelp:    true,\n\t\t\tSubcommands: engineSubcommands(),\n\t\t},\n\t\t{\n\t\t\tName:            \"entrypoint\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          entrypointAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"env\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          envAction,\n\t\t},\n\t\tservice.Commands(),\n\t\t{\n\t\t\tName:        \"os\",\n\t\t\tUsage:       \"operating system upgrade/downgrade\",\n\t\t\tHideHelp:    true,\n\t\t\tSubcommands: osSubcommands(),\n\t\t},\n\t\t{\n\t\t\tName:            \"preload-images\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          preloadImagesAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"recovery-init\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          recoveryInitAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"switch-console\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          switchConsoleAction,\n\t\t},\n\t\t{\n\t\t\tName:        \"tls\",\n\t\t\tUsage:       \"setup tls configuration\",\n\t\t\tHideHelp:    true,\n\t\t\tSubcommands: tlsConfCommands(),\n\t\t},\n\t\t{\n\t\t\tName:            \"udev-settle\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          udevSettleAction,\n\t\t},\n\t\t{\n\t\t\tName:            \"user-docker\",\n\t\t\tHidden:          true,\n\t\t\tHideHelp:        true,\n\t\t\tSkipFlagParsing: true,\n\t\t\tAction:          userDockerAction,\n\t\t},\n\t\tinstallCommand,\n\t}\n\n\tapp.Run(os.Args)\n}\n"
  },
  {
    "path": "cmd/control/config.go",
    "content": "package control\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"sort\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/pkg/errors\"\n)\n\nfunc configSubcommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:   \"get\",\n\t\t\tUsage:  \"get value\",\n\t\t\tAction: configGet,\n\t\t},\n\t\t{\n\t\t\tName:   \"set\",\n\t\t\tUsage:  \"set a value\",\n\t\t\tAction: configSet,\n\t\t},\n\t\t{\n\t\t\tName:   \"images\",\n\t\t\tUsage:  \"List Docker images for a configuration from a file\",\n\t\t\tAction: runImages,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"input, i\",\n\t\t\t\t\tUsage: \"File from which to read config\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:     \"generate\",\n\t\t\tUsage:    \"Generate a configuration file from a template\",\n\t\t\tAction:   runGenerate,\n\t\t\tHideHelp: true,\n\t\t},\n\t\t{\n\t\t\tName:  \"export\",\n\t\t\tUsage: \"export configuration\",\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"output, o\",\n\t\t\t\t\tUsage: \"File to which to save\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"private, p\",\n\t\t\t\t\tUsage: \"Include the generated private keys\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"full, f\",\n\t\t\t\t\tUsage: \"Export full configuration, including internal and default settings\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: export,\n\t\t},\n\t\t{\n\t\t\tName:   \"merge\",\n\t\t\tUsage:  \"merge configuration from stdin\",\n\t\t\tAction: merge,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"input, i\",\n\t\t\t\t\tUsage: \"File from which to read\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:   \"syslinux\",\n\t\t\tUsage:  \"edit Syslinux boot global.cfg\",\n\t\t\tAction: editSyslinux,\n\t\t},\n\t\t{\n\t\t\tName:   \"validate\",\n\t\t\tUsage:  \"validate configuration from stdin\",\n\t\t\tAction: validate,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"input, i\",\n\t\t\t\t\tUsage: \"File from which to read\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc imagesFromConfig(cfg *config.CloudConfig) []string {\n\timagesMap := map[string]int{}\n\n\tfor _, service := range cfg.Rancher.BootstrapContainers {\n\t\timagesMap[service.Image] = 1\n\t}\n\tfor _, service := range cfg.Rancher.Services {\n\t\timagesMap[service.Image] = 1\n\t}\n\n\timages := make([]string, len(imagesMap))\n\ti := 0\n\tfor image := range imagesMap {\n\t\timages[i] = image\n\t\ti++\n\t}\n\tsort.Strings(images)\n\treturn images\n}\n\nfunc runImages(c *cli.Context) error {\n\tconfigFile := c.String(\"input\")\n\tcfg, err := config.ReadConfig(nil, false, configFile)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err, \"file\": configFile}).Fatalf(\"Could not read config from file\")\n\t}\n\timages := imagesFromConfig(cfg)\n\tfmt.Println(strings.Join(images, \" \"))\n\treturn nil\n}\n\nfunc runGenerate(c *cli.Context) error {\n\tif err := genTpl(os.Stdin, os.Stdout); err != nil {\n\t\tlog.Fatalf(\"Failed to generate config, err: '%s'\", err)\n\t}\n\treturn nil\n}\n\nfunc genTpl(in io.Reader, out io.Writer) error {\n\tbytes, err := ioutil.ReadAll(in)\n\tif err != nil {\n\t\tlog.Fatal(\"Could not read from stdin\")\n\t}\n\ttpl := template.Must(template.New(\"osconfig\").Parse(string(bytes)))\n\treturn tpl.Execute(out, env2map(os.Environ()))\n}\n\nfunc env2map(env []string) map[string]string {\n\tm := make(map[string]string, len(env))\n\tfor _, s := range env {\n\t\td := strings.Split(s, \"=\")\n\t\tm[d[0]] = d[1]\n\t}\n\treturn m\n}\n\nfunc editSyslinux(c *cli.Context) error {\n\t// check whether is Raspberry Pi or not\n\tbytes, err := ioutil.ReadFile(\"/proc/device-tree/model\")\n\tif err == nil && strings.Contains(strings.ToLower(string(bytes)), \"raspberry\") {\n\t\tbuf := bufio.NewWriter(os.Stdout)\n\t\tfmt.Fprintln(buf, \"raspberry pi can not use this command\")\n\t\tbuf.Flush()\n\t\treturn errors.New(\"raspberry pi can not use this command\")\n\t}\n\n\tif isExist := checkGlobalCfg(); !isExist {\n\t\tbuf := bufio.NewWriter(os.Stdout)\n\t\tfmt.Fprintln(buf, \"global.cfg can not be found\")\n\t\tbuf.Flush()\n\t\treturn errors.New(\"global.cfg can not be found\")\n\t}\n\n\tcmd := exec.Command(\"system-docker\", \"run\", \"--rm\", \"-it\",\n\t\t\"-v\", \"/:/host\",\n\t\t\"-w\", \"/host\",\n\t\t\"--entrypoint=nano\",\n\t\t\"burmilla/os-console:\"+config.Version,\n\t\t\"boot/global.cfg\")\n\tcmd.Stdout, cmd.Stderr, cmd.Stdin = os.Stdout, os.Stderr, os.Stdin\n\treturn cmd.Run()\n}\n\nfunc configSet(c *cli.Context) error {\n\tif c.NArg() < 2 {\n\t\treturn nil\n\t}\n\n\tkey := c.Args().Get(0)\n\tvalue := c.Args().Get(1)\n\tif key == \"\" {\n\t\treturn nil\n\t}\n\n\terr := config.Set(key, value)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn nil\n}\n\nfunc configGet(c *cli.Context) error {\n\targ := c.Args().Get(0)\n\tif arg == \"\" {\n\t\treturn nil\n\t}\n\n\tval, err := config.Get(arg)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"key\": arg, \"val\": val, \"err\": err}).Fatal(\"config get: failed to retrieve value\")\n\t}\n\n\tprintYaml := false\n\tswitch val.(type) {\n\tcase []interface{}:\n\t\tprintYaml = true\n\tcase map[interface{}]interface{}:\n\t\tprintYaml = true\n\t}\n\n\tif printYaml {\n\t\tbytes, err := yaml.Marshal(val)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tfmt.Println(string(bytes))\n\t} else {\n\t\tfmt.Println(val)\n\t}\n\n\treturn nil\n}\n\nfunc merge(c *cli.Context) error {\n\tbytes, err := inputBytes(c)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err = config.Merge(bytes); err != nil {\n\t\tlog.Error(err)\n\t\tvalidationErrors, err := config.ValidateBytes(bytes)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tfor _, validationError := range validationErrors.Errors() {\n\t\t\tlog.Error(validationError)\n\t\t}\n\t\tlog.Fatal(\"EXITING: Failed to parse configuration\")\n\t}\n\n\treturn nil\n}\n\nfunc export(c *cli.Context) error {\n\tcontent, err := config.Export(c.Bool(\"private\"), c.Bool(\"full\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\toutput := c.String(\"output\")\n\tif output == \"\" {\n\t\tfmt.Println(content)\n\t} else {\n\t\terr := util.WriteFileAtomic(output, []byte(content), 0400)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc validate(c *cli.Context) error {\n\tbytes, err := inputBytes(c)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tvalidationErrors, err := config.ValidateBytes(bytes)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfor _, validationError := range validationErrors.Errors() {\n\t\tlog.Error(validationError)\n\t}\n\treturn nil\n}\n\nfunc inputBytes(c *cli.Context) ([]byte, error) {\n\tinput := os.Stdin\n\tinputFile := c.String(\"input\")\n\tif inputFile != \"\" {\n\t\tvar err error\n\t\tinput, err = os.Open(inputFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer input.Close()\n\t}\n\tcontent, err := ioutil.ReadAll(input)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif bytes.Contains(content, []byte{13, 10}) {\n\t\treturn nil, errors.New(\"file format shouldn't contain CRLF characters\")\n\t}\n\treturn content, nil\n}\n"
  },
  {
    "path": "cmd/control/config_test.go",
    "content": "package control\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenTpl(t *testing.T) {\n\tassert := require.New(t)\n\ttpl := `\n  services:\n    {{if eq \"amd64\" .ARCH -}}\n    acpid:\n      image: burmilla/os-acpid:0.x.x\n      labels:\n        io.rancher.os.scope: system\n      net: host\n      uts: host\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    {{end -}}\n    all-volumes:`\n\n\tfor _, tc := range []struct {\n\t\tarch     string\n\t\texpected string\n\t}{\n\t\t{\"amd64\", `\n  services:\n    acpid:\n      image: burmilla/os-acpid:0.x.x\n      labels:\n        io.rancher.os.scope: system\n      net: host\n      uts: host\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    all-volumes:`},\n\t\t{\"arm\", `\n  services:\n    all-volumes:`},\n\t} {\n\t\tout := &bytes.Buffer{}\n\t\tos.Setenv(\"ARCH\", tc.arch)\n\t\tgenTpl(strings.NewReader(tpl), out)\n\t\tassert.Equal(tc.expected, out.String(), tc.arch)\n\t}\n}\n"
  },
  {
    "path": "cmd/control/console.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/cmd/control/service\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/docker/reference\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc consoleSubcommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:   \"switch\",\n\t\t\tUsage:  \"switch console without a reboot\",\n\t\t\tAction: consoleSwitch,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"force, f\",\n\t\t\t\t\tUsage: \"do not prompt for input\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"no-pull\",\n\t\t\t\t\tUsage: \"don't pull console image\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:   \"enable\",\n\t\t\tUsage:  \"set console to be switched on next reboot\",\n\t\t\tAction: consoleEnable,\n\t\t},\n\t\t{\n\t\t\tName:  \"list\",\n\t\t\tUsage: \"list available consoles\",\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"update, u\",\n\t\t\t\t\tUsage: \"update console cache\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: consoleList,\n\t\t},\n\t}\n}\n\nfunc consoleSwitch(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\tlog.Fatal(\"Must specify exactly one console to switch to\")\n\t}\n\tnewConsole := c.Args()[0]\n\n\tcfg := config.LoadConfig()\n\tvalidateConsole(newConsole, cfg)\n\tif newConsole == CurrentConsole() {\n\t\tlog.Warnf(\"Console is already set to %s\", newConsole)\n\t}\n\n\tif !c.Bool(\"force\") {\n\t\tfmt.Println(`Switching consoles will\n1. destroy the current console container\n2. log you out\n3. restart Docker`)\n\t\tif !yes(\"Continue\") {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif !c.Bool(\"no-pull\") && newConsole != \"default\" {\n\t\tif err := compose.StageServices(cfg, newConsole); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tservice, err := compose.CreateService(nil, \"switch-console\", &composeConfig.ServiceConfigV1{\n\t\tLogDriver:  \"json-file\",\n\t\tPrivileged: true,\n\t\tNet:        \"host\",\n\t\tPid:        \"host\",\n\t\tImage:      config.OsBase,\n\t\tLabels: map[string]string{\n\t\t\tconfig.ScopeLabel: config.System,\n\t\t},\n\t\tCommand:     []string{\"/usr/bin/ros\", \"switch-console\", newConsole},\n\t\tVolumesFrom: []string{\"all-volumes\"},\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = service.Delete(context.Background(), options.Delete{}); err != nil {\n\t\treturn err\n\t}\n\tif err = service.Up(context.Background(), options.Up{}); err != nil {\n\t\treturn err\n\t}\n\treturn service.Log(context.Background(), true)\n}\n\nfunc consoleEnable(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\tlog.Fatal(\"Must specify exactly one console to enable\")\n\t}\n\tnewConsole := c.Args()[0]\n\n\tcfg := config.LoadConfig()\n\tvalidateConsole(newConsole, cfg)\n\n\tif newConsole != \"default\" {\n\t\tif err := compose.StageServices(cfg, newConsole); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := config.Set(\"rancher.console\", newConsole); err != nil {\n\t\tlog.Errorf(\"Failed to update 'rancher.console': %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc consoleList(c *cli.Context) error {\n\tcfg := config.LoadConfig()\n\tconsoles := availableConsoles(cfg, c.Bool(\"update\"))\n\tCurrentConsole := CurrentConsole()\n\n\tfor _, console := range consoles {\n\t\tif console == CurrentConsole {\n\t\t\tfmt.Printf(\"current  %s\\n\", console)\n\t\t} else if console == cfg.Rancher.Console {\n\t\t\tfmt.Printf(\"enabled  %s\\n\", console)\n\t\t} else {\n\t\t\tfmt.Printf(\"disabled %s\\n\", console)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc validateConsole(console string, cfg *config.CloudConfig) {\n\tconsoles := availableConsoles(cfg, false)\n\tif !service.IsLocalOrURL(console) && !util.Contains(consoles, console) {\n\t\tlog.Fatalf(\"%s is not a valid console\", console)\n\t}\n}\n\nfunc availableConsoles(cfg *config.CloudConfig, update bool) []string {\n\tif update {\n\t\terr := network.UpdateCaches(cfg.Rancher.Repositories.ToArray(), \"consoles\")\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"Failed to update console caches: %v\", err)\n\t\t}\n\n\t}\n\tconsoles, err := network.GetConsoles(cfg.Rancher.Repositories.ToArray())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tconsoles = append(consoles, \"default\")\n\tsort.Strings(consoles)\n\treturn consoles\n}\n\n// CurrentConsole gets the name of the console that's running\nfunc CurrentConsole() (console string) {\n\t// TODO: replace this docker container look up with a libcompose service lookup?\n\n\t// sudo system-docker inspect --format \"{{.Config.Image}}\" console\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current console: %v\", err)\n\t\treturn\n\t}\n\tinfo, err := client.ContainerInspect(context.Background(), \"console\")\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current console: %v\", err)\n\t\treturn\n\t}\n\t// parse image name, then remove os- prefix and the console suffix\n\timage, err := reference.ParseNamed(info.Config.Image)\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current console(%s): %v\", info.Config.Image, err)\n\t\treturn\n\t}\n\n\tif strings.Contains(image.Name(), \"os-console\") {\n\t\tconsole = \"default\"\n\t\treturn\n\t}\n\tconsole = strings.TrimPrefix(strings.TrimSuffix(image.Name(), \"console\"), \"burmilla/os-\")\n\treturn\n}\n"
  },
  {
    "path": "cmd/control/console_init.go",
    "content": "package control\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\t\"text/template\"\n\n\t\"github.com/burmilla/os/cmd/cloudinitexecute\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"golang.org/x/crypto/ssh/terminal\"\n\t\"golang.org/x/sys/unix\"\n)\n\nconst (\n\tconsoleDone = \"/run/console-done\"\n\tdockerHome  = \"/home/docker\"\n\tgettyCmd    = \"/sbin/agetty\"\n\trancherHome = \"/home/rancher\"\n\tstartScript = \"/opt/rancher/bin/start.sh\"\n\trunLockDir  = \"/run/lock\"\n\tsshdFile    = \"/etc/ssh/sshd_config\"\n\tsshdTplFile = \"/etc/ssh/sshd_config.tpl\"\n)\n\ntype symlink struct {\n\toldname, newname string\n}\n\nfunc consoleInitAction(c *cli.Context) error {\n\treturn consoleInitFunc()\n}\n\nfunc createHomeDir(homedir string, uid, gid int) {\n\tif _, err := os.Stat(homedir); os.IsNotExist(err) {\n\t\tif err := os.MkdirAll(homedir, 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := os.Chown(homedir, uid, gid); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n}\n\nfunc enableBashRC(homedir string, uid, gid int) {\n\tif _, err := os.Stat(homedir + \"/.bash_logout\"); os.IsNotExist(err) {\n\t\tif err := util.FileCopy(\"/etc/skel/.bash_logout\", homedir+\"/.bash_logout\"); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := os.Chown(homedir+\"/.bash_logout\", uid, gid); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif _, err := os.Stat(homedir + \"/.bashrc\"); os.IsNotExist(err) {\n\t\tif err := util.FileCopy(\"/etc/skel/.bashrc\", homedir+\"/.bashrc\"); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := os.Chown(homedir+\"/.bashrc\", uid, gid); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif _, err := os.Stat(homedir + \"/.profile\"); os.IsNotExist(err) {\n\t\tif err := util.FileCopy(\"/etc/skel/.profile\", homedir+\"/.profile\"); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := os.Chown(homedir+\"/.profile\", uid, gid); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n}\n\nfunc consoleInitFunc() error {\n\tcfg := config.LoadConfig()\n\n\t// Now that we're booted, stop writing debug messages to the console\n\tcmd := exec.Command(\"sudo\", \"dmesg\", \"--console-off\")\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tcreateHomeDir(rancherHome, 1100, 1100)\n\tcreateHomeDir(dockerHome, 1101, 1101)\n\n\t// who & w command need this file\n\tif _, err := os.Stat(\"/run/utmp\"); os.IsNotExist(err) {\n\t\tf, err := os.OpenFile(\"/run/utmp\", os.O_RDWR|os.O_CREATE, 0644)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tdefer f.Close()\n\t}\n\n\t// last command need this file\n\tif _, err := os.Stat(\"/var/log/wtmp\"); os.IsNotExist(err) {\n\t\tf, err := os.OpenFile(\"/var/log/wtmp\", os.O_RDWR|os.O_CREATE, 0644)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tdefer f.Close()\n\t}\n\n\t// some software need this dir, like open-iscsi\n\tif _, err := os.Stat(runLockDir); os.IsNotExist(err) {\n\t\tif err = os.Mkdir(runLockDir, 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tignorePassword := false\n\tfor _, d := range cfg.Rancher.Disable {\n\t\tif d == \"password\" {\n\t\t\tignorePassword = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tpassword := cmdline.GetCmdline(\"rancher.password\")\n\tif !ignorePassword && password != \"\" {\n\t\tcmd := exec.Command(\"chpasswd\")\n\t\tcmd.Stdin = strings.NewReader(fmt.Sprint(\"rancher:\", password))\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\n\t\tcmd = exec.Command(\"bash\", \"-c\", `sed -E -i 's/(rancher:.*:).*(:.*:.*:.*:.*:.*:.*)$/\\1\\2/' /etc/shadow`)\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tconst pollInfo = `#!/bin/sh\nexport TERM=xterm-256color\n\necho \"\n\n\n$(tput setaf 3)\n    --------------------------------------------------\n   | Dear Burmilla OS user,                           |\n   | Please, answer to poll in $(tput setaf 4)burmillaos.org/poll$(tput setaf 3)    |\n   | about your main Burmilla OS use case.            |\n   |                                                  |\n   | Thank you advance.                               |\n   |                                                  |\n   | You can disable this message with command:       |\n   | $(tput setaf 5)sudo chmod a-x /etc/update-motd.d/1-burmillaos-1$(tput setaf 3) |\n    --------------------------------------------------\n$(tput sgr0)\n\n\n\"\n`\n\tif _, err := os.Stat(\"/etc/update-motd.d/1-burmillaos-1\"); os.IsNotExist(err) {\n\t\tif err := ioutil.WriteFile(\"/etc/update-motd.d/1-burmillaos-1\", []byte(pollInfo), 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif err := setupSSH(cfg); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := writeRespawn(\"rancher\", cfg.Rancher.SSH.Daemon, false); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := modifySshdConfig(cfg); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tp, err := compose.GetProject(cfg, false, true)\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// check the multi engine service & generate the multi engine script\n\tfor _, key := range p.ServiceConfigs.Keys() {\n\t\tserviceConfig, ok := p.ServiceConfigs.Get(key)\n\t\tif !ok {\n\t\t\tlog.Errorf(\"Failed to get service config from the project\")\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := serviceConfig.Labels[config.UserDockerLabel]; ok {\n\t\t\terr = util.GenerateDindEngineScript(serviceConfig.Labels[config.UserDockerLabel])\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to generate engine script: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t// create Docker CLI plugins folder\n\tif _, err := os.Stat(\"/usr/libexec/docker/cli-plugins\"); os.IsNotExist(err) {\n\t\tif err = os.MkdirAll(\"/usr/libexec/docker/cli-plugins\", 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tbaseSymlink := symLinkEngineBinary()\n\n\tif _, err := os.Stat(dockerCompletionFile); err == nil {\n\t\tbaseSymlink = append(baseSymlink, symlink{\n\t\t\tdockerCompletionFile, dockerCompletionLinkFile,\n\t\t})\n\t}\n\n\tfor _, link := range baseSymlink {\n\t\tsyscall.Unlink(link.newname)\n\t\tif err := os.Symlink(link.oldname, link.newname); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\t// mount systemd cgroups\n\tif err := os.MkdirAll(\"/sys/fs/cgroup/systemd\", 0555); err != nil {\n\t\tlog.Error(err)\n\t}\n\tif err := unix.Mount(\"cgroup\", \"/sys/fs/cgroup/systemd\", \"cgroup\", 0, \"none,name=systemd\"); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// font backslashes need to be escaped for when issue is output! (but not the others..)\n\tif err := ioutil.WriteFile(\"/etc/issue\", []byte(config.Banner), 0644); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// write out a profile.d file for the proxy settings.\n\t// maybe write these on the host and bindmount into everywhere?\n\tproxyLines := []string{}\n\tfor _, k := range []string{\"http_proxy\", \"HTTP_PROXY\", \"https_proxy\", \"HTTPS_PROXY\", \"no_proxy\", \"NO_PROXY\"} {\n\t\tif v, ok := cfg.Rancher.Environment[k]; ok {\n\t\t\tproxyLines = append(proxyLines, fmt.Sprintf(\"export %s=%q\", k, v))\n\t\t}\n\t}\n\n\tif len(proxyLines) > 0 {\n\t\tproxyString := strings.Join(proxyLines, \"\\n\")\n\t\tproxyString = fmt.Sprintf(\"#!/bin/sh\\n%s\\n\", proxyString)\n\t\tif err := ioutil.WriteFile(\"/etc/profile.d/proxy.sh\", []byte(proxyString), 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\t// write out a profile.d file for the PATH settings.\n\tpathLines := []string{}\n\tfor _, k := range []string{\"PATH\", \"path\"} {\n\t\tif v, ok := cfg.Rancher.Environment[k]; ok {\n\t\t\tfor _, p := range strings.Split(v, \",\") {\n\t\t\t\tpathLines = append(pathLines, fmt.Sprintf(\"export PATH=$PATH:%s\", strings.TrimSpace(p)))\n\t\t\t}\n\t\t}\n\t}\n\tif len(pathLines) > 0 {\n\t\tpathString := strings.Join(pathLines, \"\\n\")\n\t\tpathString = fmt.Sprintf(\"#!/bin/sh\\n%s\\n\", pathString)\n\t\tif err := ioutil.WriteFile(\"/etc/profile.d/path.sh\", []byte(pathString), 0755); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tcmd = exec.Command(\"bash\", \"-c\", `echo $(/sbin/ifconfig | grep -B1 \"inet\" |awk '{ if ( $1 == \"inet\" ) { print $2 } else if ( $3 == \"mtu\" ) { printf \"%s:\" ,$1 } }' |awk -F: '{ print $1 \": \" $3}') >> /etc/issue`)\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tcloudinitexecute.ApplyConsole(cfg)\n\n\tif err := util.RunScript(config.CloudConfigScriptFile); err != nil {\n\t\tlog.Error(err)\n\t}\n\tif err := util.RunScript(startScript); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := ioutil.WriteFile(consoleDone, []byte(CurrentConsole()), 0644); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// Check if user Docker has ever run in this installation yet and switch to latest/user defined version if not\n\tif _, err := os.Stat(\"/var/lib/docker/engine-id\"); os.IsNotExist(err) {\n\t\tdockerVersion := \"latest\"\n\t\tif cfg.Rancher.Docker.Engine != dockerVersion {\n\t\t\tdockerVersion = cfg.Rancher.Docker.Engine\n\t\t}\n\t\tlog.Warn(\"User Docker does not exist, switching to \" + dockerVersion)\n\t\tcmd := exec.Command(\"/usr/bin/ros\", \"engine\", \"switch\", dockerVersion)\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif err := util.RunScript(\"/etc/rc.local\"); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := util.RunScript(\"/etc/init.d/apparmor\", \"start\"); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// Enable Bash colors\n\tenableBashRC(\"/root\", 0, 0)\n\tenableBashRC(rancherHome, 1100, 1100)\n\tenableBashRC(dockerHome, 1101, 1101)\n\n\tos.Setenv(\"TERM\", \"linux\")\n\n\trespawnBinPath, err := exec.LookPath(\"respawn\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn syscall.Exec(respawnBinPath, []string{\"respawn\", \"-f\", \"/etc/respawn.conf\"}, os.Environ())\n}\n\nfunc generateRespawnConf(cmdline, user string, sshd, recovery bool) string {\n\tvar respawnConf bytes.Buffer\n\n\tautologinBin := \"/usr/bin/autologin\"\n\tif recovery {\n\t\tautologinBin = \"/usr/bin/recovery\"\n\t}\n\n\tconfig := config.LoadConfig()\n\n\tallowAutoLogin := true\n\tfor _, d := range config.Rancher.Disable {\n\t\tif d == \"autologin\" {\n\t\t\tallowAutoLogin = false\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfor i := 1; i < 7; i++ {\n\t\ttty := fmt.Sprintf(\"tty%d\", i)\n\t\tif !istty(tty) {\n\t\t\tcontinue\n\t\t}\n\n\t\trespawnConf.WriteString(gettyCmd)\n\t\tif allowAutoLogin && strings.Contains(cmdline, fmt.Sprintf(\"rancher.autologin=%s\", tty)) {\n\t\t\trespawnConf.WriteString(fmt.Sprintf(\" -n -l %s -o %s:tty%d\", autologinBin, user, i))\n\t\t}\n\t\trespawnConf.WriteString(fmt.Sprintf(\" --noclear %s linux\\n\", tty))\n\t}\n\n\tfor _, tty := range []string{\"ttyS0\", \"ttyS1\", \"ttyS2\", \"ttyS3\", \"ttyAMA0\"} {\n\t\tif !strings.Contains(cmdline, fmt.Sprintf(\"console=%s\", tty)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif !istty(tty) {\n\t\t\tcontinue\n\t\t}\n\n\t\trespawnConf.WriteString(gettyCmd)\n\t\tif allowAutoLogin && strings.Contains(cmdline, fmt.Sprintf(\"rancher.autologin=%s\", tty)) {\n\t\t\trespawnConf.WriteString(fmt.Sprintf(\" -n -l %s -o %s:%s\", autologinBin, user, tty))\n\t\t}\n\t\trespawnConf.WriteString(fmt.Sprintf(\" %s\\n\", tty))\n\t}\n\n\tif sshd {\n\t\trespawnConf.WriteString(\"/usr/sbin/sshd -D\")\n\t}\n\n\treturn respawnConf.String()\n}\n\nfunc writeRespawn(user string, sshd, recovery bool) error {\n\tcmdline, err := ioutil.ReadFile(\"/proc/cmdline\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trespawn := generateRespawnConf(string(cmdline), user, sshd, recovery)\n\n\tfiles, err := ioutil.ReadDir(\"/etc/respawn.conf.d\")\n\tif err == nil {\n\t\tfor _, f := range files {\n\t\t\tp := path.Join(\"/etc/respawn.conf.d\", f.Name())\n\t\t\tcontent, err := ioutil.ReadFile(p)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to read %s: %v\", p, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\trespawn += fmt.Sprintf(\"\\n%s\", string(content))\n\t\t}\n\t} else if !os.IsNotExist(err) {\n\t\tlog.Error(err)\n\t}\n\n\treturn ioutil.WriteFile(\"/etc/respawn.conf\", []byte(respawn), 0644)\n}\n\nfunc modifySshdConfig(cfg *config.CloudConfig) error {\n\t_, err := os.Stat(sshdTplFile)\n\tif err == nil {\n\t\tos.Remove(sshdFile)\n\t\tsshdTpl, err := template.ParseFiles(sshdTplFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tf, err := os.OpenFile(sshdFile, os.O_WRONLY|os.O_CREATE, 0644)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer f.Close()\n\n\t\tconfig := map[string]string{}\n\t\tif cfg.Rancher.SSH.Port > 0 && cfg.Rancher.SSH.Port < 65355 {\n\t\t\tconfig[\"Port\"] = strconv.Itoa(cfg.Rancher.SSH.Port)\n\t\t}\n\t\tif cfg.Rancher.SSH.ListenAddress != \"\" {\n\t\t\tconfig[\"ListenAddress\"] = cfg.Rancher.SSH.ListenAddress\n\t\t}\n\n\t\treturn sshdTpl.Execute(f, config)\n\t} else if os.IsNotExist(err) {\n\t\treturn nil\n\t}\n\n\treturn err\n}\n\nfunc setupSSH(cfg *config.CloudConfig) error {\n\tfor _, keyType := range []string{\"rsa\", \"ed25519\"} {\n\t\toutputFile := fmt.Sprintf(\"/etc/ssh/ssh_host_%s_key\", keyType)\n\t\toutputFilePub := fmt.Sprintf(\"/etc/ssh/ssh_host_%s_key.pub\", keyType)\n\n\t\tif _, err := os.Stat(outputFile); err == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tsaved, savedExists := cfg.Rancher.SSH.Keys[keyType]\n\t\tpub, pubExists := cfg.Rancher.SSH.Keys[keyType+\"-pub\"]\n\n\t\tif savedExists && pubExists {\n\t\t\t// TODO check permissions\n\t\t\tif err := util.WriteFileAtomic(outputFile, []byte(saved), 0600); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := util.WriteFileAtomic(outputFilePub, []byte(pub), 0600); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tcmd := exec.Command(\"bash\", \"-c\", fmt.Sprintf(\"ssh-keygen -f %s -N '' -t %s\", outputFile, keyType))\n\t\tif err := cmd.Run(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tsavedBytes, err := ioutil.ReadFile(outputFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tpubBytes, err := ioutil.ReadFile(outputFilePub)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tconfig.Set(fmt.Sprintf(\"rancher.ssh.keys.%s\", keyType), string(savedBytes))\n\t\tconfig.Set(fmt.Sprintf(\"rancher.ssh.keys.%s-pub\", keyType), string(pubBytes))\n\t}\n\n\treturn os.MkdirAll(\"/var/run/sshd\", 0644)\n}\n\nfunc istty(name string) bool {\n\tif f, err := os.Open(fmt.Sprintf(\"/dev/%s\", name)); err == nil {\n\t\treturn terminal.IsTerminal(int(f.Fd()))\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "cmd/control/dev.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc devAction(c *cli.Context) error {\n\tif len(c.Args()) > 0 {\n\t\tfmt.Println(util.ResolveDevice(c.Args()[0]))\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/docker_init.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nconst (\n\tdockerConf               = \"/var/lib/rancher/conf/docker\"\n\tdockerDone               = \"/run/docker-done\"\n\tdockerLog                = \"/var/log/docker.log\"\n\tdockerCompletionLinkFile = \"/usr/share/bash-completion/completions/docker\"\n\tdockerCompletionFile     = \"/var/lib/rancher/engine/completion\"\n)\n\nfunc dockerInitAction(c *cli.Context) error {\n\t// TODO: this should be replaced by a \"Console ready event watcher\"\n\tfor {\n\t\tif _, err := os.Stat(consoleDone); err == nil {\n\t\t\tbreak\n\t\t}\n\t\ttime.Sleep(200 * time.Millisecond)\n\t}\n\n\tif _, err := os.Stat(dockerCompletionFile); err != nil {\n\t\tif _, err := os.Readlink(dockerCompletionLinkFile); err == nil {\n\t\t\tsyscall.Unlink(dockerCompletionLinkFile)\n\t\t}\n\t}\n\n\tdockerBin := \"\"\n\tdockerPaths := []string{\n\t\t\"/usr/bin\",\n\t\t\"/opt/bin\",\n\t\t\"/usr/local/bin\",\n\t\t\"/var/lib/rancher/docker\",\n\t}\n\tfor _, binPath := range dockerPaths {\n\t\tif util.ExistsAndExecutable(path.Join(binPath, \"dockerd\")) {\n\t\t\tdockerBin = path.Join(binPath, \"dockerd\")\n\t\t\tbreak\n\t\t}\n\t}\n\tif dockerBin == \"\" {\n\t\tfor _, binPath := range dockerPaths {\n\t\t\tif util.ExistsAndExecutable(path.Join(binPath, \"docker\")) {\n\t\t\t\tdockerBin = path.Join(binPath, \"docker\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif dockerBin == \"\" {\n\t\terr := fmt.Errorf(\"Failed to find either dockerd or docker binaries\")\n\t\tlog.Error(err)\n\t\treturn err\n\t}\n\tlog.Infof(\"Found %s\", dockerBin)\n\n\tif err := syscall.Mount(\"\", \"/\", \"\", syscall.MS_SHARED|syscall.MS_REC, \"\"); err != nil {\n\t\tlog.Error(err)\n\t}\n\tif err := syscall.Mount(\"\", \"/run\", \"\", syscall.MS_SHARED|syscall.MS_REC, \"\"); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tmountInfo, err := ioutil.ReadFile(\"/proc/self/mountinfo\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, mount := range strings.Split(string(mountInfo), \"\\n\") {\n\t\tif strings.Contains(mount, \"/var/lib/user-docker /var/lib/docker\") && strings.Contains(mount, \"rootfs\") {\n\t\t\tos.Setenv(\"DOCKER_RAMDISK\", \"true\")\n\t\t}\n\t}\n\n\tcfg := config.LoadConfig()\n\n\tfor _, link := range symLinkEngineBinary() {\n\t\tsyscall.Unlink(link.newname)\n\t\tif _, err := os.Stat(link.oldname); err == nil {\n\t\t\tif err := os.Symlink(link.oldname, link.newname); err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t}\n\t\t}\n\t}\n\n\terr = checkZfsBackingFS(cfg.Rancher.Docker.StorageDriver, cfg.Rancher.Docker.DataRoot)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\targs := []string{\n\t\t\"bash\",\n\t\t\"-c\",\n\t\tfmt.Sprintf(`[ -e %s ] && source %s; exec /usr/bin/dockerlaunch %s %s $DOCKER_OPTS >> %s 2>&1`, dockerConf, dockerConf, dockerBin, strings.Join(c.Args(), \" \"), dockerLog),\n\t}\n\n\t// TODO: this should be replaced by a \"Docker ready event watcher\"\n\tif err := ioutil.WriteFile(dockerDone, []byte(CurrentEngine()), 0644); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\treturn syscall.Exec(\"/bin/bash\", args, os.Environ())\n}\n"
  },
  {
    "path": "cmd/control/engine.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"path\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/cmd/control/service\"\n\t\"github.com/burmilla/os/cmd/control/service/app\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\t\"github.com/burmilla/os/pkg/util/versions\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/docker/reference\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project/options\"\n\tcomposeYaml \"github.com/docker/libcompose/yaml\"\n\t\"github.com/pkg/errors\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc engineSubcommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:   \"switch\",\n\t\t\tUsage:  \"switch user Docker engine without a reboot\",\n\t\t\tAction: engineSwitch,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"force, f\",\n\t\t\t\t\tUsage: \"do not prompt for input\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"no-pull\",\n\t\t\t\t\tUsage: \"don't pull console image\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:        \"create\",\n\t\t\tUsage:       \"create Dind engine without a reboot\",\n\t\t\tDescription: \"must switch user docker to 17.12.1 or earlier if using Dind\",\n\t\t\tArgsUsage:   \"<name>\",\n\t\t\tBefore:      preFlightValidate,\n\t\t\tAction:      engineCreate,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"version, v\",\n\t\t\t\t\tValue: config.DefaultDind,\n\t\t\t\t\tUsage: fmt.Sprintf(\"set the version for the engine, %s are available\", config.SupportedDinds),\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"network\",\n\t\t\t\t\tUsage: \"set the network for the engine\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"fixed-ip\",\n\t\t\t\t\tUsage: \"set the fixed ip for the engine\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"ssh-port\",\n\t\t\t\t\tUsage: \"set the ssh port for the engine\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"authorized-keys\",\n\t\t\t\t\tUsage: \"set the ssh authorized_keys absolute path for the engine\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"rm\",\n\t\t\tUsage:     \"remove Dind engine without a reboot\",\n\t\t\tArgsUsage: \"<name>\",\n\t\t\tBefore: func(c *cli.Context) error {\n\t\t\t\tif len(c.Args()) != 1 {\n\t\t\t\t\treturn errors.New(\"Must specify exactly one Docker engine to remove\")\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\tAction: dindEngineRemove,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.IntFlag{\n\t\t\t\t\tName:  \"timeout,t\",\n\t\t\t\t\tUsage: \"specify a shutdown timeout in seconds\",\n\t\t\t\t\tValue: 10,\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"force, f\",\n\t\t\t\t\tUsage: \"do not prompt for input\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:   \"enable\",\n\t\t\tUsage:  \"set user Docker engine to be switched on next reboot\",\n\t\t\tAction: engineEnable,\n\t\t},\n\t\t{\n\t\t\tName:  \"list\",\n\t\t\tUsage: \"list available Docker engines (include the Dind engines)\",\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"update, u\",\n\t\t\t\t\tUsage: \"update engine cache\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: engineList,\n\t\t},\n\t}\n}\n\nfunc engineSwitch(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\tlog.Fatal(\"Must specify exactly one Docker engine to switch to\")\n\t}\n\tnewEngine := c.Args()[0]\n\n\tcfg := config.LoadConfig()\n\n\tif newEngine == \"latest\" {\n\t\tengines := availableEngines(cfg, true)\n\t\tnewEngine = engines[len(engines)-1]\n\t\tcurrentEngine := CurrentEngine()\n\t\tif newEngine == currentEngine {\n\t\t\tlog.Infof(\"Latest engine %s is already running\", newEngine)\n\t\t\treturn nil\n\t\t}\n\t\tlog.Infof(\"Switching to engine %s\", newEngine)\n\t} else {\n\t\tvalidateEngine(newEngine, cfg)\n\t}\n\n\tproject, err := compose.GetProject(cfg, true, false)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err = project.Stop(context.Background(), 10, \"docker\"); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err = compose.LoadSpecialService(project, cfg, \"docker\", newEngine); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err = project.Up(context.Background(), options.Up{}, \"docker\"); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err := config.Set(\"rancher.docker.engine\", newEngine); err != nil {\n\t\tlog.Errorf(\"Failed to update rancher.docker.engine: %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc engineCreate(c *cli.Context) error {\n\tname := c.Args()[0]\n\tversion := c.String(\"version\")\n\tsshPort, _ := strconv.Atoi(c.String(\"ssh-port\"))\n\tif sshPort <= 0 {\n\t\tsshPort = randomSSHPort()\n\t}\n\tauthorizedKeys := c.String(\"authorized-keys\")\n\tnetwork := c.String(\"network\")\n\tfixedIP := c.String(\"fixed-ip\")\n\n\t// generate & create engine compose\n\terr := generateEngineCompose(name, version, sshPort, authorizedKeys, network, fixedIP)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// stage engine service\n\tcfg := config.LoadConfig()\n\tvar enabledServices []string\n\tif val, ok := cfg.Rancher.ServicesInclude[name]; !ok || !val {\n\t\tcfg.Rancher.ServicesInclude[name] = true\n\t\tenabledServices = append(enabledServices, name)\n\t}\n\n\tif len(enabledServices) > 0 {\n\t\tif err := compose.StageServices(cfg, enabledServices...); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tif err := config.Set(\"rancher.services_include\", cfg.Rancher.ServicesInclude); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\t// generate engine script\n\terr = util.GenerateDindEngineScript(name)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn nil\n}\n\nfunc dindEngineRemove(c *cli.Context) error {\n\tif !c.Bool(\"force\") {\n\t\tif !yes(\"Continue\") {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// app.ProjectDelete needs to use this flag\n\t// Allow deletion of the Dind engine\n\tc.Set(\"force\", \"true\")\n\t// Remove volumes associated with the Dind engine container\n\tc.Set(\"v\", \"true\")\n\n\tname := c.Args()[0]\n\tcfg := config.LoadConfig()\n\tp, err := compose.GetProject(cfg, true, false)\n\tif err != nil {\n\t\tlog.Fatalf(\"Get project failed: %v\", err)\n\t}\n\n\t// 1. service stop\n\terr = app.ProjectStop(p, c)\n\tif err != nil {\n\t\tlog.Fatalf(\"Stop project service failed: %v\", err)\n\t}\n\n\t// 2. service delete\n\terr = app.ProjectDelete(p, c)\n\tif err != nil {\n\t\tlog.Fatalf(\"Delete project service failed: %v\", err)\n\t}\n\n\t// 3. service delete\n\tif _, ok := cfg.Rancher.ServicesInclude[name]; !ok {\n\t\tlog.Fatalf(\"Failed to found enabled service %s\", name)\n\t}\n\n\tdelete(cfg.Rancher.ServicesInclude, name)\n\n\tif err = config.Set(\"rancher.services_include\", cfg.Rancher.ServicesInclude); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// 4. remove service from file\n\terr = RemoveEngineFromCompose(name)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// 5. remove dind engine script\n\terr = util.RemoveDindEngineScript(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc engineEnable(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\tlog.Fatal(\"Must specify exactly one Docker engine to enable\")\n\t}\n\tnewEngine := c.Args()[0]\n\n\tcfg := config.LoadConfig()\n\tvalidateEngine(newEngine, cfg)\n\n\tif err := compose.StageServices(cfg, newEngine); err != nil {\n\t\treturn err\n\t}\n\n\tif err := config.Set(\"rancher.docker.engine\", newEngine); err != nil {\n\t\tlog.Errorf(\"Failed to update 'rancher.docker.engine': %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc engineList(c *cli.Context) error {\n\tcfg := config.LoadConfig()\n\tengines := availableEngines(cfg, c.Bool(\"update\"))\n\tcurrentEngine := CurrentEngine()\n\n\ti := 1\n\tfor _, engine := range engines {\n\t\tif engine == currentEngine {\n\t\t\tif i == len(engines) {\n\t\t\t\tfmt.Printf(\"current  %s (latest)\\n\", engine)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"current  %s\\n\", engine)\n\t\t\t}\n\t\t} else if engine == cfg.Rancher.Docker.Engine {\n\t\t\tif i == len(engines) {\n\t\t\t\tfmt.Printf(\"enabled  %s (latest)\\n\", engine)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"enabled  %s\\n\", engine)\n\t\t\t}\n\t\t} else {\n\t\t\tif i == len(engines) {\n\t\t\t\tfmt.Printf(\"disabled %s (latest)\\n\", engine)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"disabled %s\\n\", engine)\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\n\t// check the dind container\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect dind: %v\", err)\n\t\treturn nil\n\t}\n\n\tfilter := filters.NewArgs()\n\tfilter.Add(\"label\", config.UserDockerLabel)\n\topts := types.ContainerListOptions{\n\t\tAll:    true,\n\t\tFilter: filter,\n\t}\n\tcontainers, err := client.ContainerList(context.Background(), opts)\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect dind: %v\", err)\n\t\treturn nil\n\t}\n\tfor _, c := range containers {\n\t\tif c.State == \"running\" {\n\t\t\tfmt.Printf(\"enabled  %s\\n\", c.Labels[config.UserDockerLabel])\n\t\t} else {\n\t\t\tfmt.Printf(\"disabled %s\\n\", c.Labels[config.UserDockerLabel])\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc validateEngine(engine string, cfg *config.CloudConfig) {\n\tengines := availableEngines(cfg, false)\n\tif !service.IsLocalOrURL(engine) && !util.Contains(engines, engine) {\n\t\tlog.Fatalf(\"%s is not a valid engine\", engine)\n\t}\n}\n\nfunc availableEngines(cfg *config.CloudConfig, update bool) []string {\n\tif update {\n\t\terr := network.UpdateCaches(cfg.Rancher.Repositories.ToArray(), \"engines\")\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"Failed to update engine caches: %v\", err)\n\t\t}\n\n\t}\n\tengines, err := network.GetEngines(cfg.Rancher.Repositories.ToArray())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tsort.Strings(engines)\n\treturn engines\n}\n\n// CurrentEngine gets the name of the docker that's running\nfunc CurrentEngine() (engine string) {\n\t// sudo system-docker inspect --format \"{{.Config.Image}}\" docker\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current docker: %v\", err)\n\t\treturn\n\t}\n\tinfo, err := client.ContainerInspect(context.Background(), \"docker\")\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current docker: %v\", err)\n\t\treturn\n\t}\n\t// parse image name, then remove os- prefix and the engine suffix\n\timage, err := reference.ParseNamed(info.Config.Image)\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to detect current docker(%s): %v\", info.Config.Image, err)\n\t\treturn\n\t}\n\tif t, ok := image.(reference.NamedTagged); ok {\n\t\ttag := t.Tag()\n\n\t\t// compatible with some patch image tags, such as 17.12.1-1,17.06.2-1,...\n\t\ttag = strings.SplitN(tag, \"-\", 2)[0]\n\n\t\tif !strings.HasPrefix(tag, \"1.\") && versions.LessThan(tag, \"18.09.0\") {\n\t\t\t// >= 18.09.0, docker-<version>\n\t\t\t// < 18.09.0 and >= 16.03, docker-<version>-ce\n\t\t\t// < 17.03, docker-<version>\n\t\t\ttag = tag + \"-ce\"\n\t\t}\n\t\treturn \"docker-\" + tag\n\t}\n\n\treturn\n}\n\nfunc preFlightValidate(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\treturn errors.New(\"Must specify one engine name\")\n\t}\n\tname := c.Args()[0]\n\tif name == \"\" {\n\t\treturn errors.New(\"Must specify one engine name\")\n\t}\n\n\tversion := c.String(\"version\")\n\tif version == \"\" {\n\t\treturn errors.New(\"Must specify one engine version\")\n\t}\n\n\tauthorizedKeys := c.String(\"authorized-keys\")\n\tif authorizedKeys != \"\" {\n\t\tif _, err := os.Stat(authorizedKeys); os.IsNotExist(err) {\n\t\t\treturn errors.New(\"The authorized-keys should be an exist file, recommended to put in the /opt or /var/lib/rancher directory\")\n\t\t}\n\t}\n\n\tnetwork := c.String(\"network\")\n\tif network == \"\" {\n\t\treturn errors.New(\"Must specify network\")\n\t}\n\n\tuserDefineNetwork, err := CheckUserDefineNetwork(network)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfixedIP := c.String(\"fixed-ip\")\n\tif fixedIP == \"\" {\n\t\treturn errors.New(\"Must specify fix ip\")\n\t}\n\n\terr = CheckUserDefineIPv4Address(fixedIP, *userDefineNetwork)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tisVersionMatch := false\n\tfor _, v := range config.SupportedDinds {\n\t\tif v == version {\n\t\t\tisVersionMatch = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !isVersionMatch {\n\t\treturn errors.Errorf(\"Engine version not supported only %v are supported\", config.SupportedDinds)\n\t}\n\n\tif c.String(\"ssh-port\") != \"\" {\n\t\tport, err := strconv.Atoi(c.String(\"ssh-port\"))\n\t\tif err != nil {\n\t\t\treturn errors.Wrap(err, \"Failed to convert ssh port to Int\")\n\t\t}\n\t\tif port > 0 {\n\t\t\taddr, err := net.ResolveTCPAddr(\"tcp\", \"localhost:\"+strconv.Itoa(port))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.Errorf(\"Failed to resolve tcp addr: %v\", err)\n\t\t\t}\n\t\t\tl, err := net.ListenTCP(\"tcp\", addr)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.Errorf(\"Failed to listen tcp: %v\", err)\n\t\t\t}\n\t\t\tdefer l.Close()\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc randomSSHPort() int {\n\taddr, err := net.ResolveTCPAddr(\"tcp\", \"localhost:0\")\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to resolve tcp addr: %v\", err)\n\t\treturn 0\n\t}\n\n\tl, err := net.ListenTCP(\"tcp\", addr)\n\tif err != nil {\n\t\treturn 0\n\t}\n\tdefer l.Close()\n\treturn l.Addr().(*net.TCPAddr).Port\n}\n\nfunc generateEngineCompose(name, version string, sshPort int, authorizedKeys, network, fixedIP string) error {\n\tif err := os.MkdirAll(path.Dir(config.MultiDockerConfFile), 0700); err != nil && !os.IsExist(err) {\n\t\tlog.Errorf(\"Failed to create directory for file %s: %v\", config.MultiDockerConfFile, err)\n\t\treturn err\n\t}\n\n\tcomposeConfigs := map[string]composeConfig.ServiceConfigV1{}\n\n\tif _, err := os.Stat(config.MultiDockerConfFile); err == nil {\n\t\t// read from engine compose\n\t\tbytes, err := ioutil.ReadFile(config.MultiDockerConfFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = yaml.Unmarshal(bytes, &composeConfigs)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := os.MkdirAll(config.MultiDockerDataDir+\"/\"+name, 0700); err != nil && !os.IsExist(err) {\n\t\tlog.Errorf(\"Failed to create directory for file %s: %v\", config.MultiDockerDataDir+\"/\"+name, err)\n\t\treturn err\n\t}\n\n\tvolumes := []string{\n\t\t\"/lib/modules:/lib/modules\",\n\t\tconfig.MultiDockerDataDir + \"/\" + name + \":\" + config.MultiDockerDataDir + \"/\" + name,\n\t}\n\tif authorizedKeys != \"\" {\n\t\tvolumes = append(volumes, authorizedKeys+\":/root/.ssh/authorized_keys\")\n\t}\n\n\tcomposeConfigs[name] = composeConfig.ServiceConfigV1{\n\t\tImage:       \"${REGISTRY_DOMAIN}/\" + version,\n\t\tRestart:     \"always\",\n\t\tPrivileged:  true,\n\t\tNet:         network,\n\t\tPorts:       []string{strconv.Itoa(sshPort) + \":22\"},\n\t\tVolumes:     volumes,\n\t\tVolumesFrom: []string{},\n\t\tCommand: composeYaml.Command{\n\t\t\t\"--storage-driver=overlay2\",\n\t\t\t\"--data-root=\" + config.MultiDockerDataDir + \"/\" + name,\n\t\t\t\"--host=unix://\" + config.MultiDockerDataDir + \"/\" + name + \"/docker-\" + name + \".sock\",\n\t\t},\n\t\tLabels: composeYaml.SliceorMap{\n\t\t\t\"io.rancher.os.scope\":     \"system\",\n\t\t\t\"io.rancher.os.after\":     \"console\",\n\t\t\tconfig.UserDockerLabel:    name,\n\t\t\tconfig.UserDockerNetLabel: network,\n\t\t\tconfig.UserDockerFIPLabel: fixedIP,\n\t\t},\n\t}\n\n\tbytes, err := yaml.Marshal(composeConfigs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn ioutil.WriteFile(config.MultiDockerConfFile, bytes, 0640)\n}\n\nfunc RemoveEngineFromCompose(name string) error {\n\tcomposeConfigs := map[string]composeConfig.ServiceConfigV1{}\n\n\tif _, err := os.Stat(config.MultiDockerConfFile); err == nil {\n\t\t// read from engine compose\n\t\tbytes, err := ioutil.ReadFile(config.MultiDockerConfFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = yaml.Unmarshal(bytes, &composeConfigs)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tdelete(composeConfigs, name)\n\n\tbytes, err := yaml.Marshal(composeConfigs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn ioutil.WriteFile(config.MultiDockerConfFile, bytes, 0640)\n}\n\nfunc CheckUserDefineNetwork(name string) (*types.NetworkResource, error) {\n\tsystemClient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnetworks, err := systemClient.NetworkList(context.Background(), types.NetworkListOptions{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, network := range networks {\n\t\tif network.Name == name {\n\t\t\treturn &network, nil\n\t\t}\n\t}\n\n\treturn nil, errors.Errorf(\"Failed to found the user define network: %s\", name)\n}\n\nfunc CheckUserDefineIPv4Address(ipv4 string, network types.NetworkResource) error {\n\tfor _, config := range network.IPAM.Config {\n\t\t_, ipnet, _ := net.ParseCIDR(config.Subnet)\n\t\tif ipnet.Contains(net.ParseIP(ipv4)) {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn errors.Errorf(\"IP %s is not in the specified cidr\", ipv4)\n}\n"
  },
  {
    "path": "cmd/control/entrypoint.go",
    "content": "package control\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/cmd/cloudinitexecute\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"golang.org/x/net/context\"\n)\n\nconst (\n\tca     = \"/etc/ssl/certs/ca-certificates.crt\"\n\tcaBase = \"/etc/ssl/certs/ca-certificates.crt.rancher\"\n)\n\nfunc entrypointAction(c *cli.Context) error {\n\tif _, err := os.Stat(\"/host/dev\"); err == nil {\n\t\tcmd := exec.Command(\"mount\", \"--rbind\", \"/host/dev\", \"/dev\")\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"Failed to mount /dev: %v\", err)\n\t\t}\n\t}\n\n\tif err := util.FileCopy(caBase, ca); err != nil && !os.IsNotExist(err) {\n\t\tlog.Error(err)\n\t}\n\n\tcfg := config.LoadConfig()\n\n\tshouldWriteFiles := false\n\tfor _, file := range cfg.WriteFiles {\n\t\tif file.Container != \"\" {\n\t\t\tshouldWriteFiles = true\n\t\t}\n\t}\n\n\tif shouldWriteFiles {\n\t\twriteFiles(cfg)\n\t}\n\n\tsetupCommandSymlinks()\n\n\tif len(os.Args) < 3 {\n\t\treturn nil\n\t}\n\n\tbinary, err := exec.LookPath(os.Args[2])\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn syscall.Exec(binary, os.Args[2:], os.Environ())\n}\n\nfunc writeFiles(cfg *config.CloudConfig) error {\n\tid, err := util.GetCurrentContainerID()\n\tif err != nil {\n\t\treturn err\n\t}\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\tinfo, err := client.ContainerInspect(context.Background(), id)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcloudinitexecute.WriteFiles(cfg, info.Name[1:])\n\treturn nil\n}\n\nfunc setupCommandSymlinks() {\n\tfor _, link := range []symlink{\n\t\t{config.RosBin, \"/usr/bin/autologin\"},\n\t\t{config.RosBin, \"/usr/bin/recovery\"},\n\t\t{config.RosBin, \"/usr/bin/cloud-init-execute\"},\n\t\t{config.RosBin, \"/usr/bin/cloud-init-save\"},\n\t\t{config.RosBin, \"/usr/bin/dockerlaunch\"},\n\t\t{config.RosBin, \"/usr/bin/respawn\"},\n\t\t{config.RosBin, \"/usr/sbin/netconf\"},\n\t\t{config.RosBin, \"/usr/sbin/wait-for-docker\"},\n\t\t{config.RosBin, \"/usr/sbin/poweroff\"},\n\t\t{config.RosBin, \"/usr/sbin/reboot\"},\n\t\t{config.RosBin, \"/usr/sbin/halt\"},\n\t\t{config.RosBin, \"/usr/sbin/shutdown\"},\n\t\t{config.RosBin, \"/sbin/poweroff\"},\n\t\t{config.RosBin, \"/sbin/reboot\"},\n\t\t{config.RosBin, \"/sbin/halt\"},\n\t\t{config.RosBin, \"/sbin/shutdown\"},\n\t} {\n\t\tos.Remove(link.newname)\n\t\tif err := os.Symlink(link.oldname, link.newname); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/control/env.go",
    "content": "package control\n\nimport (\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc envAction(c *cli.Context) error {\n\tcfg := config.LoadConfig()\n\n\targs := c.Args()\n\tif len(args) == 0 {\n\t\treturn nil\n\t}\n\tosEnv := os.Environ()\n\n\tenvMap := make(map[string]string, len(cfg.Rancher.Environment)+len(osEnv))\n\tfor k, v := range cfg.Rancher.Environment {\n\t\tenvMap[k] = v\n\t}\n\tfor k, v := range util.KVPairs2Map(osEnv) {\n\t\tenvMap[k] = v\n\t}\n\n\tif cmd, err := exec.LookPath(args[0]); err != nil {\n\t\tlog.Fatal(err)\n\t} else {\n\t\targs[0] = cmd\n\t}\n\tif err := syscall.Exec(args[0], args, util.Map2KVPairs(envMap)); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/install/grub.go",
    "content": "package install\n\nimport (\n\t\"html/template\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nfunc RunGrub(baseName, device string) error {\n\tlog.Debugf(\"installGrub\")\n\n\t//grub-install --boot-directory=${baseName}/boot ${device}\n\tcmd := exec.Command(\"grub-install\", \"--boot-directory=\"+baseName+\"/boot\", device)\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"%s\", err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc grubConfig(menu BootVars) error {\n\tlog.Debugf(\"grubConfig\")\n\n\tfiletmpl, err := template.New(\"grub2config\").Parse(`{{define \"grub2menu\"}}menuentry \"{{.Name}}\" {\n  set root=(hd0,msdos1)\n  linux /{{.bootDir}}vmlinuz-{{.Version}}-rancheros {{.KernelArgs}} {{.Append}}\n  initrd /{{.bootDir}}initrd-{{.Version}}-rancheros\n}\n\n{{end}}\nset default=\"0\"\nset timeout=\"{{.Timeout}}\"\n{{if .Fallback}}set fallback={{.Fallback}}{{end}}\n\n{{- range .Entries}}\n{{template \"grub2menu\" .}}\n{{- end}}\n\n`)\n\tif err != nil {\n\t\tlog.Errorf(\"grub2config %s\", err)\n\t\treturn err\n\t}\n\n\tcfgFile := filepath.Join(menu.BaseName, menu.BootDir+\"grub/grub.cfg\")\n\tlog.Debugf(\"grubConfig written to %s\", cfgFile)\n\n\tf, err := os.Create(cfgFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = filetmpl.Execute(f, menu)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc PvGrubConfig(menu BootVars) error {\n\tlog.Debugf(\"pvGrubConfig\")\n\n\tfiletmpl, err := template.New(\"grublst\").Parse(`{{define \"grubmenu\"}}\ntitle BurmillaOS {{.Version}}-({{.Name}})\nroot (hd0)\nkernel /${bootDir}vmlinuz-{{.Version}}-rancheros {{.KernelArgs}} {{.Append}}\ninitrd /${bootDir}initrd-{{.Version}}-rancheros\n\n{{end}}\ndefault 0\ntimeout {{.Timeout}}\n{{if .Fallback}}fallback {{.Fallback}}{{end}}\nhiddenmenu\n\n{{- range .Entries}}\n{{template \"grubmenu\" .}}\n{{- end}}\n\n`)\n\tif err != nil {\n\t\tlog.Errorf(\"pv grublst: %s\", err)\n\n\t\treturn err\n\t}\n\n\tcfgFile := filepath.Join(menu.BaseName, menu.BootDir+\"grub/menu.lst\")\n\tlog.Debugf(\"grubMenu written to %s\", cfgFile)\n\tf, err := os.Create(cfgFile)\n\tif err != nil {\n\t\tlog.Errorf(\"Create(%s) %s\", cfgFile, err)\n\n\t\treturn err\n\t}\n\terr = filetmpl.Execute(f, menu)\n\tif err != nil {\n\t\tlog.Errorf(\"execute %s\", err)\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/install/install.go",
    "content": "package install\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\ntype MenuEntry struct {\n\tName, BootDir, Version, KernelArgs, Append string\n}\ntype BootVars struct {\n\tBaseName, BootDir string\n\tTimeout           uint\n\tFallback          int\n\tEntries           []MenuEntry\n}\n\nfunc MountDevice(baseName, device, partition string, raw bool) (string, string, error) {\n\tlog.Debugf(\"mountdevice %s, raw %v\", partition, raw)\n\n\tif partition == \"\" {\n\t\tif raw {\n\t\t\tlog.Debugf(\"util.Mount (raw) %s, %s\", partition, baseName)\n\n\t\t\tcmd := exec.Command(\"lsblk\", \"-no\", \"pkname\", partition)\n\t\t\tlog.Debugf(\"Run(%v)\", cmd)\n\t\t\tcmd.Stderr = os.Stderr\n\t\t\tdevice := \"\"\n\t\t\t// TODO: out can == \"\" - this is used to \"detect software RAID\" which is terrible\n\t\t\tif out, err := cmd.Output(); err == nil {\n\t\t\t\tdevice = \"/dev/\" + strings.TrimSpace(string(out))\n\t\t\t}\n\n\t\t\tlog.Debugf(\"mountdevice return -> d: %s, p: %s\", device, partition)\n\t\t\treturn device, partition, util.Mount(partition, baseName, \"\", \"\")\n\t\t}\n\n\t\t//rootfs := partition\n\t\t// Don't use ResolveDevice - it can fail, whereas `blkid -L LABEL` works more often\n\n\t\td, _, err := util.Blkid(\"RANCHER_BOOT\")\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to run blkid: %s\", err)\n\t\t}\n\t\tif d != \"\" {\n\t\t\tpartition = d\n\t\t\tbaseName = filepath.Join(baseName, config.BootDir)\n\t\t} else {\n\t\t\tpartition = GetStatePartition()\n\t\t}\n\t\tcmd := exec.Command(\"lsblk\", \"-no\", \"pkname\", partition)\n\t\tlog.Debugf(\"Run(%v)\", cmd)\n\t\tcmd.Stderr = os.Stderr\n\t\t// TODO: out can == \"\" - this is used to \"detect software RAID\" which is terrible\n\t\tif out, err := cmd.Output(); err == nil {\n\t\t\tdevice = \"/dev/\" + strings.TrimSpace(string(out))\n\t\t}\n\t}\n\tos.MkdirAll(baseName, 0755)\n\tcmd := exec.Command(\"mount\", partition, baseName)\n\t//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tlog.Debugf(\"mountdevice return2 -> d: %s, p: %s\", device, partition)\n\treturn device, partition, cmd.Run()\n}\n\nfunc GetStatePartition() string {\n\tcfg := config.LoadConfig()\n\n\tif dev := util.ResolveDevice(cfg.Rancher.State.Dev); dev != \"\" {\n\t\t// try the rancher.state.dev setting\n\t\treturn dev\n\t}\n\td, _, err := util.Blkid(\"RANCHER_STATE\")\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to run blkid: %s\", err)\n\t}\n\treturn d\n}\n\nfunc GetDefaultPartition(device string) string {\n\tif strings.Contains(device, \"nvme\") {\n\t\treturn device + \"p1\"\n\t}\n\treturn device + \"1\"\n}\n"
  },
  {
    "path": "cmd/control/install/service.go",
    "content": "package install\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\ntype ImageConfig struct {\n\tImage string `yaml:\"image,omitempty\"`\n}\n\nfunc GetCacheImageList(cloudconfig string, oldcfg *config.CloudConfig) []string {\n\tsavedImages := make([]string, 0)\n\tbytes, err := readConfigFile(cloudconfig)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to read cloud-config\")\n\t\treturn savedImages\n\t}\n\tr := make(map[interface{}]interface{})\n\tif err := yaml.Unmarshal(bytes, &r); err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to unmarshal cloud-config\")\n\t\treturn savedImages\n\t}\n\tnewcfg := &config.CloudConfig{}\n\tif err := util.Convert(r, newcfg); err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to convert cloud-config\")\n\t\treturn savedImages\n\t}\n\n\t// services_include\n\tfor key, value := range newcfg.Rancher.ServicesInclude {\n\t\tif value {\n\t\t\tserviceImage := getServiceImage(key, \"\", oldcfg, newcfg)\n\t\t\tif serviceImage != \"\" {\n\t\t\t\tsavedImages = append(savedImages, serviceImage)\n\t\t\t}\n\t\t}\n\t}\n\n\t// console\n\tnewConsole := newcfg.Rancher.Console\n\tif newConsole != \"\" && newConsole != \"default\" {\n\t\tconsoleImage := getServiceImage(newConsole, \"console\", oldcfg, newcfg)\n\t\tif consoleImage != \"\" {\n\t\t\tsavedImages = append(savedImages, consoleImage)\n\t\t}\n\t}\n\n\t// docker engine\n\tnewEngine := newcfg.Rancher.Docker.Engine\n\tif newEngine != \"\" && newEngine != oldcfg.Rancher.Docker.Engine {\n\t\tengineImage := getServiceImage(newEngine, \"docker\", oldcfg, newcfg)\n\t\tif engineImage != \"\" {\n\t\t\tsavedImages = append(savedImages, engineImage)\n\t\t}\n\n\t}\n\n\treturn savedImages\n}\n\nfunc getServiceImage(service, svctype string, oldcfg, newcfg *config.CloudConfig) string {\n\tvar (\n\t\tserviceImage string\n\t\tbytes        []byte\n\t\terr          error\n\t)\n\tif len(newcfg.Rancher.Repositories.ToArray()) > 0 {\n\t\tbytes, err = network.LoadServiceResource(service, true, newcfg)\n\t} else {\n\t\tbytes, err = network.LoadServiceResource(service, true, oldcfg)\n\t}\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to load service resource\")\n\t\treturn serviceImage\n\t}\n\timageConfig := map[interface{}]ImageConfig{}\n\tif err = yaml.Unmarshal(bytes, &imageConfig); err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to unmarshal service\")\n\t\treturn serviceImage\n\t}\n\tswitch svctype {\n\tcase \"console\":\n\t\tserviceImage = formatImage(imageConfig[\"console\"].Image, oldcfg, newcfg)\n\tcase \"docker\":\n\t\tserviceImage = formatImage(imageConfig[\"docker\"].Image, oldcfg, newcfg)\n\tdefault:\n\t\tserviceImage = formatImage(imageConfig[service].Image, oldcfg, newcfg)\n\t}\n\n\treturn serviceImage\n}\n\nfunc RunCacheScript(partition string, images []string) error {\n\treturn util.RunScript(\"/scripts/cache-services.sh\", partition, strings.Join(images, \" \"))\n}\n\nfunc readConfigFile(file string) ([]byte, error) {\n\tcontent, err := ioutil.ReadFile(file)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\terr = nil\n\t\t\tcontent = []byte{}\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn content, err\n}\n\nfunc formatImage(image string, oldcfg, newcfg *config.CloudConfig) string {\n\tregistryDomain := newcfg.Rancher.Environment[\"REGISTRY_DOMAIN\"]\n\tif registryDomain == \"\" {\n\t\tregistryDomain = oldcfg.Rancher.Environment[\"REGISTRY_DOMAIN\"]\n\t}\n\timage = strings.Replace(image, \"${REGISTRY_DOMAIN}\", registryDomain, -1)\n\n\timage = strings.Replace(image, \"${SUFFIX}\", config.Suffix, -1)\n\n\treturn image\n}\n"
  },
  {
    "path": "cmd/control/install/syslinux.go",
    "content": "package install\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"html/template\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nfunc syslinuxConfig(menu BootVars) error {\n\tlog.Debugf(\"syslinuxConfig\")\n\n\tfiletmpl, err := template.New(\"syslinuxconfig\").Parse(`{{define \"syslinuxmenu\"}}\nLABEL {{.Name}}\n    LINUX ../vmlinuz-{{.Version}}-rancheros\n    APPEND {{.KernelArgs}} {{.Append}}\n    INITRD ../initrd-{{.Version}}-rancheros\n{{end}}\nTIMEOUT 20   #2 seconds\nDEFAULT BurmillaOS-current\n\n{{- range .Entries}}\n{{template \"syslinuxmenu\" .}}\n{{- end}}\n\n`)\n\tif err != nil {\n\t\tlog.Errorf(\"syslinuxconfig %s\", err)\n\t\treturn err\n\t}\n\n\tcfgFile := filepath.Join(menu.BaseName, menu.BootDir+\"syslinux/syslinux.cfg\")\n\tlog.Debugf(\"syslinuxConfig written to %s\", cfgFile)\n\tf, err := os.Create(cfgFile)\n\tif err != nil {\n\t\tlog.Errorf(\"Create(%s) %s\", cfgFile, err)\n\t\treturn err\n\t}\n\terr = filetmpl.Execute(f, menu)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc ReadGlobalCfg(globalCfg string) (string, error) {\n\tappend := \"\"\n\tbuf, err := ioutil.ReadFile(globalCfg)\n\tif err != nil {\n\t\treturn append, err\n\t}\n\n\ts := bufio.NewScanner(bytes.NewReader(buf))\n\tfor s.Scan() {\n\t\tline := strings.TrimSpace(s.Text())\n\t\tif strings.HasPrefix(line, \"APPEND\") {\n\t\t\tappend = strings.TrimSpace(strings.TrimPrefix(line, \"APPEND\"))\n\t\t}\n\t}\n\treturn append, nil\n}\n\nfunc ReadSyslinuxCfg(currentCfg string) (string, string, error) {\n\tvmlinuzFile := \"\"\n\tinitrdFile := \"\"\n\t// Need to parse currentCfg for the lines:\n\t// KERNEL ../vmlinuz-4.9.18-rancher^M\n\t// INITRD ../initrd-41e02e6-dirty^M\n\tbuf, err := ioutil.ReadFile(currentCfg)\n\tif err != nil {\n\t\treturn vmlinuzFile, initrdFile, err\n\t}\n\n\tDIST := filepath.Dir(currentCfg)\n\n\ts := bufio.NewScanner(bytes.NewReader(buf))\n\tfor s.Scan() {\n\t\tline := strings.TrimSpace(s.Text())\n\t\tif strings.HasPrefix(line, \"KERNEL\") {\n\t\t\tvmlinuzFile = strings.TrimSpace(strings.TrimPrefix(line, \"KERNEL\"))\n\t\t\tvmlinuzFile = filepath.Join(DIST, filepath.Base(vmlinuzFile))\n\t\t}\n\t\tif strings.HasPrefix(line, \"INITRD\") {\n\t\t\tinitrdFile = strings.TrimSpace(strings.TrimPrefix(line, \"INITRD\"))\n\t\t\tinitrdFile = filepath.Join(DIST, filepath.Base(initrdFile))\n\t\t}\n\t}\n\treturn vmlinuzFile, initrdFile, err\n}\n"
  },
  {
    "path": "cmd/control/install.go",
    "content": "package control\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"crypto/md5\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/cmd/control/install\"\n\t\"github.com/burmilla/os/cmd/power\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/dfs\" // TODO: move CopyFile into util or something.\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/pkg/errors\"\n)\n\nvar installCommand = cli.Command{\n\tName:     \"install\",\n\tUsage:    \"install BurmillaOS to disk\",\n\tHideHelp: true,\n\tAction:   installAction,\n\tFlags: []cli.Flag{\n\t\tcli.StringFlag{\n\t\t\t// TODO: need to validate ? -i burmilla/os:v0.3.1 just sat there.\n\t\t\tName: \"image, i\",\n\t\t\tUsage: `install from a certain image (e.g., 'rancher/os:v0.7.0')\n\t\t\t\t\t\t\tuse 'ros os list' to see what versions are available.`,\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName: \"install-type, t\",\n\t\t\tUsage: `generic:    (Default) Creates 1 ext4 partition and installs BurmillaOS (syslinux)\n                        amazon-ebs: Installs BurmillaOS and sets up PV-GRUB\n                        gptsyslinux: partition and format disk (gpt), then install BurmillaOS and setup Syslinux\n                        `,\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"cloud-config, c\",\n\t\t\tUsage: \"cloud-config yml file - needed for SSH authorized keys\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"device, d\",\n\t\t\tUsage: \"storage device\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"partition, p\",\n\t\t\tUsage: \"partition to install to\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"statedir\",\n\t\t\tUsage: \"install to rancher.state.directory\",\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:  \"force, f\",\n\t\t\tUsage: \"[ DANGEROUS! Data loss can happen ] partition/format without prompting\",\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:  \"no-reboot\",\n\t\t\tUsage: \"do not reboot after install\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"append, a\",\n\t\t\tUsage: \"append additional kernel parameters\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:   \"rollback, r\",\n\t\t\tUsage:  \"rollback version\",\n\t\t\tHidden: true,\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:   \"isoinstallerloaded\",\n\t\t\tUsage:  \"INTERNAL use only: mount the iso to get kernel and initrd\",\n\t\t\tHidden: true,\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:  \"kexec, k\",\n\t\t\tUsage: \"reboot using kexec\",\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:  \"save, s\",\n\t\t\tUsage: \"save services and images for next booting\",\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:  \"debug\",\n\t\t\tUsage: \"Run installer with debug output\",\n\t\t},\n\t},\n}\n\nfunc installAction(c *cli.Context) error {\n\tlog.InitLogger()\n\tdebug := c.Bool(\"debug\")\n\tif debug {\n\t\tlog.Info(\"Log level is debug\")\n\t\toriginalLevel := log.GetLevel()\n\t\tdefer log.SetLevel(originalLevel)\n\t\tlog.SetLevel(log.DebugLevel)\n\t}\n\n\tif runtime.GOARCH != \"amd64\" {\n\t\tlog.Fatalf(\"ros install / upgrade only supported on 'amd64', not '%s'\", runtime.GOARCH)\n\t}\n\n\tif c.Args().Present() {\n\t\tlog.Fatalf(\"invalid arguments %v\", c.Args())\n\t}\n\n\tkappend := strings.TrimSpace(c.String(\"append\"))\n\tforce := c.Bool(\"force\")\n\tkexec := c.Bool(\"kexec\")\n\treboot := !c.Bool(\"no-reboot\")\n\tisoinstallerloaded := c.Bool(\"isoinstallerloaded\")\n\n\timage := c.String(\"image\")\n\tcfg := config.LoadConfig()\n\tif image == \"\" {\n\t\timage = fmt.Sprintf(\"%s:%s%s\",\n\t\t\tcfg.Rancher.Upgrade.Image,\n\t\t\tconfig.Version,\n\t\t\tconfig.Suffix)\n\t\timage = formatImage(image, cfg)\n\t}\n\n\tinstallType := c.String(\"install-type\")\n\tif installType == \"\" {\n\t\tlog.Info(\"No install type specified...defaulting to generic\")\n\t\tinstallType = \"generic\"\n\t}\n\tif installType == \"rancher-upgrade\" ||\n\t\tinstallType == \"upgrade\" {\n\t\tinstallType = \"upgrade\" // rancher-upgrade is redundant!\n\t\tforce = true            // the os.go upgrade code already asks\n\t\treboot = false\n\t\tisoinstallerloaded = true // OMG this flag is aweful - kill it with fire\n\t}\n\tdevice := c.String(\"device\")\n\tpartition := c.String(\"partition\")\n\tstatedir := c.String(\"statedir\")\n\tif statedir != \"\" && installType != \"noformat\" {\n\t\tlog.Fatalf(\"--statedir %s requires --type noformat\", statedir)\n\t}\n\tif installType != \"noformat\" &&\n\t\tinstallType != \"raid\" &&\n\t\tinstallType != \"bootstrap\" &&\n\t\tinstallType != \"upgrade\" {\n\t\t// These can use RANCHER_BOOT or RANCHER_STATE labels..\n\t\tif device == \"\" {\n\t\t\tlog.Fatal(\"Can not proceed without -d <dev> specified\")\n\t\t}\n\t}\n\n\tcloudConfig := c.String(\"cloud-config\")\n\tif cloudConfig == \"\" {\n\t\tif installType != \"upgrade\" {\n\t\t\t// TODO: I wonder if its plausible to merge a new cloud-config into an existing one on upgrade - so for now, i'm only turning off the warning\n\t\t\tlog.Warn(\"Cloud-config not provided: you might need to provide cloud-config on boot with ssh_authorized_keys\")\n\t\t}\n\t} else {\n\t\tos.MkdirAll(\"/opt\", 0755)\n\t\tuc := \"/opt/user_config.yml\"\n\t\tif strings.HasPrefix(cloudConfig, \"http://\") || strings.HasPrefix(cloudConfig, \"https://\") {\n\t\t\tif err := util.HTTPDownloadToFile(cloudConfig, uc); err != nil {\n\t\t\t\tlog.WithFields(log.Fields{\"cloudConfig\": cloudConfig, \"error\": err}).Fatal(\"Failed to http get cloud-config\")\n\t\t\t}\n\t\t} else {\n\t\t\tif err := util.FileCopy(cloudConfig, uc); err != nil {\n\t\t\t\tlog.WithFields(log.Fields{\"cloudConfig\": cloudConfig, \"error\": err}).Fatal(\"Failed to copy cloud-config\")\n\t\t\t}\n\t\t}\n\t\tcloudConfig = uc\n\t}\n\n\tsavedImages := []string{}\n\tif c.Bool(\"save\") && cloudConfig != \"\" && installType != \"upgrade\" {\n\t\tsavedImages = install.GetCacheImageList(cloudConfig, cfg)\n\t\tlog.Debugf(\"Will cache these images: %s\", savedImages)\n\t}\n\n\tif err := runInstall(image, installType, cloudConfig, device, partition, statedir, kappend, force, kexec, isoinstallerloaded, debug, savedImages); err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Fatal(\"Failed to run install\")\n\t\treturn err\n\t}\n\n\tif !kexec && reboot && (force || yes(\"Continue with reboot\")) {\n\t\tlog.Info(\"Rebooting\")\n\t\tpower.Reboot()\n\t}\n\n\treturn nil\n}\n\nfunc runInstall(image, installType, cloudConfig, device, partition, statedir, kappend string, force, kexec, isoinstallerloaded, debug bool, savedImages []string) error {\n\tfmt.Printf(\"Installing from %s\\n\", image)\n\n\tif !force {\n\t\tif util.IsRunningInTty() && !yes(\"Continue\") {\n\t\t\tlog.Infof(\"Not continuing with installation due to user not saying 'yes'\")\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n\n\tuseIso := false\n\t// --isoinstallerloaded is used if the ros has created the installer container from and image that was on the booted iso\n\tif !isoinstallerloaded {\n\t\tlog.Infof(\"start !isoinstallerloaded\")\n\n\t\tif _, err := os.Stat(\"/dist/initrd-\" + config.Version); os.IsNotExist(err) {\n\t\t\tdeviceName, deviceType, err := getBootIso()\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to get boot iso: %v\", err)\n\t\t\t\tfmt.Println(\"There is no boot iso drive, terminate the task\")\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err = mountBootIso(deviceName, deviceType); err != nil {\n\t\t\t\tlog.Debugf(\"Failed to mountBootIso: %v\", err)\n\t\t\t} else {\n\t\t\t\tlog.Infof(\"trying to load /bootiso/rancheros/installer.tar.gz\")\n\t\t\t\tif _, err := os.Stat(\"/bootiso/rancheros/\"); err == nil {\n\t\t\t\t\tcmd := exec.Command(\"system-docker\", \"load\", \"-i\", \"/bootiso/rancheros/installer.tar.gz\")\n\t\t\t\t\tcmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\t\t\t\t\tif err := cmd.Run(); err != nil {\n\t\t\t\t\t\tlog.Infof(\"failed to load images from /bootiso/rancheros: %v\", err)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlog.Infof(\"Loaded images from /bootiso/rancheros/installer.tar.gz\")\n\n\t\t\t\t\t\t//TODO: add if os-installer:latest exists - we might have loaded a full installer?\n\t\t\t\t\t\tuseIso = true\n\t\t\t\t\t\t// now use the installer image\n\t\t\t\t\t\tcfg := config.LoadConfig()\n\n\t\t\t\t\t\tif image == cfg.Rancher.Upgrade.Image+\":\"+config.Version+config.Suffix {\n\t\t\t\t\t\t\t// TODO: fix the fullinstaller Dockerfile to use the ${VERSION}${SUFFIX}\n\t\t\t\t\t\t\timage = cfg.Rancher.Upgrade.Image + \"-installer\" + \":latest\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// TODO: also poke around looking for the /boot/vmlinuz and initrd...\n\t\t\t}\n\n\t\t\tlog.Infof(\"starting installer container for %s (new)\", image)\n\t\t\tinstallerCmd := []string{\n\t\t\t\t\"run\", \"--rm\", \"--net=host\", \"--privileged\",\n\t\t\t\t// bind mount host fs to access its ros, vmlinuz, initrd and /dev (udev isn't running in container)\n\t\t\t\t\"-v\", \"/:/host\",\n\t\t\t\t\"--volumes-from=all-volumes\",\n\t\t\t\timage,\n\t\t\t\t//\t\t\t\t\"install\",\n\t\t\t\t\"-t\", installType,\n\t\t\t\t\"-d\", device,\n\t\t\t\t\"-i\", image, // TODO: this isn't used - I'm just using it to over-ride the defaulting\n\t\t\t}\n\t\t\t// Need to call the inner container with force - the outer one does the \"are you sure\"\n\t\t\tinstallerCmd = append(installerCmd, \"-f\")\n\t\t\t// The outer container does the reboot (if needed)\n\t\t\tinstallerCmd = append(installerCmd, \"--no-reboot\")\n\t\t\tif cloudConfig != \"\" {\n\t\t\t\tinstallerCmd = append(installerCmd, \"-c\", cloudConfig)\n\t\t\t}\n\t\t\tif kappend != \"\" {\n\t\t\t\tinstallerCmd = append(installerCmd, \"-a\", kappend)\n\t\t\t}\n\t\t\tif useIso {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--isoinstallerloaded=1\")\n\t\t\t}\n\t\t\tif kexec {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--kexec\")\n\t\t\t}\n\t\t\tif debug {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--debug\")\n\t\t\t}\n\t\t\tif partition != \"\" {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--partition\", partition)\n\t\t\t}\n\t\t\tif statedir != \"\" {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--statedir\", statedir)\n\t\t\t}\n\t\t\tif len(savedImages) > 0 {\n\t\t\t\tinstallerCmd = append(installerCmd, \"--save\")\n\t\t\t}\n\n\t\t\t// TODO: mount at /mnt for shared mount?\n\t\t\tif useIso {\n\t\t\t\tutil.Unmount(\"/bootiso\")\n\t\t\t}\n\t\t\tcmd := exec.Command(\"system-docker\", installerCmd...)\n\t\t\tlog.Debugf(\"Run(%v)\", cmd)\n\t\t\tcmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\n\t\t\treturn cmd.Run()\n\t\t}\n\t}\n\n\tlog.Debugf(\"running installation\")\n\n\tif partition == \"\" {\n\t\tif installType == \"generic\" ||\n\t\t\tinstallType == \"syslinux\" ||\n\t\t\tinstallType == \"gptsyslinux\" {\n\t\t\tdiskType := \"msdos\"\n\t\t\tif installType == \"gptsyslinux\" {\n\t\t\t\tdiskType = \"gpt\"\n\t\t\t}\n\t\t\tlog.Debugf(\"running setDiskpartitions\")\n\t\t\terr := setDiskpartitions(device, diskType)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"error setDiskpartitions %s\", err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// use the bind mounted host filesystem to get access to the /dev/vda1 device that udev on the host sets up (TODO: can we run a udevd inside the container? `mknod b 253 1 /dev/vda1` doesn't work)\n\t\t\tdevice = \"/host\" + device\n\t\t\t//# TODO: Change this to a number so that users can specify.\n\t\t\t//# Will need to make it so that our builds and packer APIs remain consistent.\n\t\t\tpartition = install.GetDefaultPartition(device)\n\t\t}\n\t}\n\n\tif installType == \"upgrade\" {\n\t\tisoinstallerloaded = false\n\t}\n\n\tif isoinstallerloaded {\n\t\tlog.Debugf(\"running isoinstallerloaded...\")\n\t\t// TODO: detect if its not mounted and then optionally mount?\n\t\tdeviceName, deviceType, err := getBootIso()\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to get boot iso: %v\", err)\n\t\t\tfmt.Println(\"There is no boot iso drive, terminate the task\")\n\t\t\treturn err\n\t\t}\n\t\tif err := mountBootIso(deviceName, deviceType); err != nil {\n\t\t\tlog.Errorf(\"error mountBootIso %s\", err)\n\t\t\t//return err\n\t\t}\n\t}\n\n\terr := layDownOS(image, installType, cloudConfig, device, partition, statedir, kappend, kexec)\n\tif err != nil {\n\t\tlog.Errorf(\"error layDownOS %s\", err)\n\t\treturn err\n\t}\n\n\tif len(savedImages) > 0 {\n\t\treturn install.RunCacheScript(partition, savedImages)\n\t}\n\n\treturn nil\n}\n\nfunc getDeviceByLabel(label string) (string, string) {\n\td, t, err := util.Blkid(label)\n\tif err != nil {\n\t\tlog.Warnf(\"Failed to run blkid for %s\", label)\n\t\treturn \"\", \"\"\n\t}\n\treturn d, t\n}\n\nfunc getBootIso() (string, string, error) {\n\tdeviceName := \"/dev/sr0\"\n\tdeviceType := \"iso9660\"\n\n\t// Our ISO LABEL is RancherOS\n\t// But some tools(like rufus) will change LABEL to RANCHEROS\n\tfor _, label := range []string{\"RancherOS\", \"RANCHEROS\"} {\n\t\td, t := getDeviceByLabel(label)\n\t\tif d != \"\" {\n\t\t\tdeviceName = d\n\t\t\tdeviceType = t\n\t\t\tcontinue\n\t\t}\n\t}\n\n\t// Check the sr deive if exist\n\tif _, err := os.Stat(deviceName); os.IsNotExist(err) {\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn deviceName, deviceType, nil\n}\n\nfunc mountBootIso(deviceName, deviceType string) error {\n\tmountsFile, err := os.Open(\"/proc/mounts\")\n\tif err != nil {\n\t\treturn errors.Wrap(err, \"Failed to read /proc/mounts\")\n\t}\n\tdefer mountsFile.Close()\n\n\tif partitionMounted(deviceName, mountsFile) {\n\t\treturn nil\n\t}\n\n\tos.MkdirAll(\"/bootiso\", 0755)\n\tcmd := exec.Command(\"mount\", \"-t\", deviceType, deviceName, \"/bootiso\")\n\tlog.Debugf(\"mount (%#v)\", cmd)\n\n\tvar outBuf, errBuf bytes.Buffer\n\tcmd.Stdout = &outBuf\n\tcmd.Stderr = &errBuf\n\terr = cmd.Run()\n\tif err != nil {\n\t\treturn errors.Wrapf(err, \"Tried and failed to mount %s: stderr output: %s\", deviceName, errBuf.String())\n\t}\n\tlog.Debugf(\"Mounted %s, output: %s\", deviceName, outBuf.String())\n\treturn nil\n}\n\nfunc layDownOS(image, installType, cloudConfig, device, partition, statedir, kappend string, kexec bool) error {\n\t// ENV == installType\n\t//[[ \"$ARCH\" == \"arm\" && \"$ENV\" != \"upgrade\" ]] && ENV=arm\n\n\t// image == burmilla/os:v0.7.0_arm\n\t// TODO: remove the _arm suffix (but watch out, its not always there..)\n\tVERSION := image[strings.Index(image, \":\")+1:]\n\n\tvar FILES []string\n\tDIST := \"/dist\" //${DIST:-/dist}\n\t//cloudConfig := SCRIPTS_DIR + \"/conf/empty.yml\" //${cloudConfig:-\"${SCRIPTS_DIR}/conf/empty.yml\"}\n\tCONSOLE := \"tty0\"\n\tbaseName := \"/mnt/new_img\"\n\tkernelArgs := \"printk.devkmsg=on rancher.state.dev=LABEL=RANCHER_STATE rancher.state.wait transparent_hugepage=madvise iommu=pt intel_iommu=off scsi_mod.use_blk_mq=1 apparmor=1 security=apparmor panic=10\" // console=\"+CONSOLE\n\tif statedir != \"\" {\n\t\tkernelArgs = kernelArgs + \" rancher.state.directory=\" + statedir\n\t}\n\n\t// unmount on trap\n\tdefer util.Unmount(baseName)\n\n\tdiskType := \"msdos\"\n\tif installType == \"gptsyslinux\" {\n\t\tdiskType = \"gpt\"\n\t}\n\n\tswitch installType {\n\tcase \"syslinux\":\n\t\tfallthrough\n\tcase \"gptsyslinux\":\n\t\tfallthrough\n\tcase \"generic\":\n\t\tlog.Debugf(\"formatAndMount\")\n\t\tvar err error\n\t\tdevice, _, err = formatAndMount(baseName, device, partition)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"formatAndMount %s\", err)\n\t\t\treturn err\n\t\t}\n\t\terr = installSyslinux(device, baseName, diskType)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"installSyslinux %s\", err)\n\t\t\treturn err\n\t\t}\n\t\terr = seedData(baseName, cloudConfig, FILES)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"seedData %s\", err)\n\t\t\treturn err\n\t\t}\n\tcase \"arm\":\n\t\tvar err error\n\t\t_, _, err = formatAndMount(baseName, device, partition)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tseedData(baseName, cloudConfig, FILES)\n\tcase \"amazon-ebs-pv\":\n\t\tfallthrough\n\tcase \"amazon-ebs-hvm\":\n\t\tCONSOLE = \"ttyS0\"\n\t\tvar err error\n\t\tdevice, _, err = formatAndMount(baseName, device, partition)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif installType == \"amazon-ebs-hvm\" {\n\t\t\tinstallSyslinux(device, baseName, diskType)\n\t\t}\n\t\t//# AWS Networking recommends disabling.\n\t\tseedData(baseName, cloudConfig, FILES)\n\tcase \"googlecompute\":\n\t\tCONSOLE = \"ttyS0\"\n\t\tvar err error\n\t\tdevice, _, err = formatAndMount(baseName, device, partition)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstallSyslinux(device, baseName, diskType)\n\t\tseedData(baseName, cloudConfig, FILES)\n\tcase \"noformat\":\n\t\tvar err error\n\t\tdevice, _, err = install.MountDevice(baseName, device, partition, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstallSyslinux(device, baseName, diskType)\n\t\tif err := os.MkdirAll(filepath.Join(baseName, statedir), 0755); err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = seedData(baseName, cloudConfig, FILES)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"seedData %s\", err)\n\t\t\treturn err\n\t\t}\n\tcase \"raid\":\n\t\tvar err error\n\t\tdevice, _, err = install.MountDevice(baseName, device, partition, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstallSyslinux(device, baseName, diskType)\n\tcase \"bootstrap\":\n\t\tCONSOLE = \"ttyS0\"\n\t\tvar err error\n\t\t_, _, err = install.MountDevice(baseName, device, partition, true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkernelArgs = kernelArgs + \" rancher.cloud_init.datasources=[ec2,gce]\"\n\tcase \"rancher-upgrade\":\n\t\tinstallType = \"upgrade\" // rancher-upgrade is redundant\n\t\tfallthrough\n\tcase \"upgrade\":\n\t\tvar err error\n\t\tdevice, _, err = install.MountDevice(baseName, device, partition, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlog.Debugf(\"upgrading - %s, %s, %s\", device, baseName, diskType)\n\t\t// TODO: detect pv-grub, and don't kill it with syslinux\n\t\tupgradeBootloader(device, baseName, diskType)\n\tdefault:\n\t\treturn fmt.Errorf(\"unexpected install type %s\", installType)\n\t}\n\tkernelArgs = kernelArgs + \" console=\" + CONSOLE\n\n\tif kappend == \"\" {\n\t\tpreservedAppend, _ := ioutil.ReadFile(filepath.Join(baseName, config.BootDir, \"append\"))\n\t\tkappend = string(preservedAppend)\n\t} else {\n\t\tioutil.WriteFile(filepath.Join(baseName, config.BootDir, \"append\"), []byte(kappend), 0644)\n\t}\n\n\tif installType == \"amazon-ebs-pv\" {\n\t\tmenu := install.BootVars{\n\t\t\tBaseName: baseName,\n\t\t\tBootDir:  config.BootDir,\n\t\t\tTimeout:  0,\n\t\t\tFallback: 0, // need to be conditional on there being a 'rollback'?\n\t\t\tEntries: []install.MenuEntry{\n\t\t\t\tinstall.MenuEntry{\n\t\t\t\t\tName:       \"BurmillaOS-current\",\n\t\t\t\t\tBootDir:    config.BootDir,\n\t\t\t\t\tVersion:    VERSION,\n\t\t\t\t\tKernelArgs: kernelArgs,\n\t\t\t\t\tAppend:     kappend,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tinstall.PvGrubConfig(menu)\n\t}\n\tlog.Debugf(\"installRancher\")\n\t_, err := installRancher(baseName, VERSION, DIST, kernelArgs+\" \"+kappend)\n\tif err != nil {\n\t\tlog.Errorf(\"%s\", err)\n\t\treturn err\n\t}\n\tlog.Debugf(\"installRancher done\")\n\n\tif kexec {\n\t\tpower.Kexec(false, filepath.Join(baseName, config.BootDir), kernelArgs+\" \"+kappend)\n\t}\n\n\treturn nil\n}\n\n// files is an array of 'sourcefile:destination' - but i've not seen any examples of it being used.\nfunc seedData(baseName, cloudData string, files []string) error {\n\tlog.Debugf(\"seedData\")\n\t_, err := os.Stat(baseName)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstateSeedDir := \"state_seed\"\n\tcloudConfigBase := \"/var/lib/rancher/conf/cloud-config.d\"\n\tcloudConfigDir := \"\"\n\n\t// If there is a separate boot partition, cloud-config should be written to RANCHER_STATE partition.\n\tbootPartition, _, err := util.Blkid(\"RANCHER_BOOT\")\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to run blkid: %s\", err)\n\t}\n\tif bootPartition != \"\" {\n\t\tstateSeedFullPath := filepath.Join(baseName, stateSeedDir)\n\t\tif err = os.MkdirAll(stateSeedFullPath, 0700); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tdefer util.Unmount(stateSeedFullPath)\n\n\t\tstatePartition := install.GetStatePartition()\n\t\tcmd := exec.Command(\"mount\", statePartition, stateSeedFullPath)\n\t\t//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\t\tlog.Debugf(\"seedData: mount %s to %s\", statePartition, stateSeedFullPath)\n\t\tif err = cmd.Run(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcloudConfigDir = filepath.Join(baseName, stateSeedDir, cloudConfigBase)\n\t} else {\n\t\tcloudConfigDir = filepath.Join(baseName, cloudConfigBase)\n\t}\n\n\tif err = os.MkdirAll(cloudConfigDir, 0700); err != nil {\n\t\treturn err\n\t}\n\n\tif !strings.HasSuffix(cloudData, \"empty.yml\") {\n\t\tif err = dfs.CopyFile(cloudData, cloudConfigDir, filepath.Base(cloudData)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor _, f := range files {\n\t\te := strings.Split(f, \":\")\n\t\tif err = dfs.CopyFile(e[0], baseName, e[1]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// set-disk-partitions is called with device ==  **/dev/sda**\nfunc setDiskpartitions(device, diskType string) error {\n\tlog.Debugf(\"setDiskpartitions\")\n\n\td := strings.Split(device, \"/\")\n\tif len(d) != 3 {\n\t\treturn fmt.Errorf(\"bad device name (%s)\", device)\n\t}\n\tdeviceName := d[2]\n\n\tfile, err := os.Open(\"/proc/partitions\")\n\tif err != nil {\n\t\tlog.Debugf(\"failed to read /proc/partitions %s\", err)\n\t\treturn err\n\t}\n\tdefer file.Close()\n\n\texists := false\n\thaspartitions := false\n\tscanner := bufio.NewScanner(file)\n\tfor scanner.Scan() {\n\t\tstr := scanner.Text()\n\t\tlast := strings.LastIndex(str, \" \")\n\n\t\tif last > -1 {\n\t\t\tdev := str[last+1:]\n\n\t\t\tif strings.HasPrefix(dev, deviceName) {\n\t\t\t\tif dev == deviceName {\n\t\t\t\t\texists = true\n\t\t\t\t} else {\n\t\t\t\t\thaspartitions = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif !exists {\n\t\treturn fmt.Errorf(\"disk %s not found: %s\", device, err)\n\t}\n\tif haspartitions {\n\t\tlog.Debugf(\"device %s already partitioned - checking if any are mounted\", device)\n\t\tfile, err := os.Open(\"/proc/mounts\")\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"failed to read /proc/mounts %s\", err)\n\t\t\treturn err\n\t\t}\n\t\tdefer file.Close()\n\t\tif partitionMounted(device, file) {\n\t\t\terr = fmt.Errorf(\"partition %s mounted, cannot repartition\", device)\n\t\t\tlog.Errorf(\"%s\", err)\n\t\t\treturn err\n\t\t}\n\n\t\tcmd := exec.Command(\"system-docker\", \"ps\", \"-q\")\n\t\tvar outb bytes.Buffer\n\t\tcmd.Stdout = &outb\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Printf(\"ps error: %s\", err)\n\t\t\treturn err\n\t\t}\n\t\tfor _, image := range strings.Split(outb.String(), \"\\n\") {\n\t\t\tif image == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tr, w := io.Pipe()\n\t\t\tgo func() {\n\t\t\t\t// TODO: consider a timeout\n\t\t\t\t// TODO:some of these containers don't have cat / shell\n\t\t\t\tcmd := exec.Command(\"system-docker\", \"exec\", image, \"cat /proc/mount\")\n\t\t\t\tcmd.Stdout = w\n\t\t\t\tif err := cmd.Run(); err != nil {\n\t\t\t\t\tlog.Debugf(\"%s cat %s\", image, err)\n\t\t\t\t}\n\t\t\t\tw.Close()\n\t\t\t}()\n\t\t\tif partitionMounted(device, r) {\n\t\t\t\terr = fmt.Errorf(\"partition %s mounted in %s, cannot repartition\", device, image)\n\t\t\t\tlog.Errorf(\"k? %s\", err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\t//do it!\n\tlog.Debugf(\"running dd device: %s\", device)\n\tcmd := exec.Command(\"dd\", \"if=/dev/zero\", \"of=\"+device, \"bs=512\", \"count=2048\")\n\t//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"dd error %s\", err)\n\t\treturn err\n\t}\n\tlog.Debugf(\"running partprobe: %s\", device)\n\tcmd = exec.Command(\"partprobe\", device)\n\t//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"Failed to partprobe device %s: %v\", device, err)\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"making single RANCHER_STATE partition, device: %s\", device)\n\tcmd = exec.Command(\"parted\", \"-s\", \"-a\", \"optimal\", device,\n\t\t\"mklabel \"+diskType, \"--\",\n\t\t\"mkpart primary ext4 1 -1\")\n\tcmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"Failed to parted device %s: %v\", device, err)\n\t\treturn err\n\t}\n\treturn setBootable(device, diskType)\n}\n\nfunc partitionMounted(device string, file io.Reader) bool {\n\tscanner := bufio.NewScanner(file)\n\tfor scanner.Scan() {\n\t\tstr := scanner.Text()\n\t\t// /dev/sdb1 /data ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\n\t\tele := strings.Split(str, \" \")\n\t\tif len(ele) > 5 {\n\t\t\tif strings.HasPrefix(ele[0], device) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\tif err := scanner.Err(); err != nil {\n\t\t\tlog.Errorf(\"scanner %s\", err)\n\t\t\treturn false\n\t\t}\n\t}\n\treturn false\n}\n\nfunc formatdevice(device, partition string) error {\n\tlog.Debugf(\"formatdevice %s\", partition)\n\n\t//mkfs.ext4 -F -i 4096 -L RANCHER_STATE ${partition}\n\t// -O ^64bit: for syslinux: http://www.syslinux.org/wiki/index.php?title=Filesystem#ext\n\tcmd := exec.Command(\"mkfs.ext4\", \"-F\", \"-i\", \"4096\", \"-O\", \"^64bit\", \"-L\", \"RANCHER_STATE\", partition)\n\tlog.Debugf(\"Run(%v)\", cmd)\n\tcmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"mkfs.ext4: %s\", err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc formatAndMount(baseName, device, partition string) (string, string, error) {\n\tlog.Debugf(\"formatAndMount\")\n\n\terr := formatdevice(device, partition)\n\tif err != nil {\n\t\tlog.Errorf(\"formatdevice %s\", err)\n\t\treturn device, partition, err\n\t}\n\tdevice, partition, err = install.MountDevice(baseName, device, partition, false)\n\tif err != nil {\n\t\tlog.Errorf(\"mountdevice %s\", err)\n\t\treturn device, partition, err\n\t}\n\treturn device, partition, nil\n}\n\nfunc setBootable(device, diskType string) error {\n\t// TODO make conditional - if there is a bootable device already, don't break it\n\t// TODO: make RANCHER_BOOT bootable - it might not be device 1\n\n\tbootflag := \"boot\"\n\tif diskType == \"gpt\" {\n\t\tbootflag = \"legacy_boot\"\n\t}\n\tlog.Debugf(\"making device 1 on %s bootable as %s\", device, diskType)\n\tcmd := exec.Command(\"parted\", \"-s\", \"-a\", \"optimal\", device, \"set 1 \"+bootflag+\" on\")\n\tcmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"parted: %s\", err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc upgradeBootloader(device, baseName, diskType string) error {\n\tlog.Debugf(\"start upgradeBootloader\")\n\n\tgrubDir := filepath.Join(baseName, config.BootDir, \"grub\")\n\tif _, err := os.Stat(grubDir); os.IsNotExist(err) {\n\t\tlog.Debugf(\"%s does not exist - no need to upgrade bootloader\", grubDir)\n\t\t// we've already upgraded\n\t\t// TODO: in v0.9.0, need to detect what version syslinux we have\n\t\treturn nil\n\t}\n\t// deal with systems which were previously upgraded, then rolled back, and are now being re-upgraded\n\tgrubBackup := filepath.Join(baseName, config.BootDir, \"grub_backup\")\n\tif err := os.RemoveAll(grubBackup); err != nil {\n\t\tlog.Errorf(\"RemoveAll (%s): %s\", grubBackup, err)\n\t\treturn err\n\t}\n\tbackupSyslinuxDir := filepath.Join(baseName, config.BootDir, \"syslinux_backup\")\n\tif _, err := os.Stat(backupSyslinuxDir); !os.IsNotExist(err) {\n\t\tbackupSyslinuxLdlinuxSys := filepath.Join(backupSyslinuxDir, \"ldlinux.sys\")\n\t\tif _, err := os.Stat(backupSyslinuxLdlinuxSys); !os.IsNotExist(err) {\n\t\t\t//need a privileged container that can chattr -i ldlinux.sys\n\t\t\tcmd := exec.Command(\"chattr\", \"-i\", backupSyslinuxLdlinuxSys)\n\t\t\tif err := cmd.Run(); err != nil {\n\t\t\t\tlog.Errorf(\"%s\", err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif err := os.RemoveAll(backupSyslinuxDir); err != nil {\n\t\t\tlog.Errorf(\"RemoveAll (%s): %s\", backupSyslinuxDir, err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := os.Rename(grubDir, grubBackup); err != nil {\n\t\tlog.Errorf(\"Rename(%s): %s\", grubDir, err)\n\t\treturn err\n\t}\n\n\tsyslinuxDir := filepath.Join(baseName, config.BootDir, \"syslinux\")\n\t// it seems that v0.5.0 didn't have a syslinux dir, while 0.7 does\n\tif _, err := os.Stat(syslinuxDir); !os.IsNotExist(err) {\n\t\tif err := os.Rename(syslinuxDir, backupSyslinuxDir); err != nil {\n\t\t\tlog.Infof(\"error Rename(%s, %s): %s\", syslinuxDir, backupSyslinuxDir, err)\n\t\t} else {\n\t\t\t//mv the old syslinux into linux-previous.cfg\n\t\t\toldSyslinux, err := ioutil.ReadFile(filepath.Join(backupSyslinuxDir, \"syslinux.cfg\"))\n\t\t\tif err != nil {\n\t\t\t\tlog.Infof(\"error read(%s / syslinux.cfg): %s\", backupSyslinuxDir, err)\n\t\t\t} else {\n\t\t\t\tcfg := string(oldSyslinux)\n\t\t\t\t//DEFAULT BurmillaOS-current\n\t\t\t\t//\n\t\t\t\t//LABEL BurmillaOS-current\n\t\t\t\t//    LINUX ../vmlinuz-v0.7.1-rancheros\n\t\t\t\t//    APPEND rancher.state.dev=LABEL=RANCHER_STATE rancher.state.wait console=tty0 rancher.password=rancher\n\t\t\t\t//    INITRD ../initrd-v0.7.1-rancheros\n\n\t\t\t\tcfg = strings.Replace(cfg, \"current\", \"previous\", -1)\n\t\t\t\t// TODO consider removing the APPEND line - as the global.cfg should have the same result\n\t\t\t\tioutil.WriteFile(filepath.Join(baseName, config.BootDir, \"linux-current.cfg\"), []byte(cfg), 0644)\n\n\t\t\t\tlines := strings.Split(cfg, \"\\n\")\n\t\t\t\tfor _, line := range lines {\n\t\t\t\t\tline = strings.TrimSpace(line)\n\t\t\t\t\tif strings.HasPrefix(line, \"APPEND\") {\n\t\t\t\t\t\tlog.Errorf(\"write new (%s) %s\", filepath.Join(baseName, config.BootDir, \"global.cfg\"), err)\n\t\t\t\t\t\t// TODO: need to append any extra's the user specified\n\t\t\t\t\t\tioutil.WriteFile(filepath.Join(baseName, config.BootDir, \"global.cfg\"), []byte(cfg), 0644)\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\t}\n\n\treturn installSyslinux(device, baseName, diskType)\n}\n\nfunc installSyslinux(device, baseName, diskType string) error {\n\tlog.Debugf(\"installSyslinux(%s)\", device)\n\n\tmbrFile := \"mbr.bin\"\n\tif diskType == \"gpt\" {\n\t\tmbrFile = \"gptmbr.bin\"\n\t}\n\n\t//dd bs=440 count=1 if=/usr/lib/syslinux/mbr/mbr.bin of=${device}\n\t// ubuntu: /usr/lib/syslinux/mbr/mbr.bin\n\t// alpine: /usr/share/syslinux/mbr.bin\n\tif device == \"/dev/\" {\n\t\tlog.Debugf(\"installSyslinuxRaid(%s)\", device)\n\t\t//RAID - assume sda&sdb\n\t\t//TODO: fix this - not sure how to detect what disks should have mbr - perhaps we need a param\n\t\t//      perhaps just assume and use the devices that make up the raid - mdadm\n\t\tdevice = \"/dev/sda\"\n\t\tif err := setBootable(device, diskType); err != nil {\n\t\t\tlog.Errorf(\"setBootable(%s, %s): %s\", device, diskType, err)\n\t\t\t//return err\n\t\t}\n\t\tcmd := exec.Command(\"dd\", \"bs=440\", \"count=1\", \"if=/usr/share/syslinux/\"+mbrFile, \"of=\"+device)\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"%s\", err)\n\t\t\treturn err\n\t\t}\n\t\tdevice = \"/dev/sdb\"\n\t\tif err := setBootable(device, diskType); err != nil {\n\t\t\tlog.Errorf(\"setBootable(%s, %s): %s\", device, diskType, err)\n\t\t\t//return err\n\t\t}\n\t\tcmd = exec.Command(\"dd\", \"bs=440\", \"count=1\", \"if=/usr/share/syslinux/\"+mbrFile, \"of=\"+device)\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"%s\", err)\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tif err := setBootable(device, diskType); err != nil {\n\t\t\tlog.Errorf(\"setBootable(%s, %s): %s\", device, diskType, err)\n\t\t\t//return err\n\t\t}\n\t\tlog.Debugf(\"installSyslinux(%s)\", device)\n\t\tcmd := exec.Command(\"dd\", \"bs=440\", \"count=1\", \"if=/usr/share/syslinux/\"+mbrFile, \"of=\"+device)\n\t\tlog.Debugf(\"Run(%v)\", cmd)\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"dd: %s\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tsysLinuxDir := filepath.Join(baseName, config.BootDir, \"syslinux\")\n\tif err := os.MkdirAll(sysLinuxDir, 0755); err != nil {\n\t\tlog.Errorf(\"MkdirAll(%s)): %s\", sysLinuxDir, err)\n\t\t//return err\n\t}\n\n\t//cp /usr/lib/syslinux/modules/bios/* ${baseName}/${bootDir}syslinux\n\tfiles, _ := ioutil.ReadDir(\"/usr/share/syslinux/\")\n\tfor _, file := range files {\n\t\tif file.IsDir() {\n\t\t\tcontinue\n\t\t}\n\t\tif err := dfs.CopyFile(filepath.Join(\"/usr/share/syslinux/\", file.Name()), sysLinuxDir, file.Name()); err != nil {\n\t\t\tlog.Errorf(\"copy syslinux: %s\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\t//extlinux --install ${baseName}/${bootDir}syslinux\n\tcmd := exec.Command(\"extlinux\", \"--install\", sysLinuxDir)\n\tif device == \"/dev/\" {\n\t\t//extlinux --install --raid ${baseName}/${bootDir}syslinux\n\t\tcmd = exec.Command(\"extlinux\", \"--install\", \"--raid\", sysLinuxDir)\n\t}\n\t//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr\n\tlog.Debugf(\"Run(%v)\", cmd)\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"extlinux: %s\", err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc different(existing, new string) bool {\n\t// assume existing file exists\n\tif _, err := os.Stat(new); os.IsNotExist(err) {\n\t\treturn true\n\t}\n\tdata, err := ioutil.ReadFile(existing)\n\tif err != nil {\n\t\treturn true\n\t}\n\tnewData, err := ioutil.ReadFile(new)\n\tif err != nil {\n\t\treturn true\n\t}\n\tmd5sum := md5.Sum(data)\n\tnewmd5sum := md5.Sum(newData)\n\tif md5sum != newmd5sum {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc installRancher(baseName, VERSION, DIST, kappend string) (string, error) {\n\tlog.Debugf(\"installRancher\")\n\n\t// detect if there already is a linux-current.cfg, if so, move it to linux-previous.cfg,\n\tcurrentCfg := filepath.Join(baseName, config.BootDir, \"linux-current.cfg\")\n\tif _, err := os.Stat(currentCfg); !os.IsNotExist(err) {\n\t\texistingCfg := filepath.Join(DIST, \"linux-current.cfg\")\n\t\t// only remove previous if there is a change to the current\n\t\tif different(currentCfg, existingCfg) {\n\t\t\tpreviousCfg := filepath.Join(baseName, config.BootDir, \"linux-previous.cfg\")\n\t\t\tif _, err := os.Stat(previousCfg); !os.IsNotExist(err) {\n\t\t\t\tif err := os.Remove(previousCfg); err != nil {\n\t\t\t\t\treturn currentCfg, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tos.Rename(currentCfg, previousCfg)\n\t\t\t// TODO: now that we're parsing syslinux.cfg files, maybe we can delete old kernels and initrds\n\t\t}\n\t}\n\n\t// The image/ISO have all the files in it - the syslinux cfg's and the kernel&initrd, so we can copy them all from there\n\tfiles, _ := ioutil.ReadDir(DIST)\n\tfor _, file := range files {\n\t\tif file.IsDir() {\n\t\t\tcontinue\n\t\t}\n\t\t// TODO: should overwrite anything other than the global.cfg\n\t\toverwrite := true\n\t\tif file.Name() == \"global.cfg\" {\n\t\t\toverwrite = false\n\t\t}\n\t\tif err := dfs.CopyFileOverwrite(filepath.Join(DIST, file.Name()), filepath.Join(baseName, config.BootDir), file.Name(), overwrite); err != nil {\n\t\t\tlog.Errorf(\"copy %s: %s\", file.Name(), err)\n\t\t\t//return err\n\t\t}\n\t}\n\n\t// the general INCLUDE syslinuxcfg\n\tisolinuxFile := filepath.Join(DIST, \"isolinux\", \"isolinux.cfg\")\n\tsyslinuxDir := filepath.Join(baseName, config.BootDir, \"syslinux\")\n\tif err := dfs.CopyFileOverwrite(isolinuxFile, syslinuxDir, \"syslinux.cfg\", true); err != nil {\n\t\tlog.Errorf(\"copy global syslinux.cfgS%s: %s\", \"syslinux.cfg\", err)\n\t\t//return err\n\t} else {\n\t\tlog.Debugf(\"installRancher copy global syslinux.cfgS OK\")\n\n\t}\n\n\t// The global.cfg INCLUDE - useful for over-riding the APPEND line\n\tglobalFile := filepath.Join(baseName, config.BootDir, \"global.cfg\")\n\tif _, err := os.Stat(globalFile); !os.IsNotExist(err) {\n\t\terr := ioutil.WriteFile(globalFile, []byte(\"APPEND \"+kappend), 0644)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"write (%s) %s\", \"global.cfg\", err)\n\t\t\treturn currentCfg, err\n\t\t}\n\t}\n\treturn currentCfg, nil\n}\n"
  },
  {
    "path": "cmd/control/os.go",
    "content": "package control\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/url\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/cmd/power\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/codegangsta/cli\"\n\tdockerClient \"github.com/docker/engine-api/client\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\ntype Images struct {\n\tCurrent   string   `yaml:\"current,omitempty\"`\n\tAvailable []string `yaml:\"available,omitempty\"`\n}\n\nfunc osSubcommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:   \"upgrade\",\n\t\t\tUsage:  \"upgrade to latest version\",\n\t\t\tAction: osUpgrade,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"stage, s\",\n\t\t\t\t\tUsage: \"Only stage the new upgrade, don't apply it\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"image, i\",\n\t\t\t\t\tUsage: \"upgrade to a certain image\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"force, f\",\n\t\t\t\t\tUsage: \"do not prompt for input\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"no-reboot\",\n\t\t\t\t\tUsage: \"do not reboot after upgrade\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"kexec, k\",\n\t\t\t\t\tUsage: \"reboot using kexec\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"append\",\n\t\t\t\t\tUsage: \"append additional kernel parameters\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"upgrade-console\",\n\t\t\t\t\tUsage: \"upgrade console even if persistent\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"debug\",\n\t\t\t\t\tUsage: \"Run installer with debug output\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:  \"list\",\n\t\t\tUsage: \"list the current available versions\",\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"update, u\",\n\t\t\t\t\tUsage: \"update engine cache\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: osMetaDataGet,\n\t\t},\n\t\t{\n\t\t\tName:   \"version\",\n\t\t\tUsage:  \"show the currently installed version\",\n\t\t\tAction: osVersion,\n\t\t},\n\t}\n}\n\nfunc getImages(update bool) (*Images, error) {\n\tupgradeURL, err := getUpgradeURL()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar body []byte\n\n\tif strings.HasPrefix(upgradeURL, \"/\") {\n\t\tbody, err = ioutil.ReadFile(upgradeURL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tu, err := url.Parse(upgradeURL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tq := u.Query()\n\t\tq.Set(\"current\", config.Version)\n\t\tif hypervisor := util.GetHypervisor(); hypervisor == \"\" {\n\t\t\tq.Set(\"hypervisor\", hypervisor)\n\t\t}\n\t\tu.RawQuery = q.Encode()\n\t\tupgradeURL = u.String()\n\n\t\tif update {\n\t\t\t_, err := network.UpdateCache(upgradeURL)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to update os caches: %v\", err)\n\t\t\t}\n\t\t}\n\n\t\tbody, err = network.LoadFromNetwork(upgradeURL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\timages, err := parseBody(body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcfg := config.LoadConfig()\n\timages.Current = formatImage(images.Current, cfg)\n\tfor i := len(images.Available) - 1; i >= 0; i-- {\n\t\timages.Available[i] = formatImage(images.Available[i], cfg)\n\t}\n\n\treturn images, nil\n}\n\nfunc osMetaDataGet(c *cli.Context) error {\n\timages, err := getImages(c.Bool(\"update\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tcfg := config.LoadConfig()\n\trunningName := cfg.Rancher.Upgrade.Image + \":\" + config.Version\n\trunningName = formatImage(runningName, cfg)\n\n\tfoundRunning := false\n\tfor i := len(images.Available) - 1; i >= 0; i-- {\n\t\timage := images.Available[i]\n\t\t_, _, err := client.ImageInspectWithRaw(context.Background(), image, false)\n\t\tlocal := \"local\"\n\t\tif dockerClient.IsErrImageNotFound(err) {\n\t\t\tlocal = \"remote\"\n\t\t}\n\t\tavailable := \"available\"\n\t\tif image == images.Current {\n\t\t\tavailable = \"latest\"\n\t\t}\n\t\tvar running string\n\t\tif image == runningName {\n\t\t\tfoundRunning = true\n\t\t\trunning = \"running\"\n\t\t}\n\t\tfmt.Println(image, local, available, running)\n\t}\n\tif !foundRunning {\n\t\tfmt.Println(config.Version, \"running\")\n\t}\n\n\treturn nil\n}\n\nfunc getLatestImage() (string, error) {\n\timages, err := getImages(false)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn images.Current, nil\n}\n\nfunc osUpgrade(c *cli.Context) error {\n\tif runtime.GOARCH != \"amd64\" {\n\t\tlog.Fatalf(\"ros install / upgrade only supported on 'amd64', not '%s'\", runtime.GOARCH)\n\t}\n\n\tif isExist := checkGlobalCfg(); !isExist {\n\t\tlog.Fatalf(\"ros upgrade cannot be supported\")\n\t}\n\n\timage := c.String(\"image\")\n\n\tif image == \"\" {\n\t\tvar err error\n\t\timage, err = getLatestImage()\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tif image == \"\" {\n\t\t\tlog.Fatal(\"Failed to find latest image\")\n\t\t}\n\t}\n\tif c.Args().Present() {\n\t\tlog.Fatalf(\"invalid arguments %v\", c.Args())\n\t}\n\tif err := startUpgradeContainer(\n\t\timage,\n\t\tc.Bool(\"stage\"),\n\t\tc.Bool(\"force\"),\n\t\t!c.Bool(\"no-reboot\"),\n\t\tc.Bool(\"kexec\"),\n\t\tc.Bool(\"upgrade-console\"),\n\t\tc.Bool(\"debug\"),\n\t\tc.String(\"append\"),\n\t); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn nil\n}\n\nfunc osVersion(c *cli.Context) error {\n\tfmt.Println(config.Version)\n\treturn nil\n}\n\nfunc startUpgradeContainer(image string, stage, force, reboot, kexec, upgradeConsole, debug bool, kernelArgs string) error {\n\tcommand := []string{\n\t\t\"-t\", \"rancher-upgrade\",\n\t\t\"-r\", config.Version,\n\t}\n\n\tif kexec {\n\t\tcommand = append(command, \"--kexec\")\n\t}\n\tif debug {\n\t\tcommand = append(command, \"--debug\")\n\t}\n\n\tkernelArgs = strings.TrimSpace(kernelArgs)\n\tif kernelArgs != \"\" {\n\t\tcommand = append(command, \"-a\", kernelArgs)\n\t}\n\n\tif upgradeConsole {\n\t\tif err := config.Set(\"rancher.force_console_rebuild\", true); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\tfmt.Printf(\"Upgrading to %s\\n\", image)\n\tconfirmation := \"Continue\"\n\timageSplit := strings.Split(image, \":\")\n\tif len(imageSplit) > 1 && imageSplit[1] == config.Version+config.Suffix {\n\t\tconfirmation = fmt.Sprintf(\"Already at version %s. Continue anyway\", imageSplit[1])\n\t}\n\tif !force && !yes(confirmation) {\n\t\tos.Exit(1)\n\t}\n\n\tcontainer, err := compose.CreateService(nil, \"os-upgrade\", &composeConfig.ServiceConfigV1{\n\t\tLogDriver:  \"json-file\",\n\t\tPrivileged: true,\n\t\tNet:        \"host\",\n\t\tPid:        \"host\",\n\t\tImage:      image,\n\t\tLabels: map[string]string{\n\t\t\tconfig.ScopeLabel: config.System,\n\t\t},\n\t\tCommand: command,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Only pull image if not found locally\n\tif _, _, err := client.ImageInspectWithRaw(context.Background(), image, false); err != nil {\n\t\tif err := container.Pull(context.Background()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif !stage {\n\t\t// If there is already an upgrade container, delete it\n\t\t// Up() should to this, but currently does not due to a bug\n\t\tif err := container.Delete(context.Background(), options.Delete{}); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := container.Up(context.Background(), options.Up{}); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := container.Log(context.Background(), true); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := container.Delete(context.Background(), options.Delete{}); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif reboot && (force || yes(\"Continue with reboot\")) {\n\t\t\tlog.Info(\"Rebooting\")\n\t\t\tpower.Reboot()\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc parseBody(body []byte) (*Images, error) {\n\tupdate := &Images{}\n\terr := yaml.Unmarshal(body, update)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn update, nil\n}\n\nfunc getUpgradeURL() (string, error) {\n\tcfg := config.LoadConfig()\n\treturn cfg.Rancher.Upgrade.URL, nil\n}\n"
  },
  {
    "path": "cmd/control/preload.go",
    "content": "package control\n\nimport (\n\t\"compress/gzip\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n\tdockerClient \"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n)\n\nconst (\n\tuserImagesPreloadDirectory = \"/var/lib/rancher/preload/docker\"\n)\n\nfunc preloadImagesAction(c *cli.Context) error {\n\terr := PreloadImages(docker.NewDefaultClient, userImagesPreloadDirectory)\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to preload user images: %v\", err)\n\t}\n\treturn err\n}\n\nfunc shouldLoad(file string) bool {\n\tif strings.HasSuffix(file, \".done\") {\n\t\treturn false\n\t}\n\tif _, err := os.Stat(fmt.Sprintf(\"%s.done\", file)); err == nil {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc PreloadImages(clientFactory func() (dockerClient.APIClient, error), imagesDir string) error {\n\tvar client dockerClient.APIClient\n\tclientInitialized := false\n\n\tif _, err := os.Stat(imagesDir); os.IsNotExist(err) {\n\t\tif err = os.MkdirAll(imagesDir, 0755); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\t// try to load predefined user images\n\tif imagesDir == userImagesPreloadDirectory {\n\t\toldUserImgName := path.Join(config.ImagesPath, config.UserImages)\n\t\tuserImgfile, err := os.Stat(oldUserImgName)\n\t\tif err == nil {\n\t\t\tnewUserImgName := path.Join(userImagesPreloadDirectory, userImgfile.Name())\n\t\t\tif _, err = os.Stat(newUserImgName); os.IsNotExist(err) {\n\t\t\t\tif err := os.Symlink(oldUserImgName, newUserImgName); err != nil {\n\t\t\t\t\tlog.Error(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfiles, err := ioutil.ReadDir(imagesDir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, file := range files {\n\t\tfilename := path.Join(imagesDir, file.Name())\n\t\tif !shouldLoad(filename) {\n\t\t\tlog.Infof(\"Skipping to preload the file: %s\", filename)\n\t\t\tcontinue\n\t\t}\n\n\t\timage, err := os.Open(filename)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer image.Close()\n\t\tvar imageReader io.Reader\n\t\timageReader = image\n\t\tmatch, err := regexp.MatchString(\".t?gz$\", file.Name())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif match {\n\t\t\timageReader, err = gzip.NewReader(image)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif !clientInitialized {\n\t\t\tclient, err = clientFactory()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tclientInitialized = true\n\t\t}\n\n\t\tvar imageLoadResponse types.ImageLoadResponse\n\t\tif imageLoadResponse, err = client.ImageLoad(context.Background(), imageReader, false); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcfg := config.LoadConfig()\n\t\tif cfg.Rancher.PreloadWait {\n\t\t\tif _, err := ioutil.ReadAll(imageLoadResponse.Body); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tlog.Infof(\"Finished to load image %s\", filename)\n\n\t\tlog.Infof(\"Creating done stamp file for image %s\", filename)\n\t\tdoneStamp, err := os.Create(fmt.Sprintf(\"%s.done\", filename))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer doneStamp.Close()\n\t\tlog.Infof(\"Finished to created the done stamp file for image %s\", filename)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/recovery_init.go",
    "content": "package control\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc recoveryInitAction(c *cli.Context) error {\n\tif err := writeRespawn(\"root\", false, true); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\trespawnBinPath, err := exec.LookPath(\"respawn\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn syscall.Exec(respawnBinPath, []string{\"respawn\", \"-f\", \"/etc/respawn.conf\"}, os.Environ())\n}\n"
  },
  {
    "path": "cmd/control/service/app/app.go",
    "content": "package app\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc ProjectPs(p project.APIProject, c *cli.Context) error {\n\tqFlag := c.Bool(\"q\")\n\tallInfo, err := p.Ps(context.Background(), qFlag, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\tos.Stdout.WriteString(allInfo.String(!qFlag))\n\treturn nil\n}\n\nfunc ProjectStop(p project.APIProject, c *cli.Context) error {\n\terr := p.Stop(context.Background(), c.Int(\"timeout\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectDown(p project.APIProject, c *cli.Context) error {\n\toptions := options.Down{\n\t\tRemoveVolume:  c.Bool(\"volumes\"),\n\t\tRemoveImages:  options.ImageType(c.String(\"rmi\")),\n\t\tRemoveOrphans: c.Bool(\"remove-orphans\"),\n\t}\n\terr := p.Down(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectBuild(p project.APIProject, c *cli.Context) error {\n\tconfig := options.Build{\n\t\tNoCache:     c.Bool(\"no-cache\"),\n\t\tForceRemove: c.Bool(\"force-rm\"),\n\t\tPull:        c.Bool(\"pull\"),\n\t}\n\terr := p.Build(context.Background(), config, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectCreate(p project.APIProject, c *cli.Context) error {\n\toptions := options.Create{\n\t\tNoRecreate:    c.Bool(\"no-recreate\"),\n\t\tForceRecreate: c.Bool(\"force-recreate\"),\n\t\tNoBuild:       c.Bool(\"no-build\"),\n\t}\n\terr := p.Create(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectUp(p project.APIProject, c *cli.Context) error {\n\toptions := options.Up{\n\t\tCreate: options.Create{\n\t\t\tNoRecreate:    c.Bool(\"no-recreate\"),\n\t\t\tForceRecreate: c.Bool(\"force-recreate\"),\n\t\t\tNoBuild:       c.Bool(\"no-build\"),\n\t\t},\n\t}\n\tctx, cancelFun := context.WithCancel(context.Background())\n\terr := p.Up(ctx, options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\n\tif c.Bool(\"foreground\") {\n\t\tsignalChan := make(chan os.Signal, 1)\n\t\tcleanupDone := make(chan bool)\n\t\tsignal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)\n\t\terrChan := make(chan error)\n\t\tgo func() {\n\t\t\terrChan <- p.Log(ctx, true, c.Args()...)\n\t\t}()\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-signalChan:\n\t\t\t\tfmt.Printf(\"\\nGracefully stopping...\\n\")\n\t\t\t\tcancelFun()\n\t\t\t\tProjectStop(p, c)\n\t\t\t\tcleanupDone <- true\n\t\t\tcase err := <-errChan:\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Fatal(err)\n\t\t\t\t}\n\t\t\t\tcleanupDone <- true\n\t\t\t}\n\t\t}()\n\t\t<-cleanupDone\n\t\treturn nil\n\t}\n\treturn nil\n}\n\nfunc ProjectStart(p project.APIProject, c *cli.Context) error {\n\terr := p.Start(context.Background(), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectRestart(p project.APIProject, c *cli.Context) error {\n\terr := p.Restart(context.Background(), c.Int(\"timeout\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectLog(p project.APIProject, c *cli.Context) error {\n\terr := p.Log(context.Background(), c.Bool(\"follow\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectPull(p project.APIProject, c *cli.Context) error {\n\terr := p.Pull(context.Background(), c.Args()...)\n\tif err != nil && !c.Bool(\"ignore-pull-failures\") {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectDelete(p project.APIProject, c *cli.Context) error {\n\toptions := options.Delete{\n\t\tRemoveVolume: c.Bool(\"v\"),\n\t}\n\tif !c.Bool(\"force\") {\n\t\toptions.BeforeDeleteCallback = func(stoppedContainers []string) bool {\n\t\t\tfmt.Printf(\"Going to remove %v\\nAre you sure? [yN]\\n\", strings.Join(stoppedContainers, \", \"))\n\t\t\tvar answer string\n\t\t\t_, err := fmt.Scanln(&answer)\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif answer != \"y\" && answer != \"Y\" {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\terr := p.Delete(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\nfunc ProjectKill(p project.APIProject, c *cli.Context) error {\n\terr := p.Kill(context.Background(), c.String(\"signal\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/service/command/command.go",
    "content": "package command\n\nimport (\n\t\"errors\"\n\n\t\"github.com/burmilla/os/cmd/control/service/app\"\n\n\t\"github.com/codegangsta/cli\"\n\tcomposeApp \"github.com/docker/libcompose/cli/app\"\n)\n\nfunc verifyOneOrMoreServices(c *cli.Context) error {\n\tif len(c.Args()) == 0 {\n\t\treturn errors.New(\"Must specify one or more services\")\n\t}\n\treturn nil\n}\n\nfunc CreateCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"create\",\n\t\tUsage:  \"Create services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectCreate),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"no-recreate\",\n\t\t\t\tUsage: \"If containers already exist, don't recreate them. Incompatible with --force-recreate.\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"force-recreate\",\n\t\t\t\tUsage: \"Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"no-build\",\n\t\t\t\tUsage: \"Don't build an image, even if it's missing.\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc BuildCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"build\",\n\t\tUsage:  \"Build or rebuild services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectBuild),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"no-cache\",\n\t\t\t\tUsage: \"Do not use cache when building the image\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"force-rm\",\n\t\t\t\tUsage: \"Always remove intermediate containers\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"pull\",\n\t\t\t\tUsage: \"Always attempt to pull a newer version of the image\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc PsCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"ps\",\n\t\tUsage:  \"List containers\",\n\t\tAction: composeApp.WithProject(factory, app.ProjectPs),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"q\",\n\t\t\t\tUsage: \"Only display IDs\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc UpCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"up\",\n\t\tUsage:  \"Create and start containers\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectUp),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"foreground\",\n\t\t\t\tUsage: \"Run in foreground and log\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"no-build\",\n\t\t\t\tUsage: \"Don't build an image, even if it's missing.\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"no-recreate\",\n\t\t\t\tUsage: \"If containers already exist, don't recreate them. Incompatible with --force-recreate.\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"force-recreate\",\n\t\t\t\tUsage: \"Recreate containers even if their configuration and image haven't changed. Incompatible with --no-recreate.\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc StartCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"start\",\n\t\tUsage:  \"Start services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectStart),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolTFlag{\n\t\t\t\tName:  \"foreground\",\n\t\t\t\tUsage: \"Run in foreground and log\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc PullCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"pull\",\n\t\tUsage:  \"Pulls service images\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectPull),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"ignore-pull-failures\",\n\t\t\t\tUsage: \"Pull what it can and ignores images with pull failures.\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc LogsCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"logs\",\n\t\tUsage:  \"View output from containers\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectLog),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.IntFlag{\n\t\t\t\tName:  \"lines\",\n\t\t\t\tUsage: \"number of lines to tail\",\n\t\t\t\tValue: 100,\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"follow, f\",\n\t\t\t\tUsage: \"Follow log output.\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc RestartCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"restart\",\n\t\tUsage:  \"Restart services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectRestart),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.IntFlag{\n\t\t\t\tName:  \"timeout,t\",\n\t\t\t\tUsage: \"Specify a shutdown timeout in seconds.\",\n\t\t\t\tValue: 10,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc StopCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"stop\",\n\t\tUsage:  \"Stop services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectStop),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.IntFlag{\n\t\t\t\tName:  \"timeout,t\",\n\t\t\t\tUsage: \"Specify a shutdown timeout in seconds.\",\n\t\t\t\tValue: 10,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc DownCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"down\",\n\t\tUsage:  \"Stop and remove containers, networks, images, and volumes\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectDown),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"volumes,v\",\n\t\t\t\tUsage: \"Remove data volumes\",\n\t\t\t},\n\t\t\tcli.StringFlag{\n\t\t\t\tName:  \"rmi\",\n\t\t\t\tUsage: \"Remove images, type may be one of: 'all' to remove all images, or 'local' to remove only images that don't have an custom name set by the `image` field\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"remove-orphans\",\n\t\t\t\tUsage: \"Remove containers for services not defined in the Compose file\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc RmCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"rm\",\n\t\tUsage:  \"Delete services\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectDelete),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"force,f\",\n\t\t\t\tUsage: \"Allow deletion of all services\",\n\t\t\t},\n\t\t\tcli.BoolFlag{\n\t\t\t\tName:  \"v\",\n\t\t\t\tUsage: \"Remove volumes associated with containers\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc KillCommand(factory composeApp.ProjectFactory) cli.Command {\n\treturn cli.Command{\n\t\tName:   \"kill\",\n\t\tUsage:  \"Kill containers\",\n\t\tBefore: verifyOneOrMoreServices,\n\t\tAction: composeApp.WithProject(factory, app.ProjectKill),\n\t\tFlags: []cli.Flag{\n\t\t\tcli.StringFlag{\n\t\t\t\tName:  \"signal,s\",\n\t\t\t\tUsage: \"SIGNAL to send to the container\",\n\t\t\t\tValue: \"SIGKILL\",\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "cmd/control/service/service.go",
    "content": "package service\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/cmd/control/service/command\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\t\"github.com/codegangsta/cli\"\n\tdockerApp \"github.com/docker/libcompose/cli/docker/app\"\n\t\"github.com/docker/libcompose/project\"\n)\n\ntype projectFactory struct {\n}\n\nfunc (p *projectFactory) Create(c *cli.Context) (project.APIProject, error) {\n\tcfg := config.LoadConfig()\n\treturn compose.GetProject(cfg, true, false)\n}\n\nfunc beforeApp(c *cli.Context) error {\n\tif c.GlobalBool(\"verbose\") {\n\t\tlog.SetLevel(log.DebugLevel)\n\t}\n\treturn nil\n}\n\nfunc Commands() cli.Command {\n\tfactory := &projectFactory{}\n\n\tapp := cli.Command{}\n\tapp.Name = \"service\"\n\tapp.ShortName = \"s\"\n\tapp.Before = beforeApp\n\tapp.Flags = append(dockerApp.DockerClientFlags(), cli.BoolFlag{\n\t\tName: \"verbose,debug\",\n\t})\n\tapp.Subcommands = append(serviceSubCommands(),\n\t\tcommand.BuildCommand(factory),\n\t\tcommand.CreateCommand(factory),\n\t\tcommand.UpCommand(factory),\n\t\tcommand.StartCommand(factory),\n\t\tcommand.LogsCommand(factory),\n\t\tcommand.RestartCommand(factory),\n\t\tcommand.StopCommand(factory),\n\t\tcommand.RmCommand(factory),\n\t\tcommand.PullCommand(factory),\n\t\tcommand.KillCommand(factory),\n\t\tcommand.PsCommand(factory),\n\t)\n\n\treturn app\n}\n\nfunc serviceSubCommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:   \"enable\",\n\t\t\tUsage:  \"turn on an service\",\n\t\t\tAction: enable,\n\t\t},\n\t\t{\n\t\t\tName:   \"disable\",\n\t\t\tUsage:  \"turn off an service\",\n\t\t\tAction: disable,\n\t\t},\n\t\t{\n\t\t\tName:  \"list\",\n\t\t\tUsage: \"list services and state\",\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"all, a\",\n\t\t\t\t\tUsage: \"list all services and state\",\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"update, u\",\n\t\t\t\t\tUsage: \"update service cache\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: list,\n\t\t},\n\t\t{\n\t\t\tName:   \"delete\",\n\t\t\tUsage:  \"delete a service\",\n\t\t\tAction: del,\n\t\t},\n\t}\n}\n\nfunc updateIncludedServices(cfg *config.CloudConfig) error {\n\treturn config.Set(\"rancher.services_include\", cfg.Rancher.ServicesInclude)\n}\n\nfunc disable(c *cli.Context) error {\n\tchanged := false\n\tcfg := config.LoadConfig()\n\n\tfor _, service := range c.Args() {\n\t\tvalidateService(service, cfg)\n\n\t\tif _, ok := cfg.Rancher.ServicesInclude[service]; !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tcfg.Rancher.ServicesInclude[service] = false\n\t\tchanged = true\n\t}\n\n\tif changed {\n\t\tif err := updateIncludedServices(cfg); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc del(c *cli.Context) error {\n\tchanged := false\n\tcfg := config.LoadConfig()\n\n\tfor _, service := range c.Args() {\n\t\tvalidateService(service, cfg)\n\n\t\tif _, ok := cfg.Rancher.ServicesInclude[service]; !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tdelete(cfg.Rancher.ServicesInclude, service)\n\t\tchanged = true\n\t}\n\n\tif changed {\n\t\tif err := updateIncludedServices(cfg); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc enable(c *cli.Context) error {\n\tcfg := config.LoadConfig()\n\n\tvar enabledServices []string\n\n\tfor _, service := range c.Args() {\n\t\tvalidateService(service, cfg)\n\n\t\tif val, ok := cfg.Rancher.ServicesInclude[service]; !ok || !val {\n\t\t\tif isLocal(service) && !strings.HasPrefix(service, \"/var/lib/rancher/conf\") {\n\t\t\t\tlog.Fatalf(\"ERROR: Service should be in path /var/lib/rancher/conf\")\n\t\t\t}\n\n\t\t\tcfg.Rancher.ServicesInclude[service] = true\n\t\t\tenabledServices = append(enabledServices, service)\n\t\t}\n\t}\n\n\tif len(enabledServices) > 0 {\n\t\tif err := compose.StageServices(cfg, enabledServices...); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tif err := updateIncludedServices(cfg); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc list(c *cli.Context) error {\n\tcfg := config.LoadConfig()\n\n\tclone := make(map[string]bool)\n\tfor service, enabled := range cfg.Rancher.ServicesInclude {\n\t\tclone[service] = enabled\n\t}\n\n\tservices := availableService(cfg, c.Bool(\"update\"))\n\n\tif c.Bool(\"all\") {\n\t\tfor service := range cfg.Rancher.Services {\n\t\t\tfmt.Printf(\"enabled  %s\\n\", service)\n\t\t}\n\t}\n\n\tfor _, service := range services {\n\t\tif enabled, ok := clone[service]; ok {\n\t\t\tdelete(clone, service)\n\t\t\tif enabled {\n\t\t\t\tfmt.Printf(\"enabled  %s\\n\", service)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"disabled %s\\n\", service)\n\t\t\t}\n\t\t} else {\n\t\t\tfmt.Printf(\"disabled %s\\n\", service)\n\t\t}\n\t}\n\n\tfor service, enabled := range clone {\n\t\tif enabled {\n\t\t\tfmt.Printf(\"enabled  %s\\n\", service)\n\t\t} else {\n\t\t\tfmt.Printf(\"disabled %s\\n\", service)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc isLocal(service string) bool {\n\treturn strings.HasPrefix(service, \"/\")\n}\n\nfunc IsLocalOrURL(service string) bool {\n\treturn isLocal(service) || strings.HasPrefix(service, \"http:/\") || strings.HasPrefix(service, \"https:/\")\n}\n\n// ValidService checks to see if the service definition exists\nfunc ValidService(service string, cfg *config.CloudConfig) bool {\n\tservices := availableService(cfg, false)\n\tif !IsLocalOrURL(service) && !util.Contains(services, service) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc validateService(service string, cfg *config.CloudConfig) {\n\tif !ValidService(service, cfg) {\n\t\tlog.Fatalf(\"%s is not a valid service\", service)\n\t}\n}\n\nfunc availableService(cfg *config.CloudConfig, update bool) []string {\n\tif update {\n\t\terr := network.UpdateCaches(cfg.Rancher.Repositories.ToArray(), \"services\")\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"Failed to update service caches: %v\", err)\n\t\t}\n\n\t}\n\tservices, err := network.GetServices(cfg.Rancher.Repositories.ToArray())\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to get services: %v\", err)\n\t}\n\treturn services\n}\n"
  },
  {
    "path": "cmd/control/switch_console.go",
    "content": "package control\n\nimport (\n\t\"errors\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc switchConsoleAction(c *cli.Context) error {\n\tif len(c.Args()) != 1 {\n\t\treturn errors.New(\"Must specify exactly one existing container\")\n\t}\n\tnewConsole := c.Args()[0]\n\n\tcfg := config.LoadConfig()\n\n\tproject, err := compose.GetProject(cfg, true, false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// stop docker and console to avoid zombie process\n\tif err = project.Stop(context.Background(), 10, \"docker\"); err != nil {\n\t\tlog.Errorf(\"Failed to stop Docker: %v\", err)\n\t}\n\tif err = project.Stop(context.Background(), 10, \"console\"); err != nil {\n\t\tlog.Errorf(\"Failed to stop console: %v\", err)\n\t}\n\n\tif newConsole != \"default\" {\n\t\tif err = compose.LoadSpecialService(project, cfg, \"console\", newConsole); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err = config.Set(\"rancher.console\", newConsole); err != nil {\n\t\tlog.Errorf(\"Failed to update 'rancher.console': %v\", err)\n\t}\n\n\tif err = project.Up(context.Background(), options.Up{\n\t\tLog: true,\n\t}, \"console\"); err != nil {\n\t\treturn err\n\t}\n\n\tif err = project.Start(context.Background(), \"docker\"); err != nil {\n\t\tlog.Errorf(\"Failed to start Docker: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/tlsconf.go",
    "content": "package control\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n\tmachineUtil \"github.com/docker/machine/utils\"\n)\n\nconst (\n\tNAME          string = \"rancher\"\n\tBITS          int    = 2048\n\tServerTLSPath string = \"/etc/docker/tls\"\n\tClientTLSPath string = \"/home/rancher/.docker\"\n\tCert          string = \"cert.pem\"\n\tKey           string = \"key.pem\"\n\tServerCert    string = \"server-cert.pem\"\n\tServerKey     string = \"server-key.pem\"\n\tCaCert        string = \"ca.pem\"\n\tCaKey         string = \"ca-key.pem\"\n)\n\nfunc tlsConfCommands() []cli.Command {\n\treturn []cli.Command{\n\t\t{\n\t\t\tName:      \"generate\",\n\t\t\tShortName: \"gen\",\n\t\t\tUsage:     \"generates new set of TLS configuration certs\",\n\t\t\tAction:    tlsConfCreate,\n\t\t\tFlags: []cli.Flag{\n\t\t\t\tcli.StringSliceFlag{\n\t\t\t\t\tName:  \"hostname, H\",\n\t\t\t\t\tUsage: \"the hostname for which you want to generate the certificate\",\n\t\t\t\t\tValue: &cli.StringSlice{\"localhost\"},\n\t\t\t\t},\n\t\t\t\tcli.BoolFlag{\n\t\t\t\t\tName:  \"server, s\",\n\t\t\t\t\tUsage: \"generate the server keys instead of client keys\",\n\t\t\t\t},\n\t\t\t\tcli.StringFlag{\n\t\t\t\t\tName:  \"dir, d\",\n\t\t\t\t\tUsage: \"the directory to save/read the certs to/from\",\n\t\t\t\t\tValue: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc writeCerts(generateServer bool, hostname []string, certPath, keyPath, caCertPath, caKeyPath string) error {\n\tif !generateServer {\n\t\treturn machineUtil.GenerateCert([]string{\"\"}, certPath, keyPath, caCertPath, caKeyPath, NAME, BITS)\n\t}\n\n\tif err := machineUtil.GenerateCert(hostname, certPath, keyPath, caCertPath, caKeyPath, NAME, BITS); err != nil {\n\t\treturn err\n\t}\n\n\tcert, err := ioutil.ReadFile(certPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tkey, err := ioutil.ReadFile(keyPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// certPath, keyPath are already written to by machineUtil.GenerateCert()\n\tif err := config.Set(\"rancher.docker.server_cert\", string(cert)); err != nil {\n\t\treturn err\n\t}\n\treturn config.Set(\"rancher.docker.server_key\", string(key))\n}\n\nfunc writeCaCerts(cfg *config.CloudConfig, caCertPath, caKeyPath string) error {\n\tif cfg.Rancher.Docker.CACert == \"\" {\n\t\tif err := machineUtil.GenerateCACertificate(caCertPath, caKeyPath, NAME, BITS); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcaCert, err := ioutil.ReadFile(caCertPath)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcaKey, err := ioutil.ReadFile(caKeyPath)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// caCertPath, caKeyPath are already written to by machineUtil.GenerateCACertificate()\n\t\tif err := config.Set(\"rancher.docker.ca_cert\", string(caCert)); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := config.Set(\"rancher.docker.ca_key\", string(caKey)); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tcfg = config.LoadConfig()\n\n\t\tif err := util.WriteFileAtomic(caCertPath, []byte(cfg.Rancher.Docker.CACert), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := util.WriteFileAtomic(caKeyPath, []byte(cfg.Rancher.Docker.CAKey), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc tlsConfCreate(c *cli.Context) error {\n\terr := generate(c)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn nil\n}\n\nfunc generate(c *cli.Context) error {\n\tgenerateServer := c.Bool(\"server\")\n\toutDir := c.String(\"dir\")\n\thostnames := c.StringSlice(\"hostname\")\n\n\treturn Generate(generateServer, outDir, hostnames)\n}\n\nfunc Generate(generateServer bool, outDir string, hostnames []string) error {\n\tif outDir == \"\" {\n\t\tif generateServer {\n\t\t\toutDir = ServerTLSPath\n\t\t} else {\n\t\t\toutDir = ClientTLSPath\n\t\t}\n\t\tlog.Infof(\"Out directory (-d, --dir) not specified, using default: %s\", outDir)\n\t}\n\tcaCertPath := filepath.Join(outDir, CaCert)\n\tcaKeyPath := filepath.Join(outDir, CaKey)\n\tcertPath := filepath.Join(outDir, Cert)\n\tkeyPath := filepath.Join(outDir, Key)\n\n\tif generateServer {\n\t\tcertPath = filepath.Join(outDir, ServerCert)\n\t\tkeyPath = filepath.Join(outDir, ServerKey)\n\t}\n\n\tif _, err := os.Stat(outDir); os.IsNotExist(err) {\n\t\tif err := os.MkdirAll(outDir, 0700); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tcfg := config.LoadConfig()\n\tif err := writeCaCerts(cfg, caCertPath, caKeyPath); err != nil {\n\t\treturn err\n\t}\n\tif err := writeCerts(generateServer, hostnames, certPath, keyPath, caCertPath, caKeyPath); err != nil {\n\t\treturn err\n\t}\n\n\tif !generateServer {\n\t\tif err := filepath.Walk(outDir, func(path string, info os.FileInfo, err error) error {\n\t\t\treturn os.Chown(path, 1100, 1100) // rancher:rancher\n\t\t}); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/control/udevsettle.go",
    "content": "package control\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nfunc udevSettleAction(c *cli.Context) {\n\tif err := extraRules(); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := UdevSettle(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc extraRules() error {\n\tcfg := config.LoadConfig()\n\tif len(cfg.Rancher.Network.ModemNetworks) > 0 {\n\t\trules, err := ioutil.ReadDir(config.UdevRulesExtrasDir)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, r := range rules {\n\t\t\tif r.IsDir() || filepath.Ext(r.Name()) != \".rules\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\terr := os.Symlink(filepath.Join(config.UdevRulesExtrasDir, r.Name()), filepath.Join(config.UdevRulesDir, r.Name()))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\trules, err := ioutil.ReadDir(config.UdevRulesDir)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, r := range rules {\n\t\t\tif r.IsDir() || (filepath.Ext(r.Name()) != \".rules\") || (r.Mode()&os.ModeSymlink != 0) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\terr := os.Remove(filepath.Join(config.UdevRulesDir, r.Name()))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc UdevSettle() error {\n\tcmd := exec.Command(\"udevd\", \"--daemon\")\n\tdefer exec.Command(\"killall\", \"udevd\").Run()\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\treturn err\n\t}\n\n\tcmd = exec.Command(\"udevadm\", \"trigger\", \"--action=add\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\treturn err\n\t}\n\n\tcmd = exec.Command(\"udevadm\", \"settle\")\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\treturn cmd.Run()\n}\n"
  },
  {
    "path": "cmd/control/user_docker.go",
    "content": "package control\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\trosDocker \"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/codegangsta/cli\"\n\tcomposeClient \"github.com/docker/libcompose/docker/client\"\n\t\"github.com/docker/libcompose/project\"\n\t\"golang.org/x/net/context\"\n)\n\nconst (\n\tdefaultStorageContext  = \"console\"\n\tdockerPidFile          = \"/var/run/docker.pid\"\n\tsourceDirectory        = \"/engine\"\n\tdestDirectory          = \"/var/lib/rancher/engine\"\n\tpluginsSourceDirectory = \"/engine-plugins\"\n\tpluginsDestDirectory   = \"/var/lib/rancher/engine-plugins\"\n\tdockerCompletionFName  = \"completion\"\n)\n\nvar (\n\tdockerCommand = []string{\n\t\t\"ros\",\n\t\t\"docker-init\",\n\t}\n)\n\nfunc userDockerAction(c *cli.Context) error {\n\tif err := copyBinaries(sourceDirectory, destDirectory); err != nil {\n\t\treturn err\n\t}\n\n\tif err := copyBinaries(pluginsSourceDirectory, pluginsDestDirectory); err != nil {\n\t\treturn err\n\t}\n\n\tif err := syscall.Mount(\"/host/sys\", \"/sys\", \"\", syscall.MS_BIND|syscall.MS_REC, \"\"); err != nil {\n\t\treturn err\n\t}\n\n\tcfg := config.LoadConfig()\n\n\treturn startDocker(cfg)\n}\n\nfunc copyBinaries(source, dest string) error {\n\tif err := os.MkdirAll(dest, 0755); err != nil {\n\t\treturn err\n\t}\n\n\tfiles, err := ioutil.ReadDir(dest)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, file := range files {\n\t\tif err = os.RemoveAll(path.Join(dest, file.Name())); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfiles, err = ioutil.ReadDir(source)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, file := range files {\n\t\tsourceFile := path.Join(source, file.Name())\n\t\tdestFile := path.Join(dest, file.Name())\n\n\t\tin, err := os.Open(sourceFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tout, err := os.Create(destFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err = io.Copy(out, in); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = out.Sync(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = in.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = out.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif file.Name() == dockerCompletionFName {\n\t\t\tif err := os.Chmod(destFile, 0644); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tif err := os.Chmod(destFile, 0751); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc writeConfigCerts(cfg *config.CloudConfig) error {\n\toutDir := ServerTLSPath\n\tif err := os.MkdirAll(outDir, 0700); err != nil {\n\t\treturn err\n\t}\n\tcaCertPath := filepath.Join(outDir, CaCert)\n\tcaKeyPath := filepath.Join(outDir, CaKey)\n\tserverCertPath := filepath.Join(outDir, ServerCert)\n\tserverKeyPath := filepath.Join(outDir, ServerKey)\n\tif cfg.Rancher.Docker.CACert != \"\" {\n\t\tif err := util.WriteFileAtomic(caCertPath, []byte(cfg.Rancher.Docker.CACert), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := util.WriteFileAtomic(caKeyPath, []byte(cfg.Rancher.Docker.CAKey), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif cfg.Rancher.Docker.ServerCert != \"\" {\n\t\tif err := util.WriteFileAtomic(serverCertPath, []byte(cfg.Rancher.Docker.ServerCert), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := util.WriteFileAtomic(serverKeyPath, []byte(cfg.Rancher.Docker.ServerKey), 0400); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc startDocker(cfg *config.CloudConfig) error {\n\tstorageContext := cfg.Rancher.Docker.StorageContext\n\tif storageContext == \"\" {\n\t\tstorageContext = defaultStorageContext\n\t}\n\n\tlog.Infof(\"Starting Docker in context: %s\", storageContext)\n\n\tp, err := compose.GetProject(cfg, true, false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpid, err := waitForPid(storageContext, p)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Infof(\"%s PID %d\", storageContext, pid)\n\n\tclient, err := rosDocker.NewSystemClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdockerCfg := cfg.Rancher.Docker\n\n\targs := dockerCfg.FullArgs()\n\n\tlog.Debugf(\"User Docker args: %v\", args)\n\n\tif dockerCfg.TLS {\n\t\tif err := writeConfigCerts(cfg); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tinfo, err := client.ContainerInspect(context.Background(), storageContext)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcmd := []string{\"system-docker-runc\", \"exec\", \"--\", info.ID, \"env\"}\n\tlog.Info(dockerCfg.AppendEnv())\n\tcmd = append(cmd, dockerCfg.AppendEnv()...)\n\tcmd = append(cmd, dockerCommand...)\n\tcmd = append(cmd, args...)\n\tlog.Infof(\"Running %v\", cmd)\n\n\treturn syscall.Exec(\"/usr/bin/system-docker-runc\", cmd, os.Environ())\n}\n\nfunc waitForPid(service string, project *project.Project) (int, error) {\n\tlog.Infof(\"Getting PID for service: %s\", service)\n\tfor {\n\t\tif pid, err := getPid(service, project); err != nil || pid == 0 {\n\t\t\tlog.Infof(\"Waiting for %s : %d : %v\", service, pid, err)\n\t\t\ttime.Sleep(1 * time.Second)\n\t\t} else {\n\t\t\treturn pid, err\n\t\t}\n\t}\n}\n\nfunc getPid(service string, project *project.Project) (int, error) {\n\ts, err := project.CreateService(service)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tcontainers, err := s.Containers(context.Background())\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif len(containers) == 0 {\n\t\treturn 0, nil\n\t}\n\n\tclient, err := composeClient.Create(composeClient.Options{\n\t\tHost: config.SystemDockerHost,\n\t})\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tid, err := containers[0].ID()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tinfo, err := client.ContainerInspect(context.Background(), id)\n\tif err != nil || info.ID == \"\" {\n\t\treturn 0, err\n\t}\n\n\tif info.State.Running {\n\t\treturn info.State.Pid, nil\n\t}\n\n\treturn 0, nil\n}\n"
  },
  {
    "path": "cmd/control/util.go",
    "content": "package control\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/pkg/errors\"\n)\n\nfunc yes(question string) bool {\n\tfmt.Printf(\"%s [y/N]: \", question)\n\tin := bufio.NewReader(os.Stdin)\n\tline, err := in.ReadString('\\n')\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treturn strings.ToLower(line[0:1]) == \"y\"\n}\n\nfunc formatImage(image string, cfg *config.CloudConfig) string {\n\tdomainRegistry := cfg.Rancher.Environment[\"REGISTRY_DOMAIN\"]\n\tif domainRegistry != \"docker.io\" && domainRegistry != \"\" {\n\t\treturn fmt.Sprintf(\"%s/%s\", domainRegistry, image)\n\t}\n\treturn image\n}\n\nfunc symLinkEngineBinary() []symlink {\n\tbaseSymlink := []symlink{\n\t\t{\"/usr/share/ros/os-release\", \"/usr/lib/os-release\"},\n\t\t{\"/usr/share/ros/os-release\", \"/etc/os-release\"},\n\n\t\t{\"/var/lib/rancher/engine/docker\", \"/usr/bin/docker\"},\n\t\t{\"/var/lib/rancher/engine/dockerd\", \"/usr/bin/dockerd\"},\n\t\t{\"/var/lib/rancher/engine/docker-init\", \"/usr/bin/docker-init\"},\n\t\t{\"/var/lib/rancher/engine/docker-proxy\", \"/usr/bin/docker-proxy\"},\n\n\t\t// >= 18.09.0\n\t\t{\"/var/lib/rancher/engine/containerd\", \"/usr/bin/containerd\"},\n\t\t{\"/var/lib/rancher/engine/ctr\", \"/usr/bin/ctr\"},\n\t\t{\"/var/lib/rancher/engine/containerd-shim\", \"/usr/bin/containerd-shim\"},\n\t\t{\"/var/lib/rancher/engine/runc\", \"/usr/bin/runc\"},\n\n\t\t// < 18.09.0\n\t\t{\"/var/lib/rancher/engine/docker-containerd\", \"/usr/bin/docker-containerd\"},\n\t\t{\"/var/lib/rancher/engine/docker-containerd-ctr\", \"/usr/bin/docker-containerd-ctr\"},\n\t\t{\"/var/lib/rancher/engine/docker-containerd-shim\", \"/usr/bin/docker-containerd-shim\"},\n\t\t{\"/var/lib/rancher/engine/docker-runc\", \"/usr/bin/docker-runc\"},\n\n\t\t// Docker CLI plugins\n\t\t{\"/var/lib/rancher/engine-plugins/docker-compose\", \"/usr/bin/docker-compose\"},\n\t\t{\"/var/lib/rancher/engine-plugins/docker-compose\", \"/usr/libexec/docker/cli-plugins/docker-compose\"},\n\t\t{\"/var/lib/rancher/engine-plugins/docker-buildx\", \"/usr/libexec/docker/cli-plugins/docker-buildx\"},\n\t}\n\treturn baseSymlink\n}\n\nfunc checkZfsBackingFS(driver, dir string) error {\n\tif driver != \"zfs\" {\n\t\treturn nil\n\t}\n\tfor i := 0; i < 4; i++ {\n\t\tmountInfo, err := ioutil.ReadFile(\"/proc/self/mountinfo\")\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, mount := range strings.Split(string(mountInfo), \"\\n\") {\n\t\t\tif strings.Contains(mount, dir) && strings.Contains(mount, driver) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\ttime.Sleep(1 * time.Second)\n\t}\n\treturn errors.Errorf(\"BackingFS: %s not match storage-driver: %s\", dir, driver)\n}\n\nfunc checkGlobalCfg() bool {\n\t_, err := os.Stat(\"/proc/1/root/boot/global.cfg\")\n\tif err == nil || os.IsExist(err) {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "cmd/init/init.go",
    "content": "//go:build linux\n// +build linux\n\npackage init\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/dfs\"\n\t\"github.com/burmilla/os/pkg/init/b2d\"\n\t\"github.com/burmilla/os/pkg/init/cloudinit\"\n\t\"github.com/burmilla/os/pkg/init/configfiles\"\n\t\"github.com/burmilla/os/pkg/init/debug\"\n\t\"github.com/burmilla/os/pkg/init/docker\"\n\t\"github.com/burmilla/os/pkg/init/env\"\n\t\"github.com/burmilla/os/pkg/init/fsmount\"\n\t\"github.com/burmilla/os/pkg/init/hypervisor\"\n\t\"github.com/burmilla/os/pkg/init/modules\"\n\t\"github.com/burmilla/os/pkg/init/one\"\n\t\"github.com/burmilla/os/pkg/init/prepare\"\n\t\"github.com/burmilla/os/pkg/init/recovery\"\n\t\"github.com/burmilla/os/pkg/init/sharedroot\"\n\t\"github.com/burmilla/os/pkg/init/switchroot\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/sysinit\"\n)\n\nfunc MainInit() {\n\tlog.InitLogger()\n\t// TODO: this breaks and does nothing if the cfg is invalid (or is it due to threading?)\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tfmt.Printf(\"Starting Recovery console: %v\\n\", r)\n\t\t\trecovery.Recovery(nil)\n\t\t}\n\t}()\n\n\tif err := RunInit(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc RunInit() error {\n\tinitFuncs := config.CfgFuncs{\n\t\t{Name: \"set env\", Func: env.Init},\n\t\t{Name: \"preparefs\", Func: prepare.FS},\n\t\t{Name: \"save init cmdline\", Func: prepare.SaveCmdline},\n\t\t{Name: \"mount OEM\", Func: fsmount.MountOem},\n\t\t{Name: \"debug save cfg\", Func: debug.PrintAndLoadConfig},\n\t\t{Name: \"load modules\", Func: modules.LoadModules},\n\t\t{Name: \"recovery console\", Func: recovery.LoadRecoveryConsole},\n\t\t{Name: \"b2d env\", Func: b2d.B2D},\n\t\t{Name: \"mount STATE and bootstrap\", Func: fsmount.MountStateAndBootstrap},\n\t\t{Name: \"cloud-init\", Func: cloudinit.CloudInit},\n\t\t{Name: \"read cfg and log files\", Func: configfiles.ReadConfigFiles},\n\t\t{Name: \"switchroot\", Func: switchroot.SwitchRoot},\n\t\t{Name: \"mount OEM2\", Func: fsmount.MountOem},\n\t\t{Name: \"mount BOOT\", Func: fsmount.MountBoot},\n\t\t{Name: \"write cfg and log files\", Func: configfiles.WriteConfigFiles},\n\t\t{Name: \"b2d Env\", Func: b2d.Env},\n\t\t{Name: \"hypervisor tools\", Func: hypervisor.Tools},\n\t\t{Name: \"preparefs2\", Func: prepare.FS},\n\t\t{Name: \"load modules2\", Func: modules.LoadModules},\n\t\t{Name: \"set proxy env\", Func: env.Proxy},\n\t\t{Name: \"setupSharedRoot\", Func: sharedroot.Setup},\n\t\t{Name: \"sysinit\", Func: sysinit.RunSysInit},\n\t}\n\n\tcfg, err := config.ChainCfgFuncs(nil, initFuncs)\n\tif err != nil {\n\t\trecovery.Recovery(err)\n\t}\n\n\tlaunchConfig, args := docker.GetLaunchConfig(cfg, &cfg.Rancher.SystemDocker)\n\tlaunchConfig.Fork = !cfg.Rancher.SystemDocker.Exec\n\t//launchConfig.NoLog = true\n\n\tlog.Info(\"Launching System Docker\")\n\t_, err = dfs.LaunchDocker(launchConfig, config.SystemDockerBin, args...)\n\tif err != nil {\n\t\tlog.Errorf(\"Error Launching System Docker: %s\", err)\n\t\trecovery.Recovery(err)\n\t\treturn err\n\t}\n\t// Code never gets here - rancher.system_docker.exec=true\n\n\treturn one.PidOne()\n}\n"
  },
  {
    "path": "cmd/network/network.go",
    "content": "package network\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/signal\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"text/template\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/hostname\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\n\t\"github.com/docker/libnetwork/resolvconf\"\n\t\"golang.org/x/net/context\"\n)\n\nvar funcMap = template.FuncMap{\n\t\"addFunc\": func(a, b int) string {\n\t\treturn strconv.Itoa(a + b)\n\t},\n}\n\nfunc Main() {\n\tlog.InitLogger()\n\n\tcfg := config.LoadConfig()\n\tApplyNetworkConfig(cfg)\n\n\tlog.Infof(\"Restart syslog\")\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif err := client.ContainerRestart(context.Background(), \"syslog\", 10); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tsignalChan := make(chan os.Signal, 1)\n\tsignal.Notify(signalChan, syscall.SIGTERM)\n\t<-signalChan\n\tlog.Info(\"Received SIGTERM, shutting down\")\n\tnetconf.StopWpaSupplicant()\n\tnetconf.StopDhcpcd()\n}\n\nfunc ApplyNetworkConfig(cfg *config.CloudConfig) {\n\tlog.Infof(\"Apply Network Config\")\n\tuserSetDNS := len(cfg.Rancher.Network.DNS.Nameservers) > 0 || len(cfg.Rancher.Network.DNS.Search) > 0\n\n\tif err := hostname.SetHostnameFromCloudConfig(cfg); err != nil {\n\t\tlog.Errorf(\"Failed to set hostname from cloud config: %v\", err)\n\t}\n\n\tuserSetHostname := cfg.Hostname != \"\"\n\tif cfg.Rancher.Network.DHCPTimeout <= 0 {\n\t\tcfg.Rancher.Network.DHCPTimeout = cfg.Rancher.Defaults.Network.DHCPTimeout\n\t}\n\n\t// Always generate dhcpcd.conf to support NTP and hostname configuration coming from DHCP\n\tgenerateDhcpcdFiles(cfg)\n\n\t// In order to handle the STATIC mode in Wi-Fi network, we have to update the dhcpcd.conf file.\n\t// https://wiki.archlinux.org/index.php/dhcpcd#Static_profile\n\tif len(cfg.Rancher.Network.WifiNetworks) > 0 {\n\t\tgenerateWpaFiles(cfg)\n\t}\n\n\tdhcpSetDNS, err := netconf.ApplyNetworkConfigs(&cfg.Rancher.Network, userSetHostname, userSetDNS)\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to apply network configs(by netconf): %v\", err)\n\t}\n\n\tif dhcpSetDNS {\n\t\tlog.Infof(\"DNS set by DHCP\")\n\t}\n\n\tif !userSetDNS && !dhcpSetDNS {\n\t\t// only write 8.8.8.8,8.8.4.4 as a last resort\n\t\tlog.Infof(\"Writing default resolv.conf - no user setting, and no DHCP setting\")\n\t\tif _, err := resolvconf.Build(\"/etc/resolv.conf\",\n\t\t\tcfg.Rancher.Defaults.Network.DNS.Nameservers,\n\t\t\tcfg.Rancher.Defaults.Network.DNS.Search,\n\t\t\tnil); err != nil {\n\t\t\tlog.Errorf(\"Failed to write resolv.conf (!userSetDNS and !dhcpSetDNS): %v\", err)\n\t\t}\n\t}\n\tif userSetDNS {\n\t\tif _, err := resolvconf.Build(\"/etc/resolv.conf\", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search, nil); err != nil {\n\t\t\tlog.Errorf(\"Failed to write resolv.conf (userSetDNS): %v\", err)\n\t\t} else {\n\t\t\tlog.Infof(\"writing to /etc/resolv.conf: nameservers: %v, search: %v\", cfg.Rancher.Network.DNS.Nameservers, cfg.Rancher.Network.DNS.Search)\n\t\t}\n\t}\n\n\tresolve, err := ioutil.ReadFile(\"/etc/resolv.conf\")\n\tlog.Debugf(\"Resolve.conf == [%s], %v\", resolve, err)\n\n\tlog.Infof(\"Apply Network Config SyncHostname\")\n\tif err := hostname.SyncHostname(); err != nil {\n\t\tlog.Errorf(\"Failed to sync hostname: %v\", err)\n\t}\n}\n\nfunc generateDhcpcdFiles(cfg *config.CloudConfig) {\n\tnetworks := cfg.Rancher.Network.WifiNetworks\n\tinterfaces := cfg.Rancher.Network.Interfaces\n\tconfigs := make(map[string]netconf.WifiNetworkConfig)\n\tfor k, v := range interfaces {\n\t\tif c, ok := networks[v.WifiNetwork]; ok && c.Address != \"\" {\n\t\t\tconfigs[k] = c\n\t\t}\n\t}\n\tf, err := os.Create(config.DHCPCDConfigFile)\n\tdefer f.Close()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to open file: %s err: %v\", config.DHCPCDConfigFile, err)\n\t}\n\ttemplateFiles := []string{config.DHCPCDTemplateFile}\n\ttemplateName := filepath.Base(templateFiles[0])\n\tp := template.Must(template.New(templateName).ParseFiles(templateFiles...))\n\tif err = p.Execute(f, configs); err != nil {\n\t\tlog.Errorf(\"Failed to wrote wpa configuration to %s: %v\", config.DHCPCDConfigFile, err)\n\t}\n}\n\nfunc generateWpaFiles(cfg *config.CloudConfig) {\n\tnetworks := cfg.Rancher.Network.WifiNetworks\n\tinterfaces := cfg.Rancher.Network.Interfaces\n\tfor k, v := range interfaces {\n\t\tif v.WifiNetwork != \"\" {\n\t\t\tconfigs := make(map[string]netconf.WifiNetworkConfig)\n\t\t\tfilename := fmt.Sprintf(config.WPAConfigFile, k)\n\t\t\tf, err := os.Create(filename)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to open file: %s err: %v\", filename, err)\n\t\t\t}\n\t\t\tif c, ok := networks[v.WifiNetwork]; ok {\n\t\t\t\tconfigs[v.WifiNetwork] = c\n\t\t\t}\n\t\t\ttemplateFiles := []string{config.WPATemplateFile}\n\t\t\ttemplateName := filepath.Base(templateFiles[0])\n\t\t\tp := template.Must(template.New(templateName).Funcs(funcMap).ParseFiles(templateFiles...))\n\t\t\tif err = p.Execute(f, configs); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to wrote wpa configuration to %s: %v\", filename, err)\n\t\t\t}\n\t\t\tf.Close()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/power/power.go",
    "content": "package power\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/cmd/control/install\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"golang.org/x/net/context\"\n)\n\n// You can't shutdown the system from a process in console because we want to stop the console container.\n// If you do that you kill yourself.  So we spawn a separate container to do power operations\n// This can up because on shutdown we want ssh to gracefully die, terminating ssh connections and not just hanging tcp session\n//\n// Be careful of container name. only [a-zA-Z0-9][a-zA-Z0-9_.-] are allowed\nfunc runDocker(name string) error {\n\tif os.ExpandEnv(\"${IN_DOCKER}\") == \"true\" {\n\t\treturn nil\n\t}\n\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcmd := os.Args\n\tlog.Debugf(\"runDocker cmd: %s\", cmd)\n\n\tif name == \"\" {\n\t\tname = filepath.Base(os.Args[0])\n\t}\n\n\tcontainerName := strings.TrimPrefix(strings.Join(strings.Split(name, \"/\"), \"-\"), \"-\")\n\n\texisting, err := client.ContainerInspect(context.Background(), containerName)\n\tif err == nil && existing.ID != \"\" {\n\t\t// remove the old version of reboot\n\t\terr := client.ContainerRemove(context.Background(), types.ContainerRemoveOptions{\n\t\t\tContainerID: existing.ID,\n\t\t})\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tcurrentContainerID, err := util.GetCurrentContainerID()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcurrentContainer, err := client.ContainerInspect(context.Background(), currentContainerID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpowerContainer, err := client.ContainerCreate(context.Background(),\n\t\t&container.Config{\n\t\t\tImage: currentContainer.Config.Image,\n\t\t\tCmd:   cmd,\n\t\t\tEnv: []string{\n\t\t\t\t\"IN_DOCKER=true\",\n\t\t\t},\n\t\t},\n\t\t&container.HostConfig{\n\t\t\tPidMode:     \"host\",\n\t\t\tNetworkMode: \"none\",\n\t\t\tVolumesFrom: []string{\n\t\t\t\tcurrentContainer.ID,\n\t\t\t},\n\t\t\tPrivileged: true,\n\t\t}, nil, containerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = client.ContainerStart(context.Background(), powerContainer.ID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treader, err := client.ContainerLogs(context.Background(), types.ContainerLogsOptions{\n\t\tContainerID: powerContainer.ID,\n\t\tShowStderr:  true,\n\t\tShowStdout:  true,\n\t\tFollow:      true,\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tfor {\n\t\tp := make([]byte, 4096)\n\t\tn, err := reader.Read(p)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t\tif n == 0 {\n\t\t\t\treader.Close()\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif n > 0 {\n\t\t\tfmt.Print(string(p))\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tos.Exit(0)\n\treturn nil\n}\n\nfunc reboot(name string, force bool, code uint) {\n\tif os.Geteuid() != 0 {\n\t\tlog.Fatalf(\"%s: Need to be root\", os.Args[0])\n\t}\n\n\tcfg := config.LoadConfig()\n\n\t// Validate config\n\tif !force {\n\t\t_, validationErrors, err := config.LoadConfigWithError()\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tif validationErrors != nil && !validationErrors.Valid() {\n\t\t\tfor _, validationError := range validationErrors.Errors() {\n\t\t\t\tlog.Error(validationError)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Add shutdown timeout\n\ttimeoutValue := cfg.Rancher.ShutdownTimeout\n\tif timeoutValue == 0 {\n\t\ttimeoutValue = 60\n\t}\n\tif timeoutValue < 5 {\n\t\ttimeoutValue = 5\n\t}\n\tlog.Infof(\"Setting %s timeout to %d (rancher.shutdown_timeout set to %d)\", os.Args[0], timeoutValue, cfg.Rancher.ShutdownTimeout)\n\n\tgo func() {\n\t\ttimeout := time.After(time.Duration(timeoutValue) * time.Second)\n\t\ttick := time.Tick(100 * time.Millisecond)\n\t\t// Keep trying until we're timed out or got a result or got an error\n\t\tfor {\n\t\t\tselect {\n\t\t\t// Got a timeout! fail with a timeout error\n\t\t\tcase <-timeout:\n\t\t\t\tlog.Errorf(\"Container shutdown taking too long, forcing %s.\", os.Args[0])\n\t\t\t\tsyscall.Sync()\n\t\t\t\tsyscall.Reboot(int(code))\n\t\t\tcase <-tick:\n\t\t\t\tfmt.Printf(\".\")\n\t\t\t}\n\t\t}\n\t}()\n\n\t// reboot -f should work even when system-docker is having problems\n\tif !force {\n\t\tif kexecFlag || previouskexecFlag || kexecAppendFlag != \"\" {\n\t\t\t// pass through the cmdline args\n\t\t\tname = \"\"\n\t\t}\n\t\tif err := runDocker(name); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\tif kexecFlag || previouskexecFlag || kexecAppendFlag != \"\" {\n\t\t// need to mount boot dir, or `system-docker run -v /:/host -w /host/boot` ?\n\t\tbaseName := \"/mnt/new_img\"\n\t\t_, _, err := install.MountDevice(baseName, \"\", \"\", false)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"ERROR: can't Kexec: %s\", err)\n\t\t\treturn\n\t\t}\n\t\tdefer util.Unmount(baseName)\n\t\tKexec(previouskexecFlag, filepath.Join(baseName, config.BootDir), kexecAppendFlag)\n\t\treturn\n\t}\n\n\tif !force {\n\t\terr := shutDownContainers()\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tsyscall.Sync()\n\terr := syscall.Reboot(int(code))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc shutDownContainers() error {\n\tvar err error\n\tshutDown := true\n\ttimeout := 2\n\tfor i, arg := range os.Args {\n\t\tif arg == \"-f\" || arg == \"--f\" || arg == \"--force\" {\n\t\t\tshutDown = false\n\t\t}\n\t\tif arg == \"-t\" || arg == \"--t\" || arg == \"--timeout\" {\n\t\t\tif len(os.Args) > i+1 {\n\t\t\t\tt, err := strconv.Atoi(os.Args[i+1])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ttimeout = t\n\t\t\t} else {\n\t\t\t\tlog.Error(\"please specify a timeout\")\n\t\t\t}\n\t\t}\n\t}\n\tif !shutDown {\n\t\treturn nil\n\t}\n\tclient, err := docker.NewSystemClient()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfilter := filters.NewArgs()\n\tfilter.Add(\"status\", \"running\")\n\n\topts := types.ContainerListOptions{\n\t\tAll:    true,\n\t\tFilter: filter,\n\t}\n\n\tcontainers, err := client.ContainerList(context.Background(), opts)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcurrentContainerID, err := util.GetCurrentContainerID()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar stopErrorStrings []string\n\tconsoleContainerIdx := -1\n\n\tfor idx, container := range containers {\n\t\tif container.ID == currentContainerID {\n\t\t\tcontinue\n\t\t}\n\t\tif container.Names[0] == \"/console\" {\n\t\t\tconsoleContainerIdx = idx\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Infof(\"Stopping %s : %s\", container.Names[0], container.ID[:12])\n\t\tstopErr := client.ContainerStop(context.Background(), container.ID, timeout)\n\t\tif stopErr != nil {\n\t\t\tlog.Errorf(\"------- Error Stopping %s : %s\", container.Names[0], stopErr.Error())\n\t\t\tstopErrorStrings = append(stopErrorStrings, \" [\"+container.ID+\"] \"+stopErr.Error())\n\t\t}\n\t}\n\n\t// lets see what containers are still running and only wait on those\n\tcontainers, err = client.ContainerList(context.Background(), opts)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar waitErrorStrings []string\n\n\tfor idx, container := range containers {\n\t\tif container.ID == currentContainerID {\n\t\t\tcontinue\n\t\t}\n\t\tif container.Names[0] == \"/console\" {\n\t\t\tconsoleContainerIdx = idx\n\t\t\tcontinue\n\t\t}\n\t\tlog.Infof(\"Waiting %s : %s\", container.Names[0], container.ID[:12])\n\t\t_, waitErr := client.ContainerWait(context.Background(), container.ID)\n\t\tif waitErr != nil {\n\t\t\tlog.Errorf(\"------- Error Waiting %s : %s\", container.Names[0], waitErr.Error())\n\t\t\twaitErrorStrings = append(waitErrorStrings, \" [\"+container.ID+\"] \"+waitErr.Error())\n\t\t}\n\t}\n\n\t// and now stop the console\n\tif consoleContainerIdx != -1 {\n\t\tcontainer := containers[consoleContainerIdx]\n\t\tlog.Infof(\"Console Stopping %v : %s\", container.Names, container.ID[:12])\n\t\tstopErr := client.ContainerStop(context.Background(), container.ID, timeout)\n\t\tif stopErr != nil {\n\t\t\tlog.Errorf(\"------- Error Stopping %v : %s\", container.Names, stopErr.Error())\n\t\t\tstopErrorStrings = append(stopErrorStrings, \" [\"+container.ID+\"] \"+stopErr.Error())\n\t\t}\n\n\t\tlog.Infof(\"Console Waiting %v : %s\", container.Names, container.ID[:12])\n\t\t_, waitErr := client.ContainerWait(context.Background(), container.ID)\n\t\tif waitErr != nil {\n\t\t\tlog.Errorf(\"------- Error Waiting %v : %s\", container.Names, waitErr.Error())\n\t\t\twaitErrorStrings = append(waitErrorStrings, \" [\"+container.ID+\"] \"+waitErr.Error())\n\t\t}\n\t}\n\n\tif len(waitErrorStrings) != 0 || len(stopErrorStrings) != 0 {\n\t\treturn errors.New(\"error while stopping \\n1. STOP Errors [\" + strings.Join(stopErrorStrings, \",\") + \"] \\n2. WAIT Errors [\" + strings.Join(waitErrorStrings, \",\") + \"]\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/power/shutdown.go",
    "content": "package power\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/cmd/control/install\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nvar (\n\thaltFlag          bool\n\tpoweroffFlag      bool\n\trebootFlag        bool\n\tforceFlag         bool\n\tkexecFlag         bool\n\tpreviouskexecFlag bool\n\tkexecAppendFlag   string\n)\n\nfunc Shutdown() {\n\tlog.InitLogger()\n\tapp := cli.NewApp()\n\n\tapp.Name = filepath.Base(os.Args[0])\n\tapp.Usage = fmt.Sprintf(\"%s BurmillaOS\\nbuilt: %s\", app.Name, config.BuildDate)\n\tapp.Version = config.Version\n\tapp.Author = \"Project Burmilla\\n\\tRancher Labs, Inc.\"\n\tapp.EnableBashCompletion = true\n\tapp.Action = shutdown\n\tapp.Flags = []cli.Flag{\n\t\t//    --no-wall\n\t\t//        Do not send wall message before halt, power-off,\n\t\t//        reboot.\n\n\t\t// halt, poweroff, reboot ONLY\n\t\t//    -f, --force\n\t\t//        Force immediate halt, power-off, reboot. Do not\n\t\t//        contact the init system.\n\t\tcli.BoolFlag{\n\t\t\tName:        \"f, force\",\n\t\t\tUsage:       \"Force immediate halt, power-off, reboot. Do not contact the init system.\",\n\t\t\tDestination: &forceFlag,\n\t\t},\n\n\t\t//    -w, --wtmp-only\n\t\t//        Only write wtmp shutdown entry, do not actually\n\t\t//        halt, power-off, reboot.\n\n\t\t//    -d, --no-wtmp\n\t\t//        Do not write wtmp shutdown entry.\n\n\t\t//    -n, --no-sync\n\t\t//        Don't sync hard disks/storage media before halt,\n\t\t//        power-off, reboot.\n\n\t\t// shutdown ONLY\n\t\t//    -h\n\t\t//        Equivalent to --poweroff, unless --halt is\n\t\t//        specified.\n\n\t\t//    -k\n\t\t//        Do not halt, power-off, reboot, just write wall\n\t\t//        message.\n\n\t\t//    -c\n\t\t//        Cancel a pending shutdown. This may be used\n\t\t//        cancel the effect of an invocation of shutdown\n\t\t//        with a time argument that is not \"+0\" or \"now\".\n\n\t}\n\t//    -H, --halt\n\t//        Halt the machine.\n\tif app.Name == \"halt\" {\n\t\tapp.Flags = append(app.Flags, cli.BoolTFlag{\n\t\t\tName:        \"H, halt\",\n\t\t\tUsage:       \"halt the machine\",\n\t\t\tDestination: &haltFlag,\n\t\t})\n\t} else {\n\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\tName:        \"H, halt\",\n\t\t\tUsage:       \"halt the machine\",\n\t\t\tDestination: &haltFlag,\n\t\t})\n\t}\n\t//    -P, --poweroff\n\t//        Power-off the machine (the default for shutdown cmd).\n\tif app.Name == \"poweroff\" {\n\t\tapp.Flags = append(app.Flags, cli.BoolTFlag{\n\t\t\tName:        \"P, poweroff\",\n\t\t\tUsage:       \"poweroff the machine\",\n\t\t\tDestination: &poweroffFlag,\n\t\t})\n\t} else {\n\t\t//  shutdown -h\n\t\t//        Equivalent to --poweroff\n\t\tif app.Name == \"shutdown\" {\n\t\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\t\tName:        \"h\",\n\t\t\t\tUsage:       \"poweroff the machine\",\n\t\t\t\tDestination: &poweroffFlag,\n\t\t\t})\n\t\t}\n\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\tName:        \"P, poweroff\",\n\t\t\tUsage:       \"poweroff the machine\",\n\t\t\tDestination: &poweroffFlag,\n\t\t})\n\t}\n\t//    -r, --reboot\n\t//        Reboot the machine.\n\tif app.Name == \"reboot\" {\n\t\tapp.Flags = append(app.Flags, cli.BoolTFlag{\n\t\t\tName:        \"r, reboot\",\n\t\t\tUsage:       \"reboot after shutdown\",\n\t\t\tDestination: &rebootFlag,\n\t\t})\n\t\t// OR? maybe implement it as a `kexec` cli tool?\n\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\tName:        \"kexec\",\n\t\t\tUsage:       \"kexec the default RancherOS cfg\",\n\t\t\tDestination: &kexecFlag,\n\t\t})\n\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\tName:        \"kexec-previous\",\n\t\t\tUsage:       \"kexec the previous RancherOS cfg\",\n\t\t\tDestination: &previouskexecFlag,\n\t\t})\n\t\tapp.Flags = append(app.Flags, cli.StringFlag{\n\t\t\tName:        \"kexec-append\",\n\t\t\tUsage:       \"kexec using the specified kernel boot params (ignores global.cfg)\",\n\t\t\tDestination: &kexecAppendFlag,\n\t\t})\n\t} else {\n\t\tapp.Flags = append(app.Flags, cli.BoolFlag{\n\t\t\tName:        \"r, reboot\",\n\t\t\tUsage:       \"reboot after shutdown\",\n\t\t\tDestination: &rebootFlag,\n\t\t})\n\t}\n\t//TODO: add the time and msg flags...\n\tapp.HideHelp = true\n\n\tapp.Run(os.Args)\n}\n\nfunc Kexec(previous bool, bootDir, append string) error {\n\tcfg := \"linux-current.cfg\"\n\tif previous {\n\t\tcfg = \"linux-previous.cfg\"\n\t}\n\tcfgFile := filepath.Join(bootDir, cfg)\n\tvmlinuzFile, initrdFile, err := install.ReadSyslinuxCfg(cfgFile)\n\tif err != nil {\n\t\tlog.Errorf(\"%s\", err)\n\t\treturn err\n\t}\n\tglobalCfgFile := filepath.Join(bootDir, \"global.cfg\")\n\tif append == \"\" {\n\t\tappend, err = install.ReadGlobalCfg(globalCfgFile)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"%s\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\t// TODO: read global.cfg if append == \"\"\n\t//    kexec -l ${DIST}/vmlinuz --initrd=${DIST}/initrd --append=\"${kernelArgs} ${APPEND}\" -f\n\tcmd := exec.Command(\n\t\t\"kexec\",\n\t\t\"-l\", vmlinuzFile,\n\t\t\"--initrd\", initrdFile,\n\t\t\"--append\", append,\n\t\t\"-f\")\n\tlog.Debugf(\"Run(%#v)\", cmd)\n\tcmd.Stderr = os.Stderr\n\tif _, err := cmd.Output(); err != nil {\n\t\tlog.Errorf(\"Failed to kexec: %s\", err)\n\t\treturn err\n\t}\n\tlog.Infof(\"kexec'd to new install\")\n\treturn nil\n}\n\n// Reboot is used by installation / upgrade\n// TODO: add kexec option\nfunc Reboot() {\n\tos.Args = []string{\"reboot\"}\n\treboot(\"reboot\", false, syscall.LINUX_REBOOT_CMD_RESTART)\n}\n\nfunc shutdown(c *cli.Context) error {\n\t// the shutdown command's default is poweroff\n\tvar powerCmd uint\n\tpowerCmd = syscall.LINUX_REBOOT_CMD_POWER_OFF\n\tif rebootFlag {\n\t\tpowerCmd = syscall.LINUX_REBOOT_CMD_RESTART\n\t} else if poweroffFlag {\n\t\tpowerCmd = syscall.LINUX_REBOOT_CMD_POWER_OFF\n\t} else if haltFlag {\n\t\tpowerCmd = syscall.LINUX_REBOOT_CMD_HALT\n\t}\n\n\ttimeArg := c.Args().Get(0)\n\t// We may be called via an absolute path, so check that now and make sure we\n\t// don't pass the wrong app name down. Aside from the logic in the immediate\n\t// context here, the container name is derived from how we were called and\n\t// cannot contain slashes.\n\tappName := filepath.Base(c.App.Name)\n\tif appName == \"shutdown\" && timeArg != \"\" {\n\t\tif timeArg != \"now\" && timeArg != \"+0\" {\n\t\t\terr := fmt.Errorf(\"Sorry, can't parse '%s' as time value (only 'now' supported)\", timeArg)\n\t\t\tlog.Error(err)\n\t\t\treturn err\n\t\t}\n\t\t// TODO: if there are more params, LOG them\n\t}\n\n\treboot(appName, forceFlag, powerCmd)\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/respawn/respawn.go",
    "content": "package respawn\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/codegangsta/cli\"\n)\n\nvar (\n\trunning     = true\n\tprocesses   = map[int]*os.Process{}\n\tprocessLock = sync.Mutex{}\n)\n\nfunc Main() {\n\tlog.InitLogger()\n\truntime.GOMAXPROCS(1)\n\truntime.LockOSThread()\n\tapp := cli.NewApp()\n\n\tapp.Name = os.Args[0]\n\tapp.Usage = fmt.Sprintf(\"%s BurmillaOS\\nbuilt: %s\", app.Name, config.BuildDate)\n\tapp.Version = config.Version\n\tapp.Author = \"Project Burmilla\\n\\tRancher Labs, Inc.\"\n\n\tapp.Flags = []cli.Flag{\n\t\tcli.StringFlag{\n\t\t\tName:  \"file, f\",\n\t\t\tUsage: \"Optional config file to load\",\n\t\t},\n\t}\n\tapp.Action = run\n\n\tlog.Infof(\"%s, %s\", app.Usage, app.Version)\n\tfmt.Printf(\"%s, %s\", app.Usage, app.Version)\n\n\tapp.Run(os.Args)\n}\n\nfunc setupSigterm() {\n\tsigtermChan := make(chan os.Signal, 1)\n\tsignal.Notify(sigtermChan, syscall.SIGTERM)\n\tgo func() {\n\t\tfor range sigtermChan {\n\t\t\ttermPids()\n\t\t}\n\t}()\n}\n\nfunc run(c *cli.Context) error {\n\tsetupSigterm()\n\n\tvar stream io.Reader = os.Stdin\n\tvar err error\n\n\tinputFileName := c.String(\"file\")\n\n\tif inputFileName != \"\" {\n\t\tstream, err = os.Open(inputFileName)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\tinput, err := ioutil.ReadAll(stream)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tlines := strings.Split(string(input), \"\\n\")\n\tdoneChannel := make(chan string, len(lines))\n\n\tfor _, line := range lines {\n\t\tif strings.TrimSpace(line) == \"\" || strings.Index(strings.TrimSpace(line), \"#\") == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tgo execute(line, doneChannel)\n\t}\n\n\tfor i := 0; i < len(lines); i++ {\n\t\tline := <-doneChannel\n\t\tlog.Infof(\"FINISHED: %s\", line)\n\t\tfmt.Printf(\"FINISHED: %s\", line)\n\t}\n\treturn nil\n}\n\nfunc addProcess(process *os.Process) {\n\tprocessLock.Lock()\n\tdefer processLock.Unlock()\n\tprocesses[process.Pid] = process\n}\n\nfunc removeProcess(process *os.Process) {\n\tprocessLock.Lock()\n\tdefer processLock.Unlock()\n\tdelete(processes, process.Pid)\n}\n\nfunc termPids() {\n\trunning = false\n\tprocessLock.Lock()\n\tdefer processLock.Unlock()\n\n\tfor _, process := range processes {\n\t\tlog.Infof(\"sending SIGTERM to %d\", process.Pid)\n\t\tprocess.Signal(syscall.SIGTERM)\n\t}\n}\n\nfunc execute(line string, doneChannel chan string) {\n\tdefer func() { doneChannel <- line }()\n\n\tstart := time.Now()\n\tcount := 0\n\n\targs := strings.Split(line, \" \")\n\n\tfor {\n\t\tcmd := exec.Command(args[0], args[1:]...)\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tcmd.SysProcAttr = &syscall.SysProcAttr{\n\t\t\tSetsid: true,\n\t\t}\n\n\t\tif err := cmd.Start(); err == nil {\n\t\t\taddProcess(cmd.Process)\n\t\t\tif err = cmd.Wait(); err != nil {\n\t\t\t\tlog.Errorf(\"Wait cmd to exit: %s, err: %v\", line, err)\n\t\t\t}\n\t\t\tremoveProcess(cmd.Process)\n\t\t} else {\n\t\t\tlog.Errorf(\"Start cmd: %s, err: %v\", line, err)\n\t\t}\n\n\t\tif !running {\n\t\t\tlog.Infof(\"%s : not restarting, exiting\", line)\n\t\t\tbreak\n\t\t}\n\n\t\tcount++\n\n\t\tif count > 10 {\n\t\t\tif time.Now().Sub(start) <= (1 * time.Second) {\n\t\t\t\tlog.Errorf(\"%s : restarted too fast, not executing\", line)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tcount = 0\n\t\t\tstart = time.Now()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/sysinit/sysinit.go",
    "content": "package sysinit\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/sysinit\"\n)\n\nfunc Main() {\n\tlog.InitLogger()\n\n\tresolve, err := ioutil.ReadFile(\"/etc/resolv.conf\")\n\tlog.Infof(\"Resolv.conf == [%s], %v\", resolve, err)\n\tlog.Infof(\"Exec %v\", os.Args)\n\n\tif err := sysinit.SysInit(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "cmd/wait/wait.go",
    "content": "package wait\n\nimport (\n\t\"os\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nfunc Main() {\n\tlog.InitLogger()\n\t_, err := docker.NewClient(config.DockerHost)\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to connect to Docker\")\n\t\tos.Exit(1)\n\t}\n\n\tlog.Infof(\"Docker is ready\")\n}\n"
  },
  {
    "path": "config/cloudinit/.gitignore",
    "content": "*.swp\nbin/\ncoverage/\ngopath/\n"
  },
  {
    "path": "config/cloudinit/.travis.yml",
    "content": "language: go\nmatrix:\n  include:\n    - go: 1.5\n      env: GO15VENDOREXPERIMENT=1\n    - go: 1.6\n\nscript:\n - ./test\n"
  },
  {
    "path": "config/cloudinit/CONTRIBUTING.md",
    "content": "# How to Contribute\n\nCoreOS projects are [Apache 2.0 licensed](LICENSE) and accept contributions via\nGitHub pull requests.  This document outlines some of the conventions on\ndevelopment workflow, commit message formatting, contact points and other\nresources to make it easier to get your contribution accepted.\n\n# Certificate of Origin\n\nBy contributing to this project you agree to the Developer Certificate of\nOrigin (DCO). This document was created by the Linux Kernel community and is a\nsimple statement that you, as a contributor, have the legal right to make the\ncontribution. See the [DCO](DCO) file for details.\n\n# Email and Chat\n\nThe project currently uses the general CoreOS email list and IRC channel:\n- Email: [coreos-dev](https://groups.google.com/forum/#!forum/coreos-dev)\n- IRC: #[coreos](irc://irc.freenode.org:6667/#coreos) IRC channel on freenode.org\n\n## Getting Started\n\n- Fork the repository on GitHub\n- Read the [README](README.md) for build and test instructions\n- Play with the project, submit bugs, submit patches!\n\n## Contribution Flow\n\nThis is a rough outline of what a contributor's workflow looks like:\n\n- Create a topic branch from where you want to base your work (usually master).\n- Make commits of logical units.\n- Make sure your commit messages are in the proper format (see below).\n- Push your changes to a topic branch in your fork of the repository.\n- Make sure the tests pass, and add any new tests as appropriate.\n- Submit a pull request to the original repository.\n\nThanks for your contributions!\n\n### Format of the Commit Message\n\nWe follow a rough convention for commit messages that is designed to answer two\nquestions: what changed and why. The subject line should feature the what and\nthe body of the commit should describe the why.\n\n```\nenvironment: write new keys in consistent order\n\nGo 1.3 randomizes the ordering of keys when iterating over a map.\nSort the keys to make this ordering consistent.\n\nFixes #38\n```\n\nThe format can be described more formally as follows:\n\n```\n<subsystem>: <what changed>\n<BLANK LINE>\n<why this change was made>\n<BLANK LINE>\n<footer>\n```\n\nThe first line is the subject and should be no longer than 70 characters, the\nsecond line is always blank, and other lines should be wrapped at 80 characters.\nThis allows the message to be easier to read on GitHub as well as in various\ngit tools.\n"
  },
  {
    "path": "config/cloudinit/DCO",
    "content": "Developer Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n"
  },
  {
    "path": "config/cloudinit/Documentation/cloud-config-deprecated.md",
    "content": "# Deprecated Cloud-Config Features\n\n## Retrieving SSH Authorized Keys\n\n### From a GitHub User\n\nUsing the `coreos-ssh-import-github` field, we can import public SSH keys from a GitHub user to use as authorized keys to a server.\n\n```yaml\n#cloud-config\n\nusers:\n  - name: elroy\n    coreos-ssh-import-github: elroy\n```\n\n### From an HTTP Endpoint\n\nWe can also pull public SSH keys from any HTTP endpoint which matches [GitHub's API response format](https://developer.github.com/v3/users/keys/#list-public-keys-for-a-user).\nFor example, if you have an installation of GitHub Enterprise, you can provide a complete URL with an authentication token:\n\n```yaml\n#cloud-config\n\nusers:\n  - name: elroy\n    coreos-ssh-import-url: https://github-enterprise.example.com/api/v3/users/elroy/keys?access_token=<TOKEN>\n```\n\nYou can also specify any URL whose response matches the JSON format for public keys:\n\n```yaml\n#cloud-config\n\nusers:\n  - name: elroy\n    coreos-ssh-import-url: https://example.com/public-keys\n```\n"
  },
  {
    "path": "config/cloudinit/Documentation/cloud-config-locations.md",
    "content": "# Cloud-Config Locations\n\nOn every boot, coreos-cloudinit looks for a config file to configure your host. Here is a list of locations which are used by the Cloud-Config utility, depending on your CoreOS platform:\n\n| Location | Description |\n| --- | --- |\n| `/media/configvirtfs/openstack/latest/user_data` | `/media/configvirtfs` mount point with [config-2](/os/docs/latest/config-drive.html#contents-and-format) label. It should contain a `openstack/latest/user_data` relative path. Usually used by cloud providers or in VM installations. |\n| `/media/configdrive/openstack/latest/user_data` | FAT or ISO9660 filesystem with [config-2](/os/docs/latest/config-drive.html#qemu-virtfs) label and `/media/configdrive/` mount point. It should also contain a `openstack/latest/user_data` relative path. Usually used in installations which are configured by USB Flash sticks or CDROM media. |\n| Kernel command line: `cloud-config-url=http://example.com/user_data`. | You can find this string using this command `cat /proc/cmdline`. Usually used in [PXE](/os/docs/latest/booting-with-pxe.html) or [iPXE](/os/docs/latest/booting-with-ipxe.html) boots. |\n| `/var/lib/coreos-install/user_data` | When you install CoreOS manually using the [coreos-install](/os/docs/latest/installing-to-disk.html) tool. Usually used in bare metal installations. |\n| `/usr/share/oem/cloud-config.yml` | Path for OEM images. |\n| `/var/lib/coreos-vagrant/vagrantfile-user-data`| Vagrant OEM scripts automatically store Cloud-Config into this path. |\n| `/var/lib/waagent/CustomData`| Azure platform uses OEM path for first Cloud-Config initialization and then `/var/lib/waagent/CustomData` to apply your settings. |\n| `http://169.254.169.254/metadata/v1/user-data` `http://169.254.169.254/2009-04-04/user-data` `https://metadata.packet.net/userdata`|DigitalOcean, EC2 and Packet cloud providers correspondingly use these URLs to download Cloud-Config.|\n| `/usr/share/oem/bin/vmtoolsd --cmd \"info-get guestinfo.coreos.config.data\"` | Cloud-Config provided by [VMware Guestinfo][VMware Guestinfo] |\n| `/usr/share/oem/bin/vmtoolsd --cmd \"info-get guestinfo.coreos.config.url\"` | Cloud-Config URL provided by [VMware Guestinfo][VMware Guestinfo] |\n\n[VMware Guestinfo]: vmware-guestinfo.md\n\nYou can also run the `coreos-cloudinit` tool manually and provide a path to your custom Cloud-Config file:\n\n```sh\nsudo coreos-cloudinit --from-file=/home/core/cloud-config.yaml\n```\n\nThis command will apply your custom cloud-config.\n"
  },
  {
    "path": "config/cloudinit/Documentation/cloud-config-oem.md",
    "content": "## OEM configuration\n\nThe `coreos.oem.*` parameters follow the [os-release spec][os-release], but have been repurposed as a way for coreos-cloudinit to know about the OEM partition on this machine. Customizing this section is only needed when generating a new OEM of CoreOS from the SDK. The fields include:\n\n- **id**: Lowercase string identifying the OEM\n- **name**: Human-friendly string representing the OEM\n- **version-id**: Lowercase string identifying the version of the OEM\n- **home-url**: Link to the homepage of the provider or OEM\n- **bug-report-url**: Link to a place to file bug reports about this OEM\n\ncoreos-cloudinit renders these fields to `/etc/oem-release`.\nIf no **id** field is provided, coreos-cloudinit will ignore this section.\n\nFor example, the following cloud-config document...\n\n```yaml\n#cloud-config\ncoreos:\n  oem:\n    id: \"rackspace\"\n    name: \"Rackspace Cloud Servers\"\n    version-id: \"168.0.0\"\n    home-url: \"https://www.rackspace.com/cloud/servers/\"\n    bug-report-url: \"https://github.com/coreos/coreos-overlay\"\n```\n\n...would be rendered to the following `/etc/oem-release`:\n\n```yaml\nID=rackspace\nNAME=\"Rackspace Cloud Servers\"\nVERSION_ID=168.0.0\nHOME_URL=\"https://www.rackspace.com/cloud/servers/\"\nBUG_REPORT_URL=\"https://github.com/coreos/coreos-overlay\"\n```\n\n[os-release]: http://www.freedesktop.org/software/systemd/man/os-release.html\n"
  },
  {
    "path": "config/cloudinit/Documentation/cloud-config.md",
    "content": "# Using Cloud-Config\n\nCoreOS allows you to declaratively customize various OS-level items, such as network configuration, user accounts, and systemd units. This document describes the full list of items we can configure. The `coreos-cloudinit` program uses these files as it configures the OS after startup or during runtime.\n\nYour cloud-config is processed during each boot. Invalid cloud-config won't be processed but will be logged in the journal. You can validate your cloud-config with the [CoreOS online validator](https://coreos.com/validate/) or by running `coreos-cloudinit -validate`.  In addition to these two validation methods you can debug `coreos-cloudinit` system output through the `journalctl` tool:\n\n```sh\njournalctl --identifier=coreos-cloudinit\n```\n\nIt will show `coreos-cloudinit` run output which was triggered by system boot.\n\n## Configuration File\n\nThe file used by this system initialization program is called a \"cloud-config\" file. It is inspired by the [cloud-init][cloud-init] project's [cloud-config][cloud-config] file, which is \"the defacto multi-distribution package that handles early initialization of a cloud instance\" ([cloud-init docs][cloud-init-docs]). Because the cloud-init project includes tools which aren't used by CoreOS, only the relevant subset of its configuration items will be implemented in our cloud-config file. In addition to those, we added a few CoreOS-specific items, such as etcd configuration, OEM definition, and systemd units.\n\nWe've designed our implementation to allow the same cloud-config file to work across all of our supported platforms.\n\n[cloud-init]: https://launchpad.net/cloud-init\n[cloud-init-docs]: http://cloudinit.readthedocs.org/en/latest/index.html\n[cloud-config]: http://cloudinit.readthedocs.org/en/latest/topics/format.html#cloud-config-data\n\n### File Format\n\nThe cloud-config file uses the [YAML][yaml] file format, which uses whitespace and new-lines to delimit lists, associative arrays, and values.\n\nA cloud-config file must contain a header: either `#cloud-config` for processing as cloud-config (suggested) or `#!` for processing as a shell script (advanced). If cloud-config has the `#cloud-config` header, it should followed by an associative array which has zero or more of the following keys:\n\n- `coreos`\n- `ssh_authorized_keys`\n- `hostname`\n- `users`\n- `write_files`\n- `manage_etc_hosts`\n\nThe expected values for these keys are defined in the rest of this document.\n\nIf cloud-config header starts on `#!` then coreos-cloudinit will recognize it as shell script which is interpreted by bash and run it as transient systemd service.\n\n[yaml]: https://en.wikipedia.org/wiki/YAML\n\n### Providing Cloud-Config with Config-Drive\n\nCoreOS tries to conform to each platform's native method to provide user data. Each cloud provider tends to be unique, but this complexity has been abstracted by CoreOS. You can view each platform's instructions on their documentation pages. The most universal way to provide cloud-config is [via config-drive](https://github.com/rancher/os/config/cloudinit/blob/master/Documentation/config-drive.md), which attaches a read-only device to the machine, that contains your cloud-config file.\n\n## Configuration Parameters\n\n### coreos\n\n#### etcd (deprecated. see etcd2)\n\nThe `coreos.etcd.*` parameters will be translated to a partial systemd unit acting as an etcd configuration file.\nIf the platform environment supports the templating feature of coreos-cloudinit it is possible to automate etcd configuration with the `$private_ipv4` and `$public_ipv4` fields. For example, the following cloud-config document...\n\n```yaml\n#cloud-config\n\ncoreos:\n  etcd:\n    name: \"node001\"\n    # generate a new token for each unique cluster from https://discovery.etcd.io/new\n    discovery: \"https://discovery.etcd.io/<token>\"\n    # multi-region and multi-cloud deployments need to use $public_ipv4\n    addr: \"$public_ipv4:4001\"\n    peer-addr: \"$private_ipv4:7001\"\n```\n\n...will generate a systemd unit drop-in for etcd.service with the following contents:\n\n```yaml\n[Service]\nEnvironment=\"ETCD_NAME=node001\"\nEnvironment=\"ETCD_DISCOVERY=https://discovery.etcd.io/<token>\"\nEnvironment=\"ETCD_ADDR=203.0.113.29:4001\"\nEnvironment=\"ETCD_PEER_ADDR=192.0.2.13:7001\"\n```\n\nFor more information about the available configuration parameters, see the [etcd documentation][etcd-config].\n\n_Note: The `$private_ipv4` and `$public_ipv4` substitution variables referenced in other documents are only supported on Amazon EC2, Google Compute Engine, OpenStack, Rackspace, DigitalOcean, and Vagrant._\n\n[etcd-config]: https://github.com/coreos/etcd/blob/release-0.4/Documentation/configuration.md\n\n#### etcd2\n\nThe `coreos.etcd2.*` parameters will be translated to a partial systemd unit acting as an etcd configuration file.\nIf the platform environment supports the templating feature of coreos-cloudinit it is possible to automate etcd configuration with the `$private_ipv4` and `$public_ipv4` fields. When generating a [discovery token](https://discovery.etcd.io/new?size=3), set the `size` parameter, since etcd uses this to determine if all members have joined the cluster. After the cluster is bootstrapped, it can grow or shrink from this configured size.\n\nFor example, the following cloud-config document...\n\n```yaml\n#cloud-config\n\ncoreos:\n  etcd2:\n    # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3\n    discovery: \"https://discovery.etcd.io/<token>\"\n    # multi-region and multi-cloud deployments need to use $public_ipv4\n    advertise-client-urls: \"http://$public_ipv4:2379\"\n    initial-advertise-peer-urls: \"http://$private_ipv4:2380\"\n    # listen on both the official ports and the legacy ports\n    # legacy ports can be omitted if your application doesn't depend on them\n    listen-client-urls: \"http://0.0.0.0:2379,http://0.0.0.0:4001\"\n    listen-peer-urls: \"http://$private_ipv4:2380,http://$private_ipv4:7001\"\n```\n\n...will generate a systemd unit drop-in for etcd2.service with the following contents:\n\n```yaml\n[Service]\nEnvironment=\"ETCD_DISCOVERY=https://discovery.etcd.io/<token>\"\nEnvironment=\"ETCD_ADVERTISE_CLIENT_URLS=http://203.0.113.29:2379\"\nEnvironment=\"ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.0.2.13:2380\"\nEnvironment=\"ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001\"\nEnvironment=\"ETCD_LISTEN_PEER_URLS=http://192.0.2.13:2380,http://192.0.2.13:7001\"\n```\n\nFor more information about the available configuration parameters, see the [etcd2 documentation][etcd2-config].\n\n_Note: The `$private_ipv4` and `$public_ipv4` substitution variables referenced in other documents are only supported on Amazon EC2, Google Compute Engine, OpenStack, Rackspace, DigitalOcean, and Vagrant._\n\n[etcd2-config]: https://github.com/coreos/etcd/blob/v2.3.2/Documentation/configuration.md\n\n#### fleet\n\nThe `coreos.fleet.*` parameters work very similarly to `coreos.etcd2.*`, and allow for the configuration of fleet through environment variables. For example, the following cloud-config document...\n\n```yaml\n#cloud-config\n\ncoreos:\n  fleet:\n      public-ip: \"$public_ipv4\"\n      metadata: \"region=us-west\"\n```\n\n...will generate a systemd unit drop-in like this:\n\n```yaml\n[Service]\nEnvironment=\"FLEET_PUBLIC_IP=203.0.113.29\"\nEnvironment=\"FLEET_METADATA=region=us-west\"\n```\n\nList of fleet configuration parameters:\n\n- **agent_ttl**: An Agent will be considered dead if it exceeds this amount of time to communicate with the Registry\n- **engine_reconcile_interval**: Interval in seconds at which the engine should reconcile the cluster schedule in etcd\n- **etcd_cafile**: Path to CA file used for TLS communication with etcd\n- **etcd_certfile**: Provide TLS configuration when SSL certificate authentication is enabled in etcd endpoints\n- **etcd_keyfile**: Path to private key file used for TLS communication with etcd\n- **etcd_key_prefix**: etcd prefix path to be used for fleet keys\n- **etcd_request_timeout**: Amount of time in seconds to allow a single etcd request before considering it failed\n- **etcd_servers**: Comma separated list of etcd endpoints\n- **etcd_username**: Username for Basic Authentication to etcd endpoints\n- **etcd_password**: Password for Basic Authentication to etcd endpoints\n- **metadata**: Comma separated key/value pairs that are published with the local to the fleet registry\n- **public_ip**: IP accessible by other nodes for inter-host communication\n- **verbosity**: Enable debug logging by setting this to an integer value greater than zero\n\nFor more information on fleet configuration, see the [fleet documentation][fleet-config].\n\n[fleet-config]: https://github.com/coreos/fleet/blob/master/Documentation/deployment-and-configuration.md#configuration\n\n#### flannel\n\nThe `coreos.flannel.*` parameters also work very similarly to `coreos.etcd2.*`\nand `coreos.fleet.*`. They can be used to set environment variables for\nflanneld. For example, the following cloud-config...\n\n```yaml\n#cloud-config\n\ncoreos:\n  flannel:\n      etcd_prefix: \"/coreos.com/network2\"\n```\n\n...will generate a systemd unit drop-in like so:\n\n```\n[Service]\nEnvironment=\"FLANNELD_ETCD_PREFIX=/coreos.com/network2\"\n```\n\nList of flannel configuration parameters:\n\n- **etcd_endpoints**: Comma separated list of etcd endpoints\n- **etcd_cafile**: Path to CA file used for TLS communication with etcd\n- **etcd_certfile**: Path to certificate file used for TLS communication with etcd\n- **etcd_keyfile**: Path to private key file used for TLS communication with etcd\n- **etcd_prefix**: etcd prefix path to be used for flannel keys\n- **etcd_username**: Username for Basic Authentication to etcd endpoints\n- **etcd_password**: Password for Basic Authentication to etcd endpoints\n- **ip_masq**: Install IP masquerade rules for traffic outside of flannel subnet\n- **subnet_file**: Path to flannel subnet file to write out\n- **interface**: Interface (name or IP) that should be used for inter-host communication\n- **public_ip**: IP accessible by other nodes for inter-host communication\n\nFor more information on flannel configuration, see the [flannel documentation][flannel-readme].\n\n[flannel-readme]: https://github.com/coreos/flannel/blob/master/README.md\n\n#### locksmith\n\nThe `coreos.locksmith.*` parameters can be used to set environment variables\nfor locksmith. For example, the following cloud-config...\n\n```yaml\n#cloud-config\n\ncoreos:\n  locksmith:\n      endpoint: \"http://example.com:2379\"\n```\n\n...will generate a systemd unit drop-in like so:\n\n```\n[Service]\nEnvironment=\"LOCKSMITHD_ENDPOINT=http://example.com:2379\"\n```\n\nList of locksmith configuration parameters:\n\n- **endpoint**: Comma separated list of etcd endpoints\n- **etcd_cafile**: Path to CA file used for TLS communication with etcd\n- **etcd_certfile**: Path to certificate file used for TLS communication with etcd\n- **etcd_keyfile**: Path to private key file used for TLS communication with etcd\n- **group**: Name of the reboot group in which this instance belongs\n- **window_start**: Start time of the reboot window\n- **window_length**: Duration of the reboot window\n- **etcd_username**: Username for Basic Authentication to etcd endpoints\n- **etcd_password**: Password for Basic Authentication to etcd endpoints\n\nFor the complete list of locksmith configuration parameters, see the [locksmith documentation][locksmith-readme].\n\n[locksmith-readme]: https://github.com/coreos/locksmith/blob/master/README.md\n\n#### update\n\nThe `coreos.update.*` parameters manipulate settings related to how CoreOS instances are updated.\n\nThese fields will be written out to and replace `/etc/coreos/update.conf`. If only one of the parameters is given it will only overwrite the given field.\nThe `reboot-strategy` parameter also affects the behaviour of [locksmith](https://github.com/coreos/locksmith).\n\n- **reboot-strategy**: One of \"reboot\", \"etcd-lock\", \"best-effort\" or \"off\" for controlling when reboots are issued after an update is performed.\n  - _reboot_: Reboot immediately after an update is applied.\n  - _etcd-lock_: Reboot after first taking a distributed lock in etcd, this guarantees that only one host will reboot concurrently and that the cluster will remain available during the update.\n  - _best-effort_ - If etcd is running, \"etcd-lock\", otherwise simply \"reboot\".\n  - _off_ - Disable rebooting after updates are applied (not recommended).\n- **server**: The location of the [CoreUpdate][coreupdate] server which will be queried for updates. Also known as the [omaha][omaha-docs] server endpoint.\n- **group**:  signifies the channel which should be used for automatic updates.  This value defaults to the version of the image initially downloaded. (one of \"master\", \"alpha\", \"beta\", \"stable\")\n\n[coreupdate]: https://coreos.com/products/coreupdate\n[omaha-docs]: https://coreos.com/docs/coreupdate/custom-apps/coreupdate-protocol/\n\n*Note: cloudinit will only manipulate the locksmith unit file in the systemd runtime directory (`/run/systemd/system/locksmithd.service`). If any manual modifications are made to an overriding unit configuration file (e.g. `/etc/systemd/system/locksmithd.service`), cloudinit will no longer be able to control the locksmith service unit.*\n\n##### Example\n\n```yaml\n#cloud-config\ncoreos:\n  update:\n    reboot-strategy: \"etcd-lock\"\n```\n\n#### units\n\nThe `coreos.units.*` parameters define a list of arbitrary systemd units to start after booting. This feature is intended to help you start essential services required to mount storage and configure networking in order to join the CoreOS cluster. It is not intended to be a Chef/Puppet replacement.\n\nEach item is an object with the following fields:\n\n- **name**: String representing unit's name. Required.\n- **runtime**: Boolean indicating whether or not to persist the unit across reboots. This is analogous to the `--runtime` argument to `systemctl enable`. The default value is false.\n- **enable**: Boolean indicating whether or not to handle the [Install] section of the unit file. This is similar to running `systemctl enable <name>`. The default value is false.\n- **content**: Plaintext string representing entire unit file. If no value is provided, the unit is assumed to exist already.\n- **command**: Command to execute on unit: start, stop, reload, restart, try-restart, reload-or-restart, reload-or-try-restart. The default behavior is to not execute any commands.\n- **mask**: Whether to mask the unit file by symlinking it to `/dev/null` (analogous to `systemctl mask <name>`). Note that unlike `systemctl mask`, **this will destructively remove any existing unit file** located at `/etc/systemd/system/<unit>`, to ensure that the mask succeeds. The default value is false.\n- **drop-ins**: A list of unit drop-ins with the following fields:\n  - **name**: String representing unit's name. Required.\n  - **content**: Plaintext string representing entire file. Required.\n\n\n**NOTE:** The command field is ignored for all network, netdev, and link units. The systemd-networkd.service unit will be restarted in their place.\n\n##### Examples\n\nWrite a unit to disk, automatically starting it.\n\n```yaml\n#cloud-config\n\ncoreos:\n  units:\n    - name: \"docker-redis.service\"\n      command: \"start\"\n      content: |\n        [Unit]\n        Description=Redis container\n        Author=Me\n        After=docker.service\n\n        [Service]\n        Restart=always\n        ExecStart=/usr/bin/docker start -a redis_server\n        ExecStop=/usr/bin/docker stop -t 2 redis_server\n```\n\nAdd the DOCKER_OPTS environment variable to docker.service.\n\n```yaml\n#cloud-config\n\ncoreos:\n  units:\n    - name: \"docker.service\"\n      drop-ins:\n        - name: \"50-insecure-registry.conf\"\n          content: |\n            [Service]\n            Environment=DOCKER_OPTS='--insecure-registry=\"10.0.1.0/24\"'\n```\n\nStart the built-in `etcd2` and `fleet` services:\n\n```yaml\n#cloud-config\n\ncoreos:\n  units:\n    - name: \"etcd2.service\"\n      command: \"start\"\n    - name: \"fleet.service\"\n      command: \"start\"\n```\n\n### ssh_authorized_keys\n\nThe `ssh_authorized_keys` parameter adds public SSH keys which will be authorized for the `core` user.\n\nThe keys will be named \"coreos-cloudinit\" by default.\nOverride this by using the `--ssh-key-name` flag when calling `coreos-cloudinit`.\n\n```yaml\n#cloud-config\n\nssh_authorized_keys:\n  - \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...\"\n```\n\n### hostname\n\nThe `hostname` parameter defines the system's hostname.\nThis is the local part of a fully-qualified domain name (i.e. `foo` in `foo.example.com`).\n\n```yaml\n#cloud-config\n\nhostname: \"coreos1\"\n```\n\n### users\n\nThe `users` parameter adds or modifies the specified list of users. Each user is an object which consists of the following fields. Each field is optional and of type string unless otherwise noted.\nAll but the `passwd` and `ssh-authorized-keys` fields will be ignored if the user already exists.\n\n- **name**: Required. Login name of user\n- **gecos**: GECOS comment of user\n- **passwd**: Hash of the password to use for this user\n- **homedir**: User's home directory. Defaults to /home/\\<name\\>\n- **no-create-home**: Boolean. Skip home directory creation.\n- **primary-group**: Default group for the user. Defaults to a new group created named after the user.\n- **groups**: Add user to these additional groups\n- **no-user-group**: Boolean. Skip default group creation.\n- **ssh-authorized-keys**: List of public SSH keys to authorize for this user\n- **coreos-ssh-import-github** [DEPRECATED]: Authorize SSH keys from GitHub user\n- **coreos-ssh-import-github-users** [DEPRECATED]: Authorize SSH keys from a list of GitHub users\n- **coreos-ssh-import-url** [DEPRECATED]: Authorize SSH keys imported from a url endpoint.\n- **system**: Create the user as a system user. No home directory will be created.\n- **no-log-init**: Boolean. Skip initialization of lastlog and faillog databases.\n- **shell**: User's login shell.\n\nThe following fields are not yet implemented:\n\n- **inactive**: Deactivate the user upon creation\n- **lock-passwd**: Boolean. Disable password login for user\n- **sudo**: Entry to add to /etc/sudoers for user. By default, no sudo access is authorized.\n- **ssh-import-id**: Import SSH keys by ID from Launchpad.\n\n```yaml\n#cloud-config\n\nusers:\n  - name: \"elroy\"\n    passwd: \"$6$5s2u6/jR$un0AvWnqilcgaNB3Mkxd5yYv6mTlWfOoCYHZmfi3LDKVltj.E8XNKEcwWm...\"\n    groups:\n      - \"sudo\"\n      - \"docker\"\n    ssh-authorized-keys:\n      - \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...\"\n```\n\n#### Generating a password hash\n\nIf you choose to use a password instead of an SSH key, generating a safe hash is extremely important to the security of your system. Simplified hashes like md5crypt are trivial to crack on modern GPU hardware. Here are a few ways to generate secure hashes:\n\n```\n# On Debian/Ubuntu (via the package \"whois\")\nmkpasswd --method=SHA-512 --rounds=4096\n\n# OpenSSL (note: this will only make md5crypt.  While better than plantext it should not be considered fully secure)\nopenssl passwd -1\n\n# Python (change password and salt values)\npython -c \"import crypt, getpass, pwd; print crypt.crypt('password', '\\$6\\$SALT\\$')\"\n\n# Perl (change password and salt values)\nperl -e 'print crypt(\"password\",\"\\$6\\$SALT\\$\") . \"\\n\"'\n```\n\nUsing a higher number of rounds will help create more secure passwords, but given enough time, password hashes can be reversed.  On most RPM based distributions there is a tool called mkpasswd available in the `expect` package, but this does not handle \"rounds\" nor advanced hashing algorithms.\n\n### write_files\n\nThe `write_files` directive defines a set of files to create on the local filesystem.\nEach item in the list may have the following keys:\n\n- **path**: Absolute location on disk where contents should be written\n- **content**: Data to write at the provided `path`\n- **permissions**: Integer representing file permissions, typically in octal notation (i.e. 0644)\n- **owner**: User and group that should own the file written to disk. This is equivalent to the `<user>:<group>` argument to `chown <user>:<group> <path>`.\n- **encoding**: Optional. The encoding of the data in content. If not specified this defaults to the yaml document encoding (usually utf-8). Supported encoding types are:\n    - **b64, base64**: Base64 encoded content\n    - **gz, gzip**: gzip encoded content, for use with the !!binary tag\n    - **gz+b64, gz+base64, gzip+b64, gzip+base64**: Base64 encoded gzip content\n\n\n```yaml\n#cloud-config\nwrite_files:\n  - path: \"/etc/resolv.conf\"\n    permissions: \"0644\"\n    owner: \"root\"\n    content: |\n      nameserver 8.8.8.8\n  - path: \"/etc/motd\"\n    permissions: \"0644\"\n    owner: \"root\"\n    content: |\n      Good news, everyone!\n  - path: \"/tmp/like_this\"\n    permissions: \"0644\"\n    owner: \"root\"\n    encoding: \"gzip\"\n    content: !!binary |\n      H4sIAKgdh1QAAwtITM5WyK1USMqvUCjPLMlQSMssS1VIya9KzVPIySwszS9SyCpNLwYARQFQ5CcAAAA=\n  - path: \"/tmp/or_like_this\"\n    permissions: \"0644\"\n    owner: \"root\"\n    encoding: \"gzip+base64\"\n    content: |\n      H4sIAKgdh1QAAwtITM5WyK1USMqvUCjPLMlQSMssS1VIya9KzVPIySwszS9SyCpNLwYARQFQ5CcAAAA=\n  - path: \"/tmp/todolist\"\n    permissions: \"0644\"\n    owner: \"root\"\n    encoding: \"base64\"\n    content: |\n      UGFjayBteSBib3ggd2l0aCBmaXZlIGRvemVuIGxpcXVvciBqdWdz\n```\n\n### manage_etc_hosts\n\nThe `manage_etc_hosts` parameter configures the contents of the `/etc/hosts` file, which is used for local name resolution.\nCurrently, the only supported value is \"localhost\" which will cause your system's hostname\nto resolve to \"127.0.0.1\".  This is helpful when the host does not have DNS\ninfrastructure in place to resolve its own hostname, for example, when using Vagrant.\n\n```yaml\n#cloud-config\n\nmanage_etc_hosts: \"localhost\"\n```\n"
  },
  {
    "path": "config/cloudinit/Documentation/config-drive.md",
    "content": "# Distribution via Config Drive\n\nCoreOS supports providing configuration data via [config drive][config-drive]\ndisk images. Currently only providing a single script or cloud config file is\nsupported.\n\n[config-drive]: http://docs.openstack.org/user-guide/cli_config_drive.html\n\n## Contents and Format\n\nThe image should be a single FAT or ISO9660 file system with the label\n`config-2` and the configuration data should be located at\n`openstack/latest/user_data`.\n\nFor example, to wrap up a config named `user_data` in a config drive image:\n\n```sh\nmkdir -p /tmp/new-drive/openstack/latest\ncp user_data /tmp/new-drive/openstack/latest/user_data\nmkisofs -R -V config-2 -o configdrive.iso /tmp/new-drive\nrm -r /tmp/new-drive\n```\n\nIf on OS X, replace the `mkisofs` invocation with:\n\n```sh\nhdiutil makehybrid -iso -joliet -default-volume-name config-2 -o configdrive.iso /tmp/new-drive\n```\n\n## QEMU virtfs\n\nOne exception to the above, when using QEMU it is possible to skip creating an\nimage and use a plain directory containing the same contents:\n\n```sh\nqemu-system-x86_64 \\\n    -fsdev local,id=conf,security_model=none,readonly,path=/tmp/new-drive \\\n    -device virtio-9p-pci,fsdev=conf,mount_tag=config-2 \\\n    -device virtio-rng-pci \\\n    [usual qemu options here...]\n```\n"
  },
  {
    "path": "config/cloudinit/Documentation/debian-interfaces.md",
    "content": "#Debian Interfaces#\n**WARNING**: This option is EXPERIMENTAL and may change or be removed at any\npoint.  \nThere is basic support for converting from a Debian network configuration to\nnetworkd unit files. The -convert-netconf=debian option is used to activate\nthis feature.\n\n#convert-netconf#\nDefault: \"\"  \nRead the network config provided in cloud-drive and translate it from the\nspecified format into networkd unit files (requires the -from-configdrive\nflag). Currently only supports \"debian\" which provides support for a small\nsubset of the [Debian network configuration]\n(https://wiki.debian.org/NetworkConfiguration). These options include:\n\n- interface config methods\n\t- static\n\t\t- address/netmask\n\t\t- gateway\n\t\t- hwaddress\n\t\t- dns-nameservers\n\t- dhcp\n\t\t- hwaddress\n\t- manual\n\t- loopback\n- vlan_raw_device\n- bond-slaves\n"
  },
  {
    "path": "config/cloudinit/Documentation/vmware-guestinfo.md",
    "content": "# VMWare Guestinfo Interface\n\n## Cloud-Config VMWare Guestinfo Variables\n\ncoreos-cloudinit accepts configuration from the VMware RPC API's *guestinfo*\nfacility. This datasource can be enabled with the `--from-vmware-guestinfo`\nflag to coreos-cloudinit.\n\nThe following guestinfo variables are recognized and processed by cloudinit\nwhen passed from the hypervisor to the virtual machine at boot time. Note that\nproperty names are prefixed with `guestinfo.` in the VMX, e.g., `guestinfo.hostname`.\n\n|            guestinfo variable             |              type               |\n|:--------------------------------------|:--------------------------------|\n| `hostname`                            | `hostname`                      |\n| `interface.<n>.name`                  | `string`                        |\n| `interface.<n>.mac`                   | `MAC address`                   |\n| `interface.<n>.dhcp`                  | `{\"yes\", \"no\"}`                 |\n| `interface.<n>.role`                  | `{\"public\", \"private\"}`         |\n| `interface.<n>.ip.<m>.address`        | `CIDR IP address`               |\n| `interface.<n>.route.<l>.gateway`     | `IP address`                    |\n| `interface.<n>.route.<l>.destination` | `CIDR IP address`               |\n| `dns.server.<x>`                      | `IP address`                    |\n| `dns.domain.<y>`                      | `DNS search domain`             |\n| `coreos.config.data`                  | `string`                        |\n| `coreos.config.data.encoding`         | `{\"\", \"base64\", \"gzip+base64\"}` |\n| `coreos.config.url`                   | `URL`                           |\n\nNote: \"n\", \"m\", \"l\", \"x\" and \"y\" are 0-indexed, incrementing integers. The\nidentifier for an `interface` does not correspond to anything outside of this\nconfiguration; it serves only to distinguish between multiple `interface`s.\n\nThe guide to [booting on VMWare][bootvmware] is the starting point for more\ninformation about configuring and running CoreOS on VMWare.\n\n[bootvmware]: https://github.com/coreos/docs/blob/master/os/booting-on-vmware.md\n"
  },
  {
    "path": "config/cloudinit/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\n"
  },
  {
    "path": "config/cloudinit/MAINTAINERS",
    "content": "Alex Crawford <alex.crawford@coreos.com> (@crawford)\nJonathan Boulle <jonathan.boulle@coreos.com> (@jonboulle)\n"
  },
  {
    "path": "config/cloudinit/NOTICE",
    "content": "CoreOS Project\nCopyright 2014 CoreOS, Inc\n\nThis product includes software developed at CoreOS, Inc.\n(http://www.coreos.com/).\n"
  },
  {
    "path": "config/cloudinit/README.md",
    "content": "**NOTE**: This project has been superseded by [Ignition][ignition] and is no longer under active development. Please direct all development efforts to Ignition.\n\n[ignition]: https://github.com/coreos/ignition\n\n# coreos-cloudinit [![Build Status](https://travis-ci.org/coreos/coreos-cloudinit.png?branch=master)](https://travis-ci.org/coreos/coreos-cloudinit)\n\ncoreos-cloudinit enables a user to customize CoreOS machines by providing either a cloud-config document or an executable script through user-data.\n\n## Configuration with cloud-config\n\nA subset of the [official cloud-config spec][official-cloud-config] is implemented by coreos-cloudinit.\nAdditionally, several [CoreOS-specific options][custom-cloud-config] have been implemented to support interacting with unit files, bootstrapping etcd clusters, and more.\nAll supported cloud-config parameters are [documented here][all-cloud-config]. \n\n[official-cloud-config]: http://cloudinit.readthedocs.org/en/latest/topics/format.html#cloud-config-data\n[custom-cloud-config]: https://github.com/rancher/os/config/cloudinit/blob/master/Documentation/cloud-config.md#coreos-parameters\n[all-cloud-config]: https://github.com/rancher/os/config/cloudinit/tree/master/Documentation/cloud-config.md\n\nThe following is an example cloud-config document:\n\n```\n#cloud-config\n\ncoreos:\n    units:\n      - name: etcd.service\n        command: start\n\nusers:\n  - name: core\n    passwd: $1$allJZawX$00S5T756I5PGdQga5qhqv1\n\nwrite_files:\n  - path: /etc/resolv.conf\n    content: |\n        nameserver 192.0.2.2\n        nameserver 192.0.2.3\n```\n\n## Executing a Script\n\ncoreos-cloudinit supports executing user-data as a script instead of parsing it as a cloud-config document.\nMake sure the first line of your user-data is a shebang and coreos-cloudinit will attempt to execute it:\n\n```\n#!/bin/bash\n\necho 'Hello, world!'\n```\n\n## user-data Field Substitution\n\ncoreos-cloudinit will replace the following set of tokens in your user-data with system-generated values.\n\n| Token         | Description |\n| ------------- | ----------- |\n| $public_ipv4  | Public IPv4 address of machine |\n| $private_ipv4 | Private IPv4 address of machine |\n\nThese values are determined by CoreOS based on the given provider on which your machine is running.\nRead more about provider-specific functionality in the [CoreOS OEM documentation][oem-doc].\n\n[oem-doc]: https://coreos.com/docs/sdk-distributors/distributors/notes-for-distributors/\n\nFor example, submitting the following user-data...\n\n```\n#cloud-config\ncoreos:\n    etcd:\n        addr: $public_ipv4:4001\n        peer-addr: $private_ipv4:7001\n```\n\n...will result in this cloud-config document being executed:\n\n```\n#cloud-config\ncoreos:\n    etcd:\n        addr: 203.0.113.29:4001\n        peer-addr: 192.0.2.13:7001\n```\n\n## Bugs\n\nPlease use the [CoreOS issue tracker][bugs] to report all bugs, issues, and feature requests.\n\n[bugs]: https://github.com/coreos/bugs/issues/new?labels=component/cloud-init\n\n"
  },
  {
    "path": "config/cloudinit/build",
    "content": "#!/bin/bash -e\n\nNAME=\"coreos-cloudinit\"\nORG_PATH=\"github.com/coreos\"\nREPO_PATH=\"${ORG_PATH}/${NAME}\"\nVERSION=$(git describe --dirty --tags)\nGLDFLAGS=\"-X main.version=\\\"${VERSION}\\\"\"\n\nif [ ! -h gopath/src/${REPO_PATH} ]; then\n\tmkdir -p gopath/src/${ORG_PATH}\n\tln -s ../../../.. gopath/src/${REPO_PATH} || exit 255\nfi\n\nexport GOBIN=${PWD}/bin\nexport GOPATH=${PWD}/gopath\n\ngo build -ldflags \"${GLDFLAGS}\" -o ${GOBIN}/${NAME} ${REPO_PATH}\n"
  },
  {
    "path": "config/cloudinit/config/config.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/coreos/yaml\"\n)\n\n// CloudConfig encapsulates the entire cloud-config configuration file and maps\n// directly to YAML. Fields that cannot be set in the cloud-config (fields\n// used for internal use) have the YAML tag '-' so that they aren't marshalled.\ntype CloudConfig struct {\n\tSSHAuthorizedKeys []string `yaml:\"ssh_authorized_keys\"`\n\tCoreOS            CoreOS   `yaml:\"coreos\"`\n\tWriteFiles        []File   `yaml:\"write_files\"`\n\tHostname          string   `yaml:\"hostname\"`\n\tUsers             []User   `yaml:\"users\"`\n\tManageEtcHosts    EtcHosts `yaml:\"manage_etc_hosts\"`\n}\n\ntype CoreOS struct {\n\tEtcd      Etcd      `yaml:\"etcd\"`\n\tEtcd2     Etcd2     `yaml:\"etcd2\"`\n\tFlannel   Flannel   `yaml:\"flannel\"`\n\tFleet     Fleet     `yaml:\"fleet\"`\n\tLocksmith Locksmith `yaml:\"locksmith\"`\n\tOEM       OEM       `yaml:\"oem\"`\n\tUpdate    Update    `yaml:\"update\"`\n\tUnits     []Unit    `yaml:\"units\"`\n}\n\nfunc IsCloudConfig(userdata string) bool {\n\theader := strings.SplitN(userdata, \"\\n\", 2)[0]\n\n\t// Trim trailing whitespaces\n\theader = strings.TrimRightFunc(header, unicode.IsSpace)\n\n\treturn (header == \"#cloud-config\")\n}\n\n// NewCloudConfig instantiates a new CloudConfig from the given contents (a\n// string of YAML), returning any error encountered. It will ignore unknown\n// fields but log encountering them.\nfunc NewCloudConfig(contents string) (*CloudConfig, error) {\n\tyaml.UnmarshalMappingKeyTransform = func(nameIn string) (nameOut string) {\n\t\treturn strings.Replace(nameIn, \"-\", \"_\", -1)\n\t}\n\tvar cfg CloudConfig\n\terr := yaml.Unmarshal([]byte(contents), &cfg)\n\treturn &cfg, err\n}\n\n// Decode decodes the content of cloud config. Currently only WriteFiles section\n// supports several types of encoding and all of them are supported. After\n// decode operation, Encoding type is unset.\nfunc (cc *CloudConfig) Decode() error {\n\tfor i, file := range cc.WriteFiles {\n\t\tcontent, err := DecodeContent(file.Content, file.Encoding)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcc.WriteFiles[i].Content = string(content)\n\t\tcc.WriteFiles[i].Encoding = \"\"\n\t}\n\n\treturn nil\n}\nfunc (cc CloudConfig) String() string {\n\tbytes, err := yaml.Marshal(cc)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tstringified := string(bytes)\n\tstringified = fmt.Sprintf(\"#cloud-config\\n%s\", stringified)\n\n\treturn stringified\n}\n\n// IsZero returns whether or not the parameter is the zero value for its type.\n// If the parameter is a struct, only the exported fields are considered.\nfunc IsZero(c interface{}) bool {\n\treturn isZero(reflect.ValueOf(c))\n}\n\ntype ErrorValid struct {\n\tValue string\n\tValid string\n\tField string\n}\n\nfunc (e ErrorValid) Error() string {\n\treturn fmt.Sprintf(\"invalid value %q for option %q (valid options: %q)\", e.Value, e.Field, e.Valid)\n}\n\n// AssertStructValid checks the fields in the structure and makes sure that\n// they contain valid values as specified by the 'valid' flag. Empty fields are\n// implicitly valid.\nfunc AssertStructValid(c interface{}) error {\n\tct := reflect.TypeOf(c)\n\tcv := reflect.ValueOf(c)\n\tfor i := 0; i < ct.NumField(); i++ {\n\t\tft := ct.Field(i)\n\t\tif !isFieldExported(ft) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := AssertValid(cv.Field(i), ft.Tag.Get(\"valid\")); err != nil {\n\t\t\terr.Field = ft.Name\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// AssertValid checks to make sure that the given value is in the list of\n// valid values. Zero values are implicitly valid.\nfunc AssertValid(value reflect.Value, valid string) *ErrorValid {\n\tif valid == \"\" || isZero(value) {\n\t\treturn nil\n\t}\n\n\tvs := fmt.Sprintf(\"%v\", value.Interface())\n\tif m, _ := regexp.MatchString(valid, vs); m {\n\t\treturn nil\n\t}\n\n\treturn &ErrorValid{\n\t\tValue: vs,\n\t\tValid: valid,\n\t}\n}\n\nfunc isZero(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\tvt := v.Type()\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tif isFieldExported(vt.Field(i)) && !isZero(v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\tdefault:\n\t\treturn v.Interface() == reflect.Zero(v.Type()).Interface()\n\t}\n}\n\nfunc isFieldExported(f reflect.StructField) bool {\n\treturn f.PkgPath == \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/config/config_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestNewCloudConfig(t *testing.T) {\n\ttests := []struct {\n\t\tcontents string\n\n\t\tconfig CloudConfig\n\t}{\n\t\t{},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite_files:\\n  - path: underscore\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{Path: \"underscore\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite-files:\\n  - path: hyphen\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{Path: \"hyphen\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\ncoreos:\\n  update:\\n    reboot-strategy: off\",\n\t\t\tconfig:   CloudConfig{CoreOS: CoreOS{Update: Update{RebootStrategy: \"off\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\ncoreos:\\n  update:\\n    reboot-strategy: false\",\n\t\t\tconfig:   CloudConfig{CoreOS: CoreOS{Update: Update{RebootStrategy: \"false\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite_files:\\n  - permissions: 0744\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{RawFilePermissions: \"0744\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite_files:\\n  - permissions: 744\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{RawFilePermissions: \"744\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite_files:\\n  - permissions: '0744'\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{RawFilePermissions: \"0744\"}}},\n\t\t},\n\t\t{\n\t\t\tcontents: \"#cloud-config\\nwrite_files:\\n  - permissions: '744'\",\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{RawFilePermissions: \"744\"}}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tconfig, err := NewCloudConfig(tt.contents)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"bad error (test case #%d): want %v, got %s\", i, nil, err)\n\t\t}\n\t\tif !reflect.DeepEqual(&tt.config, config) {\n\t\t\tt.Errorf(\"bad config (test case #%d): want %#v, got %#v\", i, tt.config, config)\n\t\t}\n\t}\n}\n\nfunc TestNewCloudConfigDecode(t *testing.T) {\n\t// //all of these decode to \"bar\"\n\tcontentTests := map[string]string{\n\t\t\"base64\": \"YmFy\",\n\t\t\"b64\":    \"YmFy\",\n\t\t// theoretically gz+gzip are supported but they break yaml\n\t\t// \"gz\":          \"\\x1f\\x8b\\x08\\x08w\\x14\\x87T\\x02\\xffok\\x00KJ,\\x02\\x00\\xaa\\x8c\\xffv\\x03\\x00\\x00\\x00\",\n\t\t// \"gzip\":        \"\\x1f\\x8b\\x08\\x08w\\x14\\x87T\\x02\\xffok\\x00KJ,\\x02\\x00\\xaa\\x8c\\xffv\\x03\\x00\\x00\\x00\",\n\t\t\"gz+base64\":   \"H4sIABMVh1QAA0tKLAIAqoz/dgMAAAA=\",\n\t\t\"gzip+base64\": \"H4sIABMVh1QAA0tKLAIAqoz/dgMAAAA=\",\n\t\t\"gz+b64\":      \"H4sIABMVh1QAA0tKLAIAqoz/dgMAAAA=\",\n\t\t\"gzip+b64\":    \"H4sIABMVh1QAA0tKLAIAqoz/dgMAAAA=\",\n\t}\n\n\ttype testCase struct {\n\t\tcontents string\n\t\tconfig   CloudConfig\n\t}\n\n\tvar decodingTests []testCase\n\tfor name, content := range contentTests {\n\t\tdecodingTests = append(decodingTests, testCase{\n\t\t\tcontents: fmt.Sprintf(\"#cloud-config\\nwrite_files:\\n  - encoding: %q\\n    content: |\\n      %s\", name, content),\n\t\t\tconfig:   CloudConfig{WriteFiles: []File{{Content: \"bar\"}}},\n\t\t})\n\t}\n\n\tfor i, tt := range decodingTests {\n\t\tconfig, err := NewCloudConfig(tt.contents)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"bad error (test case #%d): want %v, got %s\", i, nil, err)\n\t\t}\n\n\t\tif err := config.Decode(); err != nil {\n\t\t\tt.Errorf(\"bad error (test case #%d): want %v, got %s\", i, nil, err)\n\t\t}\n\n\t\tif !reflect.DeepEqual(&tt.config, config) {\n\t\t\tt.Errorf(\"bad config (test case #%d): want %#v, got %#v\", i, tt.config, config)\n\t\t}\n\t}\n\n}\n\nfunc TestIsZero(t *testing.T) {\n\ttests := []struct {\n\t\tc interface{}\n\n\t\tempty bool\n\t}{\n\t\t{struct{}{}, true},\n\t\t{struct{ a, b string }{}, true},\n\t\t{struct{ A, b string }{}, true},\n\t\t{struct{ A, B string }{}, true},\n\t\t{struct{ A string }{A: \"hello\"}, false},\n\t\t{struct{ A int }{}, true},\n\t\t{struct{ A int }{A: 1}, false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif empty := IsZero(tt.c); tt.empty != empty {\n\t\t\tt.Errorf(\"bad result (%q): want %t, got %t\", tt.c, tt.empty, empty)\n\t\t}\n\t}\n}\n\nfunc TestAssertStructValid(t *testing.T) {\n\ttests := []struct {\n\t\tc interface{}\n\n\t\terr error\n\t}{\n\t\t{struct{}{}, nil},\n\t\t{struct {\n\t\t\tA, b string `valid:\"^1|2$\"`\n\t\t}{}, nil},\n\t\t{struct {\n\t\t\tA, b string `valid:\"^1|2$\"`\n\t\t}{A: \"1\", b: \"2\"}, nil},\n\t\t{struct {\n\t\t\tA, b string `valid:\"^1|2$\"`\n\t\t}{A: \"1\", b: \"hello\"}, nil},\n\t\t{struct {\n\t\t\tA, b string `valid:\"^1|2$\"`\n\t\t}{A: \"hello\", b: \"2\"}, &ErrorValid{Value: \"hello\", Field: \"A\", Valid: \"^1|2$\"}},\n\t\t{struct {\n\t\t\tA, b int `valid:\"^1|2$\"`\n\t\t}{}, nil},\n\t\t{struct {\n\t\t\tA, b int `valid:\"^1|2$\"`\n\t\t}{A: 1, b: 2}, nil},\n\t\t{struct {\n\t\t\tA, b int `valid:\"^1|2$\"`\n\t\t}{A: 1, b: 9}, nil},\n\t\t{struct {\n\t\t\tA, b int `valid:\"^1|2$\"`\n\t\t}{A: 9, b: 2}, &ErrorValid{Value: \"9\", Field: \"A\", Valid: \"^1|2$\"}},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif err := AssertStructValid(tt.c); !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad result (%q): want %q, got %q\", tt.c, tt.err, err)\n\t\t}\n\t}\n}\n\nfunc TestConfigCompile(t *testing.T) {\n\ttests := []interface{}{\n\t\tEtcd{},\n\t\tFile{},\n\t\tFlannel{},\n\t\tFleet{},\n\t\tLocksmith{},\n\t\tOEM{},\n\t\tUnit{},\n\t\tUpdate{},\n\t}\n\n\tfor _, tt := range tests {\n\t\tttt := reflect.TypeOf(tt)\n\t\tfor i := 0; i < ttt.NumField(); i++ {\n\t\t\tft := ttt.Field(i)\n\t\t\tif !isFieldExported(ft) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif _, err := regexp.Compile(ft.Tag.Get(\"valid\")); err != nil {\n\t\t\t\tt.Errorf(\"bad regexp(%s.%s): want %v, got %s\", ttt.Name(), ft.Name, nil, err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestCloudConfigUnknownKeys(t *testing.T) {\n\tcontents := `\ncoreos: \n  etcd:\n    discovery: \"https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877\"\n  coreos_unknown:\n    foo: \"bar\"\nsection_unknown:\n  dunno:\n    something\nbare_unknown:\n  bar\nwrite_files:\n  - content: fun\n    path: /var/party\n    file_unknown: nofun\nusers:\n  - name: fry\n    passwd: somehash\n    user_unknown: philip\nhostname:\n  foo\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"error instantiating CloudConfig with unknown keys: %v\", err)\n\t}\n\tif cfg.Hostname != \"foo\" {\n\t\tt.Fatalf(\"hostname not correctly set when invalid keys are present\")\n\t}\n\tif cfg.CoreOS.Etcd.Discovery != \"https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877\" {\n\t\tt.Fatalf(\"etcd section not correctly set when invalid keys are present\")\n\t}\n\tif len(cfg.WriteFiles) < 1 || cfg.WriteFiles[0].Content != \"fun\" || cfg.WriteFiles[0].Path != \"/var/party\" {\n\t\tt.Fatalf(\"write_files section not correctly set when invalid keys are present\")\n\t}\n\tif len(cfg.Users) < 1 || cfg.Users[0].Name != \"fry\" || cfg.Users[0].PasswordHash != \"somehash\" {\n\t\tt.Fatalf(\"users section not correctly set when invalid keys are present\")\n\t}\n}\n\n// Assert that the parsing of a cloud config file \"generally works\"\nfunc TestCloudConfigEmpty(t *testing.T) {\n\tcfg, err := NewCloudConfig(\"\")\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error :%v\", err)\n\t}\n\n\tkeys := cfg.SSHAuthorizedKeys\n\tif len(keys) != 0 {\n\t\tt.Error(\"Parsed incorrect number of SSH keys\")\n\t}\n\n\tif len(cfg.WriteFiles) != 0 {\n\t\tt.Error(\"Expected zero WriteFiles\")\n\t}\n\n\tif cfg.Hostname != \"\" {\n\t\tt.Errorf(\"Expected hostname to be empty, got '%s'\", cfg.Hostname)\n\t}\n}\n\n// Assert that the parsing of a cloud config file \"generally works\"\nfunc TestCloudConfig(t *testing.T) {\n\tcontents := `\ncoreos: \n  etcd:\n    discovery: \"https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877\"\n  update:\n    reboot_strategy: reboot\n  units:\n    - name: 50-eth0.network\n      runtime: yes\n      content: '[Match]\n \n    Name=eth47\n \n \n    [Network]\n \n    Address=10.209.171.177/19\n \n'\n  oem:\n    id: rackspace\n    name: Rackspace Cloud Servers\n    version_id: 168.0.0\n    home_url: https://www.rackspace.com/cloud/servers/\n    bug_report_url: https://github.com/coreos/coreos-overlay\nssh_authorized_keys:\n  - foobar\n  - foobaz\nwrite_files:\n  - content: |\n      penny\n      elroy\n    path: /etc/dogepack.conf\n    permissions: '0644'\n    owner: root:dogepack\nhostname: trontastic\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error :%v\", err)\n\t}\n\n\tkeys := cfg.SSHAuthorizedKeys\n\tif len(keys) != 2 {\n\t\tt.Error(\"Parsed incorrect number of SSH keys\")\n\t} else if keys[0] != \"foobar\" {\n\t\tt.Error(\"Expected first SSH key to be 'foobar'\")\n\t} else if keys[1] != \"foobaz\" {\n\t\tt.Error(\"Expected first SSH key to be 'foobaz'\")\n\t}\n\n\tif len(cfg.WriteFiles) != 1 {\n\t\tt.Error(\"Failed to parse correct number of write_files\")\n\t} else {\n\t\twf := cfg.WriteFiles[0]\n\t\tif wf.Content != \"penny\\nelroy\\n\" {\n\t\t\tt.Errorf(\"WriteFile has incorrect contents '%s'\", wf.Content)\n\t\t}\n\t\tif wf.Encoding != \"\" {\n\t\t\tt.Errorf(\"WriteFile has incorrect encoding %s\", wf.Encoding)\n\t\t}\n\t\tif wf.RawFilePermissions != \"0644\" {\n\t\t\tt.Errorf(\"WriteFile has incorrect permissions %s\", wf.RawFilePermissions)\n\t\t}\n\t\tif wf.Path != \"/etc/dogepack.conf\" {\n\t\t\tt.Errorf(\"WriteFile has incorrect path %s\", wf.Path)\n\t\t}\n\t\tif wf.Owner != \"root:dogepack\" {\n\t\t\tt.Errorf(\"WriteFile has incorrect owner %s\", wf.Owner)\n\t\t}\n\t}\n\n\tif len(cfg.CoreOS.Units) != 1 {\n\t\tt.Error(\"Failed to parse correct number of units\")\n\t} else {\n\t\tu := cfg.CoreOS.Units[0]\n\t\texpect := `[Match]\nName=eth47\n\n[Network]\nAddress=10.209.171.177/19\n`\n\t\tif u.Content != expect {\n\t\t\tt.Errorf(\"Unit has incorrect contents '%s'.\\nExpected '%s'.\", u.Content, expect)\n\t\t}\n\t\tif u.Runtime != true {\n\t\t\tt.Errorf(\"Unit has incorrect runtime value\")\n\t\t}\n\t\tif u.Name != \"50-eth0.network\" {\n\t\t\tt.Errorf(\"Unit has incorrect name %s\", u.Name)\n\t\t}\n\t}\n\n\tif cfg.CoreOS.OEM.ID != \"rackspace\" {\n\t\tt.Errorf(\"Failed parsing coreos.oem. Expected ID 'rackspace', got %q.\", cfg.CoreOS.OEM.ID)\n\t}\n\n\tif cfg.Hostname != \"trontastic\" {\n\t\tt.Errorf(\"Failed to parse hostname\")\n\t}\n\tif cfg.CoreOS.Update.RebootStrategy != \"reboot\" {\n\t\tt.Errorf(\"Failed to parse locksmith strategy\")\n\t}\n}\n\n// Assert that our interface conversion doesn't panic\nfunc TestCloudConfigKeysNotList(t *testing.T) {\n\tcontents := `\nssh_authorized_keys:\n  - foo: bar\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error: %v\", err)\n\t}\n\n\tkeys := cfg.SSHAuthorizedKeys\n\tif len(keys) != 0 {\n\t\tt.Error(\"Parsed incorrect number of SSH keys\")\n\t}\n}\n\nfunc TestCloudConfigSerializationHeader(t *testing.T) {\n\tcfg, _ := NewCloudConfig(\"\")\n\tcontents := cfg.String()\n\theader := strings.SplitN(contents, \"\\n\", 2)[0]\n\tif header != \"#cloud-config\" {\n\t\tt.Fatalf(\"Serialized config did not have expected header\")\n\t}\n}\n\nfunc TestCloudConfigUsers(t *testing.T) {\n\tcontents := `\nusers:\n  - name: elroy\n    passwd: somehash\n    ssh_authorized_keys:\n      - somekey\n    gecos: arbitrary comment\n    homedir: /home/place\n    no_create_home: yes\n    primary_group: things\n    groups:\n      - ping\n      - pong\n    no_user_group: true\n    system: y\n    no_log_init: True\n    shell: /bin/sh\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error: %v\", err)\n\t}\n\n\tif len(cfg.Users) != 1 {\n\t\tt.Fatalf(\"Parsed %d users, expected 1\", len(cfg.Users))\n\t}\n\n\tuser := cfg.Users[0]\n\n\tif user.Name != \"elroy\" {\n\t\tt.Errorf(\"User name is %q, expected 'elroy'\", user.Name)\n\t}\n\n\tif user.PasswordHash != \"somehash\" {\n\t\tt.Errorf(\"User passwd is %q, expected 'somehash'\", user.PasswordHash)\n\t}\n\n\tif keys := user.SSHAuthorizedKeys; len(keys) != 1 {\n\t\tt.Errorf(\"Parsed %d ssh keys, expected 1\", len(keys))\n\t} else {\n\t\tkey := user.SSHAuthorizedKeys[0]\n\t\tif key != \"somekey\" {\n\t\t\tt.Errorf(\"User SSH key is %q, expected 'somekey'\", key)\n\t\t}\n\t}\n\n\tif user.GECOS != \"arbitrary comment\" {\n\t\tt.Errorf(\"Failed to parse gecos field, got %q\", user.GECOS)\n\t}\n\n\tif user.Homedir != \"/home/place\" {\n\t\tt.Errorf(\"Failed to parse homedir field, got %q\", user.Homedir)\n\t}\n\n\tif !user.NoCreateHome {\n\t\tt.Errorf(\"Failed to parse no_create_home field\")\n\t}\n\n\tif user.PrimaryGroup != \"things\" {\n\t\tt.Errorf(\"Failed to parse primary_group field, got %q\", user.PrimaryGroup)\n\t}\n\n\tif len(user.Groups) != 2 {\n\t\tt.Errorf(\"Failed to parse 2 goups, got %d\", len(user.Groups))\n\t} else {\n\t\tif user.Groups[0] != \"ping\" {\n\t\t\tt.Errorf(\"First group was %q, not expected value 'ping'\", user.Groups[0])\n\t\t}\n\t\tif user.Groups[1] != \"pong\" {\n\t\t\tt.Errorf(\"First group was %q, not expected value 'pong'\", user.Groups[1])\n\t\t}\n\t}\n\n\tif !user.NoUserGroup {\n\t\tt.Errorf(\"Failed to parse no_user_group field\")\n\t}\n\n\tif !user.System {\n\t\tt.Errorf(\"Failed to parse system field\")\n\t}\n\n\tif !user.NoLogInit {\n\t\tt.Errorf(\"Failed to parse no_log_init field\")\n\t}\n\n\tif user.Shell != \"/bin/sh\" {\n\t\tt.Errorf(\"Failed to parse shell field, got %q\", user.Shell)\n\t}\n}\n\nfunc TestCloudConfigUsersGithubUser(t *testing.T) {\n\n\tcontents := `\nusers:\n  - name: elroy\n    coreos_ssh_import_github: bcwaldon\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error: %v\", err)\n\t}\n\n\tif len(cfg.Users) != 1 {\n\t\tt.Fatalf(\"Parsed %d users, expected 1\", len(cfg.Users))\n\t}\n\n\tuser := cfg.Users[0]\n\n\tif user.Name != \"elroy\" {\n\t\tt.Errorf(\"User name is %q, expected 'elroy'\", user.Name)\n\t}\n\n\tif user.SSHImportGithubUser != \"bcwaldon\" {\n\t\tt.Errorf(\"github user is %q, expected 'bcwaldon'\", user.SSHImportGithubUser)\n\t}\n}\n\nfunc TestCloudConfigUsersSSHImportURL(t *testing.T) {\n\tcontents := `\nusers:\n  - name: elroy\n    coreos_ssh_import_url: https://token:x-auth-token@github.enterprise.com/api/v3/polvi/keys\n`\n\tcfg, err := NewCloudConfig(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error: %v\", err)\n\t}\n\n\tif len(cfg.Users) != 1 {\n\t\tt.Fatalf(\"Parsed %d users, expected 1\", len(cfg.Users))\n\t}\n\n\tuser := cfg.Users[0]\n\n\tif user.Name != \"elroy\" {\n\t\tt.Errorf(\"User name is %q, expected 'elroy'\", user.Name)\n\t}\n\n\tif user.SSHImportURL != \"https://token:x-auth-token@github.enterprise.com/api/v3/polvi/keys\" {\n\t\tt.Errorf(\"ssh import url is %q, expected 'https://token:x-auth-token@github.enterprise.com/api/v3/polvi/keys'\", user.SSHImportURL)\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/decode.go",
    "content": "package config\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"encoding/base64\"\n\t\"fmt\"\n)\n\nfunc DecodeBase64Content(content string) ([]byte, error) {\n\toutput, err := base64.StdEncoding.DecodeString(content)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Unable to decode base64: %q\", err)\n\t}\n\n\treturn output, nil\n}\n\nfunc DecodeGzipContent(content string) ([]byte, error) {\n\tbyteContent := []byte(content)\n\treturn DecompressGzip(byteContent)\n}\n\nfunc DecompressGzip(content []byte) ([]byte, error) {\n\tgzr, err := gzip.NewReader(bytes.NewReader(content))\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Unable to decode gzip: %q\", err)\n\t}\n\tdefer gzr.Close()\n\n\tbuf := new(bytes.Buffer)\n\tbuf.ReadFrom(gzr)\n\n\treturn buf.Bytes(), nil\n}\n\nfunc DecodeContent(content string, encoding string) ([]byte, error) {\n\tswitch encoding {\n\tcase \"\":\n\t\treturn []byte(content), nil\n\n\tcase \"b64\", \"base64\":\n\t\treturn DecodeBase64Content(content)\n\n\tcase \"gz\", \"gzip\":\n\t\treturn DecodeGzipContent(content)\n\n\tcase \"gz+base64\", \"gzip+base64\", \"gz+b64\", \"gzip+b64\":\n\t\tgz, err := DecodeBase64Content(content)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn DecodeGzipContent(string(gz))\n\t}\n\n\treturn nil, fmt.Errorf(\"Unsupported encoding %q\", encoding)\n}\n"
  },
  {
    "path": "config/cloudinit/config/etc_hosts.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype EtcHosts string\n"
  },
  {
    "path": "config/cloudinit/config/etcd.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Etcd struct {\n\tAddr                     string  `yaml:\"addr\"                          env:\"ETCD_ADDR\"`\n\tAdvertiseClientURLs      string  `yaml:\"advertise_client_urls\"         env:\"ETCD_ADVERTISE_CLIENT_URLS\"       deprecated:\"etcd2 options no longer work for etcd\"`\n\tBindAddr                 string  `yaml:\"bind_addr\"                     env:\"ETCD_BIND_ADDR\"`\n\tCAFile                   string  `yaml:\"ca_file\"                       env:\"ETCD_CA_FILE\"`\n\tCertFile                 string  `yaml:\"cert_file\"                     env:\"ETCD_CERT_FILE\"`\n\tClusterActiveSize        int     `yaml:\"cluster_active_size\"           env:\"ETCD_CLUSTER_ACTIVE_SIZE\"`\n\tClusterRemoveDelay       float64 `yaml:\"cluster_remove_delay\"          env:\"ETCD_CLUSTER_REMOVE_DELAY\"`\n\tClusterSyncInterval      float64 `yaml:\"cluster_sync_interval\"         env:\"ETCD_CLUSTER_SYNC_INTERVAL\"`\n\tCorsOrigins              string  `yaml:\"cors\"                          env:\"ETCD_CORS\"`\n\tDataDir                  string  `yaml:\"data_dir\"                      env:\"ETCD_DATA_DIR\"`\n\tDiscovery                string  `yaml:\"discovery\"                     env:\"ETCD_DISCOVERY\"`\n\tDiscoveryFallback        string  `yaml:\"discovery_fallback\"            env:\"ETCD_DISCOVERY_FALLBACK\"          deprecated:\"etcd2 options no longer work for etcd\"`\n\tDiscoverySRV             string  `yaml:\"discovery_srv\"                 env:\"ETCD_DISCOVERY_SRV\"               deprecated:\"etcd2 options no longer work for etcd\"`\n\tDiscoveryProxy           string  `yaml:\"discovery_proxy\"               env:\"ETCD_DISCOVERY_PROXY\"             deprecated:\"etcd2 options no longer work for etcd\"`\n\tElectionTimeout          int     `yaml:\"election_timeout\"              env:\"ETCD_ELECTION_TIMEOUT\"            deprecated:\"etcd2 options no longer work for etcd\"`\n\tForceNewCluster          bool    `yaml:\"force_new_cluster\"             env:\"ETCD_FORCE_NEW_CLUSTER\"           deprecated:\"etcd2 options no longer work for etcd\"`\n\tGraphiteHost             string  `yaml:\"graphite_host\"                 env:\"ETCD_GRAPHITE_HOST\"`\n\tHeartbeatInterval        int     `yaml:\"heartbeat_interval\"            env:\"ETCD_HEARTBEAT_INTERVAL\"          deprecated:\"etcd2 options no longer work for etcd\"`\n\tHTTPReadTimeout          float64 `yaml:\"http_read_timeout\"             env:\"ETCD_HTTP_READ_TIMEOUT\"`\n\tHTTPWriteTimeout         float64 `yaml:\"http_write_timeout\"            env:\"ETCD_HTTP_WRITE_TIMEOUT\"`\n\tInitialAdvertisePeerURLs string  `yaml:\"initial_advertise_peer_urls\"   env:\"ETCD_INITIAL_ADVERTISE_PEER_URLS\" deprecated:\"etcd2 options no longer work for etcd\"`\n\tInitialCluster           string  `yaml:\"initial_cluster\"               env:\"ETCD_INITIAL_CLUSTER\"             deprecated:\"etcd2 options no longer work for etcd\"`\n\tInitialClusterState      string  `yaml:\"initial_cluster_state\"         env:\"ETCD_INITIAL_CLUSTER_STATE\"       deprecated:\"etcd2 options no longer work for etcd\"`\n\tInitialClusterToken      string  `yaml:\"initial_cluster_token\"         env:\"ETCD_INITIAL_CLUSTER_TOKEN\"       deprecated:\"etcd2 options no longer work for etcd\"`\n\tKeyFile                  string  `yaml:\"key_file\"                      env:\"ETCD_KEY_FILE\"`\n\tListenClientURLs         string  `yaml:\"listen_client_urls\"            env:\"ETCD_LISTEN_CLIENT_URLS\"          deprecated:\"etcd2 options no longer work for etcd\"`\n\tListenPeerURLs           string  `yaml:\"listen_peer_urls\"              env:\"ETCD_LISTEN_PEER_URLS\"            deprecated:\"etcd2 options no longer work for etcd\"`\n\tMaxResultBuffer          int     `yaml:\"max_result_buffer\"             env:\"ETCD_MAX_RESULT_BUFFER\"`\n\tMaxRetryAttempts         int     `yaml:\"max_retry_attempts\"            env:\"ETCD_MAX_RETRY_ATTEMPTS\"`\n\tMaxSnapshots             int     `yaml:\"max_snapshots\"                 env:\"ETCD_MAX_SNAPSHOTS\"               deprecated:\"etcd2 options no longer work for etcd\"`\n\tMaxWALs                  int     `yaml:\"max_wals\"                      env:\"ETCD_MAX_WALS\"                    deprecated:\"etcd2 options no longer work for etcd\"`\n\tName                     string  `yaml:\"name\"                          env:\"ETCD_NAME\"`\n\tPeerAddr                 string  `yaml:\"peer_addr\"                     env:\"ETCD_PEER_ADDR\"`\n\tPeerBindAddr             string  `yaml:\"peer_bind_addr\"                env:\"ETCD_PEER_BIND_ADDR\"`\n\tPeerCAFile               string  `yaml:\"peer_ca_file\"                  env:\"ETCD_PEER_CA_FILE\"`\n\tPeerCertFile             string  `yaml:\"peer_cert_file\"                env:\"ETCD_PEER_CERT_FILE\"`\n\tPeerElectionTimeout      int     `yaml:\"peer_election_timeout\"         env:\"ETCD_PEER_ELECTION_TIMEOUT\"`\n\tPeerHeartbeatInterval    int     `yaml:\"peer_heartbeat_interval\"       env:\"ETCD_PEER_HEARTBEAT_INTERVAL\"`\n\tPeerKeyFile              string  `yaml:\"peer_key_file\"                 env:\"ETCD_PEER_KEY_FILE\"`\n\tPeers                    string  `yaml:\"peers\"                         env:\"ETCD_PEERS\"`\n\tPeersFile                string  `yaml:\"peers_file\"                    env:\"ETCD_PEERS_FILE\"`\n\tProxy                    string  `yaml:\"proxy\"                         env:\"ETCD_PROXY\"                       deprecated:\"etcd2 options no longer work for etcd\"`\n\tRetryInterval            float64 `yaml:\"retry_interval\"                env:\"ETCD_RETRY_INTERVAL\"`\n\tSnapshot                 bool    `yaml:\"snapshot\"                      env:\"ETCD_SNAPSHOT\"`\n\tSnapshotCount            int     `yaml:\"snapshot_count\"                env:\"ETCD_SNAPSHOTCOUNT\"`\n\tStrTrace                 string  `yaml:\"trace\"                         env:\"ETCD_TRACE\"`\n\tVerbose                  bool    `yaml:\"verbose\"                       env:\"ETCD_VERBOSE\"`\n\tVeryVerbose              bool    `yaml:\"very_verbose\"                  env:\"ETCD_VERY_VERBOSE\"`\n\tVeryVeryVerbose          bool    `yaml:\"very_very_verbose\"             env:\"ETCD_VERY_VERY_VERBOSE\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/etcd2.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Etcd2 struct {\n\tAdvertiseClientURLs      string `yaml:\"advertise_client_urls\"         env:\"ETCD_ADVERTISE_CLIENT_URLS\"`\n\tCAFile                   string `yaml:\"ca_file\"                       env:\"ETCD_CA_FILE\"                     deprecated:\"ca_file obsoleted by trusted_ca_file and client_cert_auth\"`\n\tCertFile                 string `yaml:\"cert_file\"                     env:\"ETCD_CERT_FILE\"`\n\tClientCertAuth           bool   `yaml:\"client_cert_auth\"              env:\"ETCD_CLIENT_CERT_AUTH\"`\n\tCorsOrigins              string `yaml:\"cors\"                          env:\"ETCD_CORS\"`\n\tDataDir                  string `yaml:\"data_dir\"                      env:\"ETCD_DATA_DIR\"`\n\tDebug                    bool   `yaml:\"debug\"                         env:\"ETCD_DEBUG\"`\n\tDiscovery                string `yaml:\"discovery\"                     env:\"ETCD_DISCOVERY\"`\n\tDiscoveryFallback        string `yaml:\"discovery_fallback\"            env:\"ETCD_DISCOVERY_FALLBACK\"`\n\tDiscoverySRV             string `yaml:\"discovery_srv\"                 env:\"ETCD_DISCOVERY_SRV\"`\n\tDiscoveryProxy           string `yaml:\"discovery_proxy\"               env:\"ETCD_DISCOVERY_PROXY\"`\n\tElectionTimeout          int    `yaml:\"election_timeout\"              env:\"ETCD_ELECTION_TIMEOUT\"`\n\tEnablePprof              bool   `yaml:\"enable_pprof\"                  env:\"ETCD_ENABLE_PPROF\"`\n\tForceNewCluster          bool   `yaml:\"force_new_cluster\"             env:\"ETCD_FORCE_NEW_CLUSTER\"`\n\tHeartbeatInterval        int    `yaml:\"heartbeat_interval\"            env:\"ETCD_HEARTBEAT_INTERVAL\"`\n\tInitialAdvertisePeerURLs string `yaml:\"initial_advertise_peer_urls\"   env:\"ETCD_INITIAL_ADVERTISE_PEER_URLS\"`\n\tInitialCluster           string `yaml:\"initial_cluster\"               env:\"ETCD_INITIAL_CLUSTER\"`\n\tInitialClusterState      string `yaml:\"initial_cluster_state\"         env:\"ETCD_INITIAL_CLUSTER_STATE\"`\n\tInitialClusterToken      string `yaml:\"initial_cluster_token\"         env:\"ETCD_INITIAL_CLUSTER_TOKEN\"`\n\tKeyFile                  string `yaml:\"key_file\"                      env:\"ETCD_KEY_FILE\"`\n\tListenClientURLs         string `yaml:\"listen_client_urls\"            env:\"ETCD_LISTEN_CLIENT_URLS\"`\n\tListenPeerURLs           string `yaml:\"listen_peer_urls\"              env:\"ETCD_LISTEN_PEER_URLS\"`\n\tLogPackageLevels         string `yaml:\"log_package_levels\"            env:\"ETCD_LOG_PACKAGE_LEVELS\"`\n\tMaxSnapshots             int    `yaml:\"max_snapshots\"                 env:\"ETCD_MAX_SNAPSHOTS\"`\n\tMaxWALs                  int    `yaml:\"max_wals\"                      env:\"ETCD_MAX_WALS\"`\n\tName                     string `yaml:\"name\"                          env:\"ETCD_NAME\"`\n\tPeerCAFile               string `yaml:\"peer_ca_file\"                  env:\"ETCD_PEER_CA_FILE\"                deprecated:\"peer_ca_file obsoleted peer_trusted_ca_file and peer_client_cert_auth\"`\n\tPeerCertFile             string `yaml:\"peer_cert_file\"                env:\"ETCD_PEER_CERT_FILE\"`\n\tPeerKeyFile              string `yaml:\"peer_key_file\"                 env:\"ETCD_PEER_KEY_FILE\"`\n\tPeerClientCertAuth       bool   `yaml:\"peer_client_cert_auth\"         env:\"ETCD_PEER_CLIENT_CERT_AUTH\"`\n\tPeerTrustedCAFile        string `yaml:\"peer_trusted_ca_file\"          env:\"ETCD_PEER_TRUSTED_CA_FILE\"`\n\tProxy                    string `yaml:\"proxy\"                         env:\"ETCD_PROXY\"                       valid:\"^(on|off|readonly)$\"`\n\tProxyDialTimeout         int    `yaml:\"proxy_dial_timeout\"            env:\"ETCD_PROXY_DIAL_TIMEOUT\"`\n\tProxyFailureWait         int    `yaml:\"proxy_failure_wait\"            env:\"ETCD_PROXY_FAILURE_WAIT\"`\n\tProxyReadTimeout         int    `yaml:\"proxy_read_timeout\"            env:\"ETCD_PROXY_READ_TIMEOUT\"`\n\tProxyRefreshInterval     int    `yaml:\"proxy_refresh_interval\"        env:\"ETCD_PROXY_REFRESH_INTERVAL\"`\n\tProxyWriteTimeout        int    `yaml:\"proxy_write_timeout\"           env:\"ETCD_PROXY_WRITE_TIMEOUT\"`\n\tSnapshotCount            int    `yaml:\"snapshot_count\"                env:\"ETCD_SNAPSHOT_COUNT\"`\n\tStrictReconfigCheck      bool   `yaml:\"strict_reconfig_check\"         env:\"ETCD_STRICT_RECONFIG_CHECK\"`\n\tTrustedCAFile            string `yaml:\"trusted_ca_file\"               env:\"ETCD_TRUSTED_CA_FILE\"`\n\tWalDir                   string `yaml:\"wal_dir\"                       env:\"ETCD_WAL_DIR\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/file.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype File struct {\n\tEncoding           string `yaml:\"encoding\" valid:\"^(base64|b64|gz|gzip|gz\\\\+base64|gzip\\\\+base64|gz\\\\+b64|gzip\\\\+b64)$\"`\n\tContent            string `yaml:\"content\"`\n\tOwner              string `yaml:\"owner\"`\n\tPath               string `yaml:\"path\"`\n\tRawFilePermissions string `yaml:\"permissions\" valid:\"^0?[0-7]{3,4}$\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/file_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"testing\"\n)\n\nfunc TestEncodingValid(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"base64\", isValid: true},\n\t\t{value: \"b64\", isValid: true},\n\t\t{value: \"gz\", isValid: true},\n\t\t{value: \"gzip\", isValid: true},\n\t\t{value: \"gz+base64\", isValid: true},\n\t\t{value: \"gzip+base64\", isValid: true},\n\t\t{value: \"gz+b64\", isValid: true},\n\t\t{value: \"gzip+b64\", isValid: true},\n\t\t{value: \"gzzzzbase64\", isValid: false},\n\t\t{value: \"gzipppbase64\", isValid: false},\n\t\t{value: \"unknown\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(File{Encoding: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n\nfunc TestRawFilePermissionsValid(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"744\", isValid: true},\n\t\t{value: \"0744\", isValid: true},\n\t\t{value: \"1744\", isValid: true},\n\t\t{value: \"01744\", isValid: true},\n\t\t{value: \"11744\", isValid: false},\n\t\t{value: \"rwxr--r--\", isValid: false},\n\t\t{value: \"800\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(File{RawFilePermissions: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/flannel.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Flannel struct {\n\tEtcdEndpoints string `yaml:\"etcd_endpoints\" env:\"FLANNELD_ETCD_ENDPOINTS\"`\n\tEtcdCAFile    string `yaml:\"etcd_cafile\"    env:\"FLANNELD_ETCD_CAFILE\"`\n\tEtcdCertFile  string `yaml:\"etcd_certfile\"  env:\"FLANNELD_ETCD_CERTFILE\"`\n\tEtcdKeyFile   string `yaml:\"etcd_keyfile\"   env:\"FLANNELD_ETCD_KEYFILE\"`\n\tEtcdPrefix    string `yaml:\"etcd_prefix\"    env:\"FLANNELD_ETCD_PREFIX\"`\n\tEtcdUsername  string `yaml:\"etcd_username\"  env:\"FLANNELD_ETCD_USERNAME\"`\n\tEtcdPassword  string `yaml:\"etcd_password\"  env:\"FLANNELD_ETCD_PASSWORD\"`\n\tIPMasq        string `yaml:\"ip_masq\"        env:\"FLANNELD_IP_MASQ\"`\n\tSubnetFile    string `yaml:\"subnet_file\"    env:\"FLANNELD_SUBNET_FILE\"`\n\tIface         string `yaml:\"interface\"      env:\"FLANNELD_IFACE\"`\n\tPublicIP      string `yaml:\"public_ip\"      env:\"FLANNELD_PUBLIC_IP\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/fleet.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Fleet struct {\n\tAgentTTL                string  `yaml:\"agent_ttl\"                 env:\"FLEET_AGENT_TTL\"`\n\tAuthorizedKeysFile      string  `yaml:\"authorized_keys_file\"      env:\"FLEET_AUTHORIZED_KEYS_FILE\"`\n\tDisableEngine           bool    `yaml:\"disable_engine\"            env:\"FLEET_DISABLE_ENGINE\"`\n\tEngineReconcileInterval float64 `yaml:\"engine_reconcile_interval\" env:\"FLEET_ENGINE_RECONCILE_INTERVAL\"`\n\tEtcdCAFile              string  `yaml:\"etcd_cafile\"               env:\"FLEET_ETCD_CAFILE\"`\n\tEtcdCertFile            string  `yaml:\"etcd_certfile\"             env:\"FLEET_ETCD_CERTFILE\"`\n\tEtcdKeyFile             string  `yaml:\"etcd_keyfile\"              env:\"FLEET_ETCD_KEYFILE\"`\n\tEtcdKeyPrefix           string  `yaml:\"etcd_key_prefix\"           env:\"FLEET_ETCD_KEY_PREFIX\"`\n\tEtcdRequestTimeout      float64 `yaml:\"etcd_request_timeout\"      env:\"FLEET_ETCD_REQUEST_TIMEOUT\"`\n\tEtcdServers             string  `yaml:\"etcd_servers\"              env:\"FLEET_ETCD_SERVERS\"`\n\tEtcdUsername            string  `yaml:\"etcd_username\"             env:\"FLEET_ETCD_USERNAME\"`\n\tEtcdPassword            string  `yaml:\"etcd_password\"             env:\"FLEET_ETCD_PASSWORD\"`\n\tMetadata                string  `yaml:\"metadata\"                  env:\"FLEET_METADATA\"`\n\tPublicIP                string  `yaml:\"public_ip\"                 env:\"FLEET_PUBLIC_IP\"`\n\tTokenLimit              int     `yaml:\"token_limit\"               env:\"FLEET_TOKEN_LIMIT\"`\n\tVerbosity               int     `yaml:\"verbosity\"                 env:\"FLEET_VERBOSITY\"`\n\tVerifyUnits             bool    `yaml:\"verify_units\"              env:\"FLEET_VERIFY_UNITS\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/ignition.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"encoding/json\"\n)\n\nfunc IsIgnitionConfig(userdata string) bool {\n\tvar cfg struct {\n\t\tVersion  *int `json:\"ignitionVersion\"`\n\t\tIgnition struct {\n\t\t\tVersion *string `json:\"version\"`\n\t\t} `json:\"ignition\"`\n\t}\n\treturn (json.Unmarshal([]byte(userdata), &cfg) == nil && (cfg.Version != nil || cfg.Ignition.Version != nil))\n}\n"
  },
  {
    "path": "config/cloudinit/config/locksmith.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Locksmith struct {\n\tEndpoint           string `yaml:\"endpoint\"      env:\"LOCKSMITHD_ENDPOINT\"`\n\tEtcdCAFile         string `yaml:\"etcd_cafile\"   env:\"LOCKSMITHD_ETCD_CAFILE\"`\n\tEtcdCertFile       string `yaml:\"etcd_certfile\" env:\"LOCKSMITHD_ETCD_CERTFILE\"`\n\tEtcdKeyFile        string `yaml:\"etcd_keyfile\"  env:\"LOCKSMITHD_ETCD_KEYFILE\"`\n\tEtcdUsername       string `yaml:\"etcd_username\" env:\"LOCKSMITHD_ETCD_USERNAME\"`\n\tEtcdPassword       string `yaml:\"etcd_password\" env:\"LOCKSMITHD_ETCD_PASSWORD\"`\n\tGroup              string `yaml:\"group\"         env:\"LOCKSMITHD_GROUP\"`\n\tRebootWindowStart  string `yaml:\"window_start\"  env:\"REBOOT_WINDOW_START\"  valid:\"^((?i:sun|mon|tue|wed|thu|fri|sat|sun) )?0*([0-9]|1[0-9]|2[0-3]):0*([0-9]|[1-5][0-9])$\"`\n\tRebootWindowLength string `yaml:\"window_length\" env:\"REBOOT_WINDOW_LENGTH\" valid:\"^[-+]?([0-9]*(\\\\.[0-9]*)?[a-z]+)+$\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/locksmith_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"testing\"\n)\n\nfunc TestRebootWindowStart(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"Sun 0:0\", isValid: true},\n\t\t{value: \"Sun 00:00\", isValid: true},\n\t\t{value: \"sUn 23:59\", isValid: true},\n\t\t{value: \"mon 0:0\", isValid: true},\n\t\t{value: \"tue 0:0\", isValid: true},\n\t\t{value: \"tues 0:0\", isValid: false},\n\t\t{value: \"wed 0:0\", isValid: true},\n\t\t{value: \"thu 0:0\", isValid: true},\n\t\t{value: \"thur 0:0\", isValid: false},\n\t\t{value: \"fri 0:0\", isValid: true},\n\t\t{value: \"sat 0:0\", isValid: true},\n\t\t{value: \"sat00:00\", isValid: false},\n\t\t{value: \"00:00\", isValid: true},\n\t\t{value: \"10:10\", isValid: true},\n\t\t{value: \"20:20\", isValid: true},\n\t\t{value: \"20:30\", isValid: true},\n\t\t{value: \"20:40\", isValid: true},\n\t\t{value: \"20:50\", isValid: true},\n\t\t{value: \"20:60\", isValid: false},\n\t\t{value: \"24:00\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(Locksmith{RebootWindowStart: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n\nfunc TestRebootWindowLength(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"1h\", isValid: true},\n\t\t{value: \"1d\", isValid: true},\n\t\t{value: \"0d\", isValid: true},\n\t\t{value: \"0.5h\", isValid: true},\n\t\t{value: \"0.5.0h\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(Locksmith{RebootWindowLength: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/oem.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype OEM struct {\n\tID           string `yaml:\"id\"`\n\tName         string `yaml:\"name\"`\n\tVersionID    string `yaml:\"version_id\"`\n\tHomeURL      string `yaml:\"home_url\"`\n\tBugReportURL string `yaml:\"bug_report_url\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/script.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\nimport (\n\t\"strings\"\n)\n\ntype Script []byte\n\nfunc IsScript(userdata string) bool {\n\theader := strings.SplitN(userdata, \"\\n\", 2)[0]\n\treturn strings.HasPrefix(header, \"#!\")\n}\n\nfunc NewScript(userdata string) (*Script, error) {\n\ts := Script(userdata)\n\treturn &s, nil\n}\n"
  },
  {
    "path": "config/cloudinit/config/unit.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Unit struct {\n\tName    string       `yaml:\"name\"`\n\tMask    bool         `yaml:\"mask\"`\n\tEnable  bool         `yaml:\"enable\"`\n\tRuntime bool         `yaml:\"runtime\"`\n\tContent string       `yaml:\"content\"`\n\tCommand string       `yaml:\"command\" valid:\"^(start|stop|restart|reload|try-restart|reload-or-restart|reload-or-try-restart)$\"`\n\tDropIns []UnitDropIn `yaml:\"drop_ins\"`\n}\n\ntype UnitDropIn struct {\n\tName    string `yaml:\"name\"`\n\tContent string `yaml:\"content\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/unit_test.go",
    "content": "/*\n   Copyright 2014 CoreOS, Inc.\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 config\n\nimport (\n\t\"testing\"\n)\n\nfunc TestCommandValid(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"start\", isValid: true},\n\t\t{value: \"stop\", isValid: true},\n\t\t{value: \"restart\", isValid: true},\n\t\t{value: \"reload\", isValid: true},\n\t\t{value: \"try-restart\", isValid: true},\n\t\t{value: \"reload-or-restart\", isValid: true},\n\t\t{value: \"reload-or-try-restart\", isValid: true},\n\t\t{value: \"tryrestart\", isValid: false},\n\t\t{value: \"unknown\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(Unit{Command: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/update.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype Update struct {\n\tRebootStrategy string `yaml:\"reboot_strategy\" env:\"REBOOT_STRATEGY\" valid:\"^(best-effort|etcd-lock|reboot|off)$\"`\n\tGroup          string `yaml:\"group\"           env:\"GROUP\"`\n\tServer         string `yaml:\"server\"          env:\"SERVER\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/update_test.go",
    "content": "/*\n   Copyright 2014 CoreOS, Inc.\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 config\n\nimport (\n\t\"testing\"\n)\n\nfunc TestRebootStrategyValid(t *testing.T) {\n\ttests := []struct {\n\t\tvalue string\n\n\t\tisValid bool\n\t}{\n\t\t{value: \"best-effort\", isValid: true},\n\t\t{value: \"etcd-lock\", isValid: true},\n\t\t{value: \"reboot\", isValid: true},\n\t\t{value: \"off\", isValid: true},\n\t\t{value: \"besteffort\", isValid: false},\n\t\t{value: \"unknown\", isValid: false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tisValid := (nil == AssertStructValid(Update{RebootStrategy: tt.value}))\n\t\tif tt.isValid != isValid {\n\t\t\tt.Errorf(\"bad assert (%s): want %t, got %t\", tt.value, tt.isValid, isValid)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/user.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 config\n\ntype User struct {\n\tName                 string   `yaml:\"name\"`\n\tPasswordHash         string   `yaml:\"passwd\"`\n\tSSHAuthorizedKeys    []string `yaml:\"ssh_authorized_keys\"`\n\tSSHImportGithubUser  string   `yaml:\"coreos_ssh_import_github\"       deprecated:\"trying to fetch from a remote endpoint introduces too many intermittent errors\"`\n\tSSHImportGithubUsers []string `yaml:\"coreos_ssh_import_github_users\" deprecated:\"trying to fetch from a remote endpoint introduces too many intermittent errors\"`\n\tSSHImportURL         string   `yaml:\"coreos_ssh_import_url\"          deprecated:\"trying to fetch from a remote endpoint introduces too many intermittent errors\"`\n\tGECOS                string   `yaml:\"gecos\"`\n\tHomedir              string   `yaml:\"homedir\"`\n\tNoCreateHome         bool     `yaml:\"no_create_home\"`\n\tPrimaryGroup         string   `yaml:\"primary_group\"`\n\tGroups               []string `yaml:\"groups\"`\n\tNoUserGroup          bool     `yaml:\"no_user_group\"`\n\tSystem               bool     `yaml:\"system\"`\n\tNoLogInit            bool     `yaml:\"no_log_init\"`\n\tShell                string   `yaml:\"shell\"`\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/context.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"strings\"\n)\n\n// Context represents the current position within a newline-delimited string.\n// Each line is loaded, one by one, into currentLine (newline omitted) and\n// lineNumber keeps track of its position within the original string.\ntype Context struct {\n\tcurrentLine    string\n\tremainingLines string\n\tlineNumber     int\n}\n\n// Increment moves the Context to the next line (if available).\nfunc (c *Context) Increment() {\n\tif c.currentLine == \"\" && c.remainingLines == \"\" {\n\t\treturn\n\t}\n\n\tlines := strings.SplitN(c.remainingLines, \"\\n\", 2)\n\tc.currentLine = lines[0]\n\tif len(lines) == 2 {\n\t\tc.remainingLines = lines[1]\n\t} else {\n\t\tc.remainingLines = \"\"\n\t}\n\tc.lineNumber++\n}\n\n// NewContext creates a Context from the provided data. It strips out all\n// carriage returns and moves to the first line (if available).\nfunc NewContext(content []byte) Context {\n\tc := Context{remainingLines: strings.Replace(string(content), \"\\r\", \"\", -1)}\n\tc.Increment()\n\treturn c\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/context_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestNewContext(t *testing.T) {\n\ttests := []struct {\n\t\tin string\n\n\t\tout Context\n\t}{\n\t\t{\n\t\t\tout: Context{\n\t\t\t\tcurrentLine:    \"\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     0,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tin: \"this\\r\\nis\\r\\na\\r\\ntest\",\n\t\t\tout: Context{\n\t\t\t\tcurrentLine:    \"this\",\n\t\t\t\tremainingLines: \"is\\na\\ntest\",\n\t\t\t\tlineNumber:     1,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif out := NewContext([]byte(tt.in)); !reflect.DeepEqual(tt.out, out) {\n\t\t\tt.Errorf(\"bad context (%q): want %#v, got %#v\", tt.in, tt.out, out)\n\t\t}\n\t}\n}\n\nfunc TestIncrement(t *testing.T) {\n\ttests := []struct {\n\t\tinit Context\n\t\top   func(c *Context)\n\n\t\tres Context\n\t}{\n\t\t{\n\t\t\tinit: Context{\n\t\t\t\tcurrentLine:    \"\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     0,\n\t\t\t},\n\t\t\tres: Context{\n\t\t\t\tcurrentLine:    \"\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     0,\n\t\t\t},\n\t\t\top: func(c *Context) {\n\t\t\t\tc.Increment()\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinit: Context{\n\t\t\t\tcurrentLine:    \"test\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     1,\n\t\t\t},\n\t\t\tres: Context{\n\t\t\t\tcurrentLine:    \"\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     2,\n\t\t\t},\n\t\t\top: func(c *Context) {\n\t\t\t\tc.Increment()\n\t\t\t\tc.Increment()\n\t\t\t\tc.Increment()\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinit: Context{\n\t\t\t\tcurrentLine:    \"this\",\n\t\t\t\tremainingLines: \"is\\na\\ntest\",\n\t\t\t\tlineNumber:     1,\n\t\t\t},\n\t\t\tres: Context{\n\t\t\t\tcurrentLine:    \"is\",\n\t\t\t\tremainingLines: \"a\\ntest\",\n\t\t\t\tlineNumber:     2,\n\t\t\t},\n\t\t\top: func(c *Context) {\n\t\t\t\tc.Increment()\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinit: Context{\n\t\t\t\tcurrentLine:    \"this\",\n\t\t\t\tremainingLines: \"is\\na\\ntest\",\n\t\t\t\tlineNumber:     1,\n\t\t\t},\n\t\t\tres: Context{\n\t\t\t\tcurrentLine:    \"test\",\n\t\t\t\tremainingLines: \"\",\n\t\t\t\tlineNumber:     4,\n\t\t\t},\n\t\t\top: func(c *Context) {\n\t\t\t\tc.Increment()\n\t\t\t\tc.Increment()\n\t\t\t\tc.Increment()\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tres := tt.init\n\t\tif tt.op(&res); !reflect.DeepEqual(tt.res, res) {\n\t\t\tt.Errorf(\"bad context (%d, %#v): want %#v, got %#v\", i, tt.init, tt.res, res)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/node.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n)\n\nvar (\n\tyamlKey  = regexp.MustCompile(`^ *-? ?(?P<key>.*?):`)\n\tyamlElem = regexp.MustCompile(`^ *-`)\n)\n\ntype Node struct {\n\tname     string\n\tline     int\n\tchildren []Node\n\tfield    reflect.StructField\n\treflect.Value\n}\n\n// Child attempts to find the child with the given name in the Node's list of\n// children. If no such child is found, an invalid Node is returned.\nfunc (n Node) Child(name string) Node {\n\tfor _, c := range n.children {\n\t\tif c.name == name {\n\t\t\treturn c\n\t\t}\n\t}\n\treturn Node{}\n}\n\n// HumanType returns the human-consumable string representation of the type of\n// the Node.\nfunc (n Node) HumanType() string {\n\tswitch k := n.Kind(); k {\n\tcase reflect.Slice:\n\t\tc := n.Type().Elem()\n\t\treturn \"[]\" + Node{Value: reflect.New(c).Elem()}.HumanType()\n\tdefault:\n\t\treturn k.String()\n\t}\n}\n\n// NewNode returns the Node representation of the given value. The context\n// will be used in an attempt to determine line numbers for the given value.\nfunc NewNode(value interface{}, context Context) Node {\n\tvar n Node\n\ttoNode(value, context, &n)\n\treturn n\n}\n\n// toNode converts the given value into a Node and then recursively processes\n// each of the Nodes components (e.g. fields, array elements, keys).\nfunc toNode(v interface{}, c Context, n *Node) {\n\tvv := reflect.ValueOf(v)\n\tif !vv.IsValid() {\n\t\treturn\n\t}\n\n\tn.Value = vv\n\tswitch vv.Kind() {\n\tcase reflect.Struct:\n\t\t// Walk over each field in the structure, skipping unexported fields,\n\t\t// and create a Node for it.\n\t\tfor i := 0; i < vv.Type().NumField(); i++ {\n\t\t\tft := vv.Type().Field(i)\n\t\t\tk := ft.Tag.Get(\"yaml\")\n\t\t\tif k == \"-\" || k == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcn := Node{name: k, field: ft}\n\t\t\tc, ok := findKey(cn.name, c)\n\t\t\tif ok {\n\t\t\t\tcn.line = c.lineNumber\n\t\t\t}\n\t\t\ttoNode(vv.Field(i).Interface(), c, &cn)\n\t\t\tn.children = append(n.children, cn)\n\t\t}\n\tcase reflect.Map:\n\t\t// Walk over each key in the map and create a Node for it.\n\t\tv := v.(map[interface{}]interface{})\n\t\tfor k, cv := range v {\n\t\t\tcn := Node{name: fmt.Sprintf(\"%s\", k)}\n\t\t\tc, ok := findKey(cn.name, c)\n\t\t\tif ok {\n\t\t\t\tcn.line = c.lineNumber\n\t\t\t}\n\t\t\ttoNode(cv, c, &cn)\n\t\t\tn.children = append(n.children, cn)\n\t\t}\n\tcase reflect.Slice:\n\t\t// Walk over each element in the slice and create a Node for it.\n\t\t// While iterating over the slice, preserve the context after it\n\t\t// is modified. This allows the line numbers to reflect the current\n\t\t// element instead of the first.\n\t\tfor i := 0; i < vv.Len(); i++ {\n\t\t\tcn := Node{\n\t\t\t\tname:  fmt.Sprintf(\"%s[%d]\", n.name, i),\n\t\t\t\tfield: n.field,\n\t\t\t}\n\t\t\tvar ok bool\n\t\t\tc, ok = findElem(c)\n\t\t\tif ok {\n\t\t\t\tcn.line = c.lineNumber\n\t\t\t}\n\t\t\ttoNode(vv.Index(i).Interface(), c, &cn)\n\t\t\tn.children = append(n.children, cn)\n\t\t\tc.Increment()\n\t\t}\n\tcase reflect.String, reflect.Int, reflect.Bool, reflect.Float64:\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"toNode(): unhandled kind %s\", vv.Kind()))\n\t}\n}\n\n// findKey attempts to find the requested key within the provided context.\n// A modified copy of the context is returned with every line up to the key\n// incremented past. A boolean, true if the key was found, is also returned.\nfunc findKey(key string, context Context) (Context, bool) {\n\treturn find(yamlKey, key, context)\n}\n\n// findElem attempts to find an array element within the provided context.\n// A modified copy of the context is returned with every line up to the array\n// element incremented past. A boolean, true if the key was found, is also\n// returned.\nfunc findElem(context Context) (Context, bool) {\n\treturn find(yamlElem, \"\", context)\n}\n\nfunc find(exp *regexp.Regexp, key string, context Context) (Context, bool) {\n\tfor len(context.currentLine) > 0 || len(context.remainingLines) > 0 {\n\t\tmatches := exp.FindStringSubmatch(context.currentLine)\n\t\tif len(matches) > 0 && (key == \"\" || matches[1] == key) {\n\t\t\treturn context, true\n\t\t}\n\n\t\tcontext.Increment()\n\t}\n\treturn context, false\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/node_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestChild(t *testing.T) {\n\ttests := []struct {\n\t\tparent Node\n\t\tname   string\n\n\t\tchild Node\n\t}{\n\t\t{},\n\t\t{\n\t\t\tname: \"c1\",\n\t\t},\n\t\t{\n\t\t\tparent: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{name: \"c1\"},\n\t\t\t\t\t{name: \"c2\"},\n\t\t\t\t\t{name: \"c3\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tparent: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{name: \"c1\"},\n\t\t\t\t\t{name: \"c2\"},\n\t\t\t\t\t{name: \"c3\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tname:  \"c2\",\n\t\t\tchild: Node{name: \"c2\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif child := tt.parent.Child(tt.name); !reflect.DeepEqual(tt.child, child) {\n\t\t\tt.Errorf(\"bad child (%q): want %#v, got %#v\", tt.name, tt.child, child)\n\t\t}\n\t}\n}\n\nfunc TestHumanType(t *testing.T) {\n\ttests := []struct {\n\t\tnode Node\n\n\t\thumanType string\n\t}{\n\t\t{\n\t\t\thumanType: \"invalid\",\n\t\t},\n\t\t{\n\t\t\tnode:      Node{Value: reflect.ValueOf(\"hello\")},\n\t\t\thumanType: \"string\",\n\t\t},\n\t\t{\n\t\t\tnode: Node{\n\t\t\t\tValue: reflect.ValueOf([]int{1, 2}),\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{Value: reflect.ValueOf(1)},\n\t\t\t\t\t{Value: reflect.ValueOf(2)},\n\t\t\t\t}},\n\t\t\thumanType: \"[]int\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif humanType := tt.node.HumanType(); tt.humanType != humanType {\n\t\t\tt.Errorf(\"bad type (%q): want %q, got %q\", tt.node, tt.humanType, humanType)\n\t\t}\n\t}\n}\n\nfunc TestToNode(t *testing.T) {\n\ttests := []struct {\n\t\tvalue   interface{}\n\t\tcontext Context\n\n\t\tnode Node\n\t}{\n\t\t{},\n\t\t{\n\t\t\tvalue: struct{}{},\n\t\t\tnode:  Node{Value: reflect.ValueOf(struct{}{})},\n\t\t},\n\t\t{\n\t\t\tvalue: struct {\n\t\t\t\tA int `yaml:\"a\"`\n\t\t\t}{},\n\t\t\tnode: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"a\",\n\t\t\t\t\t\tfield: reflect.TypeOf(struct {\n\t\t\t\t\t\t\tA int `yaml:\"a\"`\n\t\t\t\t\t\t}{}).Field(0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tvalue: struct {\n\t\t\t\tA []int `yaml:\"a\"`\n\t\t\t}{},\n\t\t\tnode: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"a\",\n\t\t\t\t\t\tfield: reflect.TypeOf(struct {\n\t\t\t\t\t\t\tA []int `yaml:\"a\"`\n\t\t\t\t\t\t}{}).Field(0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tvalue: map[interface{}]interface{}{\n\t\t\t\t\"a\": map[interface{}]interface{}{\n\t\t\t\t\t\"b\": 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontext: NewContext([]byte(\"a:\\n  b: 2\")),\n\t\t\tnode: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{\n\t\t\t\t\t\tline: 1,\n\t\t\t\t\t\tname: \"a\",\n\t\t\t\t\t\tchildren: []Node{\n\t\t\t\t\t\t\t{name: \"b\", line: 2},\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\t\t{\n\t\t\tvalue: struct {\n\t\t\t\tA struct {\n\t\t\t\t\tJon bool `yaml:\"b\"`\n\t\t\t\t} `yaml:\"a\"`\n\t\t\t}{},\n\t\t\tnode: Node{\n\t\t\t\tchildren: []Node{\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"a\",\n\t\t\t\t\t\tchildren: []Node{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"b\",\n\t\t\t\t\t\t\t\tfield: reflect.TypeOf(struct {\n\t\t\t\t\t\t\t\t\tJon bool `yaml:\"b\"`\n\t\t\t\t\t\t\t\t}{}).Field(0),\n\t\t\t\t\t\t\t\tValue: reflect.ValueOf(false),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfield: reflect.TypeOf(struct {\n\t\t\t\t\t\t\tA struct {\n\t\t\t\t\t\t\t\tJon bool `yaml:\"b\"`\n\t\t\t\t\t\t\t} `yaml:\"a\"`\n\t\t\t\t\t\t}{}).Field(0),\n\t\t\t\t\t\tValue: reflect.ValueOf(struct {\n\t\t\t\t\t\t\tJon bool `yaml:\"b\"`\n\t\t\t\t\t\t}{}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tValue: reflect.ValueOf(struct {\n\t\t\t\t\tA struct {\n\t\t\t\t\t\tJon bool `yaml:\"b\"`\n\t\t\t\t\t} `yaml:\"a\"`\n\t\t\t\t}{}),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tvar node Node\n\t\ttoNode(tt.value, tt.context, &node)\n\t\tif !nodesEqual(tt.node, node) {\n\t\t\tt.Errorf(\"bad node (%#v): want %#v, got %#v\", tt.value, tt.node, node)\n\t\t}\n\t}\n}\n\nfunc TestFindKey(t *testing.T) {\n\ttests := []struct {\n\t\tkey     string\n\t\tcontext Context\n\n\t\tfound bool\n\t}{\n\t\t{},\n\t\t{\n\t\t\tkey:     \"key1\",\n\t\t\tcontext: NewContext([]byte(\"key1: hi\")),\n\t\t\tfound:   true,\n\t\t},\n\t\t{\n\t\t\tkey:     \"key2\",\n\t\t\tcontext: NewContext([]byte(\"key1: hi\")),\n\t\t\tfound:   false,\n\t\t},\n\t\t{\n\t\t\tkey:     \"key3\",\n\t\t\tcontext: NewContext([]byte(\"key1:\\n  key2:\\n    key3: hi\")),\n\t\t\tfound:   true,\n\t\t},\n\t\t{\n\t\t\tkey:     \"key4\",\n\t\t\tcontext: NewContext([]byte(\"key1:\\n  - key4: hi\")),\n\t\t\tfound:   true,\n\t\t},\n\t\t{\n\t\t\tkey:     \"key5\",\n\t\t\tcontext: NewContext([]byte(\"#key5\")),\n\t\t\tfound:   false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif _, found := findKey(tt.key, tt.context); tt.found != found {\n\t\t\tt.Errorf(\"bad find (%q): want %t, got %t\", tt.key, tt.found, found)\n\t\t}\n\t}\n}\n\nfunc TestFindElem(t *testing.T) {\n\ttests := []struct {\n\t\tcontext Context\n\n\t\tfound bool\n\t}{\n\t\t{},\n\t\t{\n\t\t\tcontext: NewContext([]byte(\"test: hi\")),\n\t\t\tfound:   false,\n\t\t},\n\t\t{\n\t\t\tcontext: NewContext([]byte(\"test:\\n  - a\\n  -b\")),\n\t\t\tfound:   true,\n\t\t},\n\t\t{\n\t\t\tcontext: NewContext([]byte(\"test:\\n  -\\n    a\")),\n\t\t\tfound:   true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif _, found := findElem(tt.context); tt.found != found {\n\t\t\tt.Errorf(\"bad find (%q): want %t, got %t\", tt.context, tt.found, found)\n\t\t}\n\t}\n}\n\nfunc nodesEqual(a, b Node) bool {\n\tif a.name != b.name ||\n\t\ta.line != b.line ||\n\t\t!reflect.DeepEqual(a.field, b.field) ||\n\t\tlen(a.children) != len(b.children) {\n\t\treturn false\n\t}\n\tfor i := 0; i < len(a.children); i++ {\n\t\tif !nodesEqual(a.children[i], b.children[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/report.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\n// Report represents the list of entries resulting from validation.\ntype Report struct {\n\tentries []Entry\n}\n\n// Error adds an error entry to the report.\nfunc (r *Report) Error(line int, message string) {\n\tr.entries = append(r.entries, Entry{entryError, message, line})\n}\n\n// Warning adds a warning entry to the report.\nfunc (r *Report) Warning(line int, message string) {\n\tr.entries = append(r.entries, Entry{entryWarning, message, line})\n}\n\n// Info adds an info entry to the report.\nfunc (r *Report) Info(line int, message string) {\n\tr.entries = append(r.entries, Entry{entryInfo, message, line})\n}\n\n// Entries returns the list of entries in the report.\nfunc (r *Report) Entries() []Entry {\n\treturn r.entries\n}\n\n// Entry represents a single generic item in the report.\ntype Entry struct {\n\tkind    entryKind\n\tmessage string\n\tline    int\n}\n\n// String returns a human-readable representation of the entry.\nfunc (e Entry) String() string {\n\treturn fmt.Sprintf(\"line %d: %s: %s\", e.line, e.kind, e.message)\n}\n\n// MarshalJSON satisfies the json.Marshaler interface, returning the entry\n// encoded as a JSON object.\nfunc (e Entry) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(map[string]interface{}{\n\t\t\"kind\":    e.kind.String(),\n\t\t\"message\": e.message,\n\t\t\"line\":    e.line,\n\t})\n}\n\ntype entryKind int\n\nconst (\n\tentryError entryKind = iota\n\tentryWarning\n\tentryInfo\n)\n\nfunc (k entryKind) String() string {\n\tswitch k {\n\tcase entryError:\n\t\treturn \"error\"\n\tcase entryWarning:\n\t\treturn \"warning\"\n\tcase entryInfo:\n\t\treturn \"info\"\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid kind %d\", k))\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/report_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"bytes\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestEntry(t *testing.T) {\n\ttests := []struct {\n\t\tentry Entry\n\n\t\tstr  string\n\t\tjson []byte\n\t}{\n\t\t{\n\t\t\tEntry{entryInfo, \"test info\", 1},\n\t\t\t\"line 1: info: test info\",\n\t\t\t[]byte(`{\"kind\":\"info\",\"line\":1,\"message\":\"test info\"}`),\n\t\t},\n\t\t{\n\t\t\tEntry{entryWarning, \"test warning\", 1},\n\t\t\t\"line 1: warning: test warning\",\n\t\t\t[]byte(`{\"kind\":\"warning\",\"line\":1,\"message\":\"test warning\"}`),\n\t\t},\n\t\t{\n\t\t\tEntry{entryError, \"test error\", 2},\n\t\t\t\"line 2: error: test error\",\n\t\t\t[]byte(`{\"kind\":\"error\",\"line\":2,\"message\":\"test error\"}`),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif str := tt.entry.String(); tt.str != str {\n\t\t\tt.Errorf(\"bad string (%q): want %q, got %q\", tt.entry, tt.str, str)\n\t\t}\n\t\tjson, err := tt.entry.MarshalJSON()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"bad error (%q): want %v, got %q\", tt.entry, nil, err)\n\t\t}\n\t\tif !bytes.Equal(tt.json, json) {\n\t\t\tt.Errorf(\"bad JSON (%q): want %q, got %q\", tt.entry, tt.json, json)\n\t\t}\n\t}\n}\n\nfunc TestReport(t *testing.T) {\n\ttype reportFunc struct {\n\t\tfn      func(*Report, int, string)\n\t\tline    int\n\t\tmessage string\n\t}\n\n\ttests := []struct {\n\t\tfs []reportFunc\n\n\t\tes []Entry\n\t}{\n\t\t{\n\t\t\t[]reportFunc{\n\t\t\t\t{(*Report).Warning, 1, \"test warning 1\"},\n\t\t\t\t{(*Report).Error, 2, \"test error 2\"},\n\t\t\t\t{(*Report).Info, 10, \"test info 10\"},\n\t\t\t},\n\t\t\t[]Entry{\n\t\t\t\t{entryWarning, \"test warning 1\", 1},\n\t\t\t\t{entryError, \"test error 2\", 2},\n\t\t\t\t{entryInfo, \"test info 10\", 10},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tr := Report{}\n\t\tfor _, f := range tt.fs {\n\t\t\tf.fn(&r, f.line, f.message)\n\t\t}\n\t\tif es := r.Entries(); !reflect.DeepEqual(tt.es, es) {\n\t\t\tt.Errorf(\"bad entries (%v): want %#v, got %#v\", tt.fs, tt.es, es)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/rules.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\ntype rule func(config Node, report *Report)\n\n// Rules contains all of the validation rules.\nvar Rules = []rule{\n\tcheckDiscoveryURL,\n\tcheckEncoding,\n\tcheckStructure,\n\tcheckValidity,\n\tcheckWriteFiles,\n\tcheckWriteFilesUnderCoreos,\n}\n\n// checkDiscoveryURL verifies that the string is a valid url.\nfunc checkDiscoveryURL(cfg Node, report *Report) {\n\tc := cfg.Child(\"coreos\").Child(\"etcd\").Child(\"discovery\")\n\tif !c.IsValid() {\n\t\treturn\n\t}\n\n\tif _, err := url.ParseRequestURI(c.String()); err != nil {\n\t\treport.Warning(c.line, \"discovery URL is not valid\")\n\t}\n}\n\n// checkEncoding validates that, for each file under 'write_files', the\n// content can be decoded given the specified encoding.\nfunc checkEncoding(cfg Node, report *Report) {\n\tfor _, f := range cfg.Child(\"write_files\").children {\n\t\te := f.Child(\"encoding\")\n\t\tif !e.IsValid() {\n\t\t\tcontinue\n\t\t}\n\n\t\tc := f.Child(\"content\")\n\t\tif _, err := config.DecodeContent(c.String(), e.String()); err != nil {\n\t\t\treport.Error(c.line, fmt.Sprintf(\"content cannot be decoded as %q\", e.String()))\n\t\t}\n\t}\n}\n\n// checkStructure compares the provided config to the empty config.CloudConfig\n// structure. Each node is checked to make sure that it exists in the known\n// structure and that its type is compatible.\nfunc checkStructure(cfg Node, report *Report) {\n\tg := NewNode(config.CloudConfig{}, NewContext([]byte{}))\n\tcheckNodeStructure(cfg, g, report)\n}\n\nfunc checkNodeStructure(n, g Node, r *Report) {\n\tif !isCompatible(n.Kind(), g.Kind()) {\n\t\tr.Warning(n.line, fmt.Sprintf(\"incorrect type for %q (want %s)\", n.name, g.HumanType()))\n\t\treturn\n\t}\n\n\tswitch g.Kind() {\n\tcase reflect.Struct:\n\t\tfor _, cn := range n.children {\n\t\t\tif cg := g.Child(cn.name); cg.IsValid() {\n\t\t\t\tif msg := cg.field.Tag.Get(\"deprecated\"); msg != \"\" {\n\t\t\t\t\tr.Warning(cn.line, fmt.Sprintf(\"deprecated key %q (%s)\", cn.name, msg))\n\t\t\t\t}\n\t\t\t\tcheckNodeStructure(cn, cg, r)\n\t\t\t} else {\n\t\t\t\tr.Warning(cn.line, fmt.Sprintf(\"unrecognized key %q\", cn.name))\n\t\t\t}\n\t\t}\n\tcase reflect.Slice:\n\t\tfor _, cn := range n.children {\n\t\t\tvar cg Node\n\t\t\tc := g.Type().Elem()\n\t\t\ttoNode(reflect.New(c).Elem().Interface(), Context{}, &cg)\n\t\t\tcheckNodeStructure(cn, cg, r)\n\t\t}\n\tcase reflect.String, reflect.Int, reflect.Float64, reflect.Bool:\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"checkNodeStructure(): unhandled kind %s\", g.Kind()))\n\t}\n}\n\n// isCompatible determines if the type of kind n can be converted to the type\n// of kind g in the context of YAML. This is not an exhaustive list, but its\n// enough for the purposes of cloud-config validation.\nfunc isCompatible(n, g reflect.Kind) bool {\n\tswitch g {\n\tcase reflect.String:\n\t\treturn n == reflect.String || n == reflect.Int || n == reflect.Float64 || n == reflect.Bool\n\tcase reflect.Struct:\n\t\treturn n == reflect.Struct || n == reflect.Map\n\tcase reflect.Float64:\n\t\treturn n == reflect.Float64 || n == reflect.Int\n\tcase reflect.Bool, reflect.Slice, reflect.Int:\n\t\treturn n == g\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"isCompatible(): unhandled kind %s\", g))\n\t}\n}\n\n// checkValidity checks the value of every node in the provided config by\n// running config.AssertValid() on it.\nfunc checkValidity(cfg Node, report *Report) {\n\tg := NewNode(config.CloudConfig{}, NewContext([]byte{}))\n\tcheckNodeValidity(cfg, g, report)\n}\n\nfunc checkNodeValidity(n, g Node, r *Report) {\n\tif err := config.AssertValid(n.Value, g.field.Tag.Get(\"valid\")); err != nil {\n\t\tr.Error(n.line, fmt.Sprintf(\"invalid value %v\", n.Value.Interface()))\n\t}\n\tswitch g.Kind() {\n\tcase reflect.Struct:\n\t\tfor _, cn := range n.children {\n\t\t\tif cg := g.Child(cn.name); cg.IsValid() {\n\t\t\t\tcheckNodeValidity(cn, cg, r)\n\t\t\t}\n\t\t}\n\tcase reflect.Slice:\n\t\tfor _, cn := range n.children {\n\t\t\tvar cg Node\n\t\t\tc := g.Type().Elem()\n\t\t\ttoNode(reflect.New(c).Elem().Interface(), Context{}, &cg)\n\t\t\tcheckNodeValidity(cn, cg, r)\n\t\t}\n\tcase reflect.String, reflect.Int, reflect.Float64, reflect.Bool:\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"checkNodeValidity(): unhandled kind %s\", g.Kind()))\n\t}\n}\n\n// checkWriteFiles checks to make sure that the target file can actually be\n// written. Note that this check is approximate (it only checks to see if the file\n// is under /usr).\nfunc checkWriteFiles(cfg Node, report *Report) {\n\tfor _, f := range cfg.Child(\"write_files\").children {\n\t\tc := f.Child(\"path\")\n\t\tif !c.IsValid() {\n\t\t\tcontinue\n\t\t}\n\n\t\td := path.Dir(c.String())\n\t\tswitch {\n\t\tcase strings.HasPrefix(d, \"/usr\"):\n\t\t\treport.Error(c.line, \"file cannot be written to a read-only filesystem\")\n\t\t}\n\t}\n}\n\n// checkWriteFilesUnderCoreos checks to see if the 'write_files' node is a\n// child of 'coreos' (it shouldn't be).\nfunc checkWriteFilesUnderCoreos(cfg Node, report *Report) {\n\tc := cfg.Child(\"coreos\").Child(\"write_files\")\n\tif c.IsValid() {\n\t\treport.Info(c.line, \"write_files doesn't belong under coreos\")\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/rules_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestCheckDiscoveryURL(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  etcd:\\n    discovery: https://discovery.etcd.io/00000000000000000000000000000000\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  etcd:\\n    discovery: http://custom.domain/mytoken\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  etcd:\\n    discovery: disco\",\n\t\t\tentries: []Entry{{entryWarning, \"discovery URL is not valid\", 3}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckDiscoveryURL(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestCheckEncoding(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - encoding: base64\\n    content: aGVsbG8K\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - content: !!binary aGVsbG8K\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"write_files:\\n  - encoding: base64\\n    content: !!binary aGVsbG8K\",\n\t\t\tentries: []Entry{{entryError, `content cannot be decoded as \"base64\"`, 3}},\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - encoding: base64\\n    content: !!binary YUdWc2JHOEsK\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - encoding: gzip\\n    content: !!binary H4sIAOC3tVQAA8tIzcnJ5wIAIDA6NgYAAAA=\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - encoding: gzip+base64\\n    content: H4sIAOC3tVQAA8tIzcnJ5wIAIDA6NgYAAAA=\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"write_files:\\n  - encoding: custom\\n    content: hello\",\n\t\t\tentries: []Entry{{entryError, `content cannot be decoded as \"custom\"`, 3}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckEncoding(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestCheckStructure(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\n\t\t// Test for unrecognized keys\n\t\t{\n\t\t\tconfig:  \"test:\",\n\t\t\tentries: []Entry{{entryWarning, \"unrecognized key \\\"test\\\"\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  etcd:\\n    bad:\",\n\t\t\tentries: []Entry{{entryWarning, \"unrecognized key \\\"bad\\\"\", 3}},\n\t\t},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  etcd:\\n    discovery: good\",\n\t\t},\n\n\t\t// Test for deprecated keys\n\t\t{\n\t\t\tconfig: \"coreos:\\n  etcd:\\n    addr: hi\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  etcd:\\n    proxy: hi\",\n\t\t\tentries: []Entry{{entryWarning, \"deprecated key \\\"proxy\\\" (etcd2 options no longer work for etcd)\", 3}},\n\t\t},\n\n\t\t// Test for error on list of nodes\n\t\t{\n\t\t\tconfig: \"coreos:\\n  units:\\n    - hello\\n    - goodbye\",\n\t\t\tentries: []Entry{\n\t\t\t\t{entryWarning, \"incorrect type for \\\"units[0]\\\" (want struct)\", 3},\n\t\t\t\t{entryWarning, \"incorrect type for \\\"units[1]\\\" (want struct)\", 4},\n\t\t\t},\n\t\t},\n\n\t\t// Test for incorrect types\n\t\t// Want boolean\n\t\t{\n\t\t\tconfig: \"coreos:\\n  units:\\n    - enable: true\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  units:\\n    - enable: 4\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"enable\\\" (want bool)\", 3}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  units:\\n    - enable: bad\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"enable\\\" (want bool)\", 3}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  units:\\n    - enable:\\n        bad:\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"enable\\\" (want bool)\", 3}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  units:\\n    - enable:\\n      - bad\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"enable\\\" (want bool)\", 3}},\n\t\t},\n\t\t// Want string\n\t\t{\n\t\t\tconfig: \"hostname: true\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"hostname: 4\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"hostname: host\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"hostname:\\n  name:\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"hostname\\\" (want string)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"hostname:\\n  - name\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"hostname\\\" (want string)\", 1}},\n\t\t},\n\t\t// Want struct\n\t\t{\n\t\t\tconfig:  \"coreos: true\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"coreos\\\" (want struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos: 4\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"coreos\\\" (want struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos: hello\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"coreos\\\" (want struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  etcd:\\n    discovery: fire in the disco\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  - hello\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"coreos\\\" (want struct)\", 1}},\n\t\t},\n\t\t// Want []string\n\t\t{\n\t\t\tconfig:  \"ssh_authorized_keys: true\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"ssh_authorized_keys\\\" (want []string)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"ssh_authorized_keys: 4\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"ssh_authorized_keys\\\" (want []string)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"ssh_authorized_keys: key\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"ssh_authorized_keys\\\" (want []string)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"ssh_authorized_keys:\\n  key: value\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"ssh_authorized_keys\\\" (want []string)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig: \"ssh_authorized_keys:\\n  - key\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"ssh_authorized_keys:\\n  - key: value\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"ssh_authorized_keys[0]\\\" (want string)\", 2}},\n\t\t},\n\t\t// Want []struct\n\t\t{\n\t\t\tconfig:  \"users:\\n  true\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users\\\" (want []struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  4\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users\\\" (want []struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  bad\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users\\\" (want []struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  bad:\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users\\\" (want []struct)\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig: \"users:\\n  - name: good\",\n\t\t},\n\t\t// Want struct within array\n\t\t{\n\t\t\tconfig:  \"users:\\n  - true\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users[0]\\\" (want struct)\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  - name: hi\\n  - true\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users[1]\\\" (want struct)\", 3}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  - 4\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users[0]\\\" (want struct)\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  - bad\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users[0]\\\" (want struct)\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"users:\\n  - - bad\",\n\t\t\tentries: []Entry{{entryWarning, \"incorrect type for \\\"users[0]\\\" (want struct)\", 2}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckStructure(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestCheckValidity(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t// string\n\t\t{\n\t\t\tconfig: \"hostname: test\",\n\t\t},\n\n\t\t// int\n\t\t{\n\t\t\tconfig: \"coreos:\\n  fleet:\\n    verbosity: 2\",\n\t\t},\n\n\t\t// bool\n\t\t{\n\t\t\tconfig: \"coreos:\\n  units:\\n    - enable: true\",\n\t\t},\n\n\t\t// slice\n\t\t{\n\t\t\tconfig: \"coreos:\\n  units:\\n    - command: start\\n    - name: stop\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  units:\\n    - command: lol\",\n\t\t\tentries: []Entry{{entryError, \"invalid value lol\", 3}},\n\t\t},\n\n\t\t// struct\n\t\t{\n\t\t\tconfig: \"coreos:\\n  update:\\n    reboot_strategy: off\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  update:\\n    reboot_strategy: always\",\n\t\t\tentries: []Entry{{entryError, \"invalid value always\", 3}},\n\t\t},\n\n\t\t// unknown\n\t\t{\n\t\t\tconfig: \"unknown: hi\",\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckValidity(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestCheckWriteFiles(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - path: /valid\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - path: /tmp/usr/valid\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"write_files:\\n  - path: /usr/invalid\",\n\t\t\tentries: []Entry{{entryError, \"file cannot be written to a read-only filesystem\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"write-files:\\n  - path: /tmp/../usr/invalid\",\n\t\t\tentries: []Entry{{entryError, \"file cannot be written to a read-only filesystem\", 2}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckWriteFiles(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestCheckWriteFilesUnderCoreos(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - path: /hi\",\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  write_files:\\n    - path: /hi\",\n\t\t\tentries: []Entry{{entryInfo, \"write_files doesn't belong under coreos\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"coreos:\\n  write-files:\\n    - path: /hyphen\",\n\t\t\tentries: []Entry{{entryInfo, \"write_files doesn't belong under coreos\", 2}},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr := Report{}\n\t\tn, err := parseCloudConfig([]byte(tt.config), &r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tcheckWriteFilesUnderCoreos(n, &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%d, %q): want %#v, got %#v\", i, tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/validate.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\n\t\"github.com/coreos/yaml\"\n)\n\nvar (\n\tyamlLineError = regexp.MustCompile(`^YAML error: line (?P<line>[[:digit:]]+): (?P<msg>.*)$`)\n\tyamlError     = regexp.MustCompile(`^YAML error: (?P<msg>.*)$`)\n)\n\n// Validate runs a series of validation tests against the given userdata and\n// returns a report detailing all of the issues. Presently, only cloud-configs\n// can be validated.\nfunc Validate(userdataBytes []byte) (Report, error) {\n\tswitch {\n\tcase len(userdataBytes) == 0:\n\t\treturn Report{}, nil\n\tcase config.IsScript(string(userdataBytes)):\n\t\treturn Report{}, nil\n\tcase config.IsIgnitionConfig(string(userdataBytes)):\n\t\treturn Report{}, nil\n\tcase config.IsCloudConfig(string(userdataBytes)):\n\t\treturn validateCloudConfig(userdataBytes, Rules)\n\tdefault:\n\t\treturn Report{entries: []Entry{\n\t\t\t{kind: entryError, message: `must be \"#cloud-config\" or begin with \"#!\"`, line: 1},\n\t\t}}, nil\n\t}\n}\n\n// validateCloudConfig runs all of the validation rules in Rules and returns\n// the resulting report and any errors encountered.\nfunc validateCloudConfig(config []byte, rules []rule) (report Report, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"%v\", r)\n\t\t}\n\t}()\n\n\tc, err := parseCloudConfig(config, &report)\n\tif err != nil {\n\t\treturn report, err\n\t}\n\n\tfor _, r := range rules {\n\t\tr(c, &report)\n\t}\n\treturn report, nil\n}\n\n// parseCloudConfig parses the provided config into a node structure and logs\n// any parsing issues into the provided report. Unrecoverable errors are\n// returned as an error.\nfunc parseCloudConfig(cfg []byte, report *Report) (Node, error) {\n\tyaml.UnmarshalMappingKeyTransform = func(nameIn string) (nameOut string) {\n\t\treturn nameIn\n\t}\n\t// unmarshal the config into an implicitly-typed form. The yaml library\n\t// will implicitly convert types into their normalized form\n\t// (e.g. 0744 -> 484, off -> false).\n\tvar weak map[interface{}]interface{}\n\tif err := yaml.Unmarshal(cfg, &weak); err != nil {\n\t\tmatches := yamlLineError.FindStringSubmatch(err.Error())\n\t\tif len(matches) == 3 {\n\t\t\tline, err := strconv.Atoi(matches[1])\n\t\t\tif err != nil {\n\t\t\t\treturn Node{}, err\n\t\t\t}\n\t\t\tmsg := matches[2]\n\t\t\treport.Error(line, msg)\n\t\t\treturn Node{}, nil\n\t\t}\n\n\t\tmatches = yamlError.FindStringSubmatch(err.Error())\n\t\tif len(matches) == 2 {\n\t\t\treport.Error(1, matches[1])\n\t\t\treturn Node{}, nil\n\t\t}\n\n\t\treturn Node{}, errors.New(\"couldn't parse yaml error\")\n\t}\n\tw := NewNode(weak, NewContext(cfg))\n\tw = normalizeNodeNames(w, report)\n\n\t// unmarshal the config into the explicitly-typed form.\n\tyaml.UnmarshalMappingKeyTransform = func(nameIn string) (nameOut string) {\n\t\treturn strings.Replace(nameIn, \"-\", \"_\", -1)\n\t}\n\tvar strong config.CloudConfig\n\tif err := yaml.Unmarshal([]byte(cfg), &strong); err != nil {\n\t\treturn Node{}, err\n\t}\n\ts := NewNode(strong, NewContext(cfg))\n\n\t// coerceNodes weak nodes and strong nodes. strong nodes replace weak nodes\n\t// if they are compatible types (this happens when the yaml library\n\t// converts the input).\n\t// (e.g. weak 484 is replaced by strong 0744, weak 4 is not replaced by\n\t// strong false)\n\treturn coerceNodes(w, s), nil\n}\n\n// coerceNodes recursively evaluates two nodes, returning a new node containing\n// either the weak or strong node's value and its recursively processed\n// children. The strong node's value is used if the two nodes are leafs, are\n// both valid, and are compatible types (defined by isCompatible()). The weak\n// node is returned in all other cases. coerceNodes is used to counteract the\n// effects of yaml's automatic type conversion. The weak node is the one\n// resulting from unmarshalling into an empty interface{} (the type is\n// inferred). The strong node is the one resulting from unmarshalling into a\n// struct. If the two nodes are of compatible types, the yaml library correctly\n// parsed the value into the strongly typed unmarshalling. In this case, we\n// prefer the strong node because its actually the type we are expecting.\nfunc coerceNodes(w, s Node) Node {\n\tn := w\n\tn.children = nil\n\tif len(w.children) == 0 && len(s.children) == 0 &&\n\t\tw.IsValid() && s.IsValid() &&\n\t\tisCompatible(w.Kind(), s.Kind()) {\n\t\tn.Value = s.Value\n\t}\n\n\tfor _, cw := range w.children {\n\t\tn.children = append(n.children, coerceNodes(cw, s.Child(cw.name)))\n\t}\n\treturn n\n}\n\n// normalizeNodeNames replaces all occurrences of '-' with '_' within key names\n// and makes a note of each replacement in the report.\nfunc normalizeNodeNames(node Node, report *Report) Node {\n\tif strings.Contains(node.name, \"-\") {\n\t\t// TODO(crawford): Enable this message once the new validator hits stable.\n\t\t//report.Info(node.line, fmt.Sprintf(\"%q uses '-' instead of '_'\", node.name))\n\t\tnode.name = strings.Replace(node.name, \"-\", \"_\", -1)\n\t}\n\tfor i := range node.children {\n\t\tnode.children[i] = normalizeNodeNames(node.children[i], report)\n\t}\n\treturn node\n}\n"
  },
  {
    "path": "config/cloudinit/config/validate/validate_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 validate\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestParseCloudConfig(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\tentries []Entry\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig:  \"\t\",\n\t\t\tentries: []Entry{{entryError, \"found character that cannot start any token\", 1}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"a:\\na\",\n\t\t\tentries: []Entry{{entryError, \"could not find expected ':'\", 2}},\n\t\t},\n\t\t{\n\t\t\tconfig:  \"#hello\\na:\\na\",\n\t\t\tentries: []Entry{{entryError, \"could not find expected ':'\", 3}},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tr := Report{}\n\t\tparseCloudConfig([]byte(tt.config), &r)\n\n\t\tif e := r.Entries(); !reflect.DeepEqual(tt.entries, e) {\n\t\t\tt.Errorf(\"bad report (%s): want %#v, got %#v\", tt.config, tt.entries, e)\n\t\t}\n\t}\n}\n\nfunc TestValidateCloudConfig(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\t\trules  []rule\n\n\t\treport Report\n\t\terr    error\n\t}{\n\t\t{\n\t\t\trules: []rule{func(_ Node, _ *Report) { panic(\"something happened\") }},\n\t\t\terr:   errors.New(\"something happened\"),\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - permissions: 0744\",\n\t\t\trules:  Rules,\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - permissions: '0744'\",\n\t\t\trules:  Rules,\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - permissions: 744\",\n\t\t\trules:  Rules,\n\t\t},\n\t\t{\n\t\t\tconfig: \"write_files:\\n  - permissions: '744'\",\n\t\t\trules:  Rules,\n\t\t},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  update:\\n    reboot-strategy: off\",\n\t\t\trules:  Rules,\n\t\t},\n\t\t{\n\t\t\tconfig: \"coreos:\\n  update:\\n    reboot-strategy: false\",\n\t\t\trules:  Rules,\n\t\t\treport: Report{entries: []Entry{{entryError, \"invalid value false\", 3}}},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tr, err := validateCloudConfig([]byte(tt.config), tt.rules)\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (%s): want %v, got %v\", tt.config, tt.err, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.report, r) {\n\t\t\tt.Errorf(\"bad report (%s): want %+v, got %+v\", tt.config, tt.report, r)\n\t\t}\n\t}\n}\n\nfunc TestValidate(t *testing.T) {\n\ttests := []struct {\n\t\tconfig string\n\n\t\treport Report\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: \"#!/bin/bash\\necho hey\",\n\t\t},\n\t\t{\n\t\t\tconfig: \"{}\",\n\t\t\treport: Report{entries: []Entry{{entryError, `must be \"#cloud-config\" or begin with \"#!\"`, 1}}},\n\t\t},\n\t\t{\n\t\t\tconfig: `{\"ignitionVersion\":0}`,\n\t\t},\n\t\t{\n\t\t\tconfig: `{\"ignitionVersion\":1}`,\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tr, err := Validate([]byte(tt.config))\n\t\tif err != nil {\n\t\t\tt.Errorf(\"bad error (case #%d): want %v, got %v\", i, nil, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.report, r) {\n\t\t\tt.Errorf(\"bad report (case #%d): want %+v, got %+v\", i, tt.report, r)\n\t\t}\n\t}\n}\n\nfunc BenchmarkValidate(b *testing.B) {\n\tconfig := `#cloud-config\nhostname: test\n\ncoreos:\n  etcd:\n    name:      node001\n    discovery: https://discovery.etcd.io/disco\n    addr:      $public_ipv4:4001\n    peer-addr: $private_ipv4:7001\n  fleet:\n    verbosity: 2\n    metadata:  \"hi\"\n  update:\n    reboot-strategy: off\n  units:\n    - name:    hi.service\n      command: start\n      enable:  true\n    - name:    bye.service\n      command: stop\n\nssh_authorized_keys:\n  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...\n  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...\n\nusers:\n  - name: me\n\nwrite_files:\n  - path: /etc/yes\n    content: \"Hi\"\n\nmanage_etc_hosts: localhost`\n\n\tfor i := 0; i < b.N; i++ {\n\t\tif _, err := Validate([]byte(config)); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/cover",
    "content": "#!/bin/bash -e\n#\n# Generate coverage HTML for a package\n# e.g. PKG=./initialize ./cover\n#\n\nif [ -z \"$PKG\" ]; then\n\techo \"cover only works with a single package, sorry\"\n\texit 255\nfi\n\nCOVEROUT=\"coverage\"\n\nif ! [ -d \"$COVEROUT\" ]; then\n\tmkdir \"$COVEROUT\"\nfi\n\n# strip out slashes and dots\nCOVERPKG=${PKG//\\//}\nCOVERPKG=${COVERPKG//./}\n\n# generate arg for \"go test\"\nexport COVER=\"-coverprofile ${COVEROUT}/${COVERPKG}.out\"\n\nsource test\n\ngo tool cover -html=${COVEROUT}/${COVERPKG}.out\n"
  },
  {
    "path": "config/cloudinit/datasource/configdrive/configdrive.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 configdrive\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/docker/docker/pkg/mount\"\n)\n\nconst (\n\tconfigDevName       = \"config-2\"\n\tconfigDev           = \"LABEL=\" + configDevName\n\tconfigDevMountPoint = \"/media/config-2\"\n\topenstackAPIVersion = \"latest\"\n)\n\ntype ConfigDrive struct {\n\troot                string\n\treadFile            func(filename string) ([]byte, error)\n\tlastError           error\n\tavailabilityChanges bool\n}\n\nfunc NewDatasource(root string) *ConfigDrive {\n\treturn &ConfigDrive{root, ioutil.ReadFile, nil, true}\n}\n\nfunc (cd *ConfigDrive) IsAvailable() bool {\n\tif cd.root == configDevMountPoint {\n\t\tcd.lastError = MountConfigDrive()\n\t\tif cd.lastError != nil {\n\t\t\tlog.Error(cd.lastError)\n\t\t\t// Don't keep retrying if we can't mount\n\t\t\tcd.availabilityChanges = false\n\t\t\treturn false\n\t\t}\n\t\tdefer cd.Finish()\n\t}\n\n\t_, cd.lastError = os.Stat(cd.root)\n\treturn !os.IsNotExist(cd.lastError)\n\t// TODO: consider changing IsNotExists to not-available _and_ does not change\n}\n\nfunc (cd *ConfigDrive) Finish() error {\n\treturn UnmountConfigDrive()\n}\n\nfunc (cd *ConfigDrive) String() string {\n\tif cd.lastError != nil {\n\t\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", cd.Type(), cd.root, cd.lastError)\n\t}\n\treturn fmt.Sprintf(\"%s: %s\", cd.Type(), cd.root)\n}\n\nfunc (cd *ConfigDrive) AvailabilityChanges() bool {\n\treturn cd.availabilityChanges\n}\n\nfunc (cd *ConfigDrive) ConfigRoot() string {\n\treturn cd.openstackRoot()\n}\n\nfunc (cd *ConfigDrive) FetchMetadata() (metadata datasource.Metadata, err error) {\n\tvar data []byte\n\tvar m struct {\n\t\tSSHAuthorizedKeyMap map[string]string `json:\"public_keys\"`\n\t\tHostname            string            `json:\"hostname\"`\n\t\tNetworkConfig       struct {\n\t\t\tContentPath string `json:\"content_path\"`\n\t\t} `json:\"network_config\"`\n\t}\n\n\tif data, err = cd.tryReadFile(path.Join(cd.openstackVersionRoot(), \"meta_data.json\")); err != nil || len(data) == 0 {\n\t\treturn\n\t}\n\tif err = json.Unmarshal([]byte(data), &m); err != nil {\n\t\treturn\n\t}\n\n\tmetadata.SSHPublicKeys = m.SSHAuthorizedKeyMap\n\tmetadata.Hostname = m.Hostname\n\t// TODO: I don't think we've used this for anything\n\t/*\tif m.NetworkConfig.ContentPath != \"\" {\n\t\t\tmetadata.NetworkConfig, err = cd.tryReadFile(path.Join(cd.openstackRoot(), m.NetworkConfig.ContentPath))\n\t\t}\n\t*/\n\treturn\n}\n\nfunc (cd *ConfigDrive) FetchUserdata() ([]byte, error) {\n\treturn cd.tryReadFile(path.Join(cd.openstackVersionRoot(), \"user_data\"))\n}\n\nfunc (cd *ConfigDrive) Type() string {\n\treturn \"cloud-drive\"\n}\n\nfunc (cd *ConfigDrive) openstackRoot() string {\n\treturn path.Join(cd.root, \"openstack\")\n}\n\nfunc (cd *ConfigDrive) openstackVersionRoot() string {\n\treturn path.Join(cd.openstackRoot(), openstackAPIVersion)\n}\n\nfunc (cd *ConfigDrive) tryReadFile(filename string) ([]byte, error) {\n\tif cd.root == configDevMountPoint {\n\t\tcd.lastError = MountConfigDrive()\n\t\tif cd.lastError != nil {\n\t\t\tlog.Error(cd.lastError)\n\t\t\treturn nil, cd.lastError\n\t\t}\n\t\tdefer cd.Finish()\n\t}\n\tlog.Debugf(\"Attempting to read from %q\\n\", filename)\n\tdata, err := cd.readFile(filename)\n\tif os.IsNotExist(err) {\n\t\terr = nil\n\t}\n\tif err != nil {\n\t\tlog.Errorf(\"ERROR read cloud-config file(%s) - err: %q\", filename, err)\n\t}\n\treturn data, err\n}\n\nfunc MountConfigDrive() error {\n\tif err := os.MkdirAll(configDevMountPoint, 700); err != nil {\n\t\treturn err\n\t}\n\n\tconfigDev := util.ResolveDevice(configDev)\n\n\tif configDev == \"\" {\n\t\treturn mount.Mount(configDevName, configDevMountPoint, \"9p\", \"trans=virtio,version=9p2000.L\")\n\t}\n\n\tfsType, err := util.GetFsType(configDev)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount.Mount(configDev, configDevMountPoint, fsType, \"ro\")\n}\n\nfunc UnmountConfigDrive() error {\n\treturn syscall.Unmount(configDevMountPoint, 0)\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/configdrive/configdrive_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 configdrive\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/test\"\n)\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot  string\n\t\tfiles test.MockFilesystem\n\n\t\tmetadata datasource.Metadata\n\t}{\n\t\t{\n\t\t\troot:  \"/\",\n\t\t\tfiles: test.NewMockFilesystem(test.File{Path: \"/openstack/latest/meta_data.json\", Contents: \"\"}),\n\t\t},\n\t\t{\n\t\t\troot:  \"/\",\n\t\t\tfiles: test.NewMockFilesystem(test.File{Path: \"/openstack/latest/meta_data.json\", Contents: `{\"ignore\": \"me\"}`}),\n\t\t},\n\t\t{\n\t\t\troot:     \"/\",\n\t\t\tfiles:    test.NewMockFilesystem(test.File{Path: \"/openstack/latest/meta_data.json\", Contents: `{\"hostname\": \"host\"}`}),\n\t\t\tmetadata: datasource.Metadata{Hostname: \"host\"},\n\t\t},\n\t\t{\n\t\t\troot: \"/media/configdrive\",\n\t\t\tfiles: test.NewMockFilesystem(test.File{Path: \"/media/configdrive/openstack/latest/meta_data.json\", Contents: `{\"hostname\": \"host\", \"network_config\": {\"content_path\": \"config_file.json\"}, \"public_keys\":{\"1\": \"key1\", \"2\": \"key2\"}}`},\n\t\t\t\ttest.File{Path: \"/media/configdrive/openstack/config_file.json\", Contents: \"make it work\"},\n\t\t\t),\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname: \"host\",\n\t\t\t\tSSHPublicKeys: map[string]string{\n\t\t\t\t\t\"1\": \"key1\",\n\t\t\t\t\t\"2\": \"key2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t} {\n\t\tcd := ConfigDrive{tt.root, tt.files.ReadFile, nil, true}\n\t\tmetadata, err := cd.FetchMetadata()\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"bad error for %+v: want %v, got %q\", tt, nil, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.metadata, metadata) {\n\t\t\tt.Fatalf(\"bad metadata for %+v: want %#v, got %#v\", tt, tt.metadata, metadata)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot  string\n\t\tfiles test.MockFilesystem\n\n\t\tuserdata string\n\t}{\n\t\t{\n\t\t\t\"/\",\n\t\t\ttest.NewMockFilesystem(),\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"/\",\n\t\t\ttest.NewMockFilesystem(test.File{Path: \"/openstack/latest/user_data\", Contents: \"userdata\"}),\n\t\t\t\"userdata\",\n\t\t},\n\t\t{\n\t\t\t\"/media/configdrive\",\n\t\t\ttest.NewMockFilesystem(test.File{Path: \"/media/configdrive/openstack/latest/user_data\", Contents: \"userdata\"}),\n\t\t\t\"userdata\",\n\t\t},\n\t} {\n\t\tcd := ConfigDrive{tt.root, tt.files.ReadFile, nil, true}\n\t\tuserdata, err := cd.FetchUserdata()\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"bad error for %+v: want %v, got %q\", tt, nil, err)\n\t\t}\n\t\tif string(userdata) != tt.userdata {\n\t\t\tt.Fatalf(\"bad userdata for %+v: want %q, got %q\", tt, tt.userdata, userdata)\n\t\t}\n\t}\n}\n\nfunc TestConfigRoot(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\tconfigRoot string\n\t}{\n\t\t{\n\t\t\t\"/\",\n\t\t\t\"/openstack\",\n\t\t},\n\t\t{\n\t\t\t\"/media/configdrive\",\n\t\t\t\"/media/configdrive/openstack\",\n\t\t},\n\t} {\n\t\tcd := ConfigDrive{tt.root, nil, nil, true}\n\t\tif configRoot := cd.ConfigRoot(); configRoot != tt.configRoot {\n\t\t\tt.Fatalf(\"bad config root for %q: want %q, got %q\", tt, tt.configRoot, configRoot)\n\t\t}\n\t}\n}\n\nfunc TestNewDatasource(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\texpectRoot string\n\t}{\n\t\t{\n\t\t\troot:       \"\",\n\t\t\texpectRoot: \"\",\n\t\t},\n\t\t{\n\t\t\troot:       \"/media/configdrive\",\n\t\t\texpectRoot: \"/media/configdrive\",\n\t\t},\n\t} {\n\t\tservice := NewDatasource(tt.root)\n\t\tif service.root != tt.expectRoot {\n\t\t\tt.Fatalf(\"bad root (%q): want %q, got %q\", tt.root, tt.expectRoot, service.root)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/datasource.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 datasource\n\nimport (\n\t\"net\"\n\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\ntype Datasource interface {\n\tIsAvailable() bool\n\tAvailabilityChanges() bool\n\tConfigRoot() string\n\tFetchMetadata() (Metadata, error)\n\tFetchUserdata() ([]byte, error)\n\tType() string\n\tString() string\n\t// Finish gives the datasource the opportunity to clean up, unmount or release any open / cache resources\n\tFinish() error\n}\n\ntype Metadata struct {\n\t// TODO: move to netconf/types.go ?\n\t// see https://ahmetalpbalkan.com/blog/comparison-of-instance-metadata-services/\n\tHostname      string\n\tSSHPublicKeys map[string]string\n\tNetworkConfig netconf.NetworkConfig\n\tRootDisk      string\n\n\tPublicIPv4  net.IP\n\tPublicIPv6  net.IP\n\tPrivateIPv4 net.IP\n\tPrivateIPv6 net.IP\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/file/file.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 file\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n)\n\ntype LocalFile struct {\n\tpath      string\n\tlastError error\n}\n\nfunc NewDatasource(path string) *LocalFile {\n\treturn &LocalFile{path, nil}\n}\n\nfunc (f *LocalFile) IsAvailable() bool {\n\t_, f.lastError = os.Stat(f.path)\n\treturn !os.IsNotExist(f.lastError)\n}\n\nfunc (f *LocalFile) Finish() error {\n\treturn nil\n}\n\nfunc (f *LocalFile) String() string {\n\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", f.Type(), f.path, f.lastError)\n}\n\nfunc (f *LocalFile) AvailabilityChanges() bool {\n\treturn true\n}\n\nfunc (f *LocalFile) ConfigRoot() string {\n\treturn \"\"\n}\n\nfunc (f *LocalFile) FetchMetadata() (datasource.Metadata, error) {\n\treturn datasource.Metadata{}, nil\n}\n\nfunc (f *LocalFile) FetchUserdata() ([]byte, error) {\n\treturn ioutil.ReadFile(f.path)\n}\n\nfunc (f *LocalFile) Type() string {\n\treturn \"local-file\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/aliyun/metadata.go",
    "content": "package aliyun\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nconst (\n\tDefaultAddress = \"http://100.100.100.200/\"\n\tapiVersion     = \"2016-01-01/\"\n\tuserdataPath   = apiVersion + \"user-data/\"\n\tmetadataPath   = apiVersion + \"meta-data/\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = DefaultAddress\n\t}\n\treturn &MetadataService{metadata.NewDatasource(root, apiVersion, userdataPath, metadataPath, nil)}\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\nfunc (ms MetadataService) FetchMetadata() (metadata datasource.Metadata, err error) {\n\t// see https://www.alibabacloud.com/help/faq-detail/49122.htm\n\tmetadata.NetworkConfig = netconf.NetworkConfig{}\n\n\tenablePublicKey := false\n\n\trootContents, err := ms.FetchAttributes(\"\")\n\tif err != nil {\n\t\treturn metadata, err\n\t}\n\tfor _, c := range rootContents {\n\t\tif c == \"public-keys/\" {\n\t\t\tenablePublicKey = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !enablePublicKey {\n\t\treturn metadata, fmt.Errorf(\"The public-keys should be enable in %s\", ms.Type())\n\t}\n\n\tkeynames, err := ms.FetchAttributes(\"public-keys/\")\n\tif err != nil {\n\t\treturn metadata, err\n\t}\n\n\tmetadata.SSHPublicKeys = map[string]string{}\n\tfor _, k := range keynames {\n\t\tk = strings.TrimRight(k, \"/\")\n\t\tsshkey, err := ms.FetchAttribute(fmt.Sprintf(\"public-keys/%s/openssh-key\", k))\n\t\tif err != nil {\n\t\t\treturn metadata, err\n\t\t}\n\t\tmetadata.SSHPublicKeys[k] = sshkey\n\t\tlog.Printf(\"Found SSH key for %q\\n\", k)\n\t}\n\n\tif hostname, err := ms.FetchAttribute(\"hostname\"); err == nil {\n\t\tmetadata.Hostname = hostname\n\t\tlog.Printf(\"Found hostname  %s\\n\", hostname)\n\t} else {\n\t\treturn metadata, err\n\t}\n\n\treturn metadata, nil\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"aliyun-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/aliyun/metadata_test.go",
    "content": "package aliyun\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"aliyun-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"2016-01-01/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2016-01-01/meta-data/\": \"hostname\\n\",\n\t\t\t},\n\t\t\texpectErr: fmt.Errorf(\"The public-keys should be enable in aliyun-metadata-service\"),\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"2016-01-01/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2016-01-01/meta-data/\":                           \"hostname\\npublic-keys/\\n\",\n\t\t\t\t\"/2016-01-01/meta-data/hostname\":                   \"host\",\n\t\t\t\t\"/2016-01-01/meta-data/public-keys/\":               \"xx/\",\n\t\t\t\t\"/2016-01-01/meta-data/public-keys/xx/\":            \"openssh-key\",\n\t\t\t\t\"/2016-01-01/meta-data/public-keys/xx/openssh-key\": \"key\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tSSHPublicKeys: map[string]string{\"xx\": \"key\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{metadata.Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %q, \\ngot %q\\n\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v, \\ngot %#v\\n\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/azure/metadata.go",
    "content": "package azure\n\nimport (\n\t\"encoding/json\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n)\n\nconst (\n\tmetadataHeader   = \"true\"\n\tmetadataVersion  = \"2019-02-01\"\n\tmetadataEndpoint = \"http://169.254.169.254/metadata/\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = metadataEndpoint\n\t}\n\treturn &MetadataService{metadata.NewDatasource(root, \"instance?api-version=\"+metadataVersion+\"&format=json\", \"\", \"\", assembleHeader())}\n}\n\nfunc (ms MetadataService) ConfigRoot() string {\n\treturn ms.Root + \"instance\"\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\nfunc (ms MetadataService) FetchMetadata() (datasource.Metadata, error) {\n\td, err := ms.FetchData(ms.MetadataURL())\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\ttype Plan struct {\n\t\tName      string `json:\"name,omitempty\"`\n\t\tProduct   string `json:\"product,omitempty\"`\n\t\tPublisher string `json:\"publisher,omitempty\"`\n\t}\n\ttype PublicKey struct {\n\t\tKeyData string `json:\"keyData,omitempty\"`\n\t\tPath    string `json:\"path,omitempty\"`\n\t}\n\ttype Compute struct {\n\t\tAZEnvironment        string      `json:\"azEnvironment,omitempty\"`\n\t\tCustomData           string      `json:\"customData,omitempty\"`\n\t\tLocation             string      `json:\"location,omitempty\"`\n\t\tName                 string      `json:\"name,omitempty\"`\n\t\tOffer                string      `json:\"offer,omitempty\"`\n\t\tOSType               string      `json:\"osType,omitempty\"`\n\t\tPlacementGroupID     string      `json:\"placementGroupId,omitempty\"`\n\t\tPlan                 Plan        `json:\"plan,omitempty\"`\n\t\tPlatformFaultDomain  string      `json:\"platformFaultDomain,omitempty\"`\n\t\tPlatformUpdateDomain string      `json:\"platformUpdateDomain,omitempty\"`\n\t\tProvider             string      `json:\"provider,omitempty\"`\n\t\tPublicKeys           []PublicKey `json:\"publicKeys,omitempty\"`\n\t\tPublisher            string      `json:\"publisher,omitempty\"`\n\t\tResourceGroupName    string      `json:\"resourceGroupName,omitempty\"`\n\t\tSKU                  string      `json:\"sku,omitempty\"`\n\t\tSubscriptionID       string      `json:\"subscriptionId,omitempty\"`\n\t\tTags                 string      `json:\"tags,omitempty\"`\n\t\tVersion              string      `json:\"version,omitempty\"`\n\t\tVMID                 string      `json:\"vmId,omitempty\"`\n\t\tVMScaleSetName       string      `json:\"vmScaleSetName,omitempty\"`\n\t\tVMSize               string      `json:\"vmSize,omitempty\"`\n\t\tZone                 string      `json:\"zone,omitempty\"`\n\t}\n\ttype IPAddress struct {\n\t\tPrivateIPAddress string `json:\"privateIpAddress,omitempty\"`\n\t\tPublicIPAddress  string `json:\"publicIpAddress,omitempty\"`\n\t}\n\ttype Subnet struct {\n\t\tAddress string `json:\"address,omitempty\"`\n\t\tPrefix  string `json:\"prefix,omitempty\"`\n\t}\n\ttype IPV4 struct {\n\t\tIPAddress []IPAddress `json:\"ipAddress,omitempty\"`\n\t\tSubnet    []Subnet    `json:\"subnet,omitempty\"`\n\t}\n\ttype IPV6 struct {\n\t\tIPAddress []IPAddress `json:\"ipAddress,omitempty\"`\n\t}\n\ttype Interface struct {\n\t\tIPV4       IPV4   `json:\"ipv4,omitempty\"`\n\t\tIPV6       IPV6   `json:\"ipv6,omitempty\"`\n\t\tMacAddress string `json:\"macAddress,omitempty\"`\n\t}\n\ttype Network struct {\n\t\tInterface []Interface `json:\"interface,omitempty\"`\n\t}\n\ttype Instance struct {\n\t\tCompute Compute `json:\"compute,omitempty\"`\n\t\tNetwork Network `json:\"network,omitempty\"`\n\t}\n\tinstance := &Instance{}\n\tif err := json.Unmarshal(d, instance); err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\tm := datasource.Metadata{\n\t\tHostname:      instance.Compute.Name,\n\t\tSSHPublicKeys: make(map[string]string, 0),\n\t}\n\tif len(instance.Network.Interface) > 0 {\n\t\tif len(instance.Network.Interface[0].IPV4.IPAddress) > 0 {\n\t\t\tm.PublicIPv4 = net.ParseIP(instance.Network.Interface[0].IPV4.IPAddress[0].PublicIPAddress)\n\t\t\tm.PrivateIPv4 = net.ParseIP(instance.Network.Interface[0].IPV4.IPAddress[0].PrivateIPAddress)\n\t\t}\n\t\tif len(instance.Network.Interface[0].IPV6.IPAddress) > 0 {\n\t\t\tm.PublicIPv6 = net.ParseIP(instance.Network.Interface[0].IPV6.IPAddress[0].PublicIPAddress)\n\t\t\tm.PrivateIPv6 = net.ParseIP(instance.Network.Interface[0].IPV6.IPAddress[0].PrivateIPAddress)\n\t\t}\n\t}\n\tfor i, k := range instance.Compute.PublicKeys {\n\t\tm.SSHPublicKeys[strconv.Itoa(i)] = k.KeyData\n\t}\n\treturn m, nil\n}\n\nfunc (ms MetadataService) FetchUserdata() ([]byte, error) {\n\td, err := ms.FetchData(ms.UserdataURL())\n\tif err != nil {\n\t\treturn []byte{}, err\n\t}\n\treturn config.DecodeBase64Content(string(d))\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"azure-metadata-service\"\n}\n\nfunc (ms MetadataService) MetadataURL() string {\n\t// metadata: http://169.254.169.254/metadata/instance?api-version=2019-02-01&format=json\n\treturn ms.Root + \"instance?api-version=\" + metadataVersion + \"&format=json\"\n}\n\nfunc (ms MetadataService) UserdataURL() string {\n\t// userdata: http://169.254.169.254/metadata/instance/compute/customData?api-version=2019-02-01&format=text\n\treturn ms.Root + \"instance/compute/customData?api-version=\" + metadataVersion + \"&format=text\"\n}\n\nfunc assembleHeader() http.Header {\n\th := http.Header{}\n\th.Add(\"Metadata\", metadataHeader)\n\treturn h\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/azure/metadata_test.go",
    "content": "package azure\n\nimport (\n\t\"bytes\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"azure-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestMetadataURL(t *testing.T) {\n\twant := \"http://169.254.169.254/metadata/instance?api-version=2019-02-01&format=json\"\n\tms := NewDatasource(\"\")\n\tif url := ms.MetadataURL(); url != want {\n\t\tt.Fatalf(\"bad url: want %q, got %q\", want, url)\n\t}\n}\n\nfunc TestUserdataURL(t *testing.T) {\n\twant := \"http://169.254.169.254/metadata/instance/compute/customData?api-version=2019-02-01&format=text\"\n\tms := NewDatasource(\"\")\n\tif url := ms.UserdataURL(); url != want {\n\t\tt.Fatalf(\"bad url: want %q, got %q\", want, url)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot: \"/metadata/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/metadata/instance?api-version=2019-02-01&format=json\": `{\n\t\"compute\": {\n\t\t\"azEnvironment\": \"AZUREPUBLICCLOUD\",\n\t\t\"location\": \"westus\",\n\t\t\"name\": \"rancheros\",\n\t\t\"offer\": \"\",\n\t\t\"osType\": \"Linux\",\n\t\t\"placementGroupId\": \"\",\n\t\t\"plan\": {\n\t\t\t\"name\": \"\",\n\t\t\t\"product\": \"\",\n\t\t\t\"publisher\": \"\"\n\t\t},\n\t\t\"platformFaultDomain\": \"0\",\n\t\t\"platformUpdateDomain\": \"0\",\n\t\t\"provider\": \"Microsoft.Compute\",\n\t\t\"publicKeys\": [{\n\t\t\t\"keyData\":\"publickey1\",\n\t\t\t\"path\": \"/home/rancher/.ssh/authorized_keys\"\n\t\t}],\n\t\t\"publisher\": \"\",\n\t\t\"resourceGroupName\": \"rancheros\",\n\t\t\"sku\": \"Enterprise\",\n\t\t\"subscriptionId\": \"xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx\",\n\t\t\"tags\": \"\",\n\t\t\"version\": \"\",\n\t\t\"vmId\": \"453945c8-3923-4366-b2d3-ea4c80e9b70e\",\n\t\t\"vmScaleSetName\": \"\",\n\t\t\"vmSize\": \"Standard_A1\",\n\t\t\"zone\": \"\"\n\t},\n\t\"network\": {\n\t\t\"interface\": [{\n\t\t\t\"ipv4\": {\n\t\t\t\t\"ipAddress\": [{\n\t\t\t\t\t\"privateIpAddress\": \"192.168.1.2\",\n\t\t\t\t\t\"publicIpAddress\": \"5.6.7.8\"\n\t\t\t\t}],\n\t\t\t\t\"subnet\": [{\n\t\t\t\t\t\"address\": \"192.168.1.0\",\n\t\t\t\t\t\"prefix\": \"24\"\n\t\t\t\t}]\n\t\t\t},\n\t\t\t\"ipv6\": {\n\t\t\t\t\"ipAddress\": []\n\t\t\t},\n\t\t\t\"macAddress\": \"002248020E1E\"\n\t\t}]\n\t}\n}\n`,\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tPrivateIPv4: net.ParseIP(\"192.168.1.2\"),\n\t\t\t\tPublicIPv4:  net.ParseIP(\"5.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\n\t\t\t\t\t\"0\": \"publickey1\",\n\t\t\t\t},\n\t\t\t\tHostname: \"rancheros\",\n\t\t\t},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{\n\t\t\tService: metadata.Service{\n\t\t\t\tRoot:   tt.root,\n\t\t\t\tClient: &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\t},\n\t\t}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %#v,\\n got %#v\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v,\\n got %#v\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tuserdataPath string\n\t\tresources    map[string]string\n\t\tuserdata     []byte\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot: \"/metadata/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/metadata/instance/compute/customData?api-version=2019-02-01&format=text\": \"I2Nsb3VkLWNvbmZpZwpob3N0bmFtZTogcmFuY2hlcjE=\",\n\t\t\t},\n\t\t\tuserdata: []byte(`#cloud-config\nhostname: rancher1`),\n\t\t},\n\t} {\n\t\tservice := &MetadataService{\n\t\t\tService: metadata.Service{\n\t\t\t\tRoot:   tt.root,\n\t\t\t\tClient: &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\t},\n\t\t}\n\t\tdata, err := service.FetchUserdata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): want %q, got %q\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !bytes.Equal(data, tt.userdata) {\n\t\t\tt.Fatalf(\"bad userdata (%q): want %q, got %q\", tt.resources, tt.userdata, data)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/cloudstack/metadata.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 cloudstack\n\nimport (\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nconst (\n\tapiVersion   = \"latest/\"\n\tuserdataPath = apiVersion + \"user-data\"\n\tmetadataPath = apiVersion + \"meta-data/\"\n\n\tserverIdentifier = \"dhcp_server_identifier\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) []*MetadataService {\n\troots := make([]string, 0, 5)\n\n\tif root == \"\" {\n\t\tif links, err := netconf.GetValidLinkList(); err == nil {\n\t\t\tlog.Infof(\"Checking to see if a cloudstack server-identifier is available\")\n\t\t\tfor _, link := range links {\n\t\t\t\tlinkName := link.Attrs().Name\n\t\t\t\tlog.Infof(\"searching for cloudstack server %s on %s\", serverIdentifier, linkName)\n\t\t\t\tlease := netconf.GetDhcpLease(linkName)\n\t\t\t\tif server, ok := lease[serverIdentifier]; ok {\n\t\t\t\t\tlog.Infof(\"found cloudstack server '%s'\", server)\n\t\t\t\t\tserver = \"http://\" + server + \"/\"\n\t\t\t\t\troots = append(roots, server)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tlog.Errorf(\"error getting LinkList: %s\", err)\n\t\t}\n\t} else {\n\t\troots = append(roots, root)\n\t}\n\n\tsources := make([]*MetadataService, 0, len(roots))\n\tfor _, server := range roots {\n\t\tdatasource := metadata.NewDatasourceWithCheckPath(server, apiVersion, metadataPath, userdataPath, metadataPath, nil)\n\t\tsources = append(sources, &MetadataService{datasource})\n\t}\n\treturn sources\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\nfunc (ms MetadataService) FetchMetadata() (datasource.Metadata, error) {\n\tmetadata := datasource.Metadata{}\n\n\tif sshKeys, err := ms.FetchAttributes(\"public-keys\"); err == nil {\n\t\tmetadata.SSHPublicKeys = map[string]string{}\n\t\tfor i, sshkey := range sshKeys {\n\t\t\tlog.Printf(\"Found SSH key %d\", i)\n\t\t\tmetadata.SSHPublicKeys[strconv.Itoa(i)] = sshkey\n\t\t}\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tif hostname, err := ms.FetchAttribute(\"local-hostname\"); err == nil {\n\t\tmetadata.Hostname = strings.Split(hostname, \" \")[0]\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tif localAddr, err := ms.FetchAttribute(\"local-ipv4\"); err == nil {\n\t\tmetadata.PrivateIPv4 = net.ParseIP(localAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\tif publicAddr, err := ms.FetchAttribute(\"public-ipv4\"); err == nil {\n\t\tmetadata.PublicIPv4 = net.ParseIP(publicAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\treturn metadata, nil\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"cloudstack-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/cloudstack/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 cloudstack\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"cloudstack-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"latest/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/latest/meta-data/local-hostname\": \"host\",\n\t\t\t\t\"/latest/meta-data/local-ipv4\":     \"1.2.3.4\",\n\t\t\t\t\"/latest/meta-data/public-ipv4\":    \"5.6.7.8\",\n\t\t\t\t\"/latest/meta-data/public-keys\":    \"key\\n\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"1.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"5.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"0\": \"key\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"latest/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/latest/meta-data/local-hostname\": \"host domain another_domain\",\n\t\t\t\t\"/latest/meta-data/local-ipv4\":     \"21.2.3.4\",\n\t\t\t\t\"/latest/meta-data/public-ipv4\":    \"25.6.7.8\",\n\t\t\t\t\"/latest/meta-data/public-keys\":    \"key\\n\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"21.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"25.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"0\": \"key\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{metadata.Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %q, \\ngot %q\\n\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v, \\ngot %#v\\n\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/digitalocean/metadata.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 digitalocean\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nconst (\n\tDefaultAddress = \"http://169.254.169.254/\"\n\tapiVersion     = \"metadata/v1\"\n\tuserdataURL    = apiVersion + \"/user-data\"\n\tmetadataPath   = apiVersion + \".json\"\n)\n\ntype Address struct {\n\tIPAddress string `json:\"ip_address\"`\n\tNetmask   string `json:\"netmask\"`\n\tCidr      int    `json:\"cidr\"`\n\tGateway   string `json:\"gateway\"`\n}\n\ntype Interface struct {\n\tIPv4       *Address `json:\"ipv4\"`\n\tIPv6       *Address `json:\"ipv6\"`\n\tAnchorIPv4 *Address `json:\"anchor_ipv4\"`\n\tMAC        string   `json:\"mac\"`\n\tType       string   `json:\"type\"`\n}\n\ntype Interfaces struct {\n\tPublic  []Interface `json:\"public\"`\n\tPrivate []Interface `json:\"private\"`\n}\n\ntype DNS struct {\n\tNameservers []string `json:\"nameservers\"`\n}\n\ntype Metadata struct {\n\tHostname   string     `json:\"hostname\"`\n\tInterfaces Interfaces `json:\"interfaces\"`\n\tPublicKeys []string   `json:\"public_keys\"`\n\tDNS        DNS        `json:\"dns\"`\n}\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = DefaultAddress\n\t}\n\treturn &MetadataService{Service: metadata.NewDatasource(root, apiVersion, userdataURL, metadataPath, nil)}\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\n// Parse IPv4 netmask written in IP form (e.g. \"255.255.255.0\").\nfunc ipmask(addr *Address) string {\n\tip := net.ParseIP(addr.IPAddress)\n\tvar mask net.IPMask\n\tif addr.Netmask != \"\" {\n\t\tmask = net.IPMask(net.ParseIP(addr.Netmask))\n\t} else {\n\t\tmask = net.CIDRMask(addr.Cidr, 32)\n\t}\n\tipnet := net.IPNet{\n\t\tIP:   ip,\n\t\tMask: mask,\n\t}\n\treturn ipnet.String()\n}\n\nfunc (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err error) {\n\tvar data []byte\n\tvar m Metadata\n\n\tif data, err = ms.FetchData(ms.MetadataURL()); err != nil || len(data) == 0 {\n\t\treturn\n\t}\n\tif err = json.Unmarshal(data, &m); err != nil {\n\t\treturn\n\t}\n\n\tif len(m.Interfaces.Public) > 0 {\n\t\tif m.Interfaces.Public[0].IPv4 != nil {\n\t\t\tmetadata.PublicIPv4 = net.ParseIP(m.Interfaces.Public[0].IPv4.IPAddress)\n\t\t}\n\t\tif m.Interfaces.Public[0].IPv6 != nil {\n\t\t\tmetadata.PublicIPv6 = net.ParseIP(m.Interfaces.Public[0].IPv6.IPAddress)\n\t\t}\n\t}\n\tif len(m.Interfaces.Private) > 0 {\n\t\tif m.Interfaces.Private[0].IPv4 != nil {\n\t\t\tmetadata.PrivateIPv4 = net.ParseIP(m.Interfaces.Private[0].IPv4.IPAddress)\n\t\t}\n\t\tif m.Interfaces.Private[0].IPv6 != nil {\n\t\t\tmetadata.PrivateIPv6 = net.ParseIP(m.Interfaces.Private[0].IPv6.IPAddress)\n\t\t}\n\t}\n\n\tmetadata.NetworkConfig.Interfaces = make(map[string]netconf.InterfaceConfig)\n\n\tethNumber := 0\n\n\tfor _, eth := range m.Interfaces.Public {\n\t\tnetwork := netconf.InterfaceConfig{}\n\n\t\tif eth.IPv4 != nil {\n\t\t\tnetwork.Gateway = eth.IPv4.Gateway\n\n\t\t\tnetwork.Addresses = append(network.Addresses, ipmask(eth.IPv4))\n\t\t\tif metadata.PublicIPv4 == nil {\n\t\t\t\tmetadata.PublicIPv4 = net.ParseIP(eth.IPv4.IPAddress)\n\t\t\t}\n\t\t}\n\t\tif eth.AnchorIPv4 != nil {\n\t\t\tnetwork.Addresses = append(network.Addresses, ipmask(eth.AnchorIPv4))\n\t\t}\n\t\tif eth.IPv6 != nil {\n\t\t\tnetwork.Addresses = append(network.Addresses, fmt.Sprintf(\"%s/%d\", eth.IPv6.IPAddress, eth.IPv6.Cidr))\n\t\t\tnetwork.GatewayIpv6 = eth.IPv6.Gateway\n\t\t\tif metadata.PublicIPv6 == nil {\n\t\t\t\tmetadata.PublicIPv6 = net.ParseIP(eth.IPv6.IPAddress)\n\t\t\t}\n\t\t}\n\t\tmetadata.NetworkConfig.Interfaces[fmt.Sprintf(\"eth%d\", ethNumber)] = network\n\t\tethNumber = ethNumber + 1\n\t}\n\n\tfor _, eth := range m.Interfaces.Private {\n\t\tnetwork := netconf.InterfaceConfig{}\n\t\tif eth.IPv4 != nil {\n\t\t\tnetwork.Gateway = eth.IPv4.Gateway\n\n\t\t\tnetwork.Addresses = append(network.Addresses, ipmask(eth.IPv4))\n\n\t\t\tif metadata.PrivateIPv4 == nil {\n\t\t\t\tmetadata.PrivateIPv4 = net.ParseIP(eth.IPv6.IPAddress)\n\t\t\t}\n\t\t}\n\t\tif eth.AnchorIPv4 != nil {\n\t\t\tnetwork.Addresses = append(network.Addresses, ipmask(eth.AnchorIPv4))\n\t\t}\n\t\tif eth.IPv6 != nil {\n\t\t\tnetwork.Addresses = append(network.Addresses, fmt.Sprintf(\"%s/%d\", eth.IPv6.IPAddress, eth.IPv6.Cidr))\n\t\t\tnetwork.GatewayIpv6 = eth.IPv6.Gateway\n\t\t\tif metadata.PrivateIPv6 == nil {\n\t\t\t\tmetadata.PrivateIPv6 = net.ParseIP(eth.IPv6.IPAddress)\n\t\t\t}\n\t\t}\n\t\tmetadata.NetworkConfig.Interfaces[fmt.Sprintf(\"eth%d\", ethNumber)] = network\n\t\tethNumber = ethNumber + 1\n\t}\n\n\tmetadata.NetworkConfig.DNS.Nameservers = m.DNS.Nameservers\n\n\tmetadata.Hostname = m.Hostname\n\tmetadata.SSHPublicKeys = map[string]string{}\n\tfor i, key := range m.PublicKeys {\n\t\tmetadata.SSHPublicKeys[strconv.Itoa(i)] = key\n\t}\n\n\treturn\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"digitalocean-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/digitalocean/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 digitalocean\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"digitalocean-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"v1.json\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/v1.json\": \"bad\",\n\t\t\t},\n\t\t\texpectErr: fmt.Errorf(\"invalid character 'b' looking for beginning of value\"),\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"v1.json\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/v1.json\": `{\n  \"droplet_id\": 1,\n  \"user_data\": \"hello\",\n  \"vendor_data\": \"hello\",\n  \"public_keys\": [\n    \"publickey1\",\n    \"publickey2\"\n  ],\n  \"region\": \"nyc2\",\n  \"interfaces\": {\n    \"public\": [\n      {\n        \"ipv4\": {\n          \"ip_address\": \"192.168.1.2\",\n          \"netmask\": \"255.255.255.0\",\n          \"gateway\": \"192.168.1.1\"\n        },\n        \"ipv6\": {\n          \"ip_address\": \"fe00::\",\n          \"cidr\": 126,\n          \"gateway\": \"fe00::\"\n        },\n        \"mac\": \"ab:cd:ef:gh:ij\",\n        \"type\": \"public\"\n      }\n    ]\n  }\n}`,\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tPublicIPv4: net.ParseIP(\"192.168.1.2\"),\n\t\t\t\tPublicIPv6: net.ParseIP(\"fe00::\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\n\t\t\t\t\t\"0\": \"publickey1\",\n\t\t\t\t\t\"1\": \"publickey2\",\n\t\t\t\t},\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"192.168.1.2/24\",\n\t\t\t\t\t\t\t\t\"fe00::/126\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t//Netmask:  \"255.255.255.0\",\n\t\t\t\t\t\t\tGateway: \"192.168.1.1\",\n\n\t\t\t\t\t\t\t//Cidr:      126,\n\t\t\t\t\t\t\tGatewayIpv6: \"fe00::\",\n\t\t\t\t\t\t\t//MAC:         \"ab:cd:ef:gh:ij\",\n\t\t\t\t\t\t\t//Type:        \"public\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t//PublicKeys: []string{\"publickey1\", \"publickey2\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{\n\t\t\tService: metadata.Service{\n\t\t\t\tRoot:         tt.root,\n\t\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\t\tMetadataPath: tt.metadataPath,\n\t\t\t},\n\t\t}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %#v,\\n got %#v\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v,\\n got %#v\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/ec2/metadata.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 ec2\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nconst (\n\tDefaultAddress = \"http://169.254.169.254/\"\n\tapiVersion     = \"latest/\"\n\tuserdataPath   = apiVersion + \"user-data\"\n\tmetadataPath   = apiVersion + \"meta-data/\"\n\n\tdefaultXVRootDisk   = \"/dev/xvda\"\n\tdefaultNVMeRootDisk = \"/dev/nvme0n1\"\n)\n\nvar (\n\tnvmeInstanceTypes = []string{\"c5\", \"c5d\", \"i3.metal\", \"m5\", \"m5d\", \"r5\", \"r5d\", \"t3\", \"z1d\"}\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = DefaultAddress\n\t}\n\treturn &MetadataService{metadata.NewDatasource(root, apiVersion, userdataPath, metadataPath, nil)}\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\nfunc (ms MetadataService) FetchMetadata() (datasource.Metadata, error) {\n\t// see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html\n\tmetadata := datasource.Metadata{}\n\tmetadata.NetworkConfig = netconf.NetworkConfig{}\n\n\tif keynames, err := ms.FetchAttributes(\"public-keys\"); err == nil {\n\t\tkeyIDs := make(map[string]string)\n\t\tfor _, keyname := range keynames {\n\t\t\ttokens := strings.SplitN(keyname, \"=\", 2)\n\t\t\tif len(tokens) != 2 {\n\t\t\t\treturn metadata, fmt.Errorf(\"malformed public key: %q\", keyname)\n\t\t\t}\n\t\t\tkeyIDs[tokens[1]] = tokens[0]\n\t\t}\n\n\t\tmetadata.SSHPublicKeys = map[string]string{}\n\t\tfor name, id := range keyIDs {\n\t\t\tsshkey, err := ms.FetchAttribute(fmt.Sprintf(\"public-keys/%s/openssh-key\", id))\n\t\t\tif err != nil {\n\t\t\t\treturn metadata, err\n\t\t\t}\n\t\t\tmetadata.SSHPublicKeys[name] = sshkey\n\t\t\tlog.Printf(\"Found SSH key for %q\\n\", name)\n\t\t}\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tif hostname, err := ms.FetchAttribute(\"hostname\"); err == nil {\n\t\tmetadata.Hostname = strings.Split(hostname, \" \")[0]\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\t// TODO: these are only on the first interface - it looks like you can have as many as you need...\n\tif localAddr, err := ms.FetchAttribute(\"local-ipv4\"); err == nil {\n\t\tmetadata.PrivateIPv4 = net.ParseIP(localAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\tif publicAddr, err := ms.FetchAttribute(\"public-ipv4\"); err == nil {\n\t\tmetadata.PublicIPv4 = net.ParseIP(publicAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tmetadata.NetworkConfig.Interfaces = make(map[string]netconf.InterfaceConfig)\n\tif macs, err := ms.FetchAttributes(\"network/interfaces/macs\"); err != nil {\n\t\tfor _, mac := range macs {\n\t\t\tif deviceNumber, err := ms.FetchAttribute(fmt.Sprintf(\"network/interfaces/macs/%s/device-number\", mac)); err != nil {\n\t\t\t\tnetwork := netconf.InterfaceConfig{\n\t\t\t\t\tDHCP: true,\n\t\t\t\t}\n\t\t\t\t/* Looks like we must use DHCP for aws\n\t\t\t\t// private ipv4\n\t\t\t\tif subnetCidrBlock, err := ms.FetchAttribute(fmt.Sprintf(\"network/interfaces/macs/%s/subnet-ipv4-cidr-block\", mac)); err != nil {\n\t\t\t\t\tcidr := strings.Split(subnetCidrBlock, \"/\")\n\t\t\t\t\tif localAddr, err := ms.FetchAttributes(fmt.Sprintf(\"network/interfaces/macs/%s/local-ipv4s\", mac)); err != nil {\n\t\t\t\t\t\tfor _, addr := range localAddr {\n\t\t\t\t\t\t\tnetwork.Addresses = append(network.Addresses, addr+\"/\"+cidr[1])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ipv6\n\t\t\t\tif localAddr, err := ms.FetchAttributes(fmt.Sprintf(\"network/interfaces/macs/%s/ipv6s\", mac)); err != nil {\n\t\t\t\t\tif subnetCidrBlock, err := ms.FetchAttributes(fmt.Sprintf(\"network/interfaces/macs/%s/subnet-ipv6-cidr-block\", mac)); err != nil {\n\t\t\t\t\t\tfor i, addr := range localAddr {\n\t\t\t\t\t\t\tcidr := strings.Split(subnetCidrBlock[i], \"/\")\n\t\t\t\t\t\t\tnetwork.Addresses = append(network.Addresses, addr+\"/\"+cidr[1])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t*/\n\t\t\t\t// disabled - it looks to me like you don't actually put the public IP on the eth device\n\t\t\t\t/*\t\t\t\tif publicAddr, err := ms.FetchAttributes(fmt.Sprintf(\"network/interfaces/macs/%s/public-ipv4s\", mac)); err != nil {\n\t\t\t\t\t\t\t\t\tif vpcCidrBlock, err := ms.FetchAttribute(fmt.Sprintf(\"network/interfaces/macs/%s/vpc-ipv4-cidr-block\", mac)); err != nil {\n\t\t\t\t\t\t\t\t\t\tcidr := strings.Split(vpcCidrBlock, \"/\")\n\t\t\t\t\t\t\t\t\t\tnetwork.Addresses = append(network.Addresses, publicAddr+\"/\"+cidr[1])\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t*/\n\n\t\t\t\tmetadata.NetworkConfig.Interfaces[\"eth\"+deviceNumber] = network\n\t\t\t}\n\t\t}\n\t}\n\n\t// With C5 and M5 instances, EBS volumes are exposed as NVMe block devices.\n\t// http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html\n\tmetadata.RootDisk = defaultXVRootDisk\n\tif instanceType, err := ms.FetchAttribute(\"instance-type\"); err == nil {\n\t\tfor _, nvmeType := range nvmeInstanceTypes {\n\t\t\tif strings.HasPrefix(instanceType, nvmeType) {\n\t\t\t\tmetadata.RootDisk = defaultNVMeRootDisk\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\treturn metadata, nil\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"ec2-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/ec2/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 ec2\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"ec2-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"2009-04-04/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2009-04-04/meta-data/public-keys\": \"bad\\n\",\n\t\t\t},\n\t\t\texpectErr: fmt.Errorf(\"malformed public key: \\\"bad\\\"\"),\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"2009-04-04/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2009-04-04/meta-data/hostname\":                  \"host\",\n\t\t\t\t\"/2009-04-04/meta-data/local-ipv4\":                \"1.2.3.4\",\n\t\t\t\t\"/2009-04-04/meta-data/public-ipv4\":               \"5.6.7.8\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys\":               \"0=test1\\n\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys/0\":             \"openssh-key\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys/0/openssh-key\": \"key\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"1.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"5.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"test1\": \"key\"},\n\t\t\t\tRootDisk:      \"/dev/xvda\",\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t/*\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\t\t\t\"1.2.3.4\",\n\t\t\t\t\t\t\t\t\t\t\t\"5.6.7.8\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t*/},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"2009-04-04/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2009-04-04/meta-data/hostname\":                  \"host domain another_domain\",\n\t\t\t\t\"/2009-04-04/meta-data/local-ipv4\":                \"21.2.3.4\",\n\t\t\t\t\"/2009-04-04/meta-data/public-ipv4\":               \"25.6.7.8\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys\":               \"0=test1\\n\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys/0\":             \"openssh-key\",\n\t\t\t\t\"/2009-04-04/meta-data/public-keys/0/openssh-key\": \"key\",\n\t\t\t\t\"/2009-04-04/meta-data/instance-type\":             \"m5.large\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"21.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"25.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"test1\": \"key\"},\n\t\t\t\tRootDisk:      \"/dev/nvme0n1\",\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t/*\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"1.2.3.4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"5.6.7.8\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t*/},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{metadata.Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %q, \\ngot %q\\n\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v, \\ngot %#v\\n\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/exoscale/metadata.go",
    "content": "package exoscale\n\nimport (\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nconst (\n\tdefaultAddress = \"http://169.254.169.254/\"\n\tapiVersion     = \"1.0/\"\n\tuserdataPath   = apiVersion + \"user-data\"\n\tmetadataPath   = apiVersion + \"meta-data/\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = defaultAddress\n\t}\n\n\treturn &MetadataService{\n\t\tmetadata.NewDatasourceWithCheckPath(\n\t\t\troot,\n\t\t\tapiVersion,\n\t\t\tmetadataPath,\n\t\t\tuserdataPath,\n\t\t\tmetadataPath,\n\t\t\tnil,\n\t\t),\n\t}\n}\n\nfunc (ms MetadataService) IsAvailable() bool {\n\tcheckURL := ms.Root + ms.IsAvailableCheckPath\n\tvar err error\n\t_, err = ms.Client.GetRetry(checkURL)\n\tif err != nil {\n\t\tlog.Errorf(\"%s: %s (lastError: %v)\", \"IsAvailable\", checkURL, err)\n\t}\n\treturn (err == nil)\n}\n\nfunc (ms MetadataService) AvailabilityChanges() bool {\n\t// TODO: if it can't find the network, maybe we can start it?\n\treturn false\n}\n\nfunc (ms MetadataService) FetchMetadata() (datasource.Metadata, error) {\n\tmetadata := datasource.Metadata{}\n\n\tif sshKeys, err := ms.FetchAttributes(\"public-keys\"); err == nil {\n\t\tmetadata.SSHPublicKeys = map[string]string{}\n\t\tfor i, sshkey := range sshKeys {\n\t\t\tlog.Printf(\"Found SSH key %d\", i)\n\t\t\tmetadata.SSHPublicKeys[strconv.Itoa(i)] = sshkey\n\t\t}\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tif hostname, err := ms.FetchAttribute(\"local-hostname\"); err == nil {\n\t\tmetadata.Hostname = strings.Split(hostname, \" \")[0]\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\tif localAddr, err := ms.FetchAttribute(\"local-ipv4\"); err == nil {\n\t\tmetadata.PrivateIPv4 = net.ParseIP(localAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\tif publicAddr, err := ms.FetchAttribute(\"public-ipv4\"); err == nil {\n\t\tmetadata.PublicIPv4 = net.ParseIP(publicAddr)\n\t} else if _, ok := err.(pkg.ErrNotFound); !ok {\n\t\treturn metadata, err\n\t}\n\n\treturn metadata, nil\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"exoscale-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/exoscale/metadata_test.go",
    "content": "package exoscale\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"exoscale-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"1.0/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/1.0/meta-data/local-hostname\": \"host\",\n\t\t\t\t\"/1.0/meta-data/local-ipv4\":     \"1.2.3.4\",\n\t\t\t\t\"/1.0/meta-data/public-ipv4\":    \"5.6.7.8\",\n\t\t\t\t\"/1.0/meta-data/public-keys\":    \"key\\n\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"1.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"5.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"0\": \"key\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"1.0/meta-data/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/1.0/meta-data/local-hostname\": \"host domain another_domain\",\n\t\t\t\t\"/1.0/meta-data/local-ipv4\":     \"21.2.3.4\",\n\t\t\t\t\"/1.0/meta-data/public-ipv4\":    \"25.6.7.8\",\n\t\t\t\t\"/1.0/meta-data/public-keys\":    \"key\\n\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:      \"host\",\n\t\t\t\tPrivateIPv4:   net.ParseIP(\"21.2.3.4\"),\n\t\t\t\tPublicIPv4:    net.ParseIP(\"25.6.7.8\"),\n\t\t\t\tSSHPublicKeys: map[string]string{\"0\": \"key\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{metadata.Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): \\nwant %q, \\ngot %q\\n\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch (%q): \\nwant %#v, \\ngot %#v\\n\", tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/gce/metadata.go",
    "content": "// Copyright 2016 CoreOS, Inc.\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 gce\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n)\n\nconst (\n\tDefaultAddress = \"http://metadata.google.internal/\"\n\tapiVersion     = \"computeMetadata/v1/\"\n\tmetadataPath   = apiVersion\n\tuserdataPath   = apiVersion + \"instance/attributes/user-data\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = DefaultAddress\n\t}\n\treturn &MetadataService{metadata.NewDatasource(root, apiVersion, userdataPath, metadataPath, http.Header{\"Metadata-Flavor\": {\"Google\"}})}\n}\n\nfunc (ms MetadataService) FetchMetadata() (datasource.Metadata, error) {\n\tpublic, err := ms.fetchIP(\"instance/network-interfaces/0/access-configs/0/external-ip\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\tlocal, err := ms.fetchIP(\"instance/network-interfaces/0/ip\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\thostname, err := ms.fetchString(\"instance/hostname\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\n\tprojectSSHKeys, err := ms.fetchString(\"project/attributes/ssh-keys\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\tinstanceSSHKeys, err := ms.fetchString(\"instance/attributes/ssh-keys\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\tblockProjectSSHKeys, err := ms.fetchString(\"instance/attributes/block-project-ssh-keys\")\n\tif err != nil {\n\t\treturn datasource.Metadata{}, err\n\t}\n\n\tmd := datasource.Metadata{\n\t\tPublicIPv4:    public,\n\t\tPrivateIPv4:   local,\n\t\tHostname:      hostname,\n\t\tSSHPublicKeys: nil,\n\t}\n\n\t/* Disabled, using DHCP like in pre-0.9.1 - missing gateway and netmask, and testing time\n\taddresses := []string{}\n\tif public != nil {\n\t\taddresses = append(addresses, public.String())\n\t}\n\tif local != nil {\n\t\taddresses = append(addresses, local.String())\n\t}\n\tif len(addresses) > 0 {\n\t\tnetwork := netconf.InterfaceConfig{\n\t\t\tAddresses: addresses,\n\t\t}\n\n\t\tmd.NetworkConfig.Interfaces = make(map[string]netconf.InterfaceConfig)\n\t\tmd.NetworkConfig.Interfaces[\"eth0\"] = network\n\t}\n\t*/\n\tkeyStrings := strings.Split(instanceSSHKeys, \"\\n\")\n\tif blockProjectSSHKeys != \"true\" {\n\t\tkeyStrings = append(keyStrings, strings.Split(projectSSHKeys, \"\\n\")...)\n\t}\n\n\ti := 0\n\tfor _, keyString := range keyStrings {\n\t\tkeySlice := strings.SplitN(keyString, \":\", 2)\n\t\tif len(keySlice) == 2 {\n\t\t\tkey := strings.TrimSpace(keySlice[1])\n\t\t\tif key != \"\" {\n\t\t\t\tif md.SSHPublicKeys == nil {\n\t\t\t\t\tmd.SSHPublicKeys = map[string]string{}\n\t\t\t\t}\n\t\t\t\tmd.SSHPublicKeys[strconv.Itoa(i)] = strings.TrimSpace(keySlice[1])\n\t\t\t\ti++\n\t\t\t}\n\t\t}\n\t}\n\n\treturn md, nil\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"gce-metadata-service\"\n}\n\nfunc (ms MetadataService) fetchString(key string) (string, error) {\n\tdata, err := ms.FetchData(ms.MetadataURL() + key)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(data), nil\n}\n\nfunc (ms MetadataService) fetchIP(key string) (net.IP, error) {\n\tstr, err := ms.fetchString(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif str == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tif ip := net.ParseIP(str); ip != nil {\n\t\treturn ip, nil\n\t}\n\treturn nil, fmt.Errorf(\"couldn't parse %q as IP address\", str)\n}\n\nfunc (ms MetadataService) FetchUserdata() ([]byte, error) {\n\t// see https://github.com/number5/cloud-init/blob/master/cloudinit/sources/DataSourceGCE.py\n\tdata, err := ms.FetchData(ms.UserdataURL())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(data) == 0 {\n\t\t// see https://cloud.google.com/deployment-manager/docs/step-by-step-guide/setting-metadata-and-startup-scripts\n\t\tdata, err = ms.FetchData(ms.MetadataURL() + \"instance/attributes/startup-script\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn data, nil\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/gce/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 gce\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\nfunc TestType(t *testing.T) {\n\twant := \"gce-metadata-service\"\n\tif kind := (MetadataService{}).Type(); kind != want {\n\t\tt.Fatalf(\"bad type: want %q, got %q\", want, kind)\n\t}\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\ttestName     string\n\t\troot         string\n\t\tmetadataPath string\n\t\tresources    map[string]string\n\t\texpect       datasource.Metadata\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\ttestName:     \"one\",\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"computeMetadata/v1/\",\n\t\t\tresources:    map[string]string{},\n\t\t},\n\t\t{\n\t\t\ttestName:     \"two\",\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"computeMetadata/v1/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/computeMetadata/v1/instance/hostname\": \"host\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname: \"host\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttestName:     \"three\",\n\t\t\troot:         \"/\",\n\t\t\tmetadataPath: \"computeMetadata/v1/\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/computeMetadata/v1/instance/hostname\":                                          \"host\",\n\t\t\t\t\"/computeMetadata/v1/instance/network-interfaces/0/ip\":                           \"1.2.3.4\",\n\t\t\t\t\"/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip\": \"5.6.7.8\",\n\t\t\t},\n\t\t\texpect: datasource.Metadata{\n\t\t\t\tHostname:    \"host\",\n\t\t\t\tPrivateIPv4: net.ParseIP(\"1.2.3.4\"),\n\t\t\t\tPublicIPv4:  net.ParseIP(\"5.6.7.8\"),\n\t\t\t\t//\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t//\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t//\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t//\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t//\t\t\t\t\t\t\t\t\"5.6.7.8\",\n\t\t\t\t//\t\t\t\t\t\t\t\t\"1.2.3.4\",\n\t\t\t\t//\t\t\t\t\t\t\t},\n\t\t\t\t//\t\t\t\t\t\t},\n\t\t\t\t//\t\t\t\t\t},\n\t\t\t\t//\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttestName:  \"four\",\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test error\")},\n\t\t},\n\t} {\n\t\tservice := &MetadataService{metadata.Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}}\n\t\tmetadata, err := service.FetchMetadata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): want \\n%q\\n, got \\n%q\\n\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.expect, metadata) {\n\t\t\tt.Fatalf(\"bad fetch %s(%q): want \\n%#v\\n, got \\n%#v\\n\", tt.testName, tt.resources, tt.expect, metadata)\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/metadata.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 metadata\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\ntype Service struct {\n\tRoot                 string\n\tClient               pkg.Getter\n\tAPIVersion           string\n\tIsAvailableCheckPath string\n\tUserdataPath         string\n\tMetadataPath         string\n\tlastError            error\n}\n\n// NewDatasource creates as HTTP based cloud-data service with the corresponding paths for the user-data and meta-data.\n// To check the available in IsAvailable, the apiVersion is used as path.\nfunc NewDatasource(root, apiVersion, userdataPath, metadataPath string, header http.Header) Service {\n\treturn NewDatasourceWithCheckPath(root, apiVersion, apiVersion, userdataPath, metadataPath, header)\n}\n\n// NewDatasourceWithCheckPath creates as HTTP based cloud-data service with the corresponding paths for the user-data and meta-data.\nfunc NewDatasourceWithCheckPath(root, apiVersion, isAvailableCheckPath, userdataPath, metadataPath string, header http.Header) Service {\n\tif !strings.HasSuffix(root, \"/\") {\n\t\troot += \"/\"\n\t}\n\treturn Service{root, pkg.NewHTTPClientHeader(header), apiVersion, isAvailableCheckPath, userdataPath, metadataPath, nil}\n}\n\nfunc (ms Service) IsAvailable() bool {\n\tcheckURL := ms.Root + ms.IsAvailableCheckPath\n\t_, ms.lastError = ms.Client.Get(checkURL)\n\tif ms.lastError != nil {\n\t\tlog.Errorf(\"%s: %s (lastError: %v)\", \"IsAvailable\", checkURL, ms.lastError)\n\t}\n\treturn (ms.lastError == nil)\n}\n\nfunc (ms *Service) Finish() error {\n\treturn nil\n}\n\nfunc (ms *Service) String() string {\n\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", \"metadata\", ms.UserdataURL(), ms.lastError)\n}\n\nfunc (ms Service) AvailabilityChanges() bool {\n\treturn true\n}\n\nfunc (ms Service) ConfigRoot() string {\n\treturn ms.Root\n}\n\nfunc (ms Service) FetchUserdata() ([]byte, error) {\n\treturn ms.FetchData(ms.UserdataURL())\n}\n\nfunc (ms Service) FetchData(url string) ([]byte, error) {\n\tif data, err := ms.Client.GetRetry(url); err == nil {\n\t\treturn data, err\n\t} else if _, ok := err.(pkg.ErrNotFound); ok {\n\t\treturn []byte{}, nil\n\t} else {\n\t\treturn data, err\n\t}\n}\n\nfunc (ms Service) MetadataURL() string {\n\treturn (ms.Root + ms.MetadataPath)\n}\n\nfunc (ms Service) UserdataURL() string {\n\treturn (ms.Root + ms.UserdataPath)\n}\n\nfunc (ms Service) FetchAttributes(key string) ([]string, error) {\n\turl := ms.MetadataURL() + key\n\tresp, err := ms.FetchData(url)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tscanner := bufio.NewScanner(bytes.NewBuffer(resp))\n\tdata := make([]string, 0)\n\tfor scanner.Scan() {\n\t\tdata = append(data, scanner.Text())\n\t}\n\treturn data, scanner.Err()\n}\n\nfunc (ms Service) FetchAttribute(key string) (string, error) {\n\tattrs, err := ms.FetchAttributes(key)\n\tif err == nil && len(attrs) > 0 {\n\t\treturn attrs[0], nil\n\t}\n\treturn \"\", err\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 metadata\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata/test\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\nfunc TestAvailabilityChanges(t *testing.T) {\n\twant := true\n\tif ac := (Service{}).AvailabilityChanges(); ac != want {\n\t\tt.Fatalf(\"bad AvailabilityChanges: want %t, got %t\", want, ac)\n\t}\n}\n\nfunc TestIsAvailable(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot      string\n\t\tcheckPath string\n\t\tresources map[string]string\n\t\texpect    bool\n\t}{\n\t\t{\n\t\t\troot:      \"/\",\n\t\t\tcheckPath: \"2009-04-04\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2009-04-04\": \"\",\n\t\t\t},\n\t\t\texpect: true,\n\t\t},\n\t\t{\n\t\t\troot:      \"/\",\n\t\t\tresources: map[string]string{},\n\t\t\texpect:    false,\n\t\t},\n\t} {\n\t\tservice := &Service{\n\t\t\tRoot:                 tt.root,\n\t\t\tClient:               &test.HTTPClient{Resources: tt.resources, Err: nil},\n\t\t\tIsAvailableCheckPath: tt.checkPath,\n\t\t}\n\t\tif a := service.IsAvailable(); a != tt.expect {\n\t\t\tt.Fatalf(\"bad isAvailable (%q): want %t, got %t\", tt.resources, tt.expect, a)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tuserdataPath string\n\t\tresources    map[string]string\n\t\tuserdata     []byte\n\t\tclientErr    error\n\t\texpectErr    error\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tuserdataPath: \"2009-04-04/user-data\",\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/2009-04-04/user-data\": \"hello\",\n\t\t\t},\n\t\t\tuserdata: []byte(\"hello\"),\n\t\t},\n\t\t{\n\t\t\troot:      \"/\",\n\t\t\tclientErr: pkg.ErrNotFound{Err: fmt.Errorf(\"test not found error\")},\n\t\t\tuserdata:  []byte{},\n\t\t},\n\t\t{\n\t\t\troot:      \"/\",\n\t\t\tclientErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test timeout error\")},\n\t\t\texpectErr: pkg.ErrTimeout{Err: fmt.Errorf(\"test timeout error\")},\n\t\t},\n\t} {\n\t\tservice := &Service{\n\t\t\tRoot:         tt.root,\n\t\t\tClient:       &test.HTTPClient{Resources: tt.resources, Err: tt.clientErr},\n\t\t\tUserdataPath: tt.userdataPath,\n\t\t}\n\t\tdata, err := service.FetchUserdata()\n\t\tif Error(err) != Error(tt.expectErr) {\n\t\t\tt.Fatalf(\"bad error (%q): want %q, got %q\", tt.resources, tt.expectErr, err)\n\t\t}\n\t\tif !bytes.Equal(data, tt.userdata) {\n\t\t\tt.Fatalf(\"bad userdata (%q): want %q, got %q\", tt.resources, tt.userdata, data)\n\t\t}\n\t}\n}\n\nfunc TestURLs(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot         string\n\t\tuserdataPath string\n\t\tmetadataPath string\n\t\texpectRoot   string\n\t\tuserdata     string\n\t\tmetadata     string\n\t}{\n\t\t{\n\t\t\troot:         \"/\",\n\t\t\tuserdataPath: \"2009-04-04/user-data\",\n\t\t\tmetadataPath: \"2009-04-04/meta-data\",\n\t\t\texpectRoot:   \"/\",\n\t\t\tuserdata:     \"/2009-04-04/user-data\",\n\t\t\tmetadata:     \"/2009-04-04/meta-data\",\n\t\t},\n\t\t{\n\t\t\troot:         \"http://169.254.169.254/\",\n\t\t\tuserdataPath: \"2009-04-04/user-data\",\n\t\t\tmetadataPath: \"2009-04-04/meta-data\",\n\t\t\texpectRoot:   \"http://169.254.169.254/\",\n\t\t\tuserdata:     \"http://169.254.169.254/2009-04-04/user-data\",\n\t\t\tmetadata:     \"http://169.254.169.254/2009-04-04/meta-data\",\n\t\t},\n\t} {\n\t\tservice := &Service{\n\t\t\tRoot:         tt.root,\n\t\t\tUserdataPath: tt.userdataPath,\n\t\t\tMetadataPath: tt.metadataPath,\n\t\t}\n\t\tif url := service.UserdataURL(); url != tt.userdata {\n\t\t\tt.Fatalf(\"bad url (%q): want %q, got %q\", tt.root, tt.userdata, url)\n\t\t}\n\t\tif url := service.MetadataURL(); url != tt.metadata {\n\t\t\tt.Fatalf(\"bad url (%q): want %q, got %q\", tt.root, tt.metadata, url)\n\t\t}\n\t\tif url := service.ConfigRoot(); url != tt.expectRoot {\n\t\t\tt.Fatalf(\"bad url (%q): want %q, got %q\", tt.root, tt.expectRoot, url)\n\t\t}\n\t}\n}\n\nfunc TestNewDatasource(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\texpectRoot string\n\t}{\n\t\t{\n\t\t\troot:       \"\",\n\t\t\texpectRoot: \"/\",\n\t\t},\n\t\t{\n\t\t\troot:       \"/\",\n\t\t\texpectRoot: \"/\",\n\t\t},\n\t\t{\n\t\t\troot:       \"http://169.254.169.254\",\n\t\t\texpectRoot: \"http://169.254.169.254/\",\n\t\t},\n\t\t{\n\t\t\troot:       \"http://169.254.169.254/\",\n\t\t\texpectRoot: \"http://169.254.169.254/\",\n\t\t},\n\t} {\n\t\tservice := NewDatasource(tt.root, \"\", \"\", \"\", nil)\n\t\tif service.Root != tt.expectRoot {\n\t\t\tt.Fatalf(\"bad root (%q): want %q, got %q\", tt.root, tt.expectRoot, service.Root)\n\t\t}\n\t}\n}\n\nfunc TestFetchAttributes(t *testing.T) {\n\tfor _, s := range []struct {\n\t\tresources map[string]string\n\t\terr       error\n\t\ttests     []struct {\n\t\t\tpath string\n\t\t\tval  []string\n\t\t}\n\t}{\n\t\t{\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/\":      \"a\\nb\\nc/\",\n\t\t\t\t\"/c/\":    \"d\\ne/\",\n\t\t\t\t\"/c/e/\":  \"f\",\n\t\t\t\t\"/a\":     \"1\",\n\t\t\t\t\"/b\":     \"2\",\n\t\t\t\t\"/c/d\":   \"3\",\n\t\t\t\t\"/c/e/f\": \"4\",\n\t\t\t},\n\t\t\ttests: []struct {\n\t\t\t\tpath string\n\t\t\t\tval  []string\n\t\t\t}{\n\t\t\t\t{\"/\", []string{\"a\", \"b\", \"c/\"}},\n\t\t\t\t{\"/b\", []string{\"2\"}},\n\t\t\t\t{\"/c/d\", []string{\"3\"}},\n\t\t\t\t{\"/c/e/\", []string{\"f\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr: fmt.Errorf(\"test error\"),\n\t\t\ttests: []struct {\n\t\t\t\tpath string\n\t\t\t\tval  []string\n\t\t\t}{\n\t\t\t\t{\"\", nil},\n\t\t\t},\n\t\t},\n\t} {\n\t\tservice := &Service{\n\t\t\tClient: &test.HTTPClient{Resources: s.resources, Err: s.err},\n\t\t}\n\t\tfor _, tt := range s.tests {\n\t\t\tattrs, err := service.FetchAttributes(tt.path)\n\t\t\tif err != s.err {\n\t\t\t\tt.Fatalf(\"bad error for %q (%q): want %q, got %q\", tt.path, s.resources, s.err, err)\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(attrs, tt.val) {\n\t\t\t\tt.Fatalf(\"bad fetch for %q (%q): want %q, got %q\", tt.path, s.resources, tt.val, attrs)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestFetchAttribute(t *testing.T) {\n\tfor _, s := range []struct {\n\t\tresources map[string]string\n\t\terr       error\n\t\ttests     []struct {\n\t\t\tpath string\n\t\t\tval  string\n\t\t}\n\t}{\n\t\t{\n\t\t\tresources: map[string]string{\n\t\t\t\t\"/\":      \"a\\nb\\nc/\",\n\t\t\t\t\"/c/\":    \"d\\ne/\",\n\t\t\t\t\"/c/e/\":  \"f\",\n\t\t\t\t\"/a\":     \"1\",\n\t\t\t\t\"/b\":     \"2\",\n\t\t\t\t\"/c/d\":   \"3\",\n\t\t\t\t\"/c/e/f\": \"4\",\n\t\t\t},\n\t\t\ttests: []struct {\n\t\t\t\tpath string\n\t\t\t\tval  string\n\t\t\t}{\n\t\t\t\t{\"/a\", \"1\"},\n\t\t\t\t{\"/b\", \"2\"},\n\t\t\t\t{\"/c/d\", \"3\"},\n\t\t\t\t{\"/c/e/f\", \"4\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terr: fmt.Errorf(\"test error\"),\n\t\t\ttests: []struct {\n\t\t\t\tpath string\n\t\t\t\tval  string\n\t\t\t}{\n\t\t\t\t{\"\", \"\"},\n\t\t\t},\n\t\t},\n\t} {\n\t\tservice := &Service{\n\t\t\tClient: &test.HTTPClient{Resources: s.resources, Err: s.err},\n\t\t}\n\t\tfor _, tt := range s.tests {\n\t\t\tattr, err := service.FetchAttribute(tt.path)\n\t\t\tif err != s.err {\n\t\t\t\tt.Fatalf(\"bad error for %q (%q): want %q, got %q\", tt.path, s.resources, s.err, err)\n\t\t\t}\n\t\t\tif attr != tt.val {\n\t\t\t\tt.Fatalf(\"bad fetch for %q (%q): want %q, got %q\", tt.path, s.resources, tt.val, attr)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc Error(err error) string {\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/packet/metadata.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 packet\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource/metadata\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\tpacketMetadata \"github.com/packethost/packngo/metadata\"\n)\n\nconst (\n\tDefaultAddress = \"https://metadata.packet.net/\"\n\tapiVersion     = \"\"\n\tuserdataURL    = \"userdata\"\n\tmetadataPath   = \"metadata\"\n)\n\ntype MetadataService struct {\n\tmetadata.Service\n}\n\nfunc NewDatasource(root string) *MetadataService {\n\tif root == \"\" {\n\t\troot = DefaultAddress\n\t}\n\n\treturn &MetadataService{Service: metadata.NewDatasource(root, apiVersion, userdataURL, metadataPath, nil)}\n}\n\nfunc (ms *MetadataService) FetchMetadata() (metadata datasource.Metadata, err error) {\n\tm, err := packetMetadata.GetMetadata()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to get Packet metadata: %v\", err)\n\t\treturn\n\t}\n\n\tbondCfg := netconf.InterfaceConfig{\n\t\tAddresses: []string{},\n\t\tBondOpts: map[string]string{\n\t\t\t\"lacp_rate\":        \"1\",\n\t\t\t\"xmit_hash_policy\": \"layer3+4\",\n\t\t\t\"downdelay\":        \"200\",\n\t\t\t\"updelay\":          \"200\",\n\t\t\t\"miimon\":           \"100\",\n\t\t\t\"mode\":             \"4\",\n\t\t},\n\t}\n\tnetCfg := netconf.NetworkConfig{\n\t\tInterfaces: map[string]netconf.InterfaceConfig{},\n\t}\n\tfor _, iface := range m.Network.Interfaces {\n\t\tnetCfg.Interfaces[\"mac=\"+iface.MAC] = netconf.InterfaceConfig{\n\t\t\tBond: \"bond0\",\n\t\t}\n\t}\n\tfor _, addr := range m.Network.Addresses {\n\t\tbondCfg.Addresses = append(bondCfg.Addresses, fmt.Sprintf(\"%s/%d\", addr.Address, addr.NetworkBits))\n\t\tif addr.Gateway != nil && len(addr.Gateway) > 0 {\n\t\t\tif addr.Family == packetMetadata.IPv4 {\n\t\t\t\tif addr.Public {\n\t\t\t\t\tbondCfg.Gateway = addr.Gateway.String()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbondCfg.GatewayIpv6 = addr.Gateway.String()\n\t\t\t}\n\t\t}\n\n\t\tif addr.Family == packetMetadata.IPv4 && strings.HasPrefix(addr.Gateway.String(), \"10.\") {\n\t\t\tbondCfg.PostUp = append(bondCfg.PostUp, \"ip route add 10.0.0.0/8 via \"+addr.Gateway.String())\n\t\t}\n\t}\n\n\tnetCfg.Interfaces[\"bond0\"] = bondCfg\n\tb, _ := yaml.Marshal(netCfg)\n\tlog.Debugf(\"Generated network config: %s\", string(b))\n\n\t// the old code\tvar data []byte\n\t/*\tvar m Metadata\n\n\t\tif data, err = ms.FetchData(ms.MetadataURL()); err != nil || len(data) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\tif err = json.Unmarshal(data, &m); err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif len(m.NetworkData.Netblocks) > 0 {\n\t\t\tfor _, Netblock := range m.NetworkData.Netblocks {\n\t\t\t\tif Netblock.AddressFamily == 4 {\n\t\t\t\t\tif Netblock.Public == true {\n\t\t\t\t\t\tmetadata.PublicIPv4 = Netblock.Address\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmetadata.PrivateIPv4 = Netblock.Address\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmetadata.PublicIPv6 = Netblock.Address\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t*/\n\tmetadata.Hostname = m.Hostname\n\tmetadata.SSHPublicKeys = map[string]string{}\n\tfor i, key := range m.SSHKeys {\n\t\tmetadata.SSHPublicKeys[strconv.Itoa(i)] = key\n\t}\n\n\tmetadata.NetworkConfig = netCfg\n\n\t// This is not really the right place - perhaps we should add a call-home function in each datasource to be called after the network is applied\n\t//(see the original in cmd/cloudsave/packet)\n\t//if _, err = http.Post(m.PhoneHomeURL, \"application/json\", bytes.NewReader([]byte{})); err != nil {\n\t//log.Errorf(\"Failed to post to Packet phone home URL: %v\", err)\n\t//}\n\n\treturn\n}\n\nfunc (ms MetadataService) Type() string {\n\treturn \"packet-metadata-service\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/metadata/test/test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 test\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n)\n\ntype HTTPClient struct {\n\tResources map[string]string\n\tErr       error\n}\n\nfunc (t *HTTPClient) GetRetry(url string) ([]byte, error) {\n\tif t.Err != nil {\n\t\treturn nil, t.Err\n\t}\n\tif val, ok := t.Resources[url]; ok {\n\t\treturn []byte(val), nil\n\t}\n\treturn nil, pkg.ErrNotFound{Err: fmt.Errorf(\"not found: %q\", url)}\n}\n\nfunc (t *HTTPClient) Get(url string) ([]byte, error) {\n\treturn t.GetRetry(url)\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/proccmdline/proc_cmdline.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 proccmdline\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nconst (\n\tProcCmdlineLocation        = \"/proc/cmdline\"\n\tProcCmdlineCloudConfigFlag = \"cloud-config-url\"\n)\n\ntype ProcCmdline struct {\n\tLocation  string\n\tlastError error\n}\n\nfunc NewDatasource() *ProcCmdline {\n\treturn &ProcCmdline{Location: ProcCmdlineLocation}\n}\n\nfunc (c *ProcCmdline) IsAvailable() bool {\n\tvar contents []byte\n\tcontents, c.lastError = ioutil.ReadFile(c.Location)\n\tif c.lastError != nil {\n\t\treturn false\n\t}\n\n\tcmdline := strings.TrimSpace(string(contents))\n\t_, c.lastError = findCloudConfigURL(cmdline)\n\treturn (c.lastError == nil)\n}\n\nfunc (c *ProcCmdline) Finish() error {\n\treturn nil\n}\n\nfunc (c *ProcCmdline) String() string {\n\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", c.Type(), c.Location, c.lastError)\n}\n\nfunc (c *ProcCmdline) AvailabilityChanges() bool {\n\treturn false\n}\n\nfunc (c *ProcCmdline) ConfigRoot() string {\n\treturn \"\"\n}\n\nfunc (c *ProcCmdline) FetchMetadata() (datasource.Metadata, error) {\n\treturn datasource.Metadata{}, nil\n}\n\nfunc (c *ProcCmdline) FetchUserdata() ([]byte, error) {\n\tcontents, err := ioutil.ReadFile(c.Location)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcmdline := strings.TrimSpace(string(contents))\n\turl, err := findCloudConfigURL(cmdline)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tclient := pkg.NewHTTPClient()\n\tcfg, err := client.GetRetry(url)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cfg, nil\n}\n\nfunc (c *ProcCmdline) Type() string {\n\treturn \"proc-cmdline\"\n}\n\nfunc findCloudConfigURL(input string) (url string, err error) {\n\terr = errors.New(\"cloud-config-url not found\")\n\tfor _, token := range strings.Split(input, \" \") {\n\t\tparts := strings.SplitN(token, \"=\", 2)\n\n\t\tkey := parts[0]\n\t\tkey = strings.Replace(key, \"_\", \"-\", -1)\n\n\t\tif key != \"cloud-config-url\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(parts) != 2 {\n\t\t\tlog.Printf(\"Found cloud-config-url in /proc/cmdline with no value, ignoring.\")\n\t\t\tcontinue\n\t\t}\n\n\t\turl = parts[1]\n\t\terr = nil\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/proccmdline/proc_cmdline_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 proccmdline\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"testing\"\n)\n\nfunc TestParseCmdlineCloudConfigFound(t *testing.T) {\n\ttests := []struct {\n\t\tinput  string\n\t\texpect string\n\t}{\n\t\t{\n\t\t\t\"cloud-config-url=example.com\",\n\t\t\t\"example.com\",\n\t\t},\n\t\t{\n\t\t\t\"cloud_config_url=example.com\",\n\t\t\t\"example.com\",\n\t\t},\n\t\t{\n\t\t\t\"cloud-config-url cloud-config-url=example.com\",\n\t\t\t\"example.com\",\n\t\t},\n\t\t{\n\t\t\t\"cloud-config-url= cloud-config-url=example.com\",\n\t\t\t\"example.com\",\n\t\t},\n\t\t{\n\t\t\t\"cloud-config-url=one.example.com cloud-config-url=two.example.com\",\n\t\t\t\"two.example.com\",\n\t\t},\n\t\t{\n\t\t\t\"foo=bar cloud-config-url=example.com ping=pong\",\n\t\t\t\"example.com\",\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\toutput, err := findCloudConfigURL(tt.input)\n\t\tif output != tt.expect {\n\t\t\tt.Errorf(\"Test case %d failed: %s != %s\", i, output, tt.expect)\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Test case %d produced error: %v\", i, err)\n\t\t}\n\t}\n}\n\nfunc TestProcCmdlineAndFetchConfig(t *testing.T) {\n\n\tvar (\n\t\tProcCmdlineTmpl    = \"foo=bar cloud-config-url=%s/config\\n\"\n\t\tCloudConfigContent = \"#cloud-config\\n\"\n\t)\n\n\tts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tif r.Method == \"GET\" && r.RequestURI == \"/config\" {\n\t\t\tfmt.Fprint(w, CloudConfigContent)\n\t\t}\n\t}))\n\tdefer ts.Close()\n\n\tfile, err := ioutil.TempFile(os.TempDir(), \"test_proc_cmdline\")\n\tdefer os.Remove(file.Name())\n\tif err != nil {\n\t\tt.Errorf(\"Test produced error: %v\", err)\n\t}\n\t_, err = file.Write([]byte(fmt.Sprintf(ProcCmdlineTmpl, ts.URL)))\n\tif err != nil {\n\t\tt.Errorf(\"Test produced error: %v\", err)\n\t}\n\n\tp := NewDatasource()\n\tp.Location = file.Name()\n\tcfg, err := p.FetchUserdata()\n\tif err != nil {\n\t\tt.Errorf(\"Test produced error: %v\", err)\n\t}\n\n\tif string(cfg) != CloudConfigContent {\n\t\tt.Errorf(\"Test failed, response body: %s != %s\", cfg, CloudConfigContent)\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/proxmox/proxmox.go",
    "content": "package proxmox\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/docker/docker/pkg/mount\"\n)\n\nconst (\n\tconfigDev           = \"/dev/sr0\"\n\tconfigDevMountPoint = \"/media/pve-config\"\n)\n\ntype Proxmox struct {\n\troot                string\n\treadFile            func(filename string) ([]byte, error)\n\tlastError           error\n\tavailabilityChanges bool\n}\n\nfunc NewDataSource(root string) *Proxmox {\n\treturn &Proxmox{root, ioutil.ReadFile, nil, true}\n}\n\nfunc (pve *Proxmox) IsAvailable() bool {\n\tif pve.root == configDevMountPoint {\n\t\tpve.lastError = MountConfigDrive()\n\t\tif pve.lastError != nil {\n\t\t\tlog.Error(pve.lastError)\n\t\t\tpve.availabilityChanges = false\n\t\t\treturn false\n\t\t}\n\t\tdefer pve.Finish()\n\t}\n\n\t_, pve.lastError = os.Stat(pve.root)\n\treturn !os.IsNotExist(pve.lastError)\n}\n\nfunc (pve *Proxmox) Finish() error {\n\treturn UnmountConfigDrive()\n}\n\nfunc (pve *Proxmox) String() string {\n\tif pve.lastError != nil {\n\t\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", pve.Type(), pve.root, pve.lastError)\n\t}\n\treturn fmt.Sprintf(\"%s: %s\", pve.Type(), pve.root)\n}\n\nfunc (pve *Proxmox) AvailabilityChanges() bool {\n\treturn pve.availabilityChanges\n}\n\nfunc (pve *Proxmox) ConfigRoot() string {\n\treturn pve.root\n}\n\nfunc (pve *Proxmox) FetchMetadata() (metadata datasource.Metadata, err error) {\n\treturn datasource.Metadata{}, nil\n}\n\nfunc (pve *Proxmox) FetchUserdata() ([]byte, error) {\n\treturn pve.tryReadFile(path.Join(pve.root, \"user-data\"))\n}\n\nfunc (pve *Proxmox) Type() string {\n\treturn \"proxmox\"\n}\n\nfunc (pve *Proxmox) tryReadFile(filename string) ([]byte, error) {\n\tif pve.root == configDevMountPoint {\n\t\tpve.lastError = MountConfigDrive()\n\t\tif pve.lastError != nil {\n\t\t\tlog.Error(pve.lastError)\n\t\t\treturn nil, pve.lastError\n\t\t}\n\t\tdefer pve.Finish()\n\t}\n\tlog.Debugf(\"Attempting to read from %q\\n\", filename)\n\tdata, err := pve.readFile(filename)\n\tif os.IsNotExist(err) {\n\t\terr = nil\n\t}\n\tif err != nil {\n\t\tlog.Errorf(\"ERROR read cloud-config file(%s) - err: %q\", filename, err)\n\t}\n\treturn data, err\n}\n\nfunc MountConfigDrive() error {\n\tif err := os.MkdirAll(configDevMountPoint, 700); err != nil {\n\t\treturn err\n\t}\n\n\tfsType, err := util.GetFsType(configDev)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn mount.Mount(configDev, configDevMountPoint, fsType, \"ro\")\n}\n\nfunc UnmountConfigDrive() error {\n\treturn syscall.Unmount(configDevMountPoint, 0)\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/proxmox/proxmox_test.go",
    "content": "package proxmox\n\nimport (\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource/test\"\n)\n\nfunc TestFetchUserdata(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot     string\n\t\tfiles    test.MockFilesystem\n\t\tuserdata string\n\t}{\n\t\t{\n\t\t\troot:     \"/\",\n\t\t\tfiles:    test.NewMockFilesystem(),\n\t\t\tuserdata: \"\",\n\t\t},\n\t\t{\n\t\t\troot:     \"/media/config\",\n\t\t\tfiles:    test.NewMockFilesystem(test.File{Path: \"/media/config/user-data\", Contents: \"userdata\"}),\n\t\t\tuserdata: \"userdata\",\n\t\t},\n\t} {\n\t\tpve := Proxmox{tt.root, tt.files.ReadFile, nil, true}\n\t\tuserdata, err := pve.FetchUserdata()\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"bad error for %+v: want %v, got %q\", tt, nil, err)\n\t\t}\n\t\tif string(userdata) != tt.userdata {\n\t\t\tt.Fatalf(\"bad userdata for %+v: want %q, got %q\", tt, tt.userdata, userdata)\n\t\t}\n\t}\n}\n\nfunc TestConfigRoot(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\tconfigRoot string\n\t}{\n\t\t{\n\t\t\troot:       \"/\",\n\t\t\tconfigRoot: \"/\",\n\t\t},\n\t\t{\n\t\t\troot:       \"/media/pve-config\",\n\t\t\tconfigRoot: \"/media/pve-config\",\n\t\t},\n\t} {\n\t\tpve := Proxmox{tt.root, nil, nil, true}\n\t\tif configRoot := pve.ConfigRoot(); configRoot != tt.configRoot {\n\t\t\tt.Fatalf(\"bad config root for %q: want %q, got %q\", tt, tt.configRoot, configRoot)\n\t\t}\n\t}\n}\n\nfunc TestNewDataSource(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\texpectRoot string\n\t}{\n\t\t{\n\t\t\troot:       \"\",\n\t\t\texpectRoot: \"\",\n\t\t},\n\t\t{\n\t\t\troot:       \"/media/pve-config\",\n\t\t\texpectRoot: \"/media/pve-config\",\n\t\t},\n\t} {\n\t\tservice := NewDataSource(tt.root)\n\t\tif service.root != tt.expectRoot {\n\t\t\tt.Fatalf(\"bad root (%q): want %q, got %q\", tt.root, tt.expectRoot, service.root)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/test/filesystem.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 test\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n)\n\ntype MockFilesystem map[string]File\n\ntype File struct {\n\tPath      string\n\tContents  string\n\tDirectory bool\n}\n\nfunc (m MockFilesystem) ReadFile(filename string) ([]byte, error) {\n\tif f, ok := m[path.Clean(filename)]; ok {\n\t\tif f.Directory {\n\t\t\treturn nil, fmt.Errorf(\"read %s: is a directory\", filename)\n\t\t}\n\t\treturn []byte(f.Contents), nil\n\t}\n\treturn nil, os.ErrNotExist\n}\n\nfunc NewMockFilesystem(files ...File) MockFilesystem {\n\tfs := MockFilesystem{}\n\tfor _, file := range files {\n\t\tfs[file.Path] = file\n\n\t\t// Create the directories leading up to the file\n\t\tp := path.Dir(file.Path)\n\t\tfor p != \"/\" && p != \".\" {\n\t\t\tif f, ok := fs[p]; ok && !f.Directory {\n\t\t\t\tpanic(fmt.Sprintf(\"%q already exists and is not a directory (%#v)\", p, f))\n\t\t\t}\n\t\t\tfs[p] = File{Path: p, Directory: true}\n\t\t\tp = path.Dir(p)\n\t\t}\n\t}\n\treturn fs\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/test/filesystem_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 test\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestReadFile(t *testing.T) {\n\ttests := []struct {\n\t\tfilesystem MockFilesystem\n\n\t\tfilename string\n\t\tcontents string\n\t\terr      error\n\t}{\n\t\t{\n\t\t\tfilename: \"dne\",\n\t\t\terr:      os.ErrNotExist,\n\t\t},\n\t\t{\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"exists\": File{Contents: \"hi\"},\n\t\t\t},\n\t\t\tfilename: \"exists\",\n\t\t\tcontents: \"hi\",\n\t\t},\n\t\t{\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"dir\": File{Directory: true},\n\t\t\t},\n\t\t\tfilename: \"dir\",\n\t\t\terr:      errors.New(\"read dir: is a directory\"),\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tcontents, err := tt.filesystem.ReadFile(tt.filename)\n\t\tif tt.contents != string(contents) {\n\t\t\tt.Errorf(\"bad contents (test %d): want %q, got %q\", i, tt.contents, string(contents))\n\t\t}\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (test %d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t}\n}\n\nfunc TestNewMockFilesystem(t *testing.T) {\n\ttests := []struct {\n\t\tfiles []File\n\n\t\tfilesystem MockFilesystem\n\t}{\n\t\t{\n\t\t\tfilesystem: MockFilesystem{},\n\t\t},\n\t\t{\n\t\t\tfiles: []File{{Path: \"file\"}},\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"file\": File{Path: \"file\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: []File{{Path: \"/file\"}},\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"/file\": File{Path: \"/file\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: []File{{Path: \"/dir/file\"}},\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"/dir\":      File{Path: \"/dir\", Directory: true},\n\t\t\t\t\"/dir/file\": File{Path: \"/dir/file\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: []File{{Path: \"/dir/dir/file\"}},\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"/dir\":          File{Path: \"/dir\", Directory: true},\n\t\t\t\t\"/dir/dir\":      File{Path: \"/dir/dir\", Directory: true},\n\t\t\t\t\"/dir/dir/file\": File{Path: \"/dir/dir/file\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: []File{{Path: \"/dir/dir/dir\", Directory: true}},\n\t\t\tfilesystem: MockFilesystem{\n\t\t\t\t\"/dir\":         File{Path: \"/dir\", Directory: true},\n\t\t\t\t\"/dir/dir\":     File{Path: \"/dir/dir\", Directory: true},\n\t\t\t\t\"/dir/dir/dir\": File{Path: \"/dir/dir/dir\", Directory: true},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tfilesystem := NewMockFilesystem(tt.files...)\n\t\tif !reflect.DeepEqual(tt.filesystem, filesystem) {\n\t\t\tt.Errorf(\"bad filesystem (test %d): want %#v, got %#v\", i, tt.filesystem, filesystem)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/tftp/tftp.go",
    "content": "package tftp\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\n\t\"github.com/pin/tftp\"\n)\n\ntype Client interface {\n\tReceive(filename string, mode string) (io.WriterTo, error)\n}\n\ntype RemoteFile struct {\n\thost      string\n\tpath      string\n\tclient    Client\n\tstream    io.WriterTo\n\tlastError error\n}\n\nfunc NewDatasource(hostAndPath string) *RemoteFile {\n\tparts := strings.SplitN(hostAndPath, \"/\", 2)\n\n\tif len(parts) < 2 {\n\t\treturn &RemoteFile{hostAndPath, \"\", nil, nil, nil}\n\t}\n\n\thost := parts[0]\n\tif match, _ := regexp.MatchString(\":[0-9]{2,5}$\", host); !match {\n\t\t// No port, using default port 69\n\t\thost += \":69\"\n\t}\n\n\tpath := parts[1]\n\tif client, lastError := tftp.NewClient(host); lastError == nil {\n\t\treturn &RemoteFile{host, path, client, nil, nil}\n\t}\n\n\treturn &RemoteFile{host, path, nil, nil, nil}\n}\n\nfunc (f *RemoteFile) IsAvailable() bool {\n\tf.stream, f.lastError = f.client.Receive(f.path, \"octet\")\n\treturn f.lastError == nil\n}\n\nfunc (f *RemoteFile) Finish() error {\n\treturn nil\n}\n\nfunc (f *RemoteFile) String() string {\n\treturn fmt.Sprintf(\"%s, host:%s, path:%s (lastError: %v)\", f.Type(), f.host, f.path, f.lastError)\n}\n\nfunc (f *RemoteFile) AvailabilityChanges() bool {\n\treturn false\n}\n\nfunc (f *RemoteFile) ConfigRoot() string {\n\treturn \"\"\n}\n\nfunc (f *RemoteFile) FetchMetadata() (datasource.Metadata, error) {\n\treturn datasource.Metadata{}, nil\n}\n\nfunc (f *RemoteFile) FetchUserdata() ([]byte, error) {\n\tvar b bytes.Buffer\n\n\t_, err := f.stream.WriteTo(&b)\n\n\treturn b.Bytes(), err\n}\n\nfunc (f *RemoteFile) Type() string {\n\treturn \"tftp\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/tftp/tftp_test.go",
    "content": "package tftp\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"testing\"\n)\n\ntype mockClient struct {\n}\n\ntype mockReceiver struct {\n}\n\nfunc (r mockReceiver) WriteTo(w io.Writer) (n int64, err error) {\n\tb := []byte(\"cloud-config file\")\n\tw.Write(b)\n\treturn int64(len(b)), nil\n}\n\nfunc (c mockClient) Receive(filename string, mode string) (io.WriterTo, error) {\n\tif filename == \"does-not-exist\" {\n\t\treturn &mockReceiver{}, fmt.Errorf(\"does not exist\")\n\t}\n\treturn &mockReceiver{}, nil\n}\n\nvar _ Client = (*mockClient)(nil)\n\nfunc TestNewDatasource(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\troot       string\n\t\texpectHost string\n\t\texpectPath string\n\t}{\n\t\t{\n\t\t\troot:       \"127.0.0.1/test/file.yaml\",\n\t\t\texpectHost: \"127.0.0.1:69\",\n\t\t\texpectPath: \"test/file.yaml\",\n\t\t},\n\t\t{\n\t\t\troot:       \"127.0.0.1/test/file.yaml\",\n\t\t\texpectHost: \"127.0.0.1:69\",\n\t\t\texpectPath: \"test/file.yaml\",\n\t\t},\n\t} {\n\t\tds := NewDatasource(tt.root)\n\t\tif ds.host != tt.expectHost || ds.path != tt.expectPath {\n\t\t\tt.Fatalf(\"bad host or path (%q): want host=%s, got %s, path=%s, got %s\", tt.root, tt.expectHost, ds.host, tt.expectPath, ds.path)\n\t\t}\n\t}\n}\n\nfunc TestIsAvailable(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tremoteFile *RemoteFile\n\t\texpect     bool\n\t}{\n\t\t{\n\t\t\tremoteFile: &RemoteFile{\"1.2.3.4\", \"test\", &mockClient{}, nil, nil},\n\t\t\texpect:     true,\n\t\t},\n\t\t{\n\t\t\tremoteFile: &RemoteFile{\"1.2.3.4\", \"does-not-exist\", &mockClient{}, nil, nil},\n\t\t\texpect:     false,\n\t\t},\n\t} {\n\t\tif tt.remoteFile.IsAvailable() != tt.expect {\n\t\t\tt.Fatalf(\"expected remote file %s to be %v\", tt.remoteFile.path, tt.expect)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdata(t *testing.T) {\n\trf := &RemoteFile{\"1.2.3.4\", \"test\", &mockClient{}, &mockReceiver{}, nil}\n\tb, _ := rf.FetchUserdata()\n\n\texpect := []byte(\"cloud-config file\")\n\n\tif len(b) != len(expect) || !reflect.DeepEqual(b, expect) {\n\t\tt.Fatalf(\"expected length of buffer to be %d was %d. Expected %s, got %s\", len(expect), len(b), string(expect), string(b))\n\t}\n}\n\nfunc TestType(t *testing.T) {\n\trf := &RemoteFile{\"1.2.3.4\", \"test\", &mockClient{}, nil, nil}\n\n\tif rf.Type() != \"tftp\" {\n\t\tt.Fatalf(\"expected remote file Type() to return %s got %s\", \"tftp\", rf.Type())\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/url/url.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 url\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n)\n\ntype RemoteFile struct {\n\turl       string\n\tlastError error\n}\n\nfunc NewDatasource(url string) *RemoteFile {\n\treturn &RemoteFile{url, nil}\n}\n\nfunc (f *RemoteFile) IsAvailable() bool {\n\tnetwork.SetProxyEnvironmentVariables()\n\tclient := pkg.NewHTTPClient()\n\t_, f.lastError = client.GetRetry(f.url)\n\treturn (f.lastError == nil)\n}\n\nfunc (f *RemoteFile) Finish() error {\n\treturn nil\n}\n\nfunc (f *RemoteFile) String() string {\n\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", f.Type(), f.url, f.lastError)\n}\n\nfunc (f *RemoteFile) AvailabilityChanges() bool {\n\treturn false\n\t// TODO: we should trigger something to change the network state\n\t/*\tif f.lastError != nil {\n\t\t\t// if we have a Network error, then we should retry.\n\t\t\t// otherwise, we've made a request to the server, and its said nope.\n\t\t\tif _, ok := f.lastError.(pkg.ErrNetwork); !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t*/\n}\n\nfunc (f *RemoteFile) ConfigRoot() string {\n\treturn \"\"\n}\n\nfunc (f *RemoteFile) FetchMetadata() (datasource.Metadata, error) {\n\treturn datasource.Metadata{}, nil\n}\n\nfunc (f *RemoteFile) FetchUserdata() ([]byte, error) {\n\tclient := pkg.NewHTTPClient()\n\treturn client.GetRetry(f.url)\n}\n\nfunc (f *RemoteFile) Type() string {\n\treturn \"url\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/vmware/vmware.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 vmware\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\ntype readConfigFunction func(key string) (string, error)\ntype urlDownloadFunction func(url string) ([]byte, error)\n\ntype VMWare struct {\n\tovfFileName string\n\treadConfig  readConfigFunction\n\turlDownload urlDownloadFunction\n\tlastError   error\n}\n\nfunc (v VMWare) Finish() error {\n\treturn nil\n}\n\nfunc (v VMWare) String() string {\n\treturn fmt.Sprintf(\"%s: %s (lastError: %v)\", v.Type(), v.ovfFileName, v.lastError)\n}\n\nfunc (v VMWare) AvailabilityChanges() bool {\n\treturn false\n}\n\nfunc (v VMWare) ConfigRoot() string {\n\treturn \"/\"\n}\n\nfunc (v VMWare) read(keytmpl string, args ...interface{}) (string, error) {\n\tkey := fmt.Sprintf(keytmpl, args...)\n\treturn v.readConfig(key)\n}\n\nfunc (v VMWare) FetchMetadata() (metadata datasource.Metadata, err error) {\n\tmetadata.NetworkConfig = netconf.NetworkConfig{}\n\tmetadata.Hostname, _ = v.readConfig(\"hostname\")\n\n\t//netconf := map[string]string{}\n\t//saveConfig := func(key string, args ...interface{}) string {\n\t//\tkey = fmt.Sprintf(key, args...)\n\t//\tval, _ := v.readConfig(key)\n\t//\tif val != \"\" {\n\t//\t\tnetconf[key] = val\n\t//\t}\n\t//\treturn val\n\t//}\n\n\tfor i := 0; ; i++ {\n\t\tval, _ := v.read(\"dns.server.%d\", i)\n\t\tif val == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tmetadata.NetworkConfig.DNS.Nameservers = append(metadata.NetworkConfig.DNS.Nameservers, val)\n\t}\n\tdnsServers, _ := v.read(\"dns.servers\")\n\tfor _, val := range strings.Split(dnsServers, \",\") {\n\t\tif val == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tmetadata.NetworkConfig.DNS.Nameservers = append(metadata.NetworkConfig.DNS.Nameservers, val)\n\t}\n\n\tfor i := 0; ; i++ {\n\t\t//if domain := saveConfig(\"dns.domain.%d\", i); domain == \"\" {\n\t\tval, _ := v.read(\"dns.domain.%d\", i)\n\t\tif val == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tmetadata.NetworkConfig.DNS.Search = append(metadata.NetworkConfig.DNS.Search, val)\n\t}\n\tdnsDomains, _ := v.read(\"dns.domains\")\n\tfor _, val := range strings.Split(dnsDomains, \",\") {\n\t\tif val == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tmetadata.NetworkConfig.DNS.Search = append(metadata.NetworkConfig.DNS.Search, val)\n\t}\n\n\tmetadata.NetworkConfig.Interfaces = make(map[string]netconf.InterfaceConfig)\n\tfound := true\n\tfor i := 0; found; i++ {\n\t\tfound = false\n\n\t\tethName := fmt.Sprintf(\"eth%d\", i)\n\t\tnetDevice := netconf.InterfaceConfig{\n\t\t\tDHCP:      true,\n\t\t\tMatch:     ethName,\n\t\t\tAddresses: []string{},\n\t\t}\n\t\t//found = (saveConfig(\"interface.%d.name\", i) != \"\") || found\n\t\tif val, _ := v.read(\"interface.%d.name\", i); val != \"\" {\n\t\t\tnetDevice.Match = val\n\t\t\tfound = true\n\t\t}\n\t\t//found = (saveConfig(\"interface.%d.mac\", i) != \"\") || found\n\t\tif val, _ := v.read(\"interface.%d.mac\", i); val != \"\" {\n\t\t\tnetDevice.Match = \"mac:\" + val\n\t\t\tfound = true\n\t\t}\n\t\t//found = (saveConfig(\"interface.%d.dhcp\", i) != \"\") || found\n\t\tif val, _ := v.read(\"interface.%d.dhcp\", i); val != \"\" {\n\t\t\tnetDevice.DHCP = (strings.ToLower(val) != \"no\")\n\t\t\tfound = true\n\t\t}\n\n\t\trole, _ := v.read(\"interface.%d.role\", i)\n\t\tfor a := 0; ; a++ {\n\t\t\taddress, _ := v.read(\"interface.%d.ip.%d.address\", i, a)\n\t\t\tif address == \"\" {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnetmask, _ := v.read(\"interface.%d.ip.%d.netmask\", i, a)\n\t\t\tif netmask != \"\" {\n\t\t\t\tones, _ := net.IPMask(net.ParseIP(netmask).To4()).Size()\n\t\t\t\taddress = fmt.Sprintf(\"%s/%d\", address, ones)\n\t\t\t}\n\t\t\tnetDevice.Addresses = append(netDevice.Addresses, address)\n\t\t\tfound = true\n\t\t\tnetDevice.DHCP = false\n\n\t\t\tip, _, err := net.ParseCIDR(address)\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t\t//return metadata, err\n\t\t\t}\n\n\t\t\tswitch role {\n\t\t\tcase \"public\":\n\t\t\t\tif ip.To4() != nil {\n\t\t\t\t\tmetadata.PublicIPv4 = ip\n\t\t\t\t} else {\n\t\t\t\t\tmetadata.PublicIPv6 = ip\n\t\t\t\t}\n\t\t\tcase \"private\":\n\t\t\t\tif ip.To4() != nil {\n\t\t\t\t\tmetadata.PrivateIPv4 = ip\n\t\t\t\t} else {\n\t\t\t\t\tmetadata.PrivateIPv6 = ip\n\t\t\t\t}\n\t\t\tcase \"\":\n\t\t\tdefault:\n\t\t\t\t//return metadata, fmt.Errorf(\"unrecognized role: %q\", role)\n\t\t\t\tlog.Error(err)\n\t\t\t}\n\t\t}\n\n\t\tfor r := 0; ; r++ {\n\t\t\tgateway, _ := v.read(\"interface.%d.route.%d.gateway\", i, r)\n\t\t\t// TODO: do we really not do anything but default routing?\n\t\t\t//destination, _ := v.read(\"interface.%d.route.%d.destination\", i, r)\n\t\t\tdestination := \"\"\n\n\t\t\tif gateway == \"\" && destination == \"\" {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tnetDevice.Gateway = gateway\n\t\t\t\tfound = true\n\t\t\t}\n\t\t}\n\t\tif found {\n\t\t\tmetadata.NetworkConfig.Interfaces[ethName] = netDevice\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (v VMWare) FetchUserdata() ([]byte, error) {\n\tencoding, err := v.readConfig(\"cloud-init.data.encoding\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdata, err := v.readConfig(\"cloud-init.config.data\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Try to fallback to url if no explicit data\n\tif data == \"\" {\n\t\turl, err := v.readConfig(\"cloud-init.config.url\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif url != \"\" {\n\t\t\trawData, err := v.urlDownload(url)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tdata = string(rawData)\n\t\t}\n\t}\n\n\tif encoding != \"\" {\n\t\treturn config.DecodeContent(data, encoding)\n\t}\n\treturn []byte(data), nil\n}\n\nfunc (v VMWare) Type() string {\n\treturn \"VMWare\"\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/vmware/vmware_amd64.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 vmware\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/sigma/vmw-guestinfo/rpcvmx\"\n\t\"github.com/sigma/vmw-guestinfo/vmcheck\"\n\tovf \"github.com/sigma/vmw-ovflib\"\n)\n\ntype ovfWrapper struct {\n\tenv *ovf.OvfEnvironment\n}\n\nfunc (ovf ovfWrapper) readConfig(key string) (string, error) {\n\tif val := ovf.env.Properties[\"guestinfo.\"+key]; val != \"\" {\n\t\treturn val, nil\n\t}\n\treturn readConfig(key)\n}\n\nfunc NewDatasource(fileName string) *VMWare {\n\tif util.GetHypervisor() != \"vmware\" {\n\t\treturn nil\n\t}\n\t// read from provided ovf environment document (typically /media/ovfenv/ovf-env.xml)\n\tif fileName != \"\" {\n\t\tlog.Printf(\"Using OVF environment from %s\\n\", fileName)\n\t\tovfEnv, err := ioutil.ReadFile(fileName)\n\t\tif err != nil {\n\t\t\tovfEnv = make([]byte, 0)\n\t\t}\n\t\treturn &VMWare{\n\t\t\tovfFileName: fileName,\n\t\t\treadConfig:  getOvfReadConfig(ovfEnv),\n\t\t\turlDownload: urlDownload,\n\t\t}\n\t}\n\n\t// try to read ovf environment from VMware tools\n\tdata, err := readConfig(\"ovfenv\")\n\tif err == nil && data != \"\" {\n\t\tlog.Printf(\"Using OVF environment from guestinfo\\n\")\n\t\treturn &VMWare{\n\t\t\treadConfig:  getOvfReadConfig([]byte(data)),\n\t\t\turlDownload: urlDownload,\n\t\t}\n\t}\n\n\t// if everything fails, fallback to directly reading variables from the backdoor\n\tlog.Printf(\"Using guestinfo variables\\n\")\n\treturn &VMWare{\n\t\treadConfig:  readConfig,\n\t\turlDownload: urlDownload,\n\t}\n}\n\nfunc (v VMWare) IsAvailable() bool {\n\tif util.GetHypervisor() != \"vmware\" {\n\t\treturn false\n\t}\n\tif v.ovfFileName != \"\" {\n\t\t_, v.lastError = os.Stat(v.ovfFileName)\n\t\tif !os.IsNotExist(v.lastError) {\n\t\t\t// when GuestInfo is empty, the DataSource should not be available.\n\t\t\treturn v.checkGuestInfo()\n\t\t}\n\t\treturn false\n\t}\n\t// when GuestInfo is empty, the DataSource should not be available.\n\treturn vmcheck.IsVirtualWorld() && v.checkGuestInfo()\n}\n\nfunc readConfig(key string) (string, error) {\n\tdata, err := rpcvmx.NewConfig().String(key, \"\")\n\tif err == nil {\n\t\tlog.Printf(\"Read from %q: %q\\n\", key, data)\n\t} else {\n\t\tlog.Printf(\"Failed to read from %q: %v\\n\", key, err)\n\t}\n\treturn data, err\n}\n\nfunc getOvfReadConfig(ovfEnv []byte) readConfigFunction {\n\tenv := &ovf.OvfEnvironment{}\n\tif len(ovfEnv) != 0 {\n\t\tenv = ovf.ReadEnvironment(ovfEnv)\n\t}\n\n\twrapper := ovfWrapper{env}\n\treturn wrapper.readConfig\n}\n\nfunc urlDownload(url string) ([]byte, error) {\n\tclient := pkg.NewHTTPClient()\n\treturn client.GetRetry(url)\n}\n\nfunc (v VMWare) checkGuestInfo() bool {\n\tuserData, err := v.FetchUserdata()\n\tif err == nil && string(userData) != \"\" {\n\t\treturn true\n\t}\n\tmetadata, err := v.FetchMetadata()\n\tif err == nil {\n\t\tif metadata.Hostname != \"\" {\n\t\t\treturn true\n\t\t}\n\t\tif len(metadata.NetworkConfig.DNS.Nameservers) > 0 || len(metadata.NetworkConfig.DNS.Search) > 0 {\n\t\t\treturn true\n\t\t}\n\t\tif len(metadata.NetworkConfig.Interfaces) > 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/vmware/vmware_test.go",
    "content": "//go:build amd64\n// +build amd64\n\n// Copyright 2015 CoreOS, Inc.\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 vmware\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\ntype MockHypervisor map[string]string\n\nfunc (h MockHypervisor) ReadConfig(key string) (string, error) {\n\tfmt.Printf(\"read(%s) %s\\n\", key, h[key])\n\treturn h[key], nil\n}\n\nvar fakeDownloader urlDownloadFunction = func(url string) ([]byte, error) {\n\tmapping := map[string]struct {\n\t\tdata []byte\n\t\terr  error\n\t}{\n\t\t\"http://good.example.com\": {[]byte(\"test config\"), nil},\n\t\t\"http://bad.example.com\":  {nil, errors.New(\"Not found\")},\n\t}\n\tval := mapping[url]\n\treturn val.data, val.err\n}\n\nfunc TestFetchMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tvariables MockHypervisor\n\n\t\tmetadata datasource.Metadata\n\t\terr      error\n\t}{\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"hostname\":         \"first\",\n\t\t\t\t\"interface.0.mac\":  \"test mac\",\n\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t},\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname: \"first\",\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch:     \"mac:test mac\",\n\t\t\t\t\t\t\tDHCP:      true,\n\t\t\t\t\t\t\tAddresses: []string{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t//\t\t\t\tNetworkConfig: map[string]string{\n\t\t\t\t//\t\t\t\t\t\"interface.0.mac\":  \"test mac\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t\t//\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"hostname\":         \"second\",\n\t\t\t\t\"interface.0.name\": \"test name\",\n\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t},\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname: \"second\",\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch:     \"test name\",\n\t\t\t\t\t\t\tDHCP:      true,\n\t\t\t\t\t\t\tAddresses: []string{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t//\t\t\t\tNetworkConfig: map[string]string{\n\t\t\t\t//\t\t\t\t\t\"interface.0.name\": \"test name\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t\t//\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"hostname\":                        \"test host\",\n\t\t\t\t\"interface.0.mac\":                 \"test mac\",\n\t\t\t\t\"interface.0.role\":                \"private\",\n\t\t\t\t\"interface.0.ip.0.address\":        \"fe00::100/64\",\n\t\t\t\t\"interface.0.route.0.gateway\":     \"fe00::1\",\n\t\t\t\t\"interface.0.route.0.destination\": \"::\",\n\t\t\t},\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname:    \"test host\",\n\t\t\t\tPrivateIPv6: net.ParseIP(\"fe00::100\"),\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch: \"mac:test mac\",\n\t\t\t\t\t\t\tDHCP:  false,\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"fe00::100/64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tGateway: \"fe00::1\",\n\t\t\t\t\t\t\t//TODO: Destination\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t//\t\t\t\tNetworkConfig: map[string]string{\n\t\t\t\t//\t\t\t\t\t\"interface.0.mac\":                 \"test mac\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.ip.0.address\":        \"fe00::100/64\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.route.0.gateway\":     \"fe00::1\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.route.0.destination\": \"::\",\n\t\t\t\t//\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"hostname\":                        \"test host\",\n\t\t\t\t\"interface.0.name\":                \"test name\",\n\t\t\t\t\"interface.0.role\":                \"public\",\n\t\t\t\t\"interface.0.ip.0.address\":        \"10.0.0.100/24\",\n\t\t\t\t\"interface.0.ip.1.address\":        \"10.0.0.101/24\",\n\t\t\t\t\"interface.0.route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"interface.0.route.0.destination\": \"0.0.0.0\",\n\t\t\t\t\"interface.1.mac\":                 \"test mac\",\n\t\t\t\t\"interface.1.role\":                \"private\",\n\t\t\t\t\"interface.1.route.0.gateway\":     \"10.0.0.2\",\n\t\t\t\t\"interface.1.route.0.destination\": \"0.0.0.0\",\n\t\t\t\t\"interface.1.ip.0.address\":        \"10.0.0.102/24\",\n\t\t\t},\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname:    \"test host\",\n\t\t\t\tPublicIPv4:  net.ParseIP(\"10.0.0.101\"),\n\t\t\t\tPrivateIPv4: net.ParseIP(\"10.0.0.102\"),\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch: \"test name\",\n\t\t\t\t\t\t\tDHCP:  false,\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"10.0.0.100/24\",\n\t\t\t\t\t\t\t\t\"10.0.0.101/24\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tGateway: \"10.0.0.1\",\n\t\t\t\t\t\t\t//TODO: Destination\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"eth1\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch: \"mac:test mac\",\n\t\t\t\t\t\t\tDHCP:  false,\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"10.0.0.102/24\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tGateway: \"10.0.0.2\",\n\t\t\t\t\t\t\t//TODO: Destination\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t//\t\t\t\tNetworkConfig: map[string]string{\n\t\t\t\t//\t\t\t\t\t\"interface.0.name\":                \"test name\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.ip.0.address\":        \"10.0.0.100/24\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.ip.1.address\":        \"10.0.0.101/24\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t//\t\t\t\t\t\"interface.0.route.0.destination\": \"0.0.0.0\",\n\t\t\t\t//\t\t\t\t\t\"interface.1.mac\":                 \"test mac\",\n\t\t\t\t//\t\t\t\t\t\"interface.1.route.0.gateway\":     \"10.0.0.2\",\n\t\t\t\t//\t\t\t\t\t\"interface.1.route.0.destination\": \"0.0.0.0\",\n\t\t\t\t//\t\t\t\t\t\"interface.1.ip.0.address\":        \"10.0.0.102/24\",\n\t\t\t\t//\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tv := VMWare{readConfig: tt.variables.ReadConfig}\n\t\tmetadata, err := v.FetchMetadata()\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.metadata, metadata) {\n\t\t\tt.Errorf(\"bad metadata (#%d): want %#v, got %#v\", i, tt.metadata, metadata)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdata(t *testing.T) {\n\ttests := []struct {\n\t\tvariables MockHypervisor\n\n\t\tuserdata string\n\t\terr      error\n\t}{\n\t\t{},\n\t\t{\n\t\t\tvariables: map[string]string{\"cloud-init.config.data\": \"test config\"},\n\t\t\tuserdata:  \"test config\",\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.data.encoding\": \"\",\n\t\t\t\t\"cloud-init.config.data\":   \"test config\",\n\t\t\t},\n\t\t\tuserdata: \"test config\",\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.data.encoding\": \"base64\",\n\t\t\t\t\"cloud-init.config.data\":   \"dGVzdCBjb25maWc=\",\n\t\t\t},\n\t\t\tuserdata: \"test config\",\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.data.encoding\": \"gzip+base64\",\n\t\t\t\t\"cloud-init.config.data\":   \"H4sIABaoWlUAAytJLS5RSM7PS8tMBwCQiHNZCwAAAA==\",\n\t\t\t},\n\t\t\tuserdata: \"test config\",\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.data.encoding\": \"test encoding\",\n\t\t\t},\n\t\t\terr: errors.New(`Unsupported encoding \"test encoding\"`),\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.config.url\": \"http://good.example.com\",\n\t\t\t},\n\t\t\tuserdata: \"test config\",\n\t\t},\n\t\t{\n\t\t\tvariables: map[string]string{\n\t\t\t\t\"cloud-init.config.url\": \"http://bad.example.com\",\n\t\t\t},\n\t\t\terr: errors.New(\"Not found\"),\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tv := VMWare{\n\t\t\treadConfig:  tt.variables.ReadConfig,\n\t\t\turlDownload: fakeDownloader,\n\t\t}\n\t\tuserdata, err := v.FetchUserdata()\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif tt.userdata != string(userdata) {\n\t\t\tt.Errorf(\"bad userdata (#%d): want %q, got %q\", i, tt.userdata, userdata)\n\t\t}\n\t}\n}\n\nfunc TestFetchUserdataError(t *testing.T) {\n\ttestErr := errors.New(\"test error\")\n\t_, err := VMWare{readConfig: func(_ string) (string, error) { return \"\", testErr }}.FetchUserdata()\n\n\tif testErr != err {\n\t\tt.Errorf(\"bad error: want %v, got %v\", testErr, err)\n\t}\n}\n\nfunc TestOvfTransport(t *testing.T) {\n\ttests := []struct {\n\t\tdocument string\n\n\t\tmetadata datasource.Metadata\n\t\tuserdata []byte\n\t}{\n\t\t{\n\t\t\tdocument: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Environment xmlns=\"http://schemas.dmtf.org/ovf/environment/1\"\n     xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n     xmlns:oe=\"http://schemas.dmtf.org/ovf/environment/1\"\n     oe:id=\"CoreOS-vmw\">\n   <PlatformSection>\n      <Kind>VMware ESXi</Kind>\n      <Version>5.5.0</Version>\n      <Vendor>VMware, Inc.</Vendor>\n      <Locale>en</Locale>\n   </PlatformSection>\n   <PropertySection>\n      <Property oe:key=\"foo\" oe:value=\"42\"/>\n      <Property oe:key=\"guestinfo.cloud-init.config.url\" oe:value=\"http://good.example.com\"/>\n      <Property oe:key=\"guestinfo.hostname\" oe:value=\"test host\"/>\n      <Property oe:key=\"guestinfo.interface.0.name\" oe:value=\"test name\"/>\n      <Property oe:key=\"guestinfo.interface.0.role\" oe:value=\"public\"/>\n      <Property oe:key=\"guestinfo.interface.0.ip.0.address\" oe:value=\"10.0.0.100/24\"/>\n      <Property oe:key=\"guestinfo.interface.0.ip.1.address\" oe:value=\"10.0.0.101/24\"/>\n      <Property oe:key=\"guestinfo.interface.0.route.0.gateway\" oe:value=\"10.0.0.1\"/>\n      <Property oe:key=\"guestinfo.interface.0.route.0.destination\" oe:value=\"0.0.0.0\"/>\n      <Property oe:key=\"guestinfo.interface.1.mac\" oe:value=\"test mac\"/>\n      <Property oe:key=\"guestinfo.interface.1.role\" oe:value=\"private\"/>\n      <Property oe:key=\"guestinfo.interface.1.route.0.gateway\" oe:value=\"10.0.0.2\"/>\n      <Property oe:key=\"guestinfo.interface.1.route.0.destination\" oe:value=\"0.0.0.0\"/>\n      <Property oe:key=\"guestinfo.interface.1.ip.0.address\" oe:value=\"10.0.0.102/24\"/>\n   </PropertySection>\n</Environment>`,\n\t\t\tmetadata: datasource.Metadata{\n\t\t\t\tHostname:    \"test host\",\n\t\t\t\tPublicIPv4:  net.ParseIP(\"10.0.0.101\"),\n\t\t\t\tPrivateIPv4: net.ParseIP(\"10.0.0.102\"),\n\t\t\t\tNetworkConfig: netconf.NetworkConfig{\n\t\t\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\t\t\t\"eth0\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch: \"test name\",\n\t\t\t\t\t\t\tDHCP:  false,\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"10.0.0.100/24\",\n\t\t\t\t\t\t\t\t\"10.0.0.101/24\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tGateway: \"10.0.0.1\",\n\t\t\t\t\t\t\t//TODO: Destination\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"eth1\": netconf.InterfaceConfig{\n\t\t\t\t\t\t\tMatch: \"mac:test mac\",\n\t\t\t\t\t\t\tDHCP:  false,\n\t\t\t\t\t\t\tAddresses: []string{\n\t\t\t\t\t\t\t\t\"10.0.0.102/24\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tGateway: \"10.0.0.2\",\n\t\t\t\t\t\t\t//TODO: Destination\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\tuserdata: []byte(\"test config\"),\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tfile, err := ioutil.TempFile(os.TempDir(), \"ovf\")\n\t\tif err != nil {\n\t\t\tt.Errorf(\"error creating ovf file (#%d)\", i)\n\t\t}\n\t\tdefer os.Remove(file.Name())\n\n\t\tfile.WriteString(tt.document)\n\t\tv := NewDatasource(file.Name())\n\t\tif v == nil {\n\t\t\tcontinue\n\t\t}\n\t\tv.urlDownload = fakeDownloader\n\n\t\tmetadata, _ := v.FetchMetadata()\n\t\tuserdata, _ := v.FetchUserdata()\n\n\t\tif !reflect.DeepEqual(tt.metadata, metadata) {\n\t\t\tt.Errorf(\"bad metadata (#%d): want %#v, got %#v\", i, tt.metadata, metadata)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.userdata, userdata) {\n\t\t\tt.Errorf(\"bad userdata (#%d): want %#v, got %#v\", i, tt.userdata, userdata)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "config/cloudinit/datasource/vmware/vmware_unsupported.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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//go:build !amd64\n// +build !amd64\n\npackage vmware\n\nfunc NewDatasource(fileName string) *VMWare {\n\treturn &VMWare{}\n}\n\nfunc (v VMWare) IsAvailable() bool {\n\treturn false\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/env.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"net\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n)\n\nconst DefaultSSHKeyName = \"coreos-cloudinit\"\n\ntype Environment struct {\n\troot          string\n\tconfigRoot    string\n\tworkspace     string\n\tsshKeyName    string\n\tsubstitutions map[string]string\n}\n\n// NewEnvironment TODO(jonboulle): this is getting unwieldy, should be able to simplify the interface somehow\nfunc NewEnvironment(root, configRoot, workspace, sshKeyName string, metadata datasource.Metadata) *Environment {\n\tfirstNonNull := func(ip net.IP, env string) string {\n\t\tif ip == nil {\n\t\t\treturn env\n\t\t}\n\t\treturn ip.String()\n\t}\n\tsubstitutions := map[string]string{\n\t\t\"$public_ipv4\":  firstNonNull(metadata.PublicIPv4, os.Getenv(\"COREOS_PUBLIC_IPV4\")),\n\t\t\"$private_ipv4\": firstNonNull(metadata.PrivateIPv4, os.Getenv(\"COREOS_PRIVATE_IPV4\")),\n\t\t\"$public_ipv6\":  firstNonNull(metadata.PublicIPv6, os.Getenv(\"COREOS_PUBLIC_IPV6\")),\n\t\t\"$private_ipv6\": firstNonNull(metadata.PrivateIPv6, os.Getenv(\"COREOS_PRIVATE_IPV6\")),\n\t}\n\treturn &Environment{root, configRoot, workspace, sshKeyName, substitutions}\n}\n\nfunc (e *Environment) Workspace() string {\n\treturn path.Join(e.root, e.workspace)\n}\n\nfunc (e *Environment) Root() string {\n\treturn e.root\n}\n\nfunc (e *Environment) ConfigRoot() string {\n\treturn e.configRoot\n}\n\nfunc (e *Environment) SSHKeyName() string {\n\treturn e.sshKeyName\n}\n\nfunc (e *Environment) SetSSHKeyName(name string) {\n\te.sshKeyName = name\n}\n\n// Apply goes through the map of substitutions and replaces all instances of\n// the keys with their respective values. It supports escaping substitutions\n// with a leading '\\'.\nfunc (e *Environment) Apply(data string) string {\n\tfor key, val := range e.substitutions {\n\t\tmatchKey := strings.Replace(key, `$`, `\\$`, -1)\n\t\treplKey := strings.Replace(key, `$`, `$$`, -1)\n\n\t\t// \"key\" -> \"val\"\n\t\tdata = regexp.MustCompile(`([^\\\\]|^)`+matchKey).ReplaceAllString(data, `${1}`+val)\n\t\t// \"\\key\" -> \"key\"\n\t\tdata = regexp.MustCompile(`\\\\`+matchKey).ReplaceAllString(data, replKey)\n\t}\n\treturn data\n}\n\nfunc (e *Environment) DefaultEnvironmentFile() *system.EnvFile {\n\tef := system.EnvFile{\n\t\tFile: &system.File{File: config.File{\n\t\t\tPath: \"/etc/environment\",\n\t\t}},\n\t\tVars: map[string]string{},\n\t}\n\tif ip, ok := e.substitutions[\"$public_ipv4\"]; ok && len(ip) > 0 {\n\t\tef.Vars[\"COREOS_PUBLIC_IPV4\"] = ip\n\t}\n\tif ip, ok := e.substitutions[\"$private_ipv4\"]; ok && len(ip) > 0 {\n\t\tef.Vars[\"COREOS_PRIVATE_IPV4\"] = ip\n\t}\n\tif ip, ok := e.substitutions[\"$public_ipv6\"]; ok && len(ip) > 0 {\n\t\tef.Vars[\"COREOS_PUBLIC_IPV6\"] = ip\n\t}\n\tif ip, ok := e.substitutions[\"$private_ipv6\"]; ok && len(ip) > 0 {\n\t\tef.Vars[\"COREOS_PRIVATE_IPV6\"] = ip\n\t}\n\tif len(ef.Vars) == 0 {\n\t\treturn nil\n\t}\n\treturn &ef\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/env_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n)\n\nfunc TestEnvironmentApply(t *testing.T) {\n\tos.Setenv(\"COREOS_PUBLIC_IPV4\", \"1.2.3.4\")\n\tos.Setenv(\"COREOS_PRIVATE_IPV4\", \"5.6.7.8\")\n\tos.Setenv(\"COREOS_PUBLIC_IPV6\", \"1234::\")\n\tos.Setenv(\"COREOS_PRIVATE_IPV6\", \"5678::\")\n\tfor _, tt := range []struct {\n\t\tmetadata datasource.Metadata\n\t\tinput    string\n\t\tout      string\n\t}{\n\t\t{\n\t\t\t// Substituting both values directly should always take precedence\n\t\t\t// over environment variables\n\t\t\tdatasource.Metadata{\n\t\t\t\tPublicIPv4:  net.ParseIP(\"192.0.2.3\"),\n\t\t\t\tPrivateIPv4: net.ParseIP(\"192.0.2.203\"),\n\t\t\t\tPublicIPv6:  net.ParseIP(\"fe00:1234::\"),\n\t\t\t\tPrivateIPv6: net.ParseIP(\"fe00:5678::\"),\n\t\t\t},\n\t\t\t`[Service]\nExecStart=/usr/bin/echo \"$public_ipv4 $public_ipv6\"\nExecStop=/usr/bin/echo $private_ipv4 $private_ipv6\nExecStop=/usr/bin/echo $unknown`,\n\t\t\t`[Service]\nExecStart=/usr/bin/echo \"192.0.2.3 fe00:1234::\"\nExecStop=/usr/bin/echo 192.0.2.203 fe00:5678::\nExecStop=/usr/bin/echo $unknown`,\n\t\t},\n\t\t{\n\t\t\t// Substituting one value directly while falling back with the other\n\t\t\tdatasource.Metadata{\n\t\t\t\tPrivateIPv4: net.ParseIP(\"127.0.0.1\"),\n\t\t\t},\n\t\t\t\"$private_ipv4\\n$public_ipv4\",\n\t\t\t\"127.0.0.1\\n1.2.3.4\",\n\t\t},\n\t\t{\n\t\t\t// Falling back to environment variables for both values\n\t\t\tdatasource.Metadata{},\n\t\t\t\"$private_ipv4\\n$public_ipv4\",\n\t\t\t\"5.6.7.8\\n1.2.3.4\",\n\t\t},\n\t\t{\n\t\t\t// No substitutions\n\t\t\tdatasource.Metadata{},\n\t\t\t\"$private_ipv4\\nfoobar\",\n\t\t\t\"5.6.7.8\\nfoobar\",\n\t\t},\n\t\t{\n\t\t\t// Escaping substitutions\n\t\t\tdatasource.Metadata{\n\t\t\t\tPrivateIPv4: net.ParseIP(\"127.0.0.1\"),\n\t\t\t},\n\t\t\t`\\$private_ipv4\n$private_ipv4\naddr: \\$private_ipv4\n\\\\$private_ipv4`,\n\t\t\t`$private_ipv4\n127.0.0.1\naddr: $private_ipv4\n\\$private_ipv4`,\n\t\t},\n\t\t{\n\t\t\t// No substitutions with escaping\n\t\t\tdatasource.Metadata{},\n\t\t\t\"\\\\$test\\n$test\",\n\t\t\t\"\\\\$test\\n$test\",\n\t\t},\n\t} {\n\n\t\tenv := NewEnvironment(\"./\", \"./\", \"./\", \"\", tt.metadata)\n\t\tgot := env.Apply(tt.input)\n\t\tif got != tt.out {\n\t\t\tt.Fatalf(\"Environment incorrectly applied.\\ngot:\\n%s\\nwant:\\n%s\", got, tt.out)\n\t\t}\n\t}\n}\n\nfunc TestEnvironmentFile(t *testing.T) {\n\tmetadata := datasource.Metadata{\n\t\tPublicIPv4:  net.ParseIP(\"1.2.3.4\"),\n\t\tPrivateIPv4: net.ParseIP(\"5.6.7.8\"),\n\t\tPublicIPv6:  net.ParseIP(\"1234::\"),\n\t\tPrivateIPv6: net.ParseIP(\"5678::\"),\n\t}\n\texpect := \"COREOS_PRIVATE_IPV4=5.6.7.8\\nCOREOS_PRIVATE_IPV6=5678::\\nCOREOS_PUBLIC_IPV4=1.2.3.4\\nCOREOS_PUBLIC_IPV6=1234::\\n\"\n\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tenv := NewEnvironment(\"./\", \"./\", \"./\", \"\", metadata)\n\tef := env.DefaultEnvironmentFile()\n\terr = system.WriteEnvFile(ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteEnvFile failed: %v\", err)\n\t}\n\n\tfullPath := path.Join(dir, \"etc\", \"environment\")\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != expect {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n}\n\nfunc TestEnvironmentFileNil(t *testing.T) {\n\tos.Clearenv()\n\tmetadata := datasource.Metadata{}\n\n\tenv := NewEnvironment(\"./\", \"./\", \"./\", \"\", metadata)\n\tef := env.DefaultEnvironmentFile()\n\tif ef != nil {\n\t\tt.Fatalf(\"Environment file not nil: %v\", ef)\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/github.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n)\n\nfunc SSHImportGithubUser(systemUser string, githubUser string) error {\n\turl := fmt.Sprintf(\"https://api.github.com/users/%s/keys\", githubUser)\n\tkeys, err := fetchUserKeys(url)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tkeyName := fmt.Sprintf(\"github-%s\", githubUser)\n\treturn system.AuthorizeSSHKeys(systemUser, keyName, keys)\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/ssh_keys.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n)\n\ntype UserKey struct {\n\tID  int    `json:\"id,omitempty\"`\n\tKey string `json:\"key\"`\n}\n\nfunc SSHImportKeysFromURL(systemUser string, url string) error {\n\tkeys, err := fetchUserKeys(url)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tkeyName := fmt.Sprintf(\"coreos-cloudinit-%s\", systemUser)\n\treturn system.AuthorizeSSHKeys(systemUser, keyName, keys)\n}\n\nfunc fetchUserKeys(url string) ([]string, error) {\n\tclient := pkg.NewHTTPClient()\n\tdata, err := client.GetRetry(url)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar userKeys []UserKey\n\terr = json.Unmarshal(data, &userKeys)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tkeys := make([]string, 0)\n\tfor _, key := range userKeys {\n\t\tkeys = append(keys, key.Key)\n\t}\n\treturn keys, err\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/ssh_keys_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n)\n\nfunc TestCloudConfigUsersURLMarshal(t *testing.T) {\n\tts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tghRes := `\n[\n  {\n    \"key\": \"ssh-dss AAAAB3NzaC1kc3MAAACBAIHAu822ggSkIHrJYvhmBceOSVjuflfQm8RbMMDNVe9relQfuPbN+nxGGTCKzPLebeOcX+Wwi77TPXWwK3BZMglfXxhABlFPsuMb63Tqp94pBYsJdx/iFj9iGo6pKoM1k8ubOcqsUnq+BR9895zRbE7MjdwkGo67+QhCEwvkwAnNAAAAFQCuddVqXLCubzqnWmeHLQE+2GFfHwAAAIBnlXW5h15ndVuwi0htF4oodVSB1KwnTWcuBK+aE1zRs76yvRb0Ws+oifumThDwB/Tec6FQuAfRKfy6piChZqsu5KvL98I+2t5yyi1td+kMvdTnVL2lW44etDKseOcozmknCOmh4Dqvhl/2MwrDAhlPaN08EEq9h3w3mXtNLWH64QAAAIBAzDOKr17llngaKIdDXh+LtXKh87+zfjlTA36/9r2uF2kYE5uApDtu9sPCkt7+YBQt7R8prADPckwAiXwVdk0xijIOpLDBmoydQJJRQ+zTMxvpQmUr/1kUOv0zb+lB657CgvN0vVTmP2swPeMvgntt3C4vw7Ab+O+MS9peOAJbbQ==\"\n  },\n  {\n    \"key\": \"ssh-dss AAAAB3NzaC1kc3MAAACBANxpzIbTzKTeBRaOIdUxwwGwvDasTfU/PonhbNIuhYjc+xFGvBRTumox2F+luVAKKs4WdvA4nJXaY1OFi6DZftk5Bp4E2JaSzp8ulAzHsMexDdv6LGHGEJj/qdHAL1vHk2K89PpwRFSRZI8XRBLjvkr4ZgBKLG5ZILXPJEPP2j3lAAAAFQCtxoTnV8wy0c4grcGrQ+1sCsD7WQAAAIAqZsW2GviMe1RQrbZT0xAZmI64XRPrnLsoLxycHWlS7r6uUln2c6Ae2MB/YF0d4Kd1XZii9GHj7rrypqEo7MW8uSabhu70nmu1J8m2O3Dsr+4oJLeat9vwPsJV92IKO0jQwjKnAOHOiB9JKGeCw+NfXfogbti9/q38Q6XcS+SI5wAAAIEA1803Y2h+tOOpZXAsNIwl9mRfExWzLQ3L7knwJdznQu/6SW1H/1oyoYLebuk187Qj2UFI5qQ6AZNc49DvohWx0Cg6ABcyubNyoaCjZKWIdxVnItHWNbLe//+tyTu0I2eQwJOORsEPK5gMpf599C7wXQ//DzZOWbTWiHEX52gCTmk=\"\n  },\n  {\n    \"id\": 5224438,\n    \"key\": \"ssh-dss AAAAB3NzaC1kc3MAAACBAPKRWdKhzGZuLAJL6M1eM51hWViMqNBC2C6lm2OqGRYLuIf1GJ391widUuSf4wQqnkR22Q9PCmAZ19XCf11wBRMnuw9I/Z3Bt5bXfc+dzFBCmHYGJ6wNSv++H9jxyMb+usmsenWOFZGNO2jN0wrJ4ay8Yt0bwtRU+VCXpuRLszMzAAAAFQDZUIuPjcfK5HLgnwZ/J3lvtvlUjQAAAIEApIkAwLuCQV5j3U6DmI/Y6oELqSUR2purFm8jo8jePFfe1t+ghikgD254/JXlhDCVgY0NLXcak+coJfGCTT23quJ7I5xdpTn/OZO2Q6Woum/bijFC/UWwQbLz0R2nU3DoHv5v6XHQZxuIG4Fsxa91S+vWjZFtI7RuYlBCZA//ANMAAACBAJO0FojzkX6IeaWLqrgu9GTkFwGFazZ+LPH5JOWPoPn1hQKuR32Uf6qNcBZcIjY7SF0P7HF5rLQd6zKZzHqqQQ92MV555NEwjsnJglYU8CaaZsfYooaGPgA1YN7RhTSAuDmUW5Hyfj5BH4NTtrzrvJxIhDoQLf31Fasjw00r4R0O\"\n  }\n]\n`\n\t\tfmt.Fprintln(w, ghRes)\n\t}))\n\tdefer ts.Close()\n\n\tkeys, err := fetchUserKeys(ts.URL)\n\tif err != nil {\n\t\tt.Fatalf(\"Encountered unexpected error: %v\", err)\n\t}\n\texpected := \"ssh-dss AAAAB3NzaC1kc3MAAACBAIHAu822ggSkIHrJYvhmBceOSVjuflfQm8RbMMDNVe9relQfuPbN+nxGGTCKzPLebeOcX+Wwi77TPXWwK3BZMglfXxhABlFPsuMb63Tqp94pBYsJdx/iFj9iGo6pKoM1k8ubOcqsUnq+BR9895zRbE7MjdwkGo67+QhCEwvkwAnNAAAAFQCuddVqXLCubzqnWmeHLQE+2GFfHwAAAIBnlXW5h15ndVuwi0htF4oodVSB1KwnTWcuBK+aE1zRs76yvRb0Ws+oifumThDwB/Tec6FQuAfRKfy6piChZqsu5KvL98I+2t5yyi1td+kMvdTnVL2lW44etDKseOcozmknCOmh4Dqvhl/2MwrDAhlPaN08EEq9h3w3mXtNLWH64QAAAIBAzDOKr17llngaKIdDXh+LtXKh87+zfjlTA36/9r2uF2kYE5uApDtu9sPCkt7+YBQt7R8prADPckwAiXwVdk0xijIOpLDBmoydQJJRQ+zTMxvpQmUr/1kUOv0zb+lB657CgvN0vVTmP2swPeMvgntt3C4vw7Ab+O+MS9peOAJbbQ==\"\n\tif keys[0] != expected {\n\t\tt.Fatalf(\"expected %s, got %s\", expected, keys[0])\n\t}\n\texpected = \"ssh-dss AAAAB3NzaC1kc3MAAACBAPKRWdKhzGZuLAJL6M1eM51hWViMqNBC2C6lm2OqGRYLuIf1GJ391widUuSf4wQqnkR22Q9PCmAZ19XCf11wBRMnuw9I/Z3Bt5bXfc+dzFBCmHYGJ6wNSv++H9jxyMb+usmsenWOFZGNO2jN0wrJ4ay8Yt0bwtRU+VCXpuRLszMzAAAAFQDZUIuPjcfK5HLgnwZ/J3lvtvlUjQAAAIEApIkAwLuCQV5j3U6DmI/Y6oELqSUR2purFm8jo8jePFfe1t+ghikgD254/JXlhDCVgY0NLXcak+coJfGCTT23quJ7I5xdpTn/OZO2Q6Woum/bijFC/UWwQbLz0R2nU3DoHv5v6XHQZxuIG4Fsxa91S+vWjZFtI7RuYlBCZA//ANMAAACBAJO0FojzkX6IeaWLqrgu9GTkFwGFazZ+LPH5JOWPoPn1hQKuR32Uf6qNcBZcIjY7SF0P7HF5rLQd6zKZzHqqQQ92MV555NEwjsnJglYU8CaaZsfYooaGPgA1YN7RhTSAuDmUW5Hyfj5BH4NTtrzrvJxIhDoQLf31Fasjw00r4R0O\"\n\tif keys[2] != expected {\n\t\tt.Fatalf(\"expected %s, got %s\", expected, keys[2])\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/user_data.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"errors\"\n\t\"log\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nvar (\n\tErrIgnitionConfig = errors.New(\"not a config (found Ignition)\")\n)\n\nfunc ParseUserData(contents string) (interface{}, error) {\n\tif len(contents) == 0 {\n\t\treturn nil, nil\n\t}\n\n\tswitch {\n\tcase config.IsScript(contents):\n\t\tlog.Printf(\"Parsing user-data as script\")\n\t\treturn config.NewScript(contents)\n\tcase config.IsCloudConfig(contents):\n\t\tlog.Printf(\"Parsing user-data as cloud-config\")\n\t\tcc, err := config.NewCloudConfig(contents)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := cc.Decode(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn cc, nil\n\tcase config.IsIgnitionConfig(contents):\n\t\treturn nil, ErrIgnitionConfig\n\tdefault:\n\t\treturn nil, errors.New(\"Unrecognized user-data format\")\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/user_data_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestParseHeaderCRLF(t *testing.T) {\n\tconfigs := []string{\n\t\t\"#cloud-config\\nfoo: bar\",\n\t\t\"#cloud-config\\r\\nfoo: bar\",\n\t}\n\n\tfor i, config := range configs {\n\t\t_, err := ParseUserData(config)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Failed parsing config %d: %v\", i, err)\n\t\t}\n\t}\n\n\tscripts := []string{\n\t\t\"#!bin/bash\\necho foo\",\n\t\t\"#!bin/bash\\r\\necho foo\",\n\t}\n\n\tfor i, script := range scripts {\n\t\t_, err := ParseUserData(script)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Failed parsing script %d: %v\", i, err)\n\t\t}\n\t}\n}\n\nfunc TestParseConfigCRLF(t *testing.T) {\n\tcontents := \"#cloud-config \\r\\nhostname: foo\\r\\nssh_authorized_keys:\\r\\n  - foobar\\r\\n\"\n\tud, err := ParseUserData(contents)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed parsing config: %v\", err)\n\t}\n\n\tcfg := ud.(*config.CloudConfig)\n\n\tif cfg.Hostname != \"foo\" {\n\t\tt.Error(\"Failed parsing hostname from config\")\n\t}\n\n\tif len(cfg.SSHAuthorizedKeys) != 1 {\n\t\tt.Error(\"Parsed incorrect number of SSH keys\")\n\t}\n}\n\nfunc TestParseConfigEmpty(t *testing.T) {\n\ti, e := ParseUserData(``)\n\tif i != nil {\n\t\tt.Error(\"ParseUserData of empty string returned non-nil unexpectedly\")\n\t} else if e != nil {\n\t\tt.Error(\"ParseUserData of empty string returned error unexpectedly\")\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/initialize/workspace.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 initialize\n\nimport (\n\t\"io/ioutil\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/cloudinit/system\"\n)\n\nfunc PrepWorkspace(workspace string) error {\n\tif err := system.EnsureDirectoryExists(workspace); err != nil {\n\t\treturn err\n\t}\n\n\tscripts := path.Join(workspace, \"scripts\")\n\treturn system.EnsureDirectoryExists(scripts)\n}\n\nfunc PersistScriptInWorkspace(script config.Script, workspace string) (string, error) {\n\tscriptsPath := path.Join(workspace, \"scripts\")\n\ttmp, err := ioutil.TempFile(scriptsPath, \"\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\ttmp.Close()\n\n\trelpath := strings.TrimPrefix(tmp.Name(), workspace)\n\n\tfile := system.File{File: config.File{\n\t\tPath:               relpath,\n\t\tRawFilePermissions: \"0744\",\n\t\tContent:            string(script),\n\t}}\n\n\treturn system.WriteFile(&file, workspace)\n}\n\nfunc PersistUnitNameInWorkspace(name string, workspace string) error {\n\tfile := system.File{File: config.File{\n\t\tPath:               path.Join(\"scripts\", \"unit-name\"),\n\t\tRawFilePermissions: \"0644\",\n\t\tContent:            name,\n\t}}\n\t_, err := system.WriteFile(&file, workspace)\n\treturn err\n}\n"
  },
  {
    "path": "config/cloudinit/network/debian.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"log\"\n\t\"strings\"\n)\n\nfunc ProcessDebianNetconf(config []byte) ([]InterfaceGenerator, error) {\n\tlog.Println(\"Processing Debian network config\")\n\tlines := formatConfig(string(config))\n\tstanzas, err := parseStanzas(lines)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tinterfaces := make([]*stanzaInterface, 0, len(stanzas))\n\tfor _, stanza := range stanzas {\n\t\tswitch s := stanza.(type) {\n\t\tcase *stanzaInterface:\n\t\t\tinterfaces = append(interfaces, s)\n\t\t}\n\t}\n\tlog.Printf(\"Parsed %d network interfaces\\n\", len(interfaces))\n\n\tlog.Println(\"Processed Debian network config\")\n\treturn buildInterfaces(interfaces), nil\n}\n\nfunc formatConfig(config string) []string {\n\tlines := []string{}\n\tconfig = strings.Replace(config, \"\\\\\\n\", \"\", -1)\n\tfor config != \"\" {\n\t\tsplit := strings.SplitN(config, \"\\n\", 2)\n\t\tline := strings.TrimSpace(split[0])\n\n\t\tif len(split) == 2 {\n\t\t\tconfig = split[1]\n\t\t} else {\n\t\t\tconfig = \"\"\n\t\t}\n\n\t\tif strings.HasPrefix(line, \"#\") || line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tlines = append(lines, line)\n\t}\n\treturn lines\n}\n"
  },
  {
    "path": "config/cloudinit/network/debian_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"testing\"\n)\n\nfunc TestFormatConfigs(t *testing.T) {\n\tfor in, n := range map[string]int{\n\t\t\"\":                    0,\n\t\t\"line1\\\\\\nis long\":    1,\n\t\t\"#comment\":            0,\n\t\t\"#comment\\\\\\ncomment\": 0,\n\t\t\"  #comment \\\\\\n comment\\nline 1\\nline 2\\\\\\n is long\": 2,\n\t} {\n\t\tlines := formatConfig(in)\n\t\tif len(lines) != n {\n\t\t\tt.Fatalf(\"bad number of lines for config %q: got %d, want %d\", in, len(lines), n)\n\t\t}\n\t}\n}\n\nfunc TestProcessDebianNetconf(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tin   string\n\t\tfail bool\n\t\tn    int\n\t}{\n\t\t{\"\", false, 0},\n\t\t{\"iface\", true, -1},\n\t\t{\"auto eth1\\nauto eth2\", false, 0},\n\t\t{\"iface eth1 inet manual\", false, 1},\n\t} {\n\t\tinterfaces, err := ProcessDebianNetconf([]byte(tt.in))\n\t\tfailed := err != nil\n\t\tif tt.fail != failed {\n\t\t\tt.Fatalf(\"bad failure state for %q: got %t, want %t\", tt.in, failed, tt.fail)\n\t\t}\n\t\tif tt.n != -1 && tt.n != len(interfaces) {\n\t\t\tt.Fatalf(\"bad number of interfaces for %q: got %d, want %q\", tt.in, len(interfaces), tt.n)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/network/interface.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype InterfaceGenerator interface {\n\tName() string\n\tFilename() string\n\tNetdev() string\n\tLink() string\n\tNetwork() string\n\tType() string\n\tModprobeParams() string\n}\n\ntype networkInterface interface {\n\tInterfaceGenerator\n\tChildren() []networkInterface\n\tsetConfigDepth(int)\n}\n\ntype logicalInterface struct {\n\tname        string\n\thwaddr      net.HardwareAddr\n\tconfig      configMethod\n\tchildren    []networkInterface\n\tconfigDepth int\n}\n\nfunc (i *logicalInterface) Name() string {\n\treturn i.name\n}\n\nfunc (i *logicalInterface) Network() string {\n\tconfig := fmt.Sprintln(\"[Match]\")\n\tif i.name != \"\" {\n\t\tconfig += fmt.Sprintf(\"Name=%s\\n\", i.name)\n\t}\n\tif i.hwaddr != nil {\n\t\tconfig += fmt.Sprintf(\"MACAddress=%s\\n\", i.hwaddr)\n\t}\n\tconfig += \"\\n[Network]\\n\"\n\n\tfor _, child := range i.children {\n\t\tswitch iface := child.(type) {\n\t\tcase *vlanInterface:\n\t\t\tconfig += fmt.Sprintf(\"VLAN=%s\\n\", iface.name)\n\t\tcase *bondInterface:\n\t\t\tconfig += fmt.Sprintf(\"Bond=%s\\n\", iface.name)\n\t\t}\n\t}\n\n\tswitch conf := i.config.(type) {\n\tcase configMethodStatic:\n\t\tif len(conf.domains) > 0 {\n\t\t\tconfig += fmt.Sprintf(\"Domains=%s\\n\", strings.Join(conf.domains, \" \"))\n\t\t}\n\t\tfor _, nameserver := range conf.nameservers {\n\t\t\tconfig += fmt.Sprintf(\"DNS=%s\\n\", nameserver)\n\t\t}\n\t\tfor _, addr := range conf.addresses {\n\t\t\tconfig += fmt.Sprintf(\"\\n[Address]\\nAddress=%s\\n\", addr.String())\n\t\t}\n\t\tfor _, route := range conf.routes {\n\t\t\tconfig += fmt.Sprintf(\"\\n[Route]\\nDestination=%s\\nGateway=%s\\n\", route.destination.String(), route.gateway)\n\t\t}\n\tcase configMethodDHCP:\n\t\tconfig += \"DHCP=true\\n\"\n\t}\n\n\treturn config\n}\n\nfunc (i *logicalInterface) Link() string {\n\treturn \"\"\n}\n\nfunc (i *logicalInterface) Netdev() string {\n\treturn \"\"\n}\n\nfunc (i *logicalInterface) Filename() string {\n\tname := i.name\n\tif name == \"\" {\n\t\tname = i.hwaddr.String()\n\t}\n\treturn fmt.Sprintf(\"%02x-%s\", i.configDepth, name)\n}\n\nfunc (i *logicalInterface) Children() []networkInterface {\n\treturn i.children\n}\n\nfunc (i *logicalInterface) ModprobeParams() string {\n\treturn \"\"\n}\n\nfunc (i *logicalInterface) setConfigDepth(depth int) {\n\ti.configDepth = depth\n}\n\ntype physicalInterface struct {\n\tlogicalInterface\n}\n\nfunc (p *physicalInterface) Type() string {\n\treturn \"physical\"\n}\n\ntype bondInterface struct {\n\tlogicalInterface\n\tslaves  []string\n\toptions map[string]string\n}\n\nfunc (b *bondInterface) Netdev() string {\n\tconfig := fmt.Sprintf(\"[NetDev]\\nKind=bond\\nName=%s\\n\", b.name)\n\tif b.hwaddr != nil {\n\t\tconfig += fmt.Sprintf(\"MACAddress=%s\\n\", b.hwaddr.String())\n\t}\n\n\tconfig += fmt.Sprintf(\"\\n[Bond]\\n\")\n\tfor _, name := range sortedKeys(b.options) {\n\t\tconfig += fmt.Sprintf(\"%s=%s\\n\", name, b.options[name])\n\t}\n\n\treturn config\n}\n\nfunc (b *bondInterface) Type() string {\n\treturn \"bond\"\n}\n\nfunc (b *bondInterface) ModprobeParams() string {\n\tparams := \"\"\n\tfor _, name := range sortedKeys(b.options) {\n\t\tparams += fmt.Sprintf(\"%s=%s \", name, b.options[name])\n\t}\n\tparams = strings.TrimSuffix(params, \" \")\n\treturn params\n}\n\ntype vlanInterface struct {\n\tlogicalInterface\n\tid        int\n\trawDevice string\n}\n\nfunc (v *vlanInterface) Netdev() string {\n\tconfig := fmt.Sprintf(\"[NetDev]\\nKind=vlan\\nName=%s\\n\", v.name)\n\tswitch c := v.config.(type) {\n\tcase configMethodStatic:\n\t\tif c.hwaddress != nil {\n\t\t\tconfig += fmt.Sprintf(\"MACAddress=%s\\n\", c.hwaddress)\n\t\t}\n\tcase configMethodDHCP:\n\t\tif c.hwaddress != nil {\n\t\t\tconfig += fmt.Sprintf(\"MACAddress=%s\\n\", c.hwaddress)\n\t\t}\n\t}\n\tconfig += fmt.Sprintf(\"\\n[VLAN]\\nId=%d\\n\", v.id)\n\treturn config\n}\n\nfunc (v *vlanInterface) Type() string {\n\treturn \"vlan\"\n}\n\nfunc buildInterfaces(stanzas []*stanzaInterface) []InterfaceGenerator {\n\tinterfaceMap := createInterfaces(stanzas)\n\tlinkAncestors(interfaceMap)\n\tmarkConfigDepths(interfaceMap)\n\n\tinterfaces := make([]InterfaceGenerator, 0, len(interfaceMap))\n\tfor _, name := range sortedInterfaces(interfaceMap) {\n\t\tinterfaces = append(interfaces, interfaceMap[name])\n\t}\n\n\treturn interfaces\n}\n\nfunc createInterfaces(stanzas []*stanzaInterface) map[string]networkInterface {\n\tinterfaceMap := make(map[string]networkInterface)\n\tfor _, iface := range stanzas {\n\t\tswitch iface.kind {\n\t\tcase interfaceBond:\n\t\t\tbondOptions := make(map[string]string)\n\t\t\tfor _, k := range []string{\"mode\", \"miimon\", \"lacp-rate\"} {\n\t\t\t\tif v, ok := iface.options[\"bond-\"+k]; ok && len(v) > 0 {\n\t\t\t\t\tbondOptions[k] = v[0]\n\t\t\t\t}\n\t\t\t}\n\t\t\tinterfaceMap[iface.name] = &bondInterface{\n\t\t\t\tlogicalInterface{\n\t\t\t\t\tname:     iface.name,\n\t\t\t\t\tconfig:   iface.configMethod,\n\t\t\t\t\tchildren: []networkInterface{},\n\t\t\t\t},\n\t\t\t\tiface.options[\"bond-slaves\"],\n\t\t\t\tbondOptions,\n\t\t\t}\n\t\t\tfor _, slave := range iface.options[\"bond-slaves\"] {\n\t\t\t\tif _, ok := interfaceMap[slave]; !ok {\n\t\t\t\t\tinterfaceMap[slave] = &physicalInterface{\n\t\t\t\t\t\tlogicalInterface{\n\t\t\t\t\t\t\tname:     slave,\n\t\t\t\t\t\t\tconfig:   configMethodManual{},\n\t\t\t\t\t\t\tchildren: []networkInterface{},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase interfacePhysical:\n\t\t\tif _, ok := iface.configMethod.(configMethodLoopback); ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tinterfaceMap[iface.name] = &physicalInterface{\n\t\t\t\tlogicalInterface{\n\t\t\t\t\tname:     iface.name,\n\t\t\t\t\tconfig:   iface.configMethod,\n\t\t\t\t\tchildren: []networkInterface{},\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase interfaceVLAN:\n\t\t\tvar rawDevice string\n\t\t\tid, _ := strconv.Atoi(iface.options[\"id\"][0])\n\t\t\tif device := iface.options[\"raw_device\"]; len(device) == 1 {\n\t\t\t\trawDevice = device[0]\n\t\t\t\tif _, ok := interfaceMap[rawDevice]; !ok {\n\t\t\t\t\tinterfaceMap[rawDevice] = &physicalInterface{\n\t\t\t\t\t\tlogicalInterface{\n\t\t\t\t\t\t\tname:     rawDevice,\n\t\t\t\t\t\t\tconfig:   configMethodManual{},\n\t\t\t\t\t\t\tchildren: []networkInterface{},\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\tinterfaceMap[iface.name] = &vlanInterface{\n\t\t\t\tlogicalInterface{\n\t\t\t\t\tname:     iface.name,\n\t\t\t\t\tconfig:   iface.configMethod,\n\t\t\t\t\tchildren: []networkInterface{},\n\t\t\t\t},\n\t\t\t\tid,\n\t\t\t\trawDevice,\n\t\t\t}\n\t\t}\n\t}\n\treturn interfaceMap\n}\n\nfunc linkAncestors(interfaceMap map[string]networkInterface) {\n\tfor _, name := range sortedInterfaces(interfaceMap) {\n\t\tiface := interfaceMap[name]\n\t\tswitch i := iface.(type) {\n\t\tcase *vlanInterface:\n\t\t\tif parent, ok := interfaceMap[i.rawDevice]; ok {\n\t\t\t\tswitch p := parent.(type) {\n\t\t\t\tcase *physicalInterface:\n\t\t\t\t\tp.children = append(p.children, iface)\n\t\t\t\tcase *bondInterface:\n\t\t\t\t\tp.children = append(p.children, iface)\n\t\t\t\t}\n\t\t\t}\n\t\tcase *bondInterface:\n\t\t\tfor _, slave := range i.slaves {\n\t\t\t\tif parent, ok := interfaceMap[slave]; ok {\n\t\t\t\t\tswitch p := parent.(type) {\n\t\t\t\t\tcase *physicalInterface:\n\t\t\t\t\t\tp.children = append(p.children, iface)\n\t\t\t\t\tcase *bondInterface:\n\t\t\t\t\t\tp.children = append(p.children, iface)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc markConfigDepths(interfaceMap map[string]networkInterface) {\n\trootInterfaceMap := make(map[string]networkInterface)\n\tfor k, v := range interfaceMap {\n\t\trootInterfaceMap[k] = v\n\t}\n\n\tfor _, iface := range interfaceMap {\n\t\tfor _, child := range iface.Children() {\n\t\t\tdelete(rootInterfaceMap, child.Name())\n\t\t}\n\t}\n\tfor _, iface := range rootInterfaceMap {\n\t\tsetDepth(iface)\n\t}\n}\n\nfunc setDepth(iface networkInterface) int {\n\tmaxDepth := 0\n\tfor _, child := range iface.Children() {\n\t\tif depth := setDepth(child); depth > maxDepth {\n\t\t\tmaxDepth = depth\n\t\t}\n\t}\n\tiface.setConfigDepth(maxDepth)\n\treturn (maxDepth + 1)\n}\n\nfunc sortedKeys(m map[string]string) (keys []string) {\n\tfor key := range m {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\treturn\n}\n\nfunc sortedInterfaces(m map[string]networkInterface) (keys []string) {\n\tfor key := range m {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\treturn\n}\n"
  },
  {
    "path": "config/cloudinit/network/interface_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestInterfaceGenerators(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tname    string\n\t\tnetdev  string\n\t\tlink    string\n\t\tnetwork string\n\t\tkind    string\n\t\tiface   InterfaceGenerator\n\t}{\n\t\t{\n\t\t\tname:    \"\",\n\t\t\tnetwork: \"[Match]\\nMACAddress=00:01:02:03:04:05\\n\\n[Network]\\n\",\n\t\t\tkind:    \"physical\",\n\t\t\tiface: &physicalInterface{logicalInterface{\n\t\t\t\thwaddr: net.HardwareAddr([]byte{0, 1, 2, 3, 4, 5}),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\nBond=testbond1\\nVLAN=testvlan1\\nVLAN=testvlan2\\n\",\n\t\t\tkind:    \"physical\",\n\t\t\tiface: &physicalInterface{logicalInterface{\n\t\t\t\tname: \"testname\",\n\t\t\t\tchildren: []networkInterface{\n\t\t\t\t\t&bondInterface{logicalInterface: logicalInterface{name: \"testbond1\"}},\n\t\t\t\t\t&vlanInterface{logicalInterface: logicalInterface{name: \"testvlan1\"}, id: 1},\n\t\t\t\t\t&vlanInterface{logicalInterface: logicalInterface{name: \"testvlan2\"}, id: 1},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetdev:  \"[NetDev]\\nKind=bond\\nName=testname\\n\\n[Bond]\\n\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\nBond=testbond1\\nVLAN=testvlan1\\nVLAN=testvlan2\\nDHCP=true\\n\",\n\t\t\tkind:    \"bond\",\n\t\t\tiface: &bondInterface{logicalInterface: logicalInterface{\n\t\t\t\tname:   \"testname\",\n\t\t\t\tconfig: configMethodDHCP{},\n\t\t\t\tchildren: []networkInterface{\n\t\t\t\t\t&bondInterface{logicalInterface: logicalInterface{name: \"testbond1\"}},\n\t\t\t\t\t&vlanInterface{logicalInterface: logicalInterface{name: \"testvlan1\"}, id: 1},\n\t\t\t\t\t&vlanInterface{logicalInterface: logicalInterface{name: \"testvlan2\"}, id: 1},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetdev:  \"[NetDev]\\nKind=vlan\\nName=testname\\n\\n[VLAN]\\nId=1\\n\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\n\",\n\t\t\tkind:    \"vlan\",\n\t\t\tiface:   &vlanInterface{logicalInterface{name: \"testname\"}, 1, \"\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetdev:  \"[NetDev]\\nKind=vlan\\nName=testname\\nMACAddress=00:01:02:03:04:05\\n\\n[VLAN]\\nId=1\\n\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\n\",\n\t\t\tkind:    \"vlan\",\n\t\t\tiface:   &vlanInterface{logicalInterface{name: \"testname\", config: configMethodStatic{hwaddress: net.HardwareAddr([]byte{0, 1, 2, 3, 4, 5})}}, 1, \"\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetdev:  \"[NetDev]\\nKind=vlan\\nName=testname\\nMACAddress=00:01:02:03:04:05\\n\\n[VLAN]\\nId=1\\n\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\nDHCP=true\\n\",\n\t\t\tkind:    \"vlan\",\n\t\t\tiface:   &vlanInterface{logicalInterface{name: \"testname\", config: configMethodDHCP{hwaddress: net.HardwareAddr([]byte{0, 1, 2, 3, 4, 5})}}, 1, \"\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"testname\",\n\t\t\tnetdev:  \"[NetDev]\\nKind=vlan\\nName=testname\\n\\n[VLAN]\\nId=0\\n\",\n\t\t\tnetwork: \"[Match]\\nName=testname\\n\\n[Network]\\nDomains=coreos.com example.com\\nDNS=8.8.8.8\\n\\n[Address]\\nAddress=192.168.1.100/24\\n\\n[Route]\\nDestination=0.0.0.0/0\\nGateway=1.2.3.4\\n\",\n\t\t\tkind:    \"vlan\",\n\t\t\tiface: &vlanInterface{logicalInterface: logicalInterface{\n\t\t\t\tname: \"testname\",\n\t\t\t\tconfig: configMethodStatic{\n\t\t\t\t\taddresses:   []net.IPNet{{IP: []byte{192, 168, 1, 100}, Mask: []byte{255, 255, 255, 0}}},\n\t\t\t\t\tnameservers: []net.IP{[]byte{8, 8, 8, 8}},\n\t\t\t\t\tdomains:     []string{\"coreos.com\", \"example.com\"},\n\t\t\t\t\troutes:      []route{{destination: net.IPNet{IP: []byte{0, 0, 0, 0}, Mask: []byte{0, 0, 0, 0}}, gateway: []byte{1, 2, 3, 4}}},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t} {\n\t\tif name := tt.iface.Name(); name != tt.name {\n\t\t\tt.Fatalf(\"bad name (%q): want %q, got %q\", tt.iface, tt.name, name)\n\t\t}\n\t\tif netdev := tt.iface.Netdev(); netdev != tt.netdev {\n\t\t\tt.Fatalf(\"bad netdev (%q): want %q, got %q\", tt.iface, tt.netdev, netdev)\n\t\t}\n\t\tif link := tt.iface.Link(); link != tt.link {\n\t\t\tt.Fatalf(\"bad link (%q): want %q, got %q\", tt.iface, tt.link, link)\n\t\t}\n\t\tif network := tt.iface.Network(); network != tt.network {\n\t\t\tt.Fatalf(\"bad network (%q): want %q, got %q\", tt.iface, tt.network, network)\n\t\t}\n\t\tif kind := tt.iface.Type(); kind != tt.kind {\n\t\t\tt.Fatalf(\"bad type (%q): want %q, got %q\", tt.iface, tt.kind, kind)\n\t\t}\n\t}\n}\n\nfunc TestModprobeParams(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\ti InterfaceGenerator\n\t\tp string\n\t}{\n\t\t{\n\t\t\ti: &physicalInterface{},\n\t\t\tp: \"\",\n\t\t},\n\t\t{\n\t\t\ti: &vlanInterface{},\n\t\t\tp: \"\",\n\t\t},\n\t\t{\n\t\t\ti: &bondInterface{\n\t\t\t\tlogicalInterface{},\n\t\t\t\tnil,\n\t\t\t\tmap[string]string{\n\t\t\t\t\t\"a\": \"1\",\n\t\t\t\t\t\"b\": \"2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tp: \"a=1 b=2\",\n\t\t},\n\t} {\n\t\tif p := tt.i.ModprobeParams(); p != tt.p {\n\t\t\tt.Fatalf(\"bad params (%q): got %s, want %s\", tt.i, p, tt.p)\n\t\t}\n\t}\n}\n\nfunc TestBuildInterfacesLo(t *testing.T) {\n\tstanzas := []*stanzaInterface{\n\t\t{\n\t\t\tname:         \"lo\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodLoopback{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t}\n\tinterfaces := buildInterfaces(stanzas)\n\tif len(interfaces) != 0 {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestBuildInterfacesBlindBond(t *testing.T) {\n\tstanzas := []*stanzaInterface{\n\t\t{\n\t\t\tname:         \"bond0\",\n\t\t\tkind:         interfaceBond,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"bond-slaves\": {\"eth0\"},\n\t\t\t},\n\t\t},\n\t}\n\tinterfaces := buildInterfaces(stanzas)\n\tbond0 := &bondInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"bond0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{},\n\t\t\tconfigDepth: 0,\n\t\t},\n\t\t[]string{\"eth0\"},\n\t\tmap[string]string{},\n\t}\n\teth0 := &physicalInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"eth0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{bond0},\n\t\t\tconfigDepth: 1,\n\t\t},\n\t}\n\texpect := []InterfaceGenerator{bond0, eth0}\n\tif !reflect.DeepEqual(interfaces, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestBuildInterfacesBlindVLAN(t *testing.T) {\n\tstanzas := []*stanzaInterface{\n\t\t{\n\t\t\tname:         \"vlan0\",\n\t\t\tkind:         interfaceVLAN,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"id\":         {\"0\"},\n\t\t\t\t\"raw_device\": {\"eth0\"},\n\t\t\t},\n\t\t},\n\t}\n\tinterfaces := buildInterfaces(stanzas)\n\tvlan0 := &vlanInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"vlan0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{},\n\t\t\tconfigDepth: 0,\n\t\t},\n\t\t0,\n\t\t\"eth0\",\n\t}\n\teth0 := &physicalInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"eth0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{vlan0},\n\t\t\tconfigDepth: 1,\n\t\t},\n\t}\n\texpect := []InterfaceGenerator{eth0, vlan0}\n\tif !reflect.DeepEqual(interfaces, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestBuildInterfaces(t *testing.T) {\n\tstanzas := []*stanzaInterface{\n\t\t{\n\t\t\tname:         \"eth0\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t\t{\n\t\t\tname:         \"bond0\",\n\t\t\tkind:         interfaceBond,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"bond-slaves\": {\"eth0\"},\n\t\t\t\t\"bond-mode\":   {\"4\"},\n\t\t\t\t\"bond-miimon\": {\"100\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"bond1\",\n\t\t\tkind:         interfaceBond,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"bond-slaves\": {\"bond0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"vlan0\",\n\t\t\tkind:         interfaceVLAN,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"id\":         {\"0\"},\n\t\t\t\t\"raw_device\": {\"eth0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"vlan1\",\n\t\t\tkind:         interfaceVLAN,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions: map[string][]string{\n\t\t\t\t\"id\":         {\"1\"},\n\t\t\t\t\"raw_device\": {\"bond0\"},\n\t\t\t},\n\t\t},\n\t}\n\tinterfaces := buildInterfaces(stanzas)\n\tvlan1 := &vlanInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"vlan1\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{},\n\t\t\tconfigDepth: 0,\n\t\t},\n\t\t1,\n\t\t\"bond0\",\n\t}\n\tvlan0 := &vlanInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"vlan0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{},\n\t\t\tconfigDepth: 0,\n\t\t},\n\t\t0,\n\t\t\"eth0\",\n\t}\n\tbond1 := &bondInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"bond1\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{},\n\t\t\tconfigDepth: 0,\n\t\t},\n\t\t[]string{\"bond0\"},\n\t\tmap[string]string{},\n\t}\n\tbond0 := &bondInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"bond0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{bond1, vlan1},\n\t\t\tconfigDepth: 1,\n\t\t},\n\t\t[]string{\"eth0\"},\n\t\tmap[string]string{\n\t\t\t\"mode\":   \"4\",\n\t\t\t\"miimon\": \"100\",\n\t\t},\n\t}\n\teth0 := &physicalInterface{\n\t\tlogicalInterface{\n\t\t\tname:        \"eth0\",\n\t\t\tconfig:      configMethodManual{},\n\t\t\tchildren:    []networkInterface{bond0, vlan0},\n\t\t\tconfigDepth: 2,\n\t\t},\n\t}\n\texpect := []InterfaceGenerator{bond0, bond1, eth0, vlan0, vlan1}\n\tif !reflect.DeepEqual(interfaces, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestFilename(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\ti logicalInterface\n\t\tf string\n\t}{\n\t\t{logicalInterface{name: \"iface\", configDepth: 0}, \"00-iface\"},\n\t\t{logicalInterface{name: \"iface\", configDepth: 9}, \"09-iface\"},\n\t\t{logicalInterface{name: \"iface\", configDepth: 10}, \"0a-iface\"},\n\t\t{logicalInterface{name: \"iface\", configDepth: 53}, \"35-iface\"},\n\t\t{logicalInterface{hwaddr: net.HardwareAddr([]byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab}), configDepth: 1}, \"01-01:23:45:67:89:ab\"},\n\t\t{logicalInterface{name: \"iface\", hwaddr: net.HardwareAddr([]byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab}), configDepth: 1}, \"01-iface\"},\n\t} {\n\t\tif tt.i.Filename() != tt.f {\n\t\t\tt.Fatalf(\"bad filename: got %q, want %q\", tt.i.Filename(), tt.f)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/network/is_go15_false_test.go",
    "content": "//go:build !go1.5\n// +build !go1.5\n\npackage network\n\nconst isGo15 = false\n"
  },
  {
    "path": "config/cloudinit/network/is_go15_true_test.go",
    "content": "//go:build go1.5\n// +build go1.5\n\npackage network\n\nconst isGo15 = true\n"
  },
  {
    "path": "config/cloudinit/network/packet.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"net\"\n\n\t\"github.com/burmilla/os/pkg/netconf\"\n)\n\nfunc ProcessPacketNetconf(netdata netconf.NetworkConfig) ([]InterfaceGenerator, error) {\n\tvar nameservers []net.IP\n\tfor _, v := range netdata.DNS.Nameservers {\n\t\tnameservers = append(nameservers, net.ParseIP(v))\n\t}\n\tif len(nameservers) == 0 {\n\t\tnameservers = append(nameservers, net.ParseIP(\"8.8.8.8\"), net.ParseIP(\"8.8.4.4\"))\n\t}\n\n\tgenerators, err := parseNetwork(netdata, nameservers)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn generators, nil\n}\n\nfunc parseNetwork(netdata netconf.NetworkConfig, nameservers []net.IP) ([]InterfaceGenerator, error) {\n\tvar interfaces []InterfaceGenerator\n\tvar addresses []net.IPNet\n\tvar routes []route\n\t// TODO: commented out because we don't use it - should combine with the code we do use...\n\t/*\tfor _, netblock := range netdata.Netblocks {\n\t\t\taddresses = append(addresses, net.IPNet{\n\t\t\t\tIP:   netblock.Address,\n\t\t\t\tMask: net.IPMask(netblock.Netmask),\n\t\t\t})\n\t\t\tif netblock.Public == false {\n\t\t\t\troutes = append(routes, route{\n\t\t\t\t\tdestination: net.IPNet{\n\t\t\t\t\t\tIP:   net.IPv4(10, 0, 0, 0),\n\t\t\t\t\t\tMask: net.IPv4Mask(255, 0, 0, 0),\n\t\t\t\t\t},\n\t\t\t\t\tgateway: netblock.Gateway,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif netblock.AddressFamily == 4 {\n\t\t\t\t\troutes = append(routes, route{\n\t\t\t\t\t\tdestination: net.IPNet{\n\t\t\t\t\t\t\tIP:   net.IPv4zero,\n\t\t\t\t\t\t\tMask: net.IPMask(net.IPv4zero),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgateway: netblock.Gateway,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\troutes = append(routes, route{\n\t\t\t\t\t\tdestination: net.IPNet{\n\t\t\t\t\t\t\tIP:   net.IPv6zero,\n\t\t\t\t\t\t\tMask: net.IPMask(net.IPv6zero),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgateway: netblock.Gateway,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t*/\n\n\tbond := bondInterface{\n\t\tlogicalInterface: logicalInterface{\n\t\t\tname: \"bond0\",\n\t\t\tconfig: configMethodStatic{\n\t\t\t\taddresses:   addresses,\n\t\t\t\tnameservers: nameservers,\n\t\t\t\troutes:      routes,\n\t\t\t},\n\t\t},\n\t\toptions: map[string]string{\n\t\t\t\"Mode\":             \"802.3ad\",\n\t\t\t\"LACPTransmitRate\": \"fast\",\n\t\t\t\"MIIMonitorSec\":    \".2\",\n\t\t\t\"UpDelaySec\":       \".2\",\n\t\t\t\"DownDelaySec\":     \".2\",\n\t\t},\n\t}\n\n\t//bond.hwaddr, _ = net.ParseMAC(netdata.Interfaces[0].Mac)\n\n\tindex := 0\n\tfor name := range netdata.Interfaces {\n\t\tbond.slaves = append(bond.slaves, name)\n\n\t\tinterfaces = append(interfaces, &physicalInterface{\n\t\t\tlogicalInterface: logicalInterface{\n\t\t\t\tname: name,\n\t\t\t\tconfig: configMethodStatic{\n\t\t\t\t\tnameservers: nameservers,\n\t\t\t\t},\n\t\t\t\tchildren:    []networkInterface{&bond},\n\t\t\t\tconfigDepth: index,\n\t\t\t},\n\t\t})\n\t\tindex = index + 1\n\t}\n\n\tinterfaces = append(interfaces, &bond)\n\n\treturn interfaces, nil\n}\n"
  },
  {
    "path": "config/cloudinit/network/stanza.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype stanza interface{}\n\ntype stanzaAuto struct {\n\tinterfaces []string\n}\n\ntype stanzaInterface struct {\n\tname         string\n\tkind         interfaceKind\n\tauto         bool\n\tconfigMethod configMethod\n\toptions      map[string][]string\n}\n\ntype interfaceKind int\n\nconst (\n\tinterfaceBond = interfaceKind(iota)\n\tinterfacePhysical\n\tinterfaceVLAN\n)\n\ntype route struct {\n\tdestination net.IPNet\n\tgateway     net.IP\n}\n\ntype configMethod interface{}\n\ntype configMethodStatic struct {\n\taddresses   []net.IPNet\n\tnameservers []net.IP\n\tdomains     []string\n\troutes      []route\n\thwaddress   net.HardwareAddr\n}\n\ntype configMethodLoopback struct{}\n\ntype configMethodManual struct{}\n\ntype configMethodDHCP struct {\n\thwaddress net.HardwareAddr\n}\n\nfunc parseStanzas(lines []string) (stanzas []stanza, err error) {\n\trawStanzas, err := splitStanzas(lines)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tstanzas = make([]stanza, 0, len(rawStanzas))\n\tfor _, rawStanza := range rawStanzas {\n\t\tif stanza, err := parseStanza(rawStanza); err == nil {\n\t\t\tstanzas = append(stanzas, stanza)\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tautos := make([]string, 0)\n\tinterfaceMap := make(map[string]*stanzaInterface)\n\tfor _, stanza := range stanzas {\n\t\tswitch c := stanza.(type) {\n\t\tcase *stanzaAuto:\n\t\t\tautos = append(autos, c.interfaces...)\n\t\tcase *stanzaInterface:\n\t\t\tinterfaceMap[c.name] = c\n\t\t}\n\t}\n\n\t// Apply the auto attribute\n\tfor _, auto := range autos {\n\t\tif iface, ok := interfaceMap[auto]; ok {\n\t\t\tiface.auto = true\n\t\t}\n\t}\n\n\treturn stanzas, nil\n}\n\nfunc splitStanzas(lines []string) ([][]string, error) {\n\tvar curStanza []string\n\tstanzas := make([][]string, 0)\n\tfor _, line := range lines {\n\t\tif isStanzaStart(line) {\n\t\t\tif curStanza != nil {\n\t\t\t\tstanzas = append(stanzas, curStanza)\n\t\t\t}\n\t\t\tcurStanza = []string{line}\n\t\t} else if curStanza != nil {\n\t\t\tcurStanza = append(curStanza, line)\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"missing stanza start %q\", line)\n\t\t}\n\t}\n\n\tif curStanza != nil {\n\t\tstanzas = append(stanzas, curStanza)\n\t}\n\n\treturn stanzas, nil\n}\n\nfunc isStanzaStart(line string) bool {\n\tswitch strings.Split(line, \" \")[0] {\n\tcase \"auto\":\n\t\tfallthrough\n\tcase \"iface\":\n\t\tfallthrough\n\tcase \"mapping\":\n\t\treturn true\n\t}\n\n\tif strings.HasPrefix(line, \"allow-\") {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc parseStanza(rawStanza []string) (stanza, error) {\n\tif len(rawStanza) == 0 {\n\t\tpanic(\"empty stanza\")\n\t}\n\ttokens := strings.Fields(rawStanza[0])\n\tif len(tokens) < 2 {\n\t\treturn nil, fmt.Errorf(\"malformed stanza start %q\", rawStanza[0])\n\t}\n\n\tkind := tokens[0]\n\tattributes := tokens[1:]\n\n\tswitch kind {\n\tcase \"auto\":\n\t\treturn parseAutoStanza(attributes, rawStanza[1:])\n\tcase \"iface\":\n\t\treturn parseInterfaceStanza(attributes, rawStanza[1:])\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown stanza %q\", kind)\n\t}\n}\n\nfunc parseAutoStanza(attributes []string, options []string) (*stanzaAuto, error) {\n\treturn &stanzaAuto{interfaces: attributes}, nil\n}\n\nfunc parseInterfaceStanza(attributes []string, options []string) (*stanzaInterface, error) {\n\tif len(attributes) != 3 {\n\t\treturn nil, fmt.Errorf(\"incorrect number of attributes\")\n\t}\n\n\tiface := attributes[0]\n\tconfMethod := attributes[2]\n\n\toptionMap := make(map[string][]string, 0)\n\tfor _, option := range options {\n\t\tif strings.HasPrefix(option, \"post-up\") {\n\t\t\ttokens := strings.SplitAfterN(option, \" \", 2)\n\t\t\tif len(tokens) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif v, ok := optionMap[\"post-up\"]; ok {\n\t\t\t\toptionMap[\"post-up\"] = append(v, tokens[1])\n\t\t\t} else {\n\t\t\t\toptionMap[\"post-up\"] = []string{tokens[1]}\n\t\t\t}\n\t\t} else if strings.HasPrefix(option, \"pre-down\") {\n\t\t\ttokens := strings.SplitAfterN(option, \" \", 2)\n\t\t\tif len(tokens) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif v, ok := optionMap[\"pre-down\"]; ok {\n\t\t\t\toptionMap[\"pre-down\"] = append(v, tokens[1])\n\t\t\t} else {\n\t\t\t\toptionMap[\"pre-down\"] = []string{tokens[1]}\n\t\t\t}\n\t\t} else {\n\t\t\ttokens := strings.Fields(option)\n\t\t\toptionMap[tokens[0]] = tokens[1:]\n\t\t}\n\t}\n\n\tvar conf configMethod\n\tswitch confMethod {\n\tcase \"static\":\n\t\tconfig := configMethodStatic{\n\t\t\taddresses:   make([]net.IPNet, 1),\n\t\t\troutes:      make([]route, 0),\n\t\t\tnameservers: make([]net.IP, 0),\n\t\t}\n\t\tif addresses, ok := optionMap[\"address\"]; ok {\n\t\t\tif len(addresses) == 1 {\n\t\t\t\tconfig.addresses[0].IP = net.ParseIP(addresses[0])\n\t\t\t}\n\t\t}\n\t\tif netmasks, ok := optionMap[\"netmask\"]; ok {\n\t\t\tif len(netmasks) == 1 {\n\t\t\t\tconfig.addresses[0].Mask = net.IPMask(net.ParseIP(netmasks[0]).To4())\n\t\t\t}\n\t\t}\n\t\tif config.addresses[0].IP == nil || config.addresses[0].Mask == nil {\n\t\t\treturn nil, fmt.Errorf(\"malformed static network config for %q\", iface)\n\t\t}\n\t\tif gateways, ok := optionMap[\"gateway\"]; ok {\n\t\t\tif len(gateways) == 1 {\n\t\t\t\tconfig.routes = append(config.routes, route{\n\t\t\t\t\tdestination: net.IPNet{\n\t\t\t\t\t\tIP:   net.IPv4(0, 0, 0, 0),\n\t\t\t\t\t\tMask: net.IPv4Mask(0, 0, 0, 0),\n\t\t\t\t\t},\n\t\t\t\t\tgateway: net.ParseIP(gateways[0]),\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif hwaddress, err := parseHwaddress(optionMap, iface); err == nil {\n\t\t\tconfig.hwaddress = hwaddress\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, nameserver := range optionMap[\"dns-nameservers\"] {\n\t\t\tconfig.nameservers = append(config.nameservers, net.ParseIP(nameserver))\n\t\t}\n\t\tfor _, postup := range optionMap[\"post-up\"] {\n\t\t\tif strings.HasPrefix(postup, \"route add\") {\n\t\t\t\troute := route{}\n\t\t\t\tfields := strings.Fields(postup)\n\t\t\t\tfor i, field := range fields[:len(fields)-1] {\n\t\t\t\t\tswitch field {\n\t\t\t\t\tcase \"-net\":\n\t\t\t\t\t\tif _, dst, err := net.ParseCIDR(fields[i+1]); err == nil {\n\t\t\t\t\t\t\troute.destination = *dst\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\troute.destination.IP = net.ParseIP(fields[i+1])\n\t\t\t\t\t\t}\n\t\t\t\t\tcase \"netmask\":\n\t\t\t\t\t\troute.destination.Mask = net.IPMask(net.ParseIP(fields[i+1]).To4())\n\t\t\t\t\tcase \"gw\":\n\t\t\t\t\t\troute.gateway = net.ParseIP(fields[i+1])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif route.destination.IP != nil && route.destination.Mask != nil && route.gateway != nil {\n\t\t\t\t\tconfig.routes = append(config.routes, route)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconf = config\n\tcase \"loopback\":\n\t\tconf = configMethodLoopback{}\n\tcase \"manual\":\n\t\tconf = configMethodManual{}\n\tcase \"dhcp\":\n\t\tconfig := configMethodDHCP{}\n\t\tif hwaddress, err := parseHwaddress(optionMap, iface); err == nil {\n\t\t\tconfig.hwaddress = hwaddress\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t\tconf = config\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid config method %q\", confMethod)\n\t}\n\n\tif _, ok := optionMap[\"vlan_raw_device\"]; ok {\n\t\treturn parseVLANStanza(iface, conf, attributes, optionMap)\n\t}\n\n\tif strings.Contains(iface, \".\") {\n\t\treturn parseVLANStanza(iface, conf, attributes, optionMap)\n\t}\n\n\tif _, ok := optionMap[\"bond-slaves\"]; ok {\n\t\treturn parseBondStanza(iface, conf, attributes, optionMap)\n\t}\n\n\treturn parsePhysicalStanza(iface, conf, attributes, optionMap)\n}\n\nfunc parseHwaddress(options map[string][]string, iface string) (net.HardwareAddr, error) {\n\tif hwaddress, ok := options[\"hwaddress\"]; ok && len(hwaddress) == 2 {\n\t\tswitch hwaddress[0] {\n\t\tcase \"ether\":\n\t\t\tif address, err := net.ParseMAC(hwaddress[1]); err == nil {\n\t\t\t\treturn address, nil\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"malformed hwaddress option for %q\", iface)\n\t\t}\n\t}\n\treturn nil, nil\n}\n\nfunc parseBondStanza(iface string, conf configMethod, attributes []string, options map[string][]string) (*stanzaInterface, error) {\n\treturn &stanzaInterface{name: iface, kind: interfaceBond, configMethod: conf, options: options}, nil\n}\n\nfunc parsePhysicalStanza(iface string, conf configMethod, attributes []string, options map[string][]string) (*stanzaInterface, error) {\n\treturn &stanzaInterface{name: iface, kind: interfacePhysical, configMethod: conf, options: options}, nil\n}\n\nfunc parseVLANStanza(iface string, conf configMethod, attributes []string, options map[string][]string) (*stanzaInterface, error) {\n\tvar id string\n\tif strings.Contains(iface, \".\") {\n\t\ttokens := strings.Split(iface, \".\")\n\t\tid = tokens[len(tokens)-1]\n\t} else if strings.HasPrefix(iface, \"vlan\") {\n\t\tid = strings.TrimPrefix(iface, \"vlan\")\n\t} else {\n\t\treturn nil, fmt.Errorf(\"malformed vlan name %q\", iface)\n\t}\n\n\tif _, err := strconv.Atoi(id); err != nil {\n\t\treturn nil, fmt.Errorf(\"malformed vlan name %q\", iface)\n\t}\n\toptions[\"id\"] = []string{id}\n\toptions[\"raw_device\"] = options[\"vlan_raw_device\"]\n\n\treturn &stanzaInterface{name: iface, kind: interfaceVLAN, configMethod: conf, options: options}, nil\n}\n"
  },
  {
    "path": "config/cloudinit/network/stanza_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"net\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestSplitStanzasNoParent(t *testing.T) {\n\tin := []string{\"test\"}\n\te := \"missing stanza start\"\n\t_, err := splitStanzas(in)\n\tif err == nil || !strings.HasPrefix(err.Error(), e) {\n\t\tt.Fatalf(\"bad error for splitStanzas(%q): got %q, want %q\", in, err, e)\n\t}\n}\n\nfunc TestBadParseStanzas(t *testing.T) {\n\tfor in, e := range map[string]string{\n\t\t\"\":                 \"missing stanza start\",\n\t\t\"iface\":            \"malformed stanza start\",\n\t\t\"allow-?? unknown\": \"unknown stanza\",\n\t} {\n\t\t_, err := parseStanzas([]string{in})\n\t\tif err == nil || !strings.HasPrefix(err.Error(), e) {\n\t\t\tt.Fatalf(\"bad error for parseStanzas(%q): got %q, want %q\", in, err, e)\n\t\t}\n\n\t}\n}\n\nfunc TestBadParseInterfaceStanza(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tin   []string\n\t\topts []string\n\t\te    string\n\t}{\n\t\t{[]string{}, nil, \"incorrect number of attributes\"},\n\t\t{[]string{\"eth\", \"inet\", \"invalid\"}, nil, \"invalid config method\"},\n\t\t{[]string{\"eth\", \"inet\", \"static\"}, []string{\"address 192.168.1.100\"}, \"malformed static network config\"},\n\t\t{[]string{\"eth\", \"inet\", \"static\"}, []string{\"netmask 255.255.255.0\"}, \"malformed static network config\"},\n\t\t{[]string{\"eth\", \"inet\", \"static\"}, []string{\"address invalid\", \"netmask 255.255.255.0\"}, \"malformed static network config\"},\n\t\t{[]string{\"eth\", \"inet\", \"static\"}, []string{\"address 192.168.1.100\", \"netmask invalid\"}, \"malformed static network config\"},\n\t\t{[]string{\"eth\", \"inet\", \"static\"}, []string{\"address 192.168.1.100\", \"netmask 255.255.255.0\", \"hwaddress ether NotAnAddress\"}, \"malformed hwaddress option\"},\n\t\t{[]string{\"eth\", \"inet\", \"dhcp\"}, []string{\"hwaddress ether NotAnAddress\"}, \"malformed hwaddress option\"},\n\t} {\n\t\t_, err := parseInterfaceStanza(tt.in, tt.opts)\n\t\tif err == nil || !strings.HasPrefix(err.Error(), tt.e) {\n\t\t\tt.Fatalf(\"bad error parsing interface stanza %q: got %q, want %q\", tt.in, err.Error(), tt.e)\n\t\t}\n\t}\n}\n\nfunc TestBadParseVLANStanzas(t *testing.T) {\n\tconf := configMethodManual{}\n\toptions := map[string][]string{}\n\tfor _, in := range []string{\"myvlan\", \"eth.vlan\"} {\n\t\t_, err := parseVLANStanza(in, conf, nil, options)\n\t\tif err == nil || !strings.HasPrefix(err.Error(), \"malformed vlan name\") {\n\t\t\tt.Fatalf(\"did not error on bad vlan %q\", in)\n\t\t}\n\t}\n}\n\nfunc TestSplitStanzas(t *testing.T) {\n\texpect := [][]string{\n\t\t{\"auto lo\"},\n\t\t{\"iface eth1\", \"option: 1\"},\n\t\t{\"mapping\"},\n\t\t{\"allow-\"},\n\t}\n\tlines := make([]string, 0, 5)\n\tfor _, stanza := range expect {\n\t\tfor _, line := range stanza {\n\t\t\tlines = append(lines, line)\n\t\t}\n\t}\n\n\tstanzas, err := splitStanzas(lines)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tfor i, stanza := range stanzas {\n\t\tif len(stanza) != len(expect[i]) {\n\t\t\tt.FailNow()\n\t\t}\n\t\tfor j, line := range stanza {\n\t\t\tif line != expect[i][j] {\n\t\t\t\tt.FailNow()\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestParseStanzaNil(t *testing.T) {\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Fatal(\"parseStanza(nil) did not panic\")\n\t\t}\n\t}()\n\tparseStanza(nil)\n}\n\nfunc TestParseStanzaSuccess(t *testing.T) {\n\tfor _, in := range []string{\n\t\t\"auto a\",\n\t\t\"iface a inet manual\",\n\t} {\n\t\tif _, err := parseStanza([]string{in}); err != nil {\n\t\t\tt.Fatalf(\"unexpected error parsing stanza %q: %s\", in, err)\n\t\t}\n\t}\n}\n\nfunc TestParseAutoStanza(t *testing.T) {\n\tinterfaces := []string{\"test\", \"attribute\"}\n\tstanza, err := parseAutoStanza(interfaces, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"unexpected error parsing auto stanza %q: %s\", interfaces, err)\n\t}\n\tif !reflect.DeepEqual(stanza.interfaces, interfaces) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseBondStanzaNoSlaves(t *testing.T) {\n\tbond, err := parseBondStanza(\"\", nil, nil, map[string][]string{})\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif bond.options[\"bond-slaves\"] != nil {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseBondStanza(t *testing.T) {\n\tconf := configMethodManual{}\n\toptions := map[string][]string{\n\t\t\"bond-slaves\": {\"1\", \"2\"},\n\t}\n\tbond, err := parseBondStanza(\"test\", conf, nil, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif bond.name != \"test\" {\n\t\tt.FailNow()\n\t}\n\tif bond.kind != interfaceBond {\n\t\tt.FailNow()\n\t}\n\tif bond.configMethod != conf {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParsePhysicalStanza(t *testing.T) {\n\tconf := configMethodManual{}\n\toptions := map[string][]string{\n\t\t\"a\": {\"1\", \"2\"},\n\t\t\"b\": {\"1\"},\n\t}\n\tphysical, err := parsePhysicalStanza(\"test\", conf, nil, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif physical.name != \"test\" {\n\t\tt.FailNow()\n\t}\n\tif physical.kind != interfacePhysical {\n\t\tt.FailNow()\n\t}\n\tif physical.configMethod != conf {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(physical.options, options) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseVLANStanzas(t *testing.T) {\n\tconf := configMethodManual{}\n\toptions := map[string][]string{}\n\tfor _, in := range []string{\"vlan25\", \"eth.25\"} {\n\t\tvlan, err := parseVLANStanza(in, conf, nil, options)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"unexpected error from parseVLANStanza(%q): %s\", in, err)\n\t\t}\n\t\tif !reflect.DeepEqual(vlan.options[\"id\"], []string{\"25\"}) {\n\t\t\tt.FailNow()\n\t\t}\n\t}\n}\n\nfunc TestParseInterfaceStanzaStaticAddress(t *testing.T) {\n\toptions := []string{\"address 192.168.1.100\", \"netmask 255.255.255.0\"}\n\texpect := []net.IPNet{\n\t\t{\n\t\t\tIP:   net.IPv4(192, 168, 1, 100),\n\t\t\tMask: net.IPv4Mask(255, 255, 255, 0),\n\t\t},\n\t}\n\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"static\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tstatic, ok := iface.configMethod.(configMethodStatic)\n\tif !ok {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(static.addresses, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaStaticGateway(t *testing.T) {\n\toptions := []string{\"address 192.168.1.100\", \"netmask 255.255.255.0\", \"gateway 192.168.1.1\"}\n\texpect := []route{\n\t\t{\n\t\t\tdestination: net.IPNet{\n\t\t\t\tIP:   net.IPv4(0, 0, 0, 0),\n\t\t\t\tMask: net.IPv4Mask(0, 0, 0, 0),\n\t\t\t},\n\t\t\tgateway: net.IPv4(192, 168, 1, 1),\n\t\t},\n\t}\n\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"static\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tstatic, ok := iface.configMethod.(configMethodStatic)\n\tif !ok {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(static.routes, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaStaticDNS(t *testing.T) {\n\toptions := []string{\"address 192.168.1.100\", \"netmask 255.255.255.0\", \"dns-nameservers 192.168.1.10 192.168.1.11 192.168.1.12\"}\n\texpect := []net.IP{\n\t\tnet.IPv4(192, 168, 1, 10),\n\t\tnet.IPv4(192, 168, 1, 11),\n\t\tnet.IPv4(192, 168, 1, 12),\n\t}\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"static\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tstatic, ok := iface.configMethod.(configMethodStatic)\n\tif !ok {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(static.nameservers, expect) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestBadParseInterfaceStanzasStaticPostUp(t *testing.T) {\n\tfor _, in := range []string{\n\t\t\"post-up invalid\",\n\t\t\"post-up route add\",\n\t\t\"post-up route add -net\",\n\t\t\"post-up route add gw\",\n\t\t\"post-up route add netmask\",\n\t\t\"gateway\",\n\t\t\"gateway 192.168.1.1 192.168.1.2\",\n\t} {\n\t\toptions := []string{\"address 192.168.1.100\", \"netmask 255.255.255.0\", in}\n\t\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"static\"}, options)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"parseInterfaceStanza with options %s got unexpected error\", options)\n\t\t}\n\t\tstatic, ok := iface.configMethod.(configMethodStatic)\n\t\tif !ok {\n\t\t\tt.Fatalf(\"parseInterfaceStanza with options %s did not return configMethodStatic\", options)\n\t\t}\n\t\tif len(static.routes) != 0 {\n\t\t\tt.Fatalf(\"parseInterfaceStanza with options %s did not return zero-length static routes\", options)\n\t\t}\n\t}\n}\n\nfunc TestParseInterfaceStanzaStaticPostUp(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\toptions []string\n\t\texpect  []route\n\t}{\n\t\t{\n\t\t\toptions: []string{\n\t\t\t\t\"address 192.168.1.100\",\n\t\t\t\t\"netmask 255.255.255.0\",\n\t\t\t\t\"post-up route add gw 192.168.1.1 -net 192.168.1.0 netmask 255.255.255.0\",\n\t\t\t},\n\t\t\texpect: []route{\n\t\t\t\t{\n\t\t\t\t\tdestination: net.IPNet{\n\t\t\t\t\t\tIP:   net.IPv4(192, 168, 1, 0),\n\t\t\t\t\t\tMask: net.IPv4Mask(255, 255, 255, 0),\n\t\t\t\t\t},\n\t\t\t\t\tgateway: net.IPv4(192, 168, 1, 1),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\toptions: []string{\n\t\t\t\t\"address 192.168.1.100\",\n\t\t\t\t\"netmask 255.255.255.0\",\n\t\t\t\t\"post-up route add gw 192.168.1.1 -net 192.168.1.0/24 || true\",\n\t\t\t},\n\t\t\texpect: []route{\n\t\t\t\t{\n\t\t\t\t\tdestination: func() net.IPNet {\n\t\t\t\t\t\t_, net, err := net.ParseCIDR(\"192.168.1.0/24\")\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tpanic(err)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn *net\n\t\t\t\t\t}(),\n\t\t\t\t\tgateway: net.IPv4(192, 168, 1, 1),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t} {\n\t\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"static\"}, tt.options)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"bad error (%+v): want nil, got %s\\n\", tt, err)\n\t\t}\n\t\tstatic, ok := iface.configMethod.(configMethodStatic)\n\t\tif !ok {\n\t\t\tt.Fatalf(\"bad config method (%+v): want configMethodStatic, got %T\\n\", tt, iface.configMethod)\n\t\t}\n\t\tif !reflect.DeepEqual(static.routes, tt.expect) {\n\t\t\tt.Fatalf(\"bad routes (%+v): want %#v, got %#v\\n\", tt, tt.expect, static.routes)\n\t\t}\n\t}\n}\n\nfunc TestParseInterfaceStanzaLoopback(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"loopback\"}, nil)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif _, ok := iface.configMethod.(configMethodLoopback); !ok {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaManual(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"manual\"}, nil)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif _, ok := iface.configMethod.(configMethodManual); !ok {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaDHCP(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"dhcp\"}, nil)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif _, ok := iface.configMethod.(configMethodDHCP); !ok {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaPostUpOption(t *testing.T) {\n\toptions := []string{\n\t\t\"post-up\",\n\t\t\"post-up 1 2\",\n\t\t\"post-up 3 4\",\n\t}\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"manual\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(iface.options[\"post-up\"], []string{\"1 2\", \"3 4\"}) {\n\t\tt.Log(iface.options[\"post-up\"])\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaPreDownOption(t *testing.T) {\n\toptions := []string{\n\t\t\"pre-down\",\n\t\t\"pre-down 3\",\n\t\t\"pre-down 4\",\n\t}\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"manual\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(iface.options[\"pre-down\"], []string{\"3\", \"4\"}) {\n\t\tt.Log(iface.options[\"pre-down\"])\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaEmptyOption(t *testing.T) {\n\toptions := []string{\n\t\t\"test\",\n\t}\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"manual\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(iface.options[\"test\"], []string{}) {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaOptions(t *testing.T) {\n\toptions := []string{\n\t\t\"test1 1\",\n\t\t\"test2 2 3\",\n\t\t\"test1 5 6\",\n\t}\n\tiface, err := parseInterfaceStanza([]string{\"eth\", \"inet\", \"manual\"}, options)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(iface.options[\"test1\"], []string{\"5\", \"6\"}) {\n\t\tt.Log(iface.options[\"test1\"])\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(iface.options[\"test2\"], []string{\"2\", \"3\"}) {\n\t\tt.Log(iface.options[\"test2\"])\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaHwaddress(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tattr []string\n\t\topt  []string\n\t\thw   net.HardwareAddr\n\t}{\n\t\t{\n\t\t\t[]string{\"mybond\", \"inet\", \"dhcp\"},\n\t\t\t[]string{},\n\t\t\tnil,\n\t\t},\n\t\t{\n\t\t\t[]string{\"mybond\", \"inet\", \"dhcp\"},\n\t\t\t[]string{\"hwaddress ether 00:01:02:03:04:05\"},\n\t\t\tnet.HardwareAddr([]byte{0, 1, 2, 3, 4, 5}),\n\t\t},\n\t\t{\n\t\t\t[]string{\"mybond\", \"inet\", \"static\"},\n\t\t\t[]string{\"hwaddress ether 00:01:02:03:04:05\", \"address 192.168.1.100\", \"netmask 255.255.255.0\"},\n\t\t\tnet.HardwareAddr([]byte{0, 1, 2, 3, 4, 5}),\n\t\t},\n\t} {\n\t\tiface, err := parseInterfaceStanza(tt.attr, tt.opt)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"error in parseInterfaceStanza (%q, %q): %q\", tt.attr, tt.opt, err)\n\t\t}\n\t\tswitch c := iface.configMethod.(type) {\n\t\tcase configMethodStatic:\n\t\t\tif !reflect.DeepEqual(c.hwaddress, tt.hw) {\n\t\t\t\tt.Fatalf(\"bad hwaddress (%q, %q): got %q, want %q\", tt.attr, tt.opt, c.hwaddress, tt.hw)\n\t\t\t}\n\t\tcase configMethodDHCP:\n\t\t\tif !reflect.DeepEqual(c.hwaddress, tt.hw) {\n\t\t\t\tt.Fatalf(\"bad hwaddress (%q, %q): got %q, want %q\", tt.attr, tt.opt, c.hwaddress, tt.hw)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestParseInterfaceStanzaBond(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"mybond\", \"inet\", \"manual\"}, []string{\"bond-slaves eth\"})\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif iface.kind != interfaceBond {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaVLANName(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"eth0.1\", \"inet\", \"manual\"}, nil)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif iface.kind != interfaceVLAN {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseInterfaceStanzaVLANOption(t *testing.T) {\n\tiface, err := parseInterfaceStanza([]string{\"vlan1\", \"inet\", \"manual\"}, []string{\"vlan_raw_device eth\"})\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif iface.kind != interfaceVLAN {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseStanzasNone(t *testing.T) {\n\tstanzas, err := parseStanzas(nil)\n\tif err != nil {\n\t\tt.FailNow()\n\t}\n\tif len(stanzas) != 0 {\n\t\tt.FailNow()\n\t}\n}\n\nfunc TestParseStanzas(t *testing.T) {\n\tlines := []string{\n\t\t\"auto lo\",\n\t\t\"iface lo inet loopback\",\n\t\t\"iface eth1 inet manual\",\n\t\t\"iface eth2 inet manual\",\n\t\t\"iface eth3 inet manual\",\n\t\t\"auto eth1 eth3\",\n\t}\n\texpect := []stanza{\n\t\t&stanzaAuto{\n\t\t\tinterfaces: []string{\"lo\"},\n\t\t},\n\t\t&stanzaInterface{\n\t\t\tname:         \"lo\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         true,\n\t\t\tconfigMethod: configMethodLoopback{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t\t&stanzaInterface{\n\t\t\tname:         \"eth1\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         true,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t\t&stanzaInterface{\n\t\t\tname:         \"eth2\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         false,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t\t&stanzaInterface{\n\t\t\tname:         \"eth3\",\n\t\t\tkind:         interfacePhysical,\n\t\t\tauto:         true,\n\t\t\tconfigMethod: configMethodManual{},\n\t\t\toptions:      map[string][]string{},\n\t\t},\n\t\t&stanzaAuto{\n\t\t\tinterfaces: []string{\"eth1\", \"eth3\"},\n\t\t},\n\t}\n\tstanzas, err := parseStanzas(lines)\n\tif err != err {\n\t\tt.FailNow()\n\t}\n\tif !reflect.DeepEqual(stanzas, expect) {\n\t\tt.FailNow()\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/network/vmware.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net\"\n)\n\nfunc ProcessVMwareNetconf(config map[string]string) ([]InterfaceGenerator, error) {\n\tlog.Println(\"Processing VMware network config\")\n\n\tlog.Println(\"Parsing nameservers\")\n\tvar nameservers []net.IP\n\tfor i := 0; ; i++ {\n\t\tif ipStr, ok := config[fmt.Sprintf(\"dns.server.%d\", i)]; ok {\n\t\t\tif ip := net.ParseIP(ipStr); ip != nil {\n\t\t\t\tnameservers = append(nameservers, ip)\n\t\t\t} else {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid nameserver: %q\", ipStr)\n\t\t\t}\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tlog.Printf(\"Parsed %d nameservers\", len(nameservers))\n\n\tlog.Println(\"Parsing search domains\")\n\tvar domains []string\n\tfor i := 0; ; i++ {\n\t\tif domain, ok := config[fmt.Sprintf(\"dns.domain.%d\", i)]; ok {\n\t\t\tdomains = append(domains, domain)\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\tlog.Printf(\"Parsed %d search domains\", len(domains))\n\n\tvar interfaces []InterfaceGenerator\n\tfor i := 0; ; i++ {\n\t\tvar addresses []net.IPNet\n\t\tvar routes []route\n\t\tvar err error\n\t\tvar dhcp bool\n\t\tiface := &physicalInterface{}\n\n\t\tlog.Printf(\"Processing interface %d\", i)\n\n\t\tlog.Println(\"Processing DHCP\")\n\t\tif dhcp, err = processDHCPConfig(config, fmt.Sprintf(\"interface.%d.\", i)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tlog.Println(\"Processing addresses\")\n\t\tif as, err := processAddressConfig(config, fmt.Sprintf(\"interface.%d.\", i)); err == nil {\n\t\t\taddresses = append(addresses, as...)\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tlog.Println(\"Processing routes\")\n\t\tif rs, err := processRouteConfig(config, fmt.Sprintf(\"interface.%d.\", i)); err == nil {\n\t\t\troutes = append(routes, rs...)\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif mac, ok := config[fmt.Sprintf(\"interface.%d.mac\", i)]; ok {\n\t\t\tlog.Printf(\"Parsing interface %d MAC address: %q\", i, mac)\n\t\t\tif hwaddr, err := net.ParseMAC(mac); err == nil {\n\t\t\t\tiface.hwaddr = hwaddr\n\t\t\t} else {\n\t\t\t\treturn nil, fmt.Errorf(\"error while parsing MAC address: %v\", err)\n\t\t\t}\n\t\t}\n\n\t\tif name, ok := config[fmt.Sprintf(\"interface.%d.name\", i)]; ok {\n\t\t\tlog.Printf(\"Parsing interface %d name: %q\", i, name)\n\t\t\tiface.name = name\n\t\t}\n\n\t\tif len(addresses) > 0 || len(routes) > 0 {\n\t\t\tiface.config = configMethodStatic{\n\t\t\t\thwaddress:   iface.hwaddr,\n\t\t\t\taddresses:   addresses,\n\t\t\t\tnameservers: nameservers,\n\t\t\t\tdomains:     domains,\n\t\t\t\troutes:      routes,\n\t\t\t}\n\t\t} else if dhcp {\n\t\t\tiface.config = configMethodDHCP{\n\t\t\t\thwaddress: iface.hwaddr,\n\t\t\t}\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\n\t\tinterfaces = append(interfaces, iface)\n\t}\n\n\treturn interfaces, nil\n}\n\nfunc processAddressConfig(config map[string]string, prefix string) (addresses []net.IPNet, err error) {\n\tfor a := 0; ; a++ {\n\t\tprefix := fmt.Sprintf(\"%sip.%d.\", prefix, a)\n\n\t\taddressStr, ok := config[prefix+\"address\"]\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\tip, network, err := net.ParseCIDR(addressStr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid address: %q\", addressStr)\n\t\t}\n\t\taddresses = append(addresses, net.IPNet{\n\t\t\tIP:   ip,\n\t\t\tMask: network.Mask,\n\t\t})\n\t}\n\n\treturn\n}\n\nfunc processRouteConfig(config map[string]string, prefix string) (routes []route, err error) {\n\tfor r := 0; ; r++ {\n\t\tprefix := fmt.Sprintf(\"%sroute.%d.\", prefix, r)\n\n\t\tgatewayStr, gok := config[prefix+\"gateway\"]\n\t\tdestinationStr, dok := config[prefix+\"destination\"]\n\t\tif gok && !dok {\n\t\t\treturn nil, fmt.Errorf(\"missing destination key\")\n\t\t} else if !gok && dok {\n\t\t\treturn nil, fmt.Errorf(\"missing gateway key\")\n\t\t} else if !gok && !dok {\n\t\t\tbreak\n\t\t}\n\n\t\tgateway := net.ParseIP(gatewayStr)\n\t\tif gateway == nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid gateway: %q\", gatewayStr)\n\t\t}\n\n\t\t_, destination, err := net.ParseCIDR(destinationStr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\troutes = append(routes, route{\n\t\t\tdestination: *destination,\n\t\t\tgateway:     gateway,\n\t\t})\n\t}\n\n\treturn\n}\n\nfunc processDHCPConfig(config map[string]string, prefix string) (dhcp bool, err error) {\n\tdhcpStr, ok := config[prefix+\"dhcp\"]\n\tif !ok {\n\t\treturn false, nil\n\t}\n\n\tswitch dhcpStr {\n\tcase \"yes\":\n\t\treturn true, nil\n\tcase \"no\":\n\t\treturn false, nil\n\tdefault:\n\t\treturn false, fmt.Errorf(\"invalid DHCP option: %q\", dhcpStr)\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/network/vmware_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 network\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc mustParseMac(mac net.HardwareAddr, err error) net.HardwareAddr {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn mac\n}\n\nfunc TestProcessVMwareNetconf(t *testing.T) {\n\ttests := []struct {\n\t\tconfig map[string]string\n\n\t\tinterfaces []InterfaceGenerator\n\t\terr        error\n\t}{\n\t\t{},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t},\n\t\t\tinterfaces: []InterfaceGenerator{\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\tconfig: configMethodDHCP{},\n\t\t\t\t}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"interface.0.mac\":  \"00:11:22:33:44:55\",\n\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t},\n\t\t\tinterfaces: []InterfaceGenerator{\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\thwaddr: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\")),\n\t\t\t\t\tconfig: configMethodDHCP{hwaddress: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\"))},\n\t\t\t\t}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"interface.0.name\": \"eth0\",\n\t\t\t\t\"interface.0.dhcp\": \"yes\",\n\t\t\t},\n\t\t\tinterfaces: []InterfaceGenerator{\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\tname:   \"eth0\",\n\t\t\t\t\tconfig: configMethodDHCP{},\n\t\t\t\t}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"interface.0.mac\":                 \"00:11:22:33:44:55\",\n\t\t\t\t\"interface.0.ip.0.address\":        \"10.0.0.100/24\",\n\t\t\t\t\"interface.0.route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"interface.0.route.0.destination\": \"0.0.0.0/0\",\n\t\t\t},\n\t\t\tinterfaces: []InterfaceGenerator{\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\thwaddr: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\")),\n\t\t\t\t\tconfig: configMethodStatic{\n\t\t\t\t\t\thwaddress: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\")),\n\t\t\t\t\t\taddresses: []net.IPNet{{IP: net.ParseIP(\"10.0.0.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)}},\n\t\t\t\t\t\t// I realize how upset you must be that I am shoving an IPMask into an IP. This is because net.IPv4zero is\n\t\t\t\t\t\t// actually a magic IPv6 address which ruins our equality check. What's that? Just use IP::Equal()? I'd rather\n\t\t\t\t\t\t// DeepEqual just handle that for me, but until Go gets operator overloading, we are stuck with this.\n\t\t\t\t\t\troutes: []route{{\n\t\t\t\t\t\t\tdestination: net.IPNet{IP: net.IP(net.CIDRMask(0, net.IPv4len*8)), Mask: net.CIDRMask(0, net.IPv4len*8)},\n\t\t\t\t\t\t\tgateway:     net.ParseIP(\"10.0.0.1\")},\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\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"dns.server.0\":                    \"1.2.3.4\",\n\t\t\t\t\"dns.server.1\":                    \"5.6.7.8\",\n\t\t\t\t\"dns.domain.0\":                    \"coreos.com\",\n\t\t\t\t\"dns.domain.1\":                    \"example.com\",\n\t\t\t\t\"interface.0.mac\":                 \"00:11:22:33:44:55\",\n\t\t\t\t\"interface.0.ip.0.address\":        \"10.0.0.100/24\",\n\t\t\t\t\"interface.0.ip.1.address\":        \"10.0.0.101/24\",\n\t\t\t\t\"interface.0.route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"interface.0.route.0.destination\": \"0.0.0.0/0\",\n\t\t\t\t\"interface.1.name\":                \"eth0\",\n\t\t\t\t\"interface.1.ip.0.address\":        \"10.0.1.100/24\",\n\t\t\t\t\"interface.1.route.0.gateway\":     \"10.0.1.1\",\n\t\t\t\t\"interface.1.route.0.destination\": \"0.0.0.0/0\",\n\t\t\t\t\"interface.2.dhcp\":                \"yes\",\n\t\t\t\t\"interface.2.mac\":                 \"00:11:22:33:44:77\",\n\t\t\t},\n\t\t\tinterfaces: []InterfaceGenerator{\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\thwaddr: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\")),\n\t\t\t\t\tconfig: configMethodStatic{\n\t\t\t\t\t\thwaddress: mustParseMac(net.ParseMAC(\"00:11:22:33:44:55\")),\n\t\t\t\t\t\taddresses: []net.IPNet{\n\t\t\t\t\t\t\t{IP: net.ParseIP(\"10.0.0.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)},\n\t\t\t\t\t\t\t{IP: net.ParseIP(\"10.0.0.101\"), Mask: net.CIDRMask(24, net.IPv4len*8)},\n\t\t\t\t\t\t},\n\t\t\t\t\t\troutes: []route{{\n\t\t\t\t\t\t\tdestination: net.IPNet{IP: net.IP(net.CIDRMask(0, net.IPv4len*8)), Mask: net.CIDRMask(0, net.IPv4len*8)},\n\t\t\t\t\t\t\tgateway:     net.ParseIP(\"10.0.0.1\")},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnameservers: []net.IP{net.ParseIP(\"1.2.3.4\"), net.ParseIP(\"5.6.7.8\")},\n\t\t\t\t\t\tdomains:     []string{\"coreos.com\", \"example.com\"},\n\t\t\t\t\t},\n\t\t\t\t}},\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\tname: \"eth0\",\n\t\t\t\t\tconfig: configMethodStatic{\n\t\t\t\t\t\taddresses: []net.IPNet{{IP: net.ParseIP(\"10.0.1.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)}},\n\t\t\t\t\t\troutes: []route{{\n\t\t\t\t\t\t\tdestination: net.IPNet{IP: net.IP(net.CIDRMask(0, net.IPv4len*8)), Mask: net.CIDRMask(0, net.IPv4len*8)},\n\t\t\t\t\t\t\tgateway:     net.ParseIP(\"10.0.1.1\")},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnameservers: []net.IP{net.ParseIP(\"1.2.3.4\"), net.ParseIP(\"5.6.7.8\")},\n\t\t\t\t\t\tdomains:     []string{\"coreos.com\", \"example.com\"},\n\t\t\t\t\t},\n\t\t\t\t}},\n\t\t\t\t&physicalInterface{logicalInterface{\n\t\t\t\t\thwaddr: mustParseMac(net.ParseMAC(\"00:11:22:33:44:77\")),\n\t\t\t\t\tconfig: configMethodDHCP{hwaddress: mustParseMac(net.ParseMAC(\"00:11:22:33:44:77\"))},\n\t\t\t\t}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\"dns.server.0\": \"test dns\"},\n\t\t\terr:    errors.New(`invalid nameserver: \"test dns\"`),\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\tinterfaces, err := ProcessVMwareNetconf(tt.config)\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.interfaces, interfaces) {\n\t\t\tt.Errorf(\"bad interfaces (#%d): want %#v, got %#v\", i, tt.interfaces, interfaces)\n\t\t\tfor _, iface := range tt.interfaces {\n\t\t\t\tt.Logf(\"  want: %#v\", iface)\n\t\t\t}\n\t\t\tfor _, iface := range interfaces {\n\t\t\t\tt.Logf(\"  got:  %#v\", iface)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestProcessAddressConfig(t *testing.T) {\n\ttests := []struct {\n\t\tconfig map[string]string\n\t\tprefix string\n\n\t\taddresses []net.IPNet\n\t\terr       error\n\t}{\n\t\t{},\n\n\t\t// static - ipv4\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"ip.0.address\": \"10.0.0.100/24\",\n\t\t\t},\n\n\t\t\taddresses: []net.IPNet{{IP: net.ParseIP(\"10.0.0.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)}},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"this.is.a.prefix.ip.0.address\": \"10.0.0.100/24\",\n\t\t\t},\n\t\t\tprefix: \"this.is.a.prefix.\",\n\n\t\t\taddresses: []net.IPNet{{IP: net.ParseIP(\"10.0.0.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)}},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"ip.0.address\": \"10.0.0.100/24\",\n\t\t\t\t\"ip.1.address\": \"10.0.0.101/24\",\n\t\t\t\t\"ip.2.address\": \"10.0.0.102/24\",\n\t\t\t},\n\n\t\t\taddresses: []net.IPNet{\n\t\t\t\t{IP: net.ParseIP(\"10.0.0.100\"), Mask: net.CIDRMask(24, net.IPv4len*8)},\n\t\t\t\t{IP: net.ParseIP(\"10.0.0.101\"), Mask: net.CIDRMask(24, net.IPv4len*8)},\n\t\t\t\t{IP: net.ParseIP(\"10.0.0.102\"), Mask: net.CIDRMask(24, net.IPv4len*8)},\n\t\t\t},\n\t\t},\n\n\t\t// static - ipv6\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"ip.0.address\": \"fe00::100/64\",\n\t\t\t},\n\n\t\t\taddresses: []net.IPNet{{IP: net.ParseIP(\"fe00::100\"), Mask: net.IPMask(net.CIDRMask(64, net.IPv6len*8))}},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"ip.0.address\": \"fe00::100/64\",\n\t\t\t\t\"ip.1.address\": \"fe00::101/64\",\n\t\t\t\t\"ip.2.address\": \"fe00::102/64\",\n\t\t\t},\n\n\t\t\taddresses: []net.IPNet{\n\t\t\t\t{IP: net.ParseIP(\"fe00::100\"), Mask: net.CIDRMask(64, net.IPv6len*8)},\n\t\t\t\t{IP: net.ParseIP(\"fe00::101\"), Mask: net.CIDRMask(64, net.IPv6len*8)},\n\t\t\t\t{IP: net.ParseIP(\"fe00::102\"), Mask: net.CIDRMask(64, net.IPv6len*8)},\n\t\t\t},\n\t\t},\n\n\t\t// invalid\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"ip.0.address\": \"test address\",\n\t\t\t},\n\n\t\t\terr: errors.New(`invalid address: \"test address\"`),\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\taddresses, err := processAddressConfig(tt.config, tt.prefix)\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif !reflect.DeepEqual(tt.addresses, addresses) {\n\t\t\tt.Errorf(\"bad addresses (#%d): want %#v, got %#v\", i, tt.addresses, addresses)\n\t\t}\n\t}\n}\n\nfunc TestProcessRouteConfig(t *testing.T) {\n\ttests := []struct {\n\t\tconfig map[string]string\n\t\tprefix string\n\n\t\troutes []route\n\t\terr    error\n\t}{\n\t\t{},\n\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"route.0.destination\": \"0.0.0.0/0\",\n\t\t\t},\n\n\t\t\troutes: []route{{destination: net.IPNet{IP: net.IP(net.CIDRMask(0, net.IPv4len*8)), Mask: net.CIDRMask(0, net.IPv4len*8)}, gateway: net.ParseIP(\"10.0.0.1\")}},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"this.is.a.prefix.route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"this.is.a.prefix.route.0.destination\": \"0.0.0.0/0\",\n\t\t\t},\n\t\t\tprefix: \"this.is.a.prefix.\",\n\n\t\t\troutes: []route{{destination: net.IPNet{IP: net.IP(net.CIDRMask(0, net.IPv4len*8)), Mask: net.CIDRMask(0, net.IPv4len*8)}, gateway: net.ParseIP(\"10.0.0.1\")}},\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"route.0.gateway\":     \"fe00::1\",\n\t\t\t\t\"route.0.destination\": \"::/0\",\n\t\t\t},\n\n\t\t\troutes: []route{{destination: net.IPNet{IP: net.IPv6zero, Mask: net.IPMask(net.IPv6zero)}, gateway: net.ParseIP(\"fe00::1\")}},\n\t\t},\n\n\t\t// invalid\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"route.0.gateway\":     \"test gateway\",\n\t\t\t\t\"route.0.destination\": \"0.0.0.0/0\",\n\t\t\t},\n\n\t\t\terr: errors.New(`invalid gateway: \"test gateway\"`),\n\t\t},\n\t\t{\n\t\t\tconfig: map[string]string{\n\t\t\t\t\"route.0.gateway\":     \"10.0.0.1\",\n\t\t\t\t\"route.0.destination\": \"test destination\",\n\t\t\t},\n\n\t\t\terr: &net.ParseError{Type: \"CIDR address\", Text: \"test destination\"},\n\t\t},\n\t}\n\n\tfor i, tt := range tests {\n\t\troutes, err := processRouteConfig(tt.config, tt.prefix)\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif !reflect.DeepEqual(tt.routes, routes) {\n\t\t\tt.Errorf(\"bad routes (#%d): want %#v, got %#v\", i, tt.routes, routes)\n\t\t}\n\t}\n}\n\nfunc TestProcessDHCPConfig(t *testing.T) {\n\ttests := []struct {\n\t\tconfig map[string]string\n\t\tprefix string\n\n\t\tdhcp bool\n\t\terr  error\n\t}{\n\t\t{},\n\n\t\t// prefix\n\t\t{config: map[string]string{\"this.is.a.prefix.mac\": \"\"}, prefix: \"this.is.a.prefix.\", dhcp: false},\n\t\t{config: map[string]string{\"this.is.a.prefix.dhcp\": \"yes\"}, prefix: \"this.is.a.prefix.\", dhcp: true},\n\n\t\t// dhcp\n\t\t{config: map[string]string{\"dhcp\": \"yes\"}, dhcp: true},\n\t\t{config: map[string]string{\"dhcp\": \"no\"}, dhcp: false},\n\n\t\t// invalid\n\t\t{config: map[string]string{\"dhcp\": \"blah\"}, err: errors.New(`invalid DHCP option: \"blah\"`)},\n\t}\n\n\tfor i, tt := range tests {\n\t\tdhcp, err := processDHCPConfig(tt.config, tt.prefix)\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (#%d): want %v, got %v\", i, tt.err, err)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif tt.dhcp != dhcp {\n\t\t\tt.Errorf(\"bad dhcp (#%d): want %v, got %v\", i, tt.dhcp, dhcp)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/pkg/http_client.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 pkg\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\tneturl \"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nconst (\n\tHTTP2xx = 2\n\tHTTP4xx = 4\n)\n\ntype Err error\n\ntype ErrTimeout struct {\n\tErr\n}\n\ntype ErrNotFound struct {\n\tErr\n}\n\ntype ErrInvalid struct {\n\tErr\n}\n\ntype ErrServer struct {\n\tErr\n}\n\ntype ErrNetwork struct {\n\tErr\n}\n\ntype HTTPClient struct {\n\t// Initial backoff duration. Defaults to 50 milliseconds\n\tInitialBackoff time.Duration\n\n\t// Maximum exp backoff duration. Defaults to 5 seconds\n\tMaxBackoff time.Duration\n\n\t// Maximum number of connection retries. Defaults to 15\n\tMaxRetries int\n\n\t// Headers to add to the request.\n\tHeader http.Header\n\n\tclient *http.Client\n}\n\ntype Getter interface {\n\tGet(string) ([]byte, error)\n\tGetRetry(string) ([]byte, error)\n}\n\nfunc NewHTTPClient() *HTTPClient {\n\treturn NewHTTPClientHeader(nil)\n}\n\nfunc NewHTTPClientHeader(header http.Header) *HTTPClient {\n\thc := &HTTPClient{\n\t\tInitialBackoff: 50 * time.Millisecond,\n\t\tMaxBackoff:     time.Second * 5,\n\t\tMaxRetries:     15,\n\t\tHeader:         header,\n\t\tclient: &http.Client{\n\t\t\tTimeout: 10 * time.Second,\n\t\t},\n\t}\n\n\treturn hc\n}\n\nfunc ExpBackoff(interval, max time.Duration) time.Duration {\n\tinterval = interval * 2\n\tif interval > max {\n\t\tinterval = max\n\t}\n\treturn interval\n}\n\n// GetRetry fetches a given URL with support for exponential backoff and maximum retries\nfunc (h *HTTPClient) GetRetry(rawurl string) ([]byte, error) {\n\tif rawurl == \"\" {\n\t\treturn nil, ErrInvalid{errors.New(\"URL is empty. Skipping\")}\n\t}\n\n\turl, err := neturl.Parse(rawurl)\n\tif err != nil {\n\t\treturn nil, ErrInvalid{err}\n\t}\n\n\t// Unfortunately, url.Parse is too generic to throw errors if a URL does not\n\t// have a valid HTTP scheme. So, we have to do this extra validation\n\tif !strings.HasPrefix(url.Scheme, \"http\") {\n\t\treturn nil, ErrInvalid{fmt.Errorf(\"URL %s does not have a valid HTTP scheme. Skipping\", rawurl)}\n\t}\n\n\tdataURL := url.String()\n\n\tduration := h.InitialBackoff\n\tfor retry := 1; retry <= h.MaxRetries; retry++ {\n\t\tlog.Debugf(\"Fetching data from %s. Attempt #%d\", dataURL, retry)\n\n\t\tdata, err := h.Get(dataURL)\n\t\tswitch err.(type) {\n\t\tcase ErrNetwork:\n\t\t\tlog.Debugf(err.Error())\n\t\tcase ErrServer:\n\t\t\tlog.Debugf(err.Error())\n\t\tcase ErrNotFound:\n\t\t\treturn data, err\n\t\tdefault:\n\t\t\treturn data, err\n\t\t}\n\n\t\tduration = ExpBackoff(duration, h.MaxBackoff)\n\t\tlog.Debugf(\"Sleeping for %v...\", duration)\n\t\ttime.Sleep(duration)\n\t}\n\n\treturn nil, ErrTimeout{fmt.Errorf(\"Unable to fetch data. Maximum retries reached: %d\", h.MaxRetries)}\n}\n\nfunc (h *HTTPClient) Get(dataURL string) ([]byte, error) {\n\trequest, err := http.NewRequest(\"GET\", dataURL, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trequest.Header = h.Header\n\tif resp, err := h.client.Do(request); err == nil {\n\t\tdefer resp.Body.Close()\n\t\tswitch resp.StatusCode / 100 {\n\t\tcase HTTP2xx:\n\t\t\treturn ioutil.ReadAll(resp.Body)\n\t\tcase HTTP4xx:\n\t\t\treturn nil, ErrNotFound{fmt.Errorf(\"Not found. HTTP status code: %d\", resp.StatusCode)}\n\t\tdefault:\n\t\t\treturn nil, ErrServer{fmt.Errorf(\"Server error. HTTP status code: %d\", resp.StatusCode)}\n\t\t}\n\t} else {\n\t\treturn nil, ErrNetwork{fmt.Errorf(\"Unable to fetch data: %s\", err.Error())}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/pkg/http_client_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 pkg\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestExpBackoff(t *testing.T) {\n\tduration := time.Millisecond\n\tmax := time.Hour\n\tfor i := 0; i < math.MaxUint16; i++ {\n\t\tduration = ExpBackoff(duration, max)\n\t\tif duration < 0 {\n\t\t\tt.Fatalf(\"duration too small: %v %v\", duration, i)\n\t\t}\n\t\tif duration > max {\n\t\t\tt.Fatalf(\"duration too large: %v %v\", duration, i)\n\t\t}\n\t}\n}\n\n// Test exponential backoff and that it continues retrying if a 5xx response is\n// received\nfunc TestGetURLExpBackOff(t *testing.T) {\n\tvar expBackoffTests = []struct {\n\t\tcount int\n\t\tbody  string\n\t}{\n\t\t{0, \"number of attempts: 0\"},\n\t\t{1, \"number of attempts: 1\"},\n\t\t{2, \"number of attempts: 2\"},\n\t}\n\tclient := NewHTTPClient()\n\n\tfor i, tt := range expBackoffTests {\n\t\tmux := http.NewServeMux()\n\t\tcount := 0\n\t\tmux.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\t\tif count == tt.count {\n\t\t\t\tio.WriteString(w, fmt.Sprintf(\"number of attempts: %d\", count))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcount++\n\t\t\thttp.Error(w, \"\", 500)\n\t\t})\n\t\tts := httptest.NewServer(mux)\n\t\tdefer ts.Close()\n\n\t\tdata, err := client.GetRetry(ts.URL)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"Test case %d produced error: %v\", i, err)\n\t\t}\n\n\t\tif count != tt.count {\n\t\t\tt.Errorf(\"Test case %d failed: %d != %d\", i, count, tt.count)\n\t\t}\n\n\t\tif string(data) != tt.body {\n\t\t\tt.Errorf(\"Test case %d failed: %s != %s\", i, tt.body, data)\n\t\t}\n\t}\n}\n\n// Test that it stops retrying if a 4xx response comes back\nfunc TestGetURL4xx(t *testing.T) {\n\tclient := NewHTTPClient()\n\tretries := 0\n\tts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tretries++\n\t\thttp.Error(w, \"\", 404)\n\t}))\n\tdefer ts.Close()\n\n\t_, err := client.GetRetry(ts.URL)\n\tif err == nil {\n\t\tt.Errorf(\"Incorrect result\\ngot:  %s\\nwant: %s\", err.Error(), \"Not found. HTTP status code: 404\")\n\t}\n\n\tif retries > 1 {\n\t\tt.Errorf(\"Number of retries:\\n%d\\nExpected number of retries:\\n%d\", retries, 1)\n\t}\n}\n\n// Test that it fetches and returns user-data just fine\nfunc TestGetURL2xx(t *testing.T) {\n\tvar cloudcfg = `\n#cloud-config\ncoreos: \n\toem:\n\t    id: test\n\t    name: CoreOS.box for Test\n\t    version-id: %VERSION_ID%+%BUILD_ID%\n\t    home-url: https://github.com/burmilla/os/config/cloudinit\n\t    bug-report-url: https://github.com/burmilla/os/config/cloudinit\n\tupdate:\n\t\treboot-strategy: best-effort\n`\n\n\tclient := NewHTTPClient()\n\tts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprint(w, cloudcfg)\n\t}))\n\tdefer ts.Close()\n\n\tdata, err := client.GetRetry(ts.URL)\n\tif err != nil {\n\t\tt.Errorf(\"Incorrect result\\ngot:  %v\\nwant: %v\", err, nil)\n\t}\n\n\tif string(data) != cloudcfg {\n\t\tt.Errorf(\"Incorrect result\\ngot:  %s\\nwant: %s\", string(data), cloudcfg)\n\t}\n}\n\n// Test attempt to fetching using malformed URL\nfunc TestGetMalformedURL(t *testing.T) {\n\tclient := NewHTTPClient()\n\n\tvar tests = []struct {\n\t\turl  string\n\t\twant string\n\t}{\n\t\t{\"boo\", \"URL boo does not have a valid HTTP scheme. Skipping\"},\n\t\t{\"mailto://boo\", \"URL mailto://boo does not have a valid HTTP scheme. Skipping\"},\n\t\t{\"ftp://boo\", \"URL ftp://boo does not have a valid HTTP scheme. Skipping\"},\n\t\t{\"\", \"URL is empty. Skipping\"},\n\t}\n\n\tfor _, test := range tests {\n\t\t_, err := client.GetRetry(test.url)\n\t\tif err == nil || err.Error() != test.want {\n\t\t\tt.Errorf(\"Incorrect result\\ngot:  %v\\nwant: %v\", err, test.want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/env.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// serviceContents generates the contents for a drop-in unit given the config.\n// The argument must be a struct from the 'config' package.\nfunc serviceContents(e interface{}) string {\n\tvars := getEnvVars(e)\n\tif len(vars) == 0 {\n\t\treturn \"\"\n\t}\n\n\tout := \"[Service]\\n\"\n\tfor _, v := range vars {\n\t\tout += fmt.Sprintf(\"Environment=\\\"%s\\\"\\n\", v)\n\t}\n\treturn out\n}\n\nfunc getEnvVars(e interface{}) []string {\n\tet := reflect.TypeOf(e)\n\tev := reflect.ValueOf(e)\n\n\tvars := []string{}\n\tfor i := 0; i < et.NumField(); i++ {\n\t\tif val := ev.Field(i).Interface(); !config.IsZero(val) {\n\t\t\tkey := et.Field(i).Tag.Get(\"env\")\n\t\t\tvars = append(vars, fmt.Sprintf(\"%s=%v\", key, val))\n\t\t}\n\t}\n\n\treturn vars\n}\n"
  },
  {
    "path": "config/cloudinit/system/env_file.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"sort\"\n)\n\ntype EnvFile struct {\n\tVars map[string]string\n\t// mask File.Content, it shouldn't be used.\n\tContent interface{} `json:\"-\" yaml:\"-\"`\n\t*File\n}\n\n// only allow sh compatible identifiers\nvar validKey = regexp.MustCompile(`^[a-zA-Z0-9_]+$`)\n\n// match each line, optionally capturing valid identifiers, discarding dos line endings\nvar lineLexer = regexp.MustCompile(`(?m)^((?:([a-zA-Z0-9_]+)=)?.*?)\\r?\\n`)\n\n// mergeEnvContents: Update the existing file contents with new values,\n// preserving variable ordering and all content this code doesn't understand.\n// All new values are appended to the bottom of the old, sorted by key.\nfunc mergeEnvContents(old []byte, pending map[string]string) []byte {\n\tvar buf bytes.Buffer\n\tvar match [][]byte\n\n\t// it is awkward for the regex to handle a missing newline gracefully\n\tif len(old) != 0 && !bytes.HasSuffix(old, []byte{'\\n'}) {\n\t\told = append(old, byte('\\n'))\n\t}\n\n\tfor _, match = range lineLexer.FindAllSubmatch(old, -1) {\n\t\tkey := string(match[2])\n\t\tif value, ok := pending[key]; ok {\n\t\t\tfmt.Fprintf(&buf, \"%s=%s\\n\", key, value)\n\t\t\tdelete(pending, key)\n\t\t} else {\n\t\t\tfmt.Fprintf(&buf, \"%s\\n\", match[1])\n\t\t}\n\t}\n\n\tfor _, key := range keys(pending) {\n\t\tvalue := pending[key]\n\t\tfmt.Fprintf(&buf, \"%s=%s\\n\", key, value)\n\t}\n\n\treturn buf.Bytes()\n}\n\n// WriteEnvFile updates an existing env `KEY=value` formated file with\n// new values provided in EnvFile.Vars; File.Content is ignored.\n// Existing ordering and any unknown formatting such as comments are\n// preserved. If no changes are required the file is untouched.\nfunc WriteEnvFile(ef *EnvFile, root string) error {\n\t// validate new keys, mergeEnvContents uses pending to track writes\n\tpending := make(map[string]string, len(ef.Vars))\n\tfor key, value := range ef.Vars {\n\t\tif !validKey.MatchString(key) {\n\t\t\treturn fmt.Errorf(\"Invalid name %q for %s\", key, ef.Path)\n\t\t}\n\t\tpending[key] = value\n\t}\n\n\tif len(pending) == 0 {\n\t\treturn nil\n\t}\n\n\toldContent, err := ioutil.ReadFile(path.Join(root, ef.Path))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\toldContent = []byte{}\n\t\t} else {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tnewContent := mergeEnvContents(oldContent, pending)\n\tif bytes.Equal(oldContent, newContent) {\n\t\treturn nil\n\t}\n\n\tef.File.Content = string(newContent)\n\t_, err = WriteFile(ef.File, root)\n\treturn err\n}\n\n// keys returns the keys of a map in sorted order\nfunc keys(m map[string]string) (s []string) {\n\tfor k := range m {\n\t\ts = append(s, k)\n\t}\n\tsort.Strings(s)\n\treturn\n}\n"
  },
  {
    "path": "config/cloudinit/system/env_file_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nconst (\n\tbase          = \"# a file\\nFOO=base\\n\\nBAR= hi there\\n\"\n\tbaseNoNewline = \"# a file\\nFOO=base\\n\\nBAR= hi there\"\n\tbaseDos       = \"# a file\\r\\nFOO=base\\r\\n\\r\\nBAR= hi there\\r\\n\"\n\texpectUpdate  = \"# a file\\nFOO=test\\n\\nBAR= hi there\\nNEW=a value\\n\"\n\texpectCreate  = \"FOO=test\\nNEW=a value\\n\"\n)\n\nvar (\n\tvalueUpdate = map[string]string{\n\t\t\"FOO\": \"test\",\n\t\t\"NEW\": \"a value\",\n\t}\n\tvalueNoop = map[string]string{\n\t\t\"FOO\": \"base\",\n\t}\n\tvalueEmpty   = map[string]string{}\n\tvalueInvalid = map[string]string{\n\t\t\"FOO-X\": \"test\",\n\t}\n)\n\nfunc TestWriteEnvFileUpdate(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(base), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueUpdate,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != expectUpdate {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was not replaced: %s\", fullPath)\n\t}\n}\n\nfunc TestWriteEnvFileUpdateNoNewline(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(baseNoNewline), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueUpdate,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != expectUpdate {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was not replaced: %s\", fullPath)\n\t}\n}\n\nfunc TestWriteEnvFileCreate(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueUpdate,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != expectCreate {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n}\n\nfunc TestWriteEnvFileNoop(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(base), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueNoop,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != base {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino != newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was replaced: %s\", fullPath)\n\t}\n}\n\nfunc TestWriteEnvFileUpdateDos(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(baseDos), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueUpdate,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != expectUpdate {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was not replaced: %s\", fullPath)\n\t}\n}\n\n// A middle ground noop, values are unchanged but we did have a value.\n// Seems reasonable to rewrite the file in Unix format anyway.\nfunc TestWriteEnvFileDos2Unix(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(baseDos), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueNoop,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != base {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino == newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was not replaced: %s\", fullPath)\n\t}\n}\n\n// If it really is a noop (structure is empty) don't even do dos2unix\nfunc TestWriteEnvFileEmpty(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(baseDos), 0644)\n\n\toldStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueEmpty,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != baseDos {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t}\n\n\tnewStat, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif oldStat.Sys().(*syscall.Stat_t).Ino != newStat.Sys().(*syscall.Stat_t).Ino {\n\t\tt.Fatalf(\"File was replaced: %s\", fullPath)\n\t}\n}\n\n// no point in creating empty files\nfunc TestWriteEnvFileEmptyNoCreate(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueEmpty,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"WriteFile failed: %v\", err)\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err == nil {\n\t\tt.Fatalf(\"File has incorrect contents: %q\", contents)\n\t} else if !os.IsNotExist(err) {\n\t\tt.Fatalf(\"Unexpected error while reading file: %v\", err)\n\t}\n}\n\nfunc SvenBrokeTestWriteEnvFilePermFailure(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\tfullPath := path.Join(dir, name)\n\tioutil.WriteFile(fullPath, []byte(base), 0000)\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueUpdate,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif !os.IsPermission(err) {\n\t\tt.Fatalf(\"Not a pemission denied error: %v\", err)\n\t}\n}\n\nfunc TestWriteEnvFileNameFailure(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tname := \"foo.conf\"\n\n\tef := EnvFile{\n\t\tFile: &File{config.File{\n\t\t\tPath: name,\n\t\t}},\n\t\tVars: valueInvalid,\n\t}\n\n\terr = WriteEnvFile(&ef, dir)\n\tif err == nil || !strings.HasPrefix(err.Error(), \"Invalid name\") {\n\t\tt.Fatalf(\"Not an invalid name error: %v\", err)\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/env_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"testing\"\n)\n\nfunc TestServiceContents(t *testing.T) {\n\ttests := []struct {\n\t\tConfig   interface{}\n\t\tContents string\n\t}{\n\t\t{\n\t\t\tstruct{}{},\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\tstruct {\n\t\t\t\tA string  `env:\"A\"`\n\t\t\t\tB int     `env:\"B\"`\n\t\t\t\tC bool    `env:\"C\"`\n\t\t\t\tD float64 `env:\"D\"`\n\t\t\t}{\n\t\t\t\t\"hi\", 1, true, 0.12345,\n\t\t\t},\n\t\t\t`[Service]\nEnvironment=\"A=hi\"\nEnvironment=\"B=1\"\nEnvironment=\"C=true\"\nEnvironment=\"D=0.12345\"\n`,\n\t\t},\n\t\t{\n\t\t\tstruct {\n\t\t\t\tA float64 `env:\"A\"`\n\t\t\t\tB float64 `env:\"B\"`\n\t\t\t\tC float64 `env:\"C\"`\n\t\t\t\tD float64 `env:\"D\"`\n\t\t\t}{\n\t\t\t\t0.000001, 1, 0.9999999, 0.1,\n\t\t\t},\n\t\t\t`[Service]\nEnvironment=\"A=1e-06\"\nEnvironment=\"B=1\"\nEnvironment=\"C=0.9999999\"\nEnvironment=\"D=0.1\"\n`,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tif c := serviceContents(tt.Config); c != tt.Contents {\n\t\t\tt.Errorf(\"bad contents (%+v): want %q, got %q\", tt, tt.Contents, c)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/etc_hosts.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nconst DefaultIpv4Address = \"127.0.0.1\"\n\ntype EtcHosts struct {\n\tconfig.EtcHosts\n}\n\nfunc (eh EtcHosts) generateEtcHosts() (out string, err error) {\n\tif eh.EtcHosts != \"localhost\" {\n\t\treturn \"\", errors.New(\"Invalid option to manage_etc_hosts\")\n\t}\n\n\t// use the operating system hostname\n\thostname, err := os.Hostname()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn fmt.Sprintf(\"%s %s\\n\", DefaultIpv4Address, hostname), nil\n\n}\n\nfunc (eh EtcHosts) File() (*File, error) {\n\tif eh.EtcHosts == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tetcHosts, err := eh.generateEtcHosts()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &File{config.File{\n\t\tPath:               path.Join(\"etc\", \"hosts\"),\n\t\tRawFilePermissions: \"0644\",\n\t\tContent:            etcHosts,\n\t}}, nil\n}\n"
  },
  {
    "path": "config/cloudinit/system/etc_hosts_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestEtcdHostsFile(t *testing.T) {\n\thostname, err := os.Hostname()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfor _, tt := range []struct {\n\t\tconfig config.EtcHosts\n\t\tfile   *File\n\t\terr    error\n\t}{\n\t\t{\n\t\t\t\"invalid\",\n\t\t\tnil,\n\t\t\tfmt.Errorf(\"Invalid option to manage_etc_hosts\"),\n\t\t},\n\t\t{\n\t\t\t\"localhost\",\n\t\t\t&File{config.File{\n\t\t\t\tContent:            fmt.Sprintf(\"127.0.0.1 %s\\n\", hostname),\n\t\t\t\tPath:               \"etc/hosts\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t\tnil,\n\t\t},\n\t} {\n\t\tfile, err := EtcHosts{tt.config}.File()\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (%q): want %q, got %q\", tt.config, tt.err, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.file, file) {\n\t\t\tt.Errorf(\"bad units (%q): want %#v, got %#v\", tt.config, tt.file, file)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/etcd.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// Etcd is a top-level structure which embeds its underlying configuration,\n// config.Etcd, and provides the system-specific Unit().\ntype Etcd struct {\n\tconfig.Etcd\n}\n\n// Units creates a Unit file drop-in for etcd, using any configured options.\nfunc (ee Etcd) Units() []Unit {\n\treturn []Unit{{config.Unit{\n\t\tName:    \"etcd.service\",\n\t\tRuntime: true,\n\t\tDropIns: []config.UnitDropIn{{\n\t\t\tName:    \"20-cloudinit.conf\",\n\t\t\tContent: serviceContents(ee.Etcd),\n\t\t}},\n\t}}}\n}\n"
  },
  {
    "path": "config/cloudinit/system/etcd2.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// Etcd2 is a top-level structure which embeds its underlying configuration,\n// config.Etcd2, and provides the system-specific Unit().\ntype Etcd2 struct {\n\tconfig.Etcd2\n}\n\n// Units creates a Unit file drop-in for etcd, using any configured options.\nfunc (ee Etcd2) Units() []Unit {\n\treturn []Unit{{config.Unit{\n\t\tName:    \"etcd2.service\",\n\t\tRuntime: true,\n\t\tDropIns: []config.UnitDropIn{{\n\t\t\tName:    \"20-cloudinit.conf\",\n\t\t\tContent: serviceContents(ee.Etcd2),\n\t\t}},\n\t}}}\n}\n"
  },
  {
    "path": "config/cloudinit/system/etcd_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestEtcdUnits(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Etcd\n\t\tunits  []Unit\n\t}{\n\t\t{\n\t\t\tconfig.Etcd{},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"etcd.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{Name: \"20-cloudinit.conf\"}},\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig.Etcd{\n\t\t\t\tDiscovery:    \"http://disco.example.com/foobar\",\n\t\t\t\tPeerBindAddr: \"127.0.0.1:7002\",\n\t\t\t},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"etcd.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{\n\t\t\t\t\tName: \"20-cloudinit.conf\",\n\t\t\t\t\tContent: `[Service]\nEnvironment=\"ETCD_DISCOVERY=http://disco.example.com/foobar\"\nEnvironment=\"ETCD_PEER_BIND_ADDR=127.0.0.1:7002\"\n`,\n\t\t\t\t}},\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig.Etcd{\n\t\t\t\tName:         \"node001\",\n\t\t\t\tDiscovery:    \"http://disco.example.com/foobar\",\n\t\t\t\tPeerBindAddr: \"127.0.0.1:7002\",\n\t\t\t},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"etcd.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{\n\t\t\t\t\tName: \"20-cloudinit.conf\",\n\t\t\t\t\tContent: `[Service]\nEnvironment=\"ETCD_DISCOVERY=http://disco.example.com/foobar\"\nEnvironment=\"ETCD_NAME=node001\"\nEnvironment=\"ETCD_PEER_BIND_ADDR=127.0.0.1:7002\"\n`,\n\t\t\t\t}},\n\t\t\t}}},\n\t\t},\n\t} {\n\t\tunits := Etcd{tt.config}.Units()\n\t\tif !reflect.DeepEqual(tt.units, units) {\n\t\t\tt.Errorf(\"bad units (%+v): want %#v, got %#v\", tt.config, tt.units, units)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/file.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strconv\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// File is a top-level structure which embeds its underlying configuration,\n// config.File, and provides the system-specific Permissions().\ntype File struct {\n\tconfig.File\n}\n\nfunc (f *File) Permissions() (os.FileMode, error) {\n\tif f.RawFilePermissions == \"\" {\n\t\treturn os.FileMode(0644), nil\n\t}\n\n\t// Parse string representation of file mode as integer\n\tperm, err := strconv.ParseInt(f.RawFilePermissions, 8, 32)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"Unable to parse file permissions %q as integer\", f.RawFilePermissions)\n\t}\n\treturn os.FileMode(perm), nil\n}\n\n// WriteFile writes given endecoded file to the filesystem\nfunc WriteFile(f *File, root string) (string, error) {\n\tif f.Encoding != \"\" {\n\t\treturn \"\", fmt.Errorf(\"Unable to write file with encoding %s\", f.Encoding)\n\t}\n\n\tfullpath := path.Join(root, f.Path)\n\tdir := path.Dir(fullpath)\n\tlog.Printf(\"Writing file to %q\", fullpath)\n\n\tif err := EnsureDirectoryExists(dir); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tperm, err := f.Permissions()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar tmp *os.File\n\t// Create a temporary file in the same directory to ensure it's on the same filesystem\n\tif tmp, err = ioutil.TempFile(dir, \"cloudinit-temp\"); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif err := ioutil.WriteFile(tmp.Name(), []byte(f.Content), perm); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif err := tmp.Close(); err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Ensure the permissions are as requested (since WriteFile can be affected by sticky bit)\n\tif err := os.Chmod(tmp.Name(), perm); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif f.Owner != \"\" {\n\t\t// We shell out since we don't have a way to look up unix groups natively\n\t\tcmd := exec.Command(\"chown\", f.Owner, tmp.Name())\n\t\tif err := cmd.Run(); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\tif err := os.Rename(tmp.Name(), fullpath); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tlog.Printf(\"Wrote file to %q\", fullpath)\n\treturn fullpath, nil\n}\n\nfunc EnsureDirectoryExists(dir string) error {\n\tinfo, err := os.Stat(dir)\n\tif err == nil {\n\t\tif !info.IsDir() {\n\t\t\treturn fmt.Errorf(\"%s is not a directory\", dir)\n\t\t}\n\t} else {\n\t\terr = os.MkdirAll(dir, 0755)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "config/cloudinit/system/file_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestWriteFileUnencodedContent(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tfn := \"foo\"\n\tfullPath := path.Join(dir, fn)\n\n\twf := File{config.File{\n\t\tPath:               fn,\n\t\tContent:            \"bar\",\n\t\tRawFilePermissions: \"0644\",\n\t}}\n\n\tpath, err := WriteFile(&wf, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"Processing of WriteFile failed: %v\", err)\n\t} else if path != fullPath {\n\t\tt.Fatalf(\"WriteFile returned bad path: want %s, got %s\", fullPath, path)\n\t}\n\n\tfi, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif fi.Mode() != os.FileMode(0644) {\n\t\tt.Errorf(\"File has incorrect mode: %v\", fi.Mode())\n\t}\n\n\tcontents, err := ioutil.ReadFile(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to read expected file: %v\", err)\n\t}\n\n\tif string(contents) != \"bar\" {\n\t\tt.Fatalf(\"File has incorrect contents\")\n\t}\n}\n\nfunc TestWriteFileInvalidPermission(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\twf := File{config.File{\n\t\tPath:               path.Join(dir, \"tmp\", \"foo\"),\n\t\tContent:            \"bar\",\n\t\tRawFilePermissions: \"pants\",\n\t}}\n\n\tif _, err := WriteFile(&wf, dir); err == nil {\n\t\tt.Fatalf(\"Expected error to be raised when writing file with invalid permission\")\n\t}\n}\n\nfunc TestDecimalFilePermissions(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tfn := \"foo\"\n\tfullPath := path.Join(dir, fn)\n\n\twf := File{config.File{\n\t\tPath:               fn,\n\t\tRawFilePermissions: \"744\",\n\t}}\n\n\tpath, err := WriteFile(&wf, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"Processing of WriteFile failed: %v\", err)\n\t} else if path != fullPath {\n\t\tt.Fatalf(\"WriteFile returned bad path: want %s, got %s\", fullPath, path)\n\t}\n\n\tfi, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif fi.Mode() != os.FileMode(0744) {\n\t\tt.Errorf(\"File has incorrect mode: %v\", fi.Mode())\n\t}\n}\n\nfunc TestWriteFilePermissions(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tfn := \"foo\"\n\tfullPath := path.Join(dir, fn)\n\n\twf := File{config.File{\n\t\tPath:               fn,\n\t\tRawFilePermissions: \"0755\",\n\t}}\n\n\tpath, err := WriteFile(&wf, dir)\n\tif err != nil {\n\t\tt.Fatalf(\"Processing of WriteFile failed: %v\", err)\n\t} else if path != fullPath {\n\t\tt.Fatalf(\"WriteFile returned bad path: want %s, got %s\", fullPath, path)\n\t}\n\n\tfi, err := os.Stat(fullPath)\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to stat file: %v\", err)\n\t}\n\n\tif fi.Mode() != os.FileMode(0755) {\n\t\tt.Errorf(\"File has incorrect mode: %v\", fi.Mode())\n\t}\n}\n\nfunc TestWriteFileInvalidEncodedContent(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tcontentEncodings := []string{\n\t\t\"base64\",\n\t\t\"b64\",\n\t\t\"gz\",\n\t\t\"gzip\",\n\t\t\"gz+base64\",\n\t\t\"gzip+base64\",\n\t\t\"gz+b64\",\n\t\t\"gzip+b64\",\n\t}\n\n\tfor _, encoding := range contentEncodings {\n\t\twf := File{config.File{\n\t\t\tPath:     path.Join(dir, \"tmp\", \"foo\"),\n\t\t\tContent:  \"@&*#%invalid data*@&^#*&\",\n\t\t\tEncoding: encoding,\n\t\t}}\n\n\t\tif _, err := WriteFile(&wf, dir); err == nil {\n\t\t\tt.Fatalf(\"Expected error to be raised when writing file with encoding\")\n\t\t}\n\t}\n}\n\nfunc TestWriteFileUnknownEncodedContent(t *testing.T) {\n\tdir, err := ioutil.TempDir(os.TempDir(), \"coreos-cloudinit-\")\n\tif err != nil {\n\t\tt.Fatalf(\"Unable to create tempdir: %v\", err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\twf := File{config.File{\n\t\tPath:     path.Join(dir, \"tmp\", \"foo\"),\n\t\tContent:  \"\",\n\t\tEncoding: \"no-such-encoding\",\n\t}}\n\n\tif _, err := WriteFile(&wf, dir); err == nil {\n\t\tt.Fatalf(\"Expected error to be raised when writing file with encoding\")\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/flannel.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// Flannel is a top-level structure which embeds its underlying configuration,\n// config.Flannel, and provides the system-specific Unit().\ntype Flannel struct {\n\tconfig.Flannel\n}\n\nfunc (fl Flannel) envVars() string {\n\treturn strings.Join(getEnvVars(fl.Flannel), \"\\n\")\n}\n\nfunc (fl Flannel) File() (*File, error) {\n\tvars := fl.envVars()\n\tif vars == \"\" {\n\t\treturn nil, nil\n\t}\n\treturn &File{config.File{\n\t\tPath:               path.Join(\"run\", \"flannel\", \"options.env\"),\n\t\tRawFilePermissions: \"0644\",\n\t\tContent:            vars,\n\t}}, nil\n}\n"
  },
  {
    "path": "config/cloudinit/system/flannel_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestFlannelEnvVars(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig   config.Flannel\n\t\tcontents string\n\t}{\n\t\t{\n\t\t\tconfig.Flannel{},\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\tconfig.Flannel{\n\t\t\t\tEtcdEndpoints: \"http://12.34.56.78:4001\",\n\t\t\t\tEtcdPrefix:    \"/coreos.com/network/tenant1\",\n\t\t\t},\n\t\t\t`FLANNELD_ETCD_ENDPOINTS=http://12.34.56.78:4001\nFLANNELD_ETCD_PREFIX=/coreos.com/network/tenant1`,\n\t\t},\n\t} {\n\t\tout := Flannel{tt.config}.envVars()\n\t\tif out != tt.contents {\n\t\t\tt.Errorf(\"bad contents (%+v): want %q, got %q\", tt, tt.contents, out)\n\t\t}\n\t}\n}\n\nfunc TestFlannelFile(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Flannel\n\t\tfile   *File\n\t}{\n\t\t{\n\t\t\tconfig.Flannel{},\n\t\t\tnil,\n\t\t},\n\t\t{\n\t\t\tconfig.Flannel{\n\t\t\t\tEtcdEndpoints: \"http://12.34.56.78:4001\",\n\t\t\t\tEtcdPrefix:    \"/coreos.com/network/tenant1\",\n\t\t\t},\n\t\t\t&File{config.File{\n\t\t\t\tPath:               \"run/flannel/options.env\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t\tContent: `FLANNELD_ETCD_ENDPOINTS=http://12.34.56.78:4001\nFLANNELD_ETCD_PREFIX=/coreos.com/network/tenant1`,\n\t\t\t}},\n\t\t},\n\t} {\n\t\tfile, _ := Flannel{tt.config}.File()\n\t\tif !reflect.DeepEqual(tt.file, file) {\n\t\t\tt.Errorf(\"bad units (%q): want %#v, got %#v\", tt.config, tt.file, file)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/fleet.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// Fleet is a top-level structure which embeds its underlying configuration,\n// config.Fleet, and provides the system-specific Unit().\ntype Fleet struct {\n\tconfig.Fleet\n}\n\n// Units generates a Unit file drop-in for fleet, if any fleet options were\n// configured in cloud-config\nfunc (fe Fleet) Units() []Unit {\n\treturn []Unit{{config.Unit{\n\t\tName:    \"fleet.service\",\n\t\tRuntime: true,\n\t\tDropIns: []config.UnitDropIn{{\n\t\t\tName:    \"20-cloudinit.conf\",\n\t\t\tContent: serviceContents(fe.Fleet),\n\t\t}},\n\t}}}\n}\n"
  },
  {
    "path": "config/cloudinit/system/fleet_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestFleetUnits(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Fleet\n\t\tunits  []Unit\n\t}{\n\t\t{\n\t\t\tconfig.Fleet{},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"fleet.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{Name: \"20-cloudinit.conf\"}},\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig.Fleet{\n\t\t\t\tPublicIP: \"12.34.56.78\",\n\t\t\t},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"fleet.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{\n\t\t\t\t\tName: \"20-cloudinit.conf\",\n\t\t\t\t\tContent: `[Service]\nEnvironment=\"FLEET_PUBLIC_IP=12.34.56.78\"\n`,\n\t\t\t\t}},\n\t\t\t}}},\n\t\t},\n\t} {\n\t\tunits := Fleet{tt.config}.Units()\n\t\tif !reflect.DeepEqual(units, tt.units) {\n\t\t\tt.Errorf(\"bad units (%+v): want %#v, got %#v\", tt.config, tt.units, units)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/locksmith.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// Locksmith is a top-level structure which embeds its underlying configuration,\n// config.Locksmith, and provides the system-specific Unit().\ntype Locksmith struct {\n\tconfig.Locksmith\n}\n\n// Units creates a Unit file drop-in for etcd, using any configured options.\nfunc (ee Locksmith) Units() []Unit {\n\treturn []Unit{{config.Unit{\n\t\tName:    \"locksmithd.service\",\n\t\tRuntime: true,\n\t\tDropIns: []config.UnitDropIn{{\n\t\t\tName:    \"20-cloudinit.conf\",\n\t\t\tContent: serviceContents(ee.Locksmith),\n\t\t}},\n\t}}}\n}\n"
  },
  {
    "path": "config/cloudinit/system/locksmith_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestLocksmithUnits(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Locksmith\n\t\tunits  []Unit\n\t}{\n\t\t{\n\t\t\tconfig.Locksmith{},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{Name: \"20-cloudinit.conf\"}},\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig.Locksmith{\n\t\t\t\tEndpoint: \"12.34.56.78:4001\",\n\t\t\t},\n\t\t\t[]Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tRuntime: true,\n\t\t\t\tDropIns: []config.UnitDropIn{{\n\t\t\t\t\tName: \"20-cloudinit.conf\",\n\t\t\t\t\tContent: `[Service]\nEnvironment=\"LOCKSMITHD_ENDPOINT=12.34.56.78:4001\"\n`,\n\t\t\t\t}},\n\t\t\t}}},\n\t\t},\n\t} {\n\t\tunits := Locksmith{tt.config}.Units()\n\t\tif !reflect.DeepEqual(units, tt.units) {\n\t\t\tt.Errorf(\"bad units (%+v): want %#v, got %#v\", tt.config, tt.units, units)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/oem.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\n// OEM is a top-level structure which embeds its underlying configuration,\n// config.OEM, and provides the system-specific File().\ntype OEM struct {\n\tconfig.OEM\n}\n\nfunc (oem OEM) File() (*File, error) {\n\tif oem.ID == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tcontent := fmt.Sprintf(\"ID=%s\\n\", oem.ID)\n\tcontent += fmt.Sprintf(\"VERSION_ID=%s\\n\", oem.VersionID)\n\tcontent += fmt.Sprintf(\"NAME=%q\\n\", oem.Name)\n\tcontent += fmt.Sprintf(\"HOME_URL=%q\\n\", oem.HomeURL)\n\tcontent += fmt.Sprintf(\"BUG_REPORT_URL=%q\\n\", oem.BugReportURL)\n\n\treturn &File{config.File{\n\t\tPath:               path.Join(\"etc\", \"oem-release\"),\n\t\tRawFilePermissions: \"0644\",\n\t\tContent:            content,\n\t}}, nil\n}\n"
  },
  {
    "path": "config/cloudinit/system/oem_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestOEMFile(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.OEM\n\t\tfile   *File\n\t}{\n\t\t{\n\t\t\tconfig.OEM{},\n\t\t\tnil,\n\t\t},\n\t\t{\n\t\t\tconfig.OEM{\n\t\t\t\tID:           \"rackspace\",\n\t\t\t\tName:         \"Rackspace Cloud Servers\",\n\t\t\t\tVersionID:    \"168.0.0\",\n\t\t\t\tHomeURL:      \"https://www.rackspace.com/cloud/servers/\",\n\t\t\t\tBugReportURL: \"https://github.com/coreos/coreos-overlay\",\n\t\t\t},\n\t\t\t&File{config.File{\n\t\t\t\tPath:               \"etc/oem-release\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t\tContent: `ID=rackspace\nVERSION_ID=168.0.0\nNAME=\"Rackspace Cloud Servers\"\nHOME_URL=\"https://www.rackspace.com/cloud/servers/\"\nBUG_REPORT_URL=\"https://github.com/coreos/coreos-overlay\"\n`,\n\t\t\t}},\n\t\t},\n\t} {\n\t\tfile, err := OEM{tt.config}.File()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"bad error (%q): want %v, got %q\", tt.config, nil, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.file, file) {\n\t\t\tt.Errorf(\"bad file (%q): want %#v, got %#v\", tt.config, tt.file, file)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/ssh_key.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os/exec\"\n\t\"strings\"\n)\n\n// AuthorizeSSHKeys adds the provided SSH public key to the core user's list of\n// authorized keys\nfunc AuthorizeSSHKeys(user string, keysName string, keys []string) error {\n\tfor i, key := range keys {\n\t\tkeys[i] = strings.TrimSpace(key)\n\t}\n\n\t// join all keys with newlines, ensuring the resulting string\n\t// also ends with a newline\n\tjoined := fmt.Sprintf(\"%s\\n\", strings.Join(keys, \"\\n\"))\n\n\tcmd := exec.Command(\"update-ssh-keys\", \"-u\", user, \"-a\", keysName)\n\tstdin, err := cmd.StdinPipe()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstdout, err := cmd.StdoutPipe()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstderr, err := cmd.StderrPipe()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cmd.Start()\n\tif err != nil {\n\t\tstdin.Close()\n\t\treturn err\n\t}\n\n\t_, err = io.WriteString(stdin, joined)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstdin.Close()\n\tstdoutBytes, _ := ioutil.ReadAll(stdout)\n\tstderrBytes, _ := ioutil.ReadAll(stderr)\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Call to update-ssh-keys failed with %v: %s %s\", err, string(stdoutBytes), string(stderrBytes))\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "config/cloudinit/system/unit.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\ntype UnitManager interface {\n\tPlaceUnit(unit Unit) error\n\tPlaceUnitDropIn(unit Unit, dropIn config.UnitDropIn) error\n\tEnableUnitFile(unit Unit) error\n\tRunUnitCommand(unit Unit, command string) (string, error)\n\tMaskUnit(unit Unit) error\n\tUnmaskUnit(unit Unit) error\n\tDaemonReload() error\n}\n\n// Unit is a top-level structure which embeds its underlying configuration,\n// config.Unit, and provides the system-specific Destination(), Type(), and\n// Group().\ntype Unit struct {\n\tconfig.Unit\n}\n\n// Type returns the extension of the unit (everything that follows the final\n// period).\nfunc (u Unit) Type() string {\n\text := filepath.Ext(u.Name)\n\treturn strings.TrimLeft(ext, \".\")\n}\n\n// Group returns \"network\" or \"system\" depending on whether or not the unit is\n// a network unit or otherwise.\nfunc (u Unit) Group() string {\n\tswitch u.Type() {\n\tcase \"network\", \"netdev\", \"link\":\n\t\treturn \"network\"\n\tdefault:\n\t\treturn \"system\"\n\t}\n}\n\n// Destination builds the appropriate absolute file path for the Unit. The root\n// argument indicates the effective base directory of the system (similar to a\n// chroot).\nfunc (u Unit) Destination(root string) string {\n\treturn path.Join(u.prefix(root), u.Name)\n}\n\n// DropInDestination builds the appropriate absolute file path for the\n// UnitDropIn. The root argument indicates the effective base directory of the\n// system (similar to a chroot) and the dropIn argument is the UnitDropIn for\n// which the destination is being calculated.\nfunc (u Unit) DropInDestination(root string, dropIn config.UnitDropIn) string {\n\treturn path.Join(u.prefix(root), fmt.Sprintf(\"%s.d\", u.Name), dropIn.Name)\n}\n\nfunc (u Unit) prefix(root string) string {\n\tdir := \"etc\"\n\tif u.Runtime {\n\t\tdir = \"run\"\n\t}\n\treturn path.Join(root, dir, \"systemd\", u.Group())\n}\n"
  },
  {
    "path": "config/cloudinit/system/unit_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc TestType(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\n\t\ttyp string\n\t}{\n\t\t{},\n\t\t{\"test.service\", \"service\"},\n\t\t{\"hello\", \"\"},\n\t\t{\"lots.of.dots\", \"dots\"},\n\t}\n\n\tfor _, tt := range tests {\n\t\tu := Unit{config.Unit{\n\t\t\tName: tt.name,\n\t\t}}\n\t\tif typ := u.Type(); tt.typ != typ {\n\t\t\tt.Errorf(\"bad type (%+v): want %q, got %q\", tt, tt.typ, typ)\n\t\t}\n\t}\n}\n\nfunc TestGroup(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\n\t\tgroup string\n\t}{\n\t\t{\"test.service\", \"system\"},\n\t\t{\"test.link\", \"network\"},\n\t\t{\"test.network\", \"network\"},\n\t\t{\"test.netdev\", \"network\"},\n\t\t{\"test.conf\", \"system\"},\n\t}\n\n\tfor _, tt := range tests {\n\t\tu := Unit{config.Unit{\n\t\t\tName: tt.name,\n\t\t}}\n\t\tif group := u.Group(); tt.group != group {\n\t\t\tt.Errorf(\"bad group (%+v): want %q, got %q\", tt, tt.group, group)\n\t\t}\n\t}\n}\n\nfunc TestDestination(t *testing.T) {\n\ttests := []struct {\n\t\troot    string\n\t\tname    string\n\t\truntime bool\n\n\t\tdestination string\n\t}{\n\t\t{\n\t\t\troot:        \"/some/dir\",\n\t\t\tname:        \"foobar.service\",\n\t\t\tdestination: \"/some/dir/etc/systemd/system/foobar.service\",\n\t\t},\n\t\t{\n\t\t\troot:        \"/some/dir\",\n\t\t\tname:        \"foobar.service\",\n\t\t\truntime:     true,\n\t\t\tdestination: \"/some/dir/run/systemd/system/foobar.service\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tu := Unit{config.Unit{\n\t\t\tName:    tt.name,\n\t\t\tRuntime: tt.runtime,\n\t\t}}\n\t\tif d := u.Destination(tt.root); tt.destination != d {\n\t\t\tt.Errorf(\"bad destination (%+v): want %q, got %q\", tt, tt.destination, d)\n\t\t}\n\t}\n}\n\nfunc TestDropInDestination(t *testing.T) {\n\ttests := []struct {\n\t\troot       string\n\t\tunitName   string\n\t\tdropInName string\n\t\truntime    bool\n\n\t\tdestination string\n\t}{\n\t\t{\n\t\t\troot:        \"/some/dir\",\n\t\t\tunitName:    \"foo.service\",\n\t\t\tdropInName:  \"bar.conf\",\n\t\t\tdestination: \"/some/dir/etc/systemd/system/foo.service.d/bar.conf\",\n\t\t},\n\t\t{\n\t\t\troot:        \"/some/dir\",\n\t\t\tunitName:    \"foo.service\",\n\t\t\tdropInName:  \"bar.conf\",\n\t\t\truntime:     true,\n\t\t\tdestination: \"/some/dir/run/systemd/system/foo.service.d/bar.conf\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tu := Unit{config.Unit{\n\t\t\tName:    tt.unitName,\n\t\t\tRuntime: tt.runtime,\n\t\t\tDropIns: []config.UnitDropIn{{\n\t\t\t\tName: tt.dropInName,\n\t\t\t}},\n\t\t}}\n\t\tif d := u.DropInDestination(tt.root, u.DropIns[0]); tt.destination != d {\n\t\t\tt.Errorf(\"bad destination (%+v): want %q, got %q\", tt, tt.destination, d)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/update.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nconst (\n\tlocksmithUnit    = \"locksmithd.service\"\n\tupdateEngineUnit = \"update-engine.service\"\n)\n\n// Update is a top-level structure which contains its underlying configuration,\n// config.Update, a function for reading the configuration (the default\n// implementation reading from the filesystem), and provides the system-specific\n// File() and Unit().\ntype Update struct {\n\tReadConfig func() (io.Reader, error)\n\tconfig.Update\n}\n\nfunc DefaultReadConfig() (io.Reader, error) {\n\tetcUpdate := path.Join(\"/etc\", \"coreos\", \"update.conf\")\n\tusrUpdate := path.Join(\"/usr\", \"share\", \"coreos\", \"update.conf\")\n\n\tf, err := os.Open(etcUpdate)\n\tif os.IsNotExist(err) {\n\t\tf, err = os.Open(usrUpdate)\n\t}\n\treturn f, err\n}\n\n// File generates an `/etc/coreos/update.conf` file (if any update\n// configuration options are set in cloud-config) by either rewriting the\n// existing file on disk, or starting from `/usr/share/coreos/update.conf`\nfunc (uc Update) File() (*File, error) {\n\tif config.IsZero(uc.Update) {\n\t\treturn nil, nil\n\t}\n\tif err := config.AssertStructValid(uc.Update); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Generate the list of possible substitutions to be performed based on the options that are configured\n\tsubs := map[string]string{}\n\tuct := reflect.TypeOf(uc.Update)\n\tucv := reflect.ValueOf(uc.Update)\n\tfor i := 0; i < uct.NumField(); i++ {\n\t\tval := ucv.Field(i).String()\n\t\tif val == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tenv := uct.Field(i).Tag.Get(\"env\")\n\t\tsubs[env] = fmt.Sprintf(\"%s=%s\", env, val)\n\t}\n\n\tconf, err := uc.ReadConfig()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tscanner := bufio.NewScanner(conf)\n\n\tvar out string\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tfor env, value := range subs {\n\t\t\tif strings.HasPrefix(line, env) {\n\t\t\t\tline = value\n\t\t\t\tdelete(subs, env)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tout += line\n\t\tout += \"\\n\"\n\t\tif err := scanner.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor _, key := range sortedKeys(subs) {\n\t\tout += subs[key]\n\t\tout += \"\\n\"\n\t}\n\n\treturn &File{config.File{\n\t\tPath:               path.Join(\"etc\", \"coreos\", \"update.conf\"),\n\t\tRawFilePermissions: \"0644\",\n\t\tContent:            out,\n\t}}, nil\n}\n\n// Units generates units for the cloud-init initializer to act on:\n// - a locksmith Unit, if \"reboot-strategy\" was set in cloud-config\n// - an update_engine Unit, if \"group\" or \"server\" was set in cloud-config\nfunc (uc Update) Units() []Unit {\n\tvar units []Unit\n\tif uc.Update.RebootStrategy != \"\" {\n\t\tls := &Unit{config.Unit{\n\t\t\tName:    locksmithUnit,\n\t\t\tCommand: \"restart\",\n\t\t\tMask:    false,\n\t\t\tRuntime: true,\n\t\t}}\n\n\t\tif uc.Update.RebootStrategy == \"off\" {\n\t\t\tls.Command = \"stop\"\n\t\t\tls.Mask = true\n\t\t}\n\t\tunits = append(units, *ls)\n\t}\n\n\tif uc.Update.Group != \"\" || uc.Update.Server != \"\" {\n\t\tue := Unit{config.Unit{\n\t\t\tName:    updateEngineUnit,\n\t\t\tCommand: \"restart\",\n\t\t}}\n\t\tunits = append(units, ue)\n\t}\n\n\treturn units\n}\n\nfunc sortedKeys(m map[string]string) (keys []string) {\n\tfor key := range m {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\treturn\n}\n"
  },
  {
    "path": "config/cloudinit/system/update_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"io\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc testReadConfig(config string) func() (io.Reader, error) {\n\treturn func() (io.Reader, error) {\n\t\treturn strings.NewReader(config), nil\n\t}\n}\n\nfunc TestUpdateUnits(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Update\n\t\tunits  []Unit\n\t\terr    error\n\t}{\n\t\t{\n\t\t\tconfig: config.Update{},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{Group: \"master\", Server: \"http://foo.com\"},\n\t\t\tunits: []Unit{{config.Unit{\n\t\t\t\tName:    \"update-engine.service\",\n\t\t\t\tCommand: \"restart\",\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"best-effort\"},\n\t\t\tunits: []Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tCommand: \"restart\",\n\t\t\t\tRuntime: true,\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"etcd-lock\"},\n\t\t\tunits: []Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tCommand: \"restart\",\n\t\t\t\tRuntime: true,\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"reboot\"},\n\t\t\tunits: []Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tCommand: \"restart\",\n\t\t\t\tRuntime: true,\n\t\t\t}}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"off\"},\n\t\t\tunits: []Unit{{config.Unit{\n\t\t\t\tName:    \"locksmithd.service\",\n\t\t\t\tCommand: \"stop\",\n\t\t\t\tRuntime: true,\n\t\t\t\tMask:    true,\n\t\t\t}}},\n\t\t},\n\t} {\n\t\tunits := Update{Update: tt.config, ReadConfig: testReadConfig(\"\")}.Units()\n\t\tif !reflect.DeepEqual(tt.units, units) {\n\t\t\tt.Errorf(\"bad units (%q): want %#v, got %#v\", tt.config, tt.units, units)\n\t\t}\n\t}\n}\n\nfunc TestUpdateFile(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tconfig config.Update\n\t\torig   string\n\t\tfile   *File\n\t\terr    error\n\t}{\n\t\t{\n\t\t\tconfig: config.Update{},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"wizzlewazzle\"},\n\t\t\terr:    &config.ErrorValid{Value: \"wizzlewazzle\", Field: \"RebootStrategy\", Valid: \"^(best-effort|etcd-lock|reboot|off)$\"},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{Group: \"master\", Server: \"http://foo.com\"},\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"GROUP=master\\nSERVER=http://foo.com\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"best-effort\"},\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"REBOOT_STRATEGY=best-effort\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"etcd-lock\"},\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"REBOOT_STRATEGY=etcd-lock\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"reboot\"},\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"REBOOT_STRATEGY=reboot\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"off\"},\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"REBOOT_STRATEGY=off\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tconfig: config.Update{RebootStrategy: \"etcd-lock\"},\n\t\t\torig:   \"SERVER=https://example.com\\nGROUP=thegroupc\\nREBOOT_STRATEGY=awesome\",\n\t\t\tfile: &File{config.File{\n\t\t\t\tContent:            \"SERVER=https://example.com\\nGROUP=thegroupc\\nREBOOT_STRATEGY=etcd-lock\\n\",\n\t\t\t\tPath:               \"etc/coreos/update.conf\",\n\t\t\t\tRawFilePermissions: \"0644\",\n\t\t\t}},\n\t\t},\n\t} {\n\t\tfile, err := Update{Update: tt.config, ReadConfig: testReadConfig(tt.orig)}.File()\n\t\tif !reflect.DeepEqual(tt.err, err) {\n\t\t\tt.Errorf(\"bad error (%q): want %q, got %q\", tt.config, tt.err, err)\n\t\t}\n\t\tif !reflect.DeepEqual(tt.file, file) {\n\t\t\tt.Errorf(\"bad units (%q): want %#v, got %#v\", tt.config, tt.file, file)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/cloudinit/system/user.go",
    "content": "// Copyright 2015 CoreOS, Inc.\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 system\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os/exec\"\n\t\"os/user\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n)\n\nfunc UserExists(u *config.User) bool {\n\t_, err := user.Lookup(u.Name)\n\treturn err == nil\n}\n\nfunc CreateUser(u *config.User) error {\n\targs := []string{}\n\n\tif u.PasswordHash != \"\" {\n\t\targs = append(args, \"--password\", u.PasswordHash)\n\t} else {\n\t\targs = append(args, \"--password\", \"*\")\n\t}\n\n\tif u.GECOS != \"\" {\n\t\targs = append(args, \"--comment\", fmt.Sprintf(\"%q\", u.GECOS))\n\t}\n\n\tif u.Homedir != \"\" {\n\t\targs = append(args, \"--home-dir\", u.Homedir)\n\t}\n\n\tif u.NoCreateHome {\n\t\targs = append(args, \"--no-create-home\")\n\t} else {\n\t\targs = append(args, \"--create-home\")\n\t}\n\n\tif u.PrimaryGroup != \"\" {\n\t\targs = append(args, \"--gid\", u.PrimaryGroup)\n\t}\n\n\tif len(u.Groups) > 0 {\n\t\targs = append(args, \"--groups\", strings.Join(u.Groups, \",\"))\n\t}\n\n\tif u.NoUserGroup {\n\t\targs = append(args, \"--no-user-group\")\n\t}\n\n\tif u.System {\n\t\targs = append(args, \"--system\")\n\t}\n\n\tif u.NoLogInit {\n\t\targs = append(args, \"--no-log-init\")\n\t}\n\n\tif u.Shell != \"\" {\n\t\targs = append(args, \"--shell\", u.Shell)\n\t}\n\n\targs = append(args, u.Name)\n\n\toutput, err := exec.Command(\"useradd\", args...).CombinedOutput()\n\tif err != nil {\n\t\tlog.Printf(\"Command 'useradd %s' failed: %v\\n%s\", strings.Join(args, \" \"), err, output)\n\t}\n\treturn err\n}\n\nfunc SetUserPassword(user, hash string) error {\n\tcmd := exec.Command(\"/usr/sbin/chpasswd\", \"-e\")\n\n\tstdin, err := cmd.StdinPipe()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\targ := fmt.Sprintf(\"%s:%s\", user, hash)\n\t_, err = stdin.Write([]byte(arg))\n\tif err != nil {\n\t\treturn err\n\t}\n\tstdin.Close()\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "config/cloudinit/test",
    "content": "#!/bin/bash -e\n\nsource build\n\nSRC=$(find . -name '*.go' \\\n\t-not -path \"./vendor/*\")\n\nPKG=$(cd gopath/src/${REPO_PATH}; go list ./... | \\\n\tgrep --invert-match vendor)\n\necho \"Checking gofix...\"\ngo tool fix -diff $SRC\n\necho \"Checking gofmt...\"\nres=$(gofmt -d -e -s $SRC)\necho \"${res}\"\nif [ -n \"${res}\" ]; then\n\texit 1\nfi\n\necho \"Checking govet...\"\ngo vet $PKG\n\necho \"Running tests...\"\ngo test -timeout 60s -cover $@ ${PKG} --race\n\necho \"Success\"\n"
  },
  {
    "path": "config/cloudinit/units/90-configdrive.rules",
    "content": "# Automatically trigger configdrive mounting.\n\nACTION!=\"add|change\", GOTO=\"coreos_configdrive_end\"\n\n# A normal config drive. Block device formatted with iso9660 or fat\nSUBSYSTEM==\"block\", ENV{ID_FS_TYPE}==\"iso9660|udf|vfat\", ENV{ID_FS_LABEL}==\"config-2\", TAG+=\"systemd\", ENV{SYSTEMD_WANTS}+=\"media-configdrive.mount\"\n\n# Addtionally support virtfs from QEMU\nSUBSYSTEM==\"virtio\", DRIVER==\"9pnet_virtio\", ATTR{mount_tag}==\"config-2\", TAG+=\"systemd\", ENV{SYSTEMD_WANTS}+=\"media-configvirtfs.mount\"\n\nLABEL=\"coreos_configdrive_end\"\n"
  },
  {
    "path": "config/cloudinit/units/90-ovfenv.rules",
    "content": "# Automatically trigger ovfenv mounting.\n\nACTION!=\"add|change\", GOTO=\"coreos_ovfenv_end\"\n\n# A normal config drive. Block device formatted with iso9660 or fat\nSUBSYSTEM==\"block\", ENV{ID_FS_TYPE}==\"iso9660|vfat\", ENV{ID_FS_LABEL}==\"OVF_ENV\", TAG+=\"systemd\", ENV{SYSTEMD_WANTS}+=\"media-ovfenv.mount\"\n\nLABEL=\"coreos_ovfenv_end\"\n"
  },
  {
    "path": "config/cloudinit/units/media-configdrive.mount",
    "content": "[Unit]\nWants=user-configdrive.service\nBefore=user-configdrive.service\n# Only mount config drive block devices automatically in virtual machines\n# or any host that has it explicitly enabled and not explicitly disabled.\nConditionVirtualization=|vm\nConditionKernelCommandLine=|coreos.configdrive=1\nConditionKernelCommandLine=!coreos.configdrive=0\n\n[Mount]\nWhat=LABEL=config-2\nWhere=/media/configdrive\nOptions=ro\n"
  },
  {
    "path": "config/cloudinit/units/media-configvirtfs.mount",
    "content": "[Unit]\nWants=user-configvirtfs.service\nBefore=user-configvirtfs.service\n# Only mount config drive block devices automatically in virtual machines\n# or any host that has it explicitly enabled and not explicitly disabled.\nConditionVirtualization=|vm\nConditionKernelCommandLine=|coreos.configdrive=1\nConditionKernelCommandLine=!coreos.configdrive=0\n\n# Support old style setup for now\nWants=addon-run@media-configvirtfs.service addon-config@media-configvirtfs.service\nBefore=addon-run@media-configvirtfs.service addon-config@media-configvirtfs.service\n\n[Mount]\nWhat=config-2\nWhere=/media/configvirtfs\nOptions=ro,trans=virtio,version=9p2000.L\nType=9p\n"
  },
  {
    "path": "config/cloudinit/units/media-ovfenv.mount",
    "content": "[Unit]\nWants=user-config-ovfenv.service\nBefore=user-config-ovfenv.service\n# Only mount ovfenv drive block devices automatically in virtual machines\nConditionVirtualization=vmware\n\n[Mount]\nWhat=LABEL=\"OVF ENV\"\nWhere=/media/ovfenv\nOptions=ro\n"
  },
  {
    "path": "config/cloudinit/units/system-cloudinit@.service",
    "content": "[Unit]\nDescription=Load cloud-config from %f\nRequires=dbus.service\nAfter=dbus.service\nBefore=system-config.target\nConditionFileNotEmpty=%f\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nExecStart=/usr/bin/coreos-cloudinit --from-file=%f\n"
  },
  {
    "path": "config/cloudinit/units/system-config.target",
    "content": "[Unit]\nDescription=Load system-provided cloud configs\n\n# Generate /etc/environment\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service\n\n# Load OEM cloud-config.yml\nRequires=system-cloudinit@usr-share-oem-cloud\\x2dconfig.yml.service\nAfter=system-cloudinit@usr-share-oem-cloud\\x2dconfig.yml.service\n"
  },
  {
    "path": "config/cloudinit/units/user-cloudinit-proc-cmdline.service",
    "content": "[Unit]\nDescription=Load cloud-config from url defined in /proc/cmdline\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service\nAfter=system-config.target\nBefore=user-config.target\nConditionKernelCommandLine=cloud-config-url\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nEnvironmentFile=-/etc/environment\nExecStart=/usr/bin/coreos-cloudinit --from-proc-cmdline\n"
  },
  {
    "path": "config/cloudinit/units/user-cloudinit@.path",
    "content": "[Unit]\nDescription=Watch for a cloud-config at %f\n\n[Path]\nPathExists=%f\n"
  },
  {
    "path": "config/cloudinit/units/user-cloudinit@.service",
    "content": "[Unit]\nDescription=Load cloud-config from %f\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service\nAfter=system-config.target\nBefore=user-config.target\nConditionFileNotEmpty=%f\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nEnvironmentFile=-/etc/environment\nExecStart=/usr/bin/coreos-cloudinit --from-file=%f\n"
  },
  {
    "path": "config/cloudinit/units/user-config-ovfenv.service",
    "content": "[Unit]\nDescription=Load cloud-config from /media/ovfenv\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service system-config.target\nBefore=user-config.target\nAfter=user-config-vmw-tools.service\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nEnvironmentFile=-/etc/environment\nExecStart=/usr/bin/coreos-cloudinit --from-vmware-ovf-env=/media/ovfenv/ovf-env.xml\n"
  },
  {
    "path": "config/cloudinit/units/user-config.target",
    "content": "[Unit]\nDescription=Load user-provided cloud configs\nRequires=system-config.target\nAfter=system-config.target\n\n# Watch for configs at a couple common paths\nRequires=user-cloudinit@var-lib-coreos\\x2dinstall-user_data.path\nAfter=user-cloudinit@var-lib-coreos\\x2dinstall-user_data.path\n\nRequires=user-cloudinit-proc-cmdline.service\nAfter=user-cloudinit-proc-cmdline.service\n"
  },
  {
    "path": "config/cloudinit/units/user-configdrive.service",
    "content": "[Unit]\nDescription=Load cloud-config from /media/configdrive\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service system-config.target\nBefore=user-config.target\n\n# HACK: work around ordering between config drive and ec2 metadata It is\n# possible for OpenStack style systems to provide both the metadata service\n# and config drive, to prevent the two from stomping on each other, force\n# this to run after OEM and after metadata (if it exsts). I'm doing this\n# here instead of in the oem service because the oem unit is not written\n# to disk until the OEM cloud config is evaluated and I want to make sure\n# systemd knows about the ordering as early as possible.\n# coreos-cloudinit could implement a simple lock but that cannot be used\n# until after the systemd dbus calls are made non-blocking.\nAfter=oem-cloudinit.service\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nEnvironmentFile=-/etc/environment\nExecStart=/usr/bin/coreos-cloudinit --from-configdrive=/media/configdrive\n"
  },
  {
    "path": "config/cloudinit/units/user-configvirtfs.service",
    "content": "[Unit]\nDescription=Load cloud-config from /media/configvirtfs\nRequires=coreos-setup-environment.service\nAfter=coreos-setup-environment.service\nBefore=user-config.target\n\n[Service]\nType=oneshot\nTimeoutSec=10min\nRemainAfterExit=yes\nEnvironmentFile=-/etc/environment\nExecStart=/usr/bin/coreos-cloudinit --from-configdrive=/media/configvirtfs\n"
  },
  {
    "path": "config/cloudinit/vendor.manifest",
    "content": "# If you manipulate the contents of vendor/, amend this accordingly.\n# pkg                                      version\ngithub.com/cloudsigma/cepgo                1bfc4895bf5c4d3b599f3f6ee142299488c8739b\ngithub.com/coreos/go-systemd/dbus          4fbc5060a317b142e6c7bfbedb65596d5f0ab99b\ngithub.com/coreos/yaml                     6b16a5714269b2f70720a45406b1babd947a17ef\ngithub.com/dotcloud/docker/pkg/netlink     55d41c3e21e1593b944c06196ffb2ac57ab7f653\ngithub.com/guelfey/go.dbus                 f6a3a2366cc39b8479cadc499d3c735fb10fbdda\ngithub.com/tarm/goserial                   cdabc8d44e8e84f58f18074ae44337e1f2f375b9\ngithub.com/sigma/vmw-guestinfo             95dd4126d6e8b4ef1970b3f3fe2e8cdd470d2903\ngithub.com/sigma/vmw-ovflib                56b4f44581cac03d17d8270158bdfd0942ffe790\ngithub.com/sigma/bdoor                     babf2a4017b020d4ce04e8167076186e82645dd1\n"
  },
  {
    "path": "config/cmdline/cmdline.go",
    "content": "package cmdline\n\nimport (\n\t\"io/ioutil\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\nfunc Read(parseAll bool) (m map[interface{}]interface{}, err error) {\n\tcmdLine, err := ioutil.ReadFile(\"/proc/cmdline\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(cmdLine) == 0 {\n\t\treturn nil, nil\n\t}\n\n\tcmdLineObj := Parse(strings.TrimSpace(util.UnescapeKernelParams(string(cmdLine))), parseAll)\n\n\treturn cmdLineObj, nil\n}\n\nfunc GetCmdline(key string) interface{} {\n\tparseAll := true\n\tif strings.HasPrefix(key, \"cc.\") || strings.HasPrefix(key, \"rancher.\") {\n\t\t// the normal case\n\t\tparseAll = false\n\t}\n\tcmdline, _ := Read(parseAll)\n\tv, _ := GetOrSetVal(key, cmdline, nil)\n\treturn v\n}\n\nfunc GetOrSetVal(args string, data map[interface{}]interface{}, value interface{}) (interface{}, map[interface{}]interface{}) {\n\tparts := strings.Split(args, \".\")\n\n\ttData := data\n\tif value != nil {\n\t\ttData = util.MapCopy(data)\n\t}\n\tt := tData\n\tfor i, part := range parts {\n\t\tval, ok := t[part]\n\t\tlast := i+1 == len(parts)\n\n\t\t// Reached end, set the value\n\t\tif last && value != nil {\n\t\t\tif s, ok := value.(string); ok {\n\t\t\t\tvalue = UnmarshalOrReturnString(s)\n\t\t\t}\n\n\t\t\tt[part] = value\n\t\t\treturn value, tData\n\t\t}\n\n\t\t// Missing intermediate key, create key\n\t\tif !last && value != nil && !ok {\n\t\t\tnewData := map[interface{}]interface{}{}\n\t\t\tt[part] = newData\n\t\t\tt = newData\n\t\t\tcontinue\n\t\t}\n\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\tif last {\n\t\t\treturn val, tData\n\t\t}\n\n\t\tnewData, ok := val.(map[interface{}]interface{})\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\tt = newData\n\t}\n\n\treturn \"\", tData\n}\n\n// Replace newlines, colons, and question marks with random strings\n// This is done to avoid YAML treating these as special characters\nvar (\n\tnewlineMagicString      = \"9XsJcx6dR5EERYCC\"\n\tcolonMagicString        = \"V0Rc21pIVknMm2rr\"\n\tquestionMarkMagicString = \"FoPL6JLMAaJqKMJT\"\n)\n\nfunc reverseReplacement(result interface{}) interface{} {\n\tswitch val := result.(type) {\n\tcase map[interface{}]interface{}:\n\t\tfor k, v := range val {\n\t\t\tval[k] = reverseReplacement(v)\n\t\t}\n\t\treturn val\n\tcase []interface{}:\n\t\tfor i, item := range val {\n\t\t\tval[i] = reverseReplacement(item)\n\t\t}\n\t\treturn val\n\tcase string:\n\t\tval = strings.Replace(val, newlineMagicString, \"\\n\", -1)\n\t\tval = strings.Replace(val, colonMagicString, \":\", -1)\n\t\tval = strings.Replace(val, questionMarkMagicString, \"?\", -1)\n\t\treturn val\n\t}\n\n\treturn result\n}\n\nfunc UnmarshalOrReturnString(value string) (result interface{}) {\n\tvalue = strings.Replace(value, \"\\n\", newlineMagicString, -1)\n\tvalue = strings.Replace(value, \":\", colonMagicString, -1)\n\tvalue = strings.Replace(value, \"?\", questionMarkMagicString, -1)\n\tif err := yaml.Unmarshal([]byte(value), &result); err != nil {\n\t\tresult = value\n\t}\n\tresult = reverseReplacement(result)\n\treturn\n}\n\n// splitCmdLine splits on spaces except when a space is within a quoted or bracketed string.\nfunc splitCmdLine(cmdLine string) []string {\n\tlastRune := rune(0)\n\tf := func(c rune) bool {\n\t\tswitch {\n\t\tcase c == lastRune:\n\t\t\tlastRune = rune(0)\n\t\t\treturn false\n\t\tcase lastRune != rune(0):\n\t\t\treturn false\n\t\tcase unicode.In(c, unicode.Quotation_Mark):\n\t\t\tlastRune = c\n\t\t\treturn false\n\t\tcase c == '[':\n\t\t\tlastRune = ']'\n\t\t\treturn false\n\t\tdefault:\n\t\t\treturn c == ' '\n\t\t}\n\t}\n\treturn strings.FieldsFunc(cmdLine, f)\n}\n\nfunc Parse(cmdLine string, parseAll bool) map[interface{}]interface{} {\n\tresult := map[interface{}]interface{}{}\n\nouter:\n\tfor _, part := range splitCmdLine(cmdLine) {\n\t\tif strings.HasPrefix(part, \"cc.\") {\n\t\t\tpart = part[3:]\n\t\t} else if !strings.HasPrefix(part, \"rancher.\") {\n\t\t\tif !parseAll {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tvar value string\n\t\tkv := strings.SplitN(part, \"=\", 2)\n\n\t\tif len(kv) == 1 {\n\t\t\tvalue = \"true\"\n\t\t} else {\n\t\t\tvalue = kv[1]\n\t\t}\n\n\t\tcurrent := result\n\t\tkeys := strings.Split(kv[0], \".\")\n\t\tfor i, key := range keys {\n\t\t\tif i == len(keys)-1 {\n\t\t\t\tcurrent[key] = UnmarshalOrReturnString(value)\n\t\t\t} else {\n\t\t\t\tif obj, ok := current[key]; ok {\n\t\t\t\t\tif newCurrent, ok := obj.(map[interface{}]interface{}); ok {\n\t\t\t\t\t\tcurrent = newCurrent\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue outer\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnewCurrent := make(map[interface{}]interface{})\n\t\t\t\t\tcurrent[key] = newCurrent\n\t\t\t\t\tcurrent = newCurrent\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "config/config.go",
    "content": "package config\n\nimport (\n\t\"io/ioutil\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/util\"\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\nconst Banner = `\n    ____                       _ _ _        ____   _____\n   |  _ \\\\                     (_) | |      / __ \\\\ / ____|\n   | |_) |_   _ _ __ _ __ ___  _| | | __ _| |  | | (___\n   |  _ <| | | | '__| '_ ' _ \\\\| | | |/ _' | |  | |\\\\___ \\\\\n   | |_) | |_| | |  | | | | | | | | | (_| | |__| |____) |\n   |____/ \\\\__,_|_|  |_| |_| |_|_|_|_|\\\\__,_|\\\\____/|_____/\n\n         BurmillaOS \\v \\n \\l\n         `\n\nfunc Merge(bytes []byte) error {\n\tdata, err := readConfigs(bytes, false, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\texisting, err := readConfigs(nil, false, true, CloudConfigFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn WriteToFile(util.Merge(existing, data), CloudConfigFile)\n}\n\nfunc Export(private, full bool) (string, error) {\n\trawCfg := loadRawConfig(\"\", full)\n\trawCfg = filterAdditional(rawCfg)\n\tif !private {\n\t\trawCfg = filterPrivateKeys(rawCfg)\n\t}\n\n\tbytes, err := yaml.Marshal(rawCfg)\n\treturn string(bytes), err\n}\nfunc filterPrivateKeys(data map[interface{}]interface{}) map[interface{}]interface{} {\n\tfor _, privateKey := range PrivateKeys {\n\t\t_, data = filterKey(data, strings.Split(privateKey, \".\"))\n\t}\n\n\treturn data\n}\n\nfunc filterAdditional(data map[interface{}]interface{}) map[interface{}]interface{} {\n\tfor _, additional := range Additional {\n\t\t_, data = filterKey(data, strings.Split(additional, \".\"))\n\t}\n\n\treturn data\n}\n\nfunc Get(key string) (interface{}, error) {\n\tcfg := LoadConfig()\n\n\tdata := map[interface{}]interface{}{}\n\tif err := util.ConvertIgnoreOmitEmpty(cfg, &data); err != nil {\n\t\treturn nil, err\n\t}\n\n\tv, _ := cmdline.GetOrSetVal(key, data, nil)\n\treturn v, nil\n}\n\nfunc Set(key string, value interface{}) error {\n\texisting, err := readConfigs(nil, false, true, CloudConfigFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, modified := cmdline.GetOrSetVal(key, existing, value)\n\n\tc := &CloudConfig{}\n\tif err = util.Convert(modified, c); err != nil {\n\t\treturn err\n\t}\n\n\treturn WriteToFile(modified, CloudConfigFile)\n}\n\nfunc GetKernelVersion() string {\n\tb, err := ioutil.ReadFile(\"/proc/version\")\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\telem := strings.Split(string(b), \" \")\n\treturn elem[2]\n}\n"
  },
  {
    "path": "config/config_test.go",
    "content": "package config\n\nimport (\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestFilterKey(t *testing.T) {\n\tassert := require.New(t)\n\tdata := map[interface{}]interface{}{\n\t\t\"ssh_authorized_keys\": []string{\"pubk1\", \"pubk2\"},\n\t\t\"hostname\":            \"ros-test\",\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"ssh\": map[interface{}]interface{}{\n\t\t\t\t\"keys\": map[interface{}]interface{}{\n\t\t\t\t\t\"dsa\":     \"dsa-test1\",\n\t\t\t\t\t\"dsa-pub\": \"dsa-test2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"docker\": map[interface{}]interface{}{\n\t\t\t\t\"ca_key\":  \"ca_key-test3\",\n\t\t\t\t\"ca_cert\": \"ca_cert-test4\",\n\t\t\t\t\"args\":    []string{\"args_test5\"},\n\t\t\t},\n\t\t},\n\t}\n\texpectedFiltered := map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"ssh\": map[interface{}]interface{}{\n\t\t\t\t\"keys\": map[interface{}]interface{}{\n\t\t\t\t\t\"dsa\":     \"dsa-test1\",\n\t\t\t\t\t\"dsa-pub\": \"dsa-test2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\texpectedRest := map[interface{}]interface{}{\n\t\t\"ssh_authorized_keys\": []string{\"pubk1\", \"pubk2\"},\n\t\t\"hostname\":            \"ros-test\",\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"docker\": map[interface{}]interface{}{\n\t\t\t\t\"ca_key\":  \"ca_key-test3\",\n\t\t\t\t\"ca_cert\": \"ca_cert-test4\",\n\t\t\t\t\"args\":    []string{\"args_test5\"},\n\t\t\t},\n\t\t},\n\t}\n\tfiltered, rest := filterKey(data, []string{\"rancher\", \"ssh\"})\n\tassert.Equal(expectedFiltered, filtered)\n\tassert.Equal(expectedRest, rest)\n}\n\nfunc TestUnmarshalOrReturnString(t *testing.T) {\n\tassert := require.New(t)\n\n\tassert.Equal(\"ab\", cmdline.UnmarshalOrReturnString(\"ab\"))\n\tassert.Equal(\"a\\nb\", cmdline.UnmarshalOrReturnString(\"a\\nb\"))\n\tassert.Equal(\"a\\n\", cmdline.UnmarshalOrReturnString(\"a\\n\"))\n\tassert.Equal(\"\\nb\", cmdline.UnmarshalOrReturnString(\"\\nb\"))\n\tassert.Equal(\"a,b\", cmdline.UnmarshalOrReturnString(\"a,b\"))\n\tassert.Equal(\"a,\", cmdline.UnmarshalOrReturnString(\"a,\"))\n\tassert.Equal(\",b\", cmdline.UnmarshalOrReturnString(\",b\"))\n\n\tassert.Equal(int64(10), cmdline.UnmarshalOrReturnString(\"10\"))\n\tassert.Equal(true, cmdline.UnmarshalOrReturnString(\"true\"))\n\tassert.Equal(false, cmdline.UnmarshalOrReturnString(\"false\"))\n\n\tassert.Equal([]interface{}{\"a\"}, cmdline.UnmarshalOrReturnString(\"[a]\"))\n\tassert.Equal([]interface{}{\"a\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a\\\"]\"))\n\n\tassert.Equal([]interface{}{\"a,\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a,\\\"]\"))\n\tassert.Equal([]interface{}{\" a, \"}, cmdline.UnmarshalOrReturnString(\"[\\\" a, \\\"]\"))\n\tassert.Equal([]interface{}{\",a\"}, cmdline.UnmarshalOrReturnString(\"[\\\",a\\\"]\"))\n\tassert.Equal([]interface{}{\" ,a \"}, cmdline.UnmarshalOrReturnString(\"[\\\" ,a \\\"]\"))\n\n\tassert.Equal([]interface{}{\"a\\n\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a\\n\\\"]\"))\n\tassert.Equal([]interface{}{\" a\\n \"}, cmdline.UnmarshalOrReturnString(\"[\\\" a\\n \\\"]\"))\n\tassert.Equal([]interface{}{\"\\na\"}, cmdline.UnmarshalOrReturnString(\"[\\\"\\na\\\"]\"))\n\tassert.Equal([]interface{}{\" \\na \"}, cmdline.UnmarshalOrReturnString(\"[\\\" \\na \\\"]\"))\n\n\tassert.Equal([]interface{}{\"a\", \"b\"}, cmdline.UnmarshalOrReturnString(\"[a,b]\"))\n\tassert.Equal([]interface{}{\"a\", \"b\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a\\\",\\\"b\\\"]\"))\n\n\tassert.Equal([]interface{}{\"a,\", \"b\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a,\\\",b]\"))\n\tassert.Equal([]interface{}{\"a\", \",b\"}, cmdline.UnmarshalOrReturnString(\"[a,\\\",b\\\"]\"))\n\tassert.Equal([]interface{}{\" a, \", \" ,b \"}, cmdline.UnmarshalOrReturnString(\"[\\\" a, \\\",\\\" ,b \\\"]\"))\n\n\tassert.Equal([]interface{}{\"a\\n\", \"b\"}, cmdline.UnmarshalOrReturnString(\"[\\\"a\\n\\\",b]\"))\n\tassert.Equal([]interface{}{\"a\", \"\\nb\"}, cmdline.UnmarshalOrReturnString(\"[a,\\\"\\nb\\\"]\"))\n\tassert.Equal([]interface{}{\" a\\n \", \" \\nb \"}, cmdline.UnmarshalOrReturnString(\"[\\\" a\\n \\\",\\\" \\nb \\\"]\"))\n\n\tassert.Equal([]interface{}{\"a\", int64(10)}, cmdline.UnmarshalOrReturnString(\"[a,10]\"))\n\tassert.Equal([]interface{}{int64(10), \"a\"}, cmdline.UnmarshalOrReturnString(\"[10,a]\"))\n\n\tassert.Equal([]interface{}{\"a\", true}, cmdline.UnmarshalOrReturnString(\"[a,true]\"))\n\tassert.Equal([]interface{}{false, \"a\"}, cmdline.UnmarshalOrReturnString(\"[false,a]\"))\n}\n\nfunc TestCmdlineParse(t *testing.T) {\n\tassert := require.New(t)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key1\": \"value1\",\n\t\t\t\"key2\": \"value2\",\n\t\t},\n\t}, cmdline.Parse(\"a b rancher.key1=value1 c rancher.key2=value2\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key\": \"a,b\",\n\t\t},\n\t}, cmdline.Parse(\"rancher.key=a,b\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key\": \"a\\nb\",\n\t\t},\n\t}, cmdline.Parse(\"rancher.key=a\\nb\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key\": \"a b\",\n\t\t},\n\t}, cmdline.Parse(\"rancher.key='a b'\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key\": \"a:b\",\n\t\t},\n\t}, cmdline.Parse(\"rancher.key=a:b\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key\": int64(5),\n\t\t},\n\t}, cmdline.Parse(\"rancher.key=5\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"rescue\": true,\n\t\t},\n\t}, cmdline.Parse(\"rancher.rescue\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"keyArray\": []interface{}{int64(1), int64(2)},\n\t\t},\n\t}, cmdline.Parse(\"rancher.keyArray=[1,2]\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"strArray\": []interface{}{\"url:http://192.168.1.100/cloud-config?a=b\"},\n\t\t},\n\t}, cmdline.Parse(\"rancher.strArray=[\\\"url:http://192.168.1.100/cloud-config?a=b\\\"]\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"strArray\": []interface{}{\"url:http://192.168.1.100/cloud-config?a=b\"},\n\t\t},\n\t}, cmdline.Parse(\"rancher.strArray=[url:http://192.168.1.100/cloud-config?a=b]\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"strArray\": []interface{}{\"part1 part2\", \"part3\"},\n\t\t},\n\t}, cmdline.Parse(\"rancher.strArray=['part1 part2',part3]\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"strArray\": []interface{}{\"part1 part2\", \"part3\"},\n\t\t},\n\t}, cmdline.Parse(\"rancher.strArray=[\\\"part1 part2\\\",part3]\", false), false)\n\n\tassert.Equal(map[interface{}]interface{}{\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"strArray\": []interface{}{\"part1 part2\", \"part3\"},\n\t\t},\n\t}, cmdline.Parse(\"rancher.strArray=[ \\\"part1 part2\\\", part3 ]\", false), false)\n}\n\nfunc TestGet(t *testing.T) {\n\tassert := require.New(t)\n\n\tdata := map[interface{}]interface{}{\n\t\t\"key\": \"value\",\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key2\": map[interface{}]interface{}{\n\t\t\t\t\"subkey\": \"subvalue\",\n\t\t\t\t\"subnum\": 42,\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := map[string]interface{}{\n\t\t\"key\":                  \"value\",\n\t\t\"rancher.key2.subkey\":  \"subvalue\",\n\t\t\"rancher.key2.subnum\":  42,\n\t\t\"rancher.key2.subkey2\": \"\",\n\t\t\"foo\":                  \"\",\n\t}\n\n\tfor k, v := range tests {\n\t\tval, _ := cmdline.GetOrSetVal(k, data, nil)\n\t\tassert.Equal(v, val)\n\t}\n}\n\nfunc TestSet(t *testing.T) {\n\tassert := require.New(t)\n\n\tdata := map[interface{}]interface{}{\n\t\t\"key\": \"value\",\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key2\": map[interface{}]interface{}{\n\t\t\t\t\"subkey\": \"subvalue\",\n\t\t\t\t\"subnum\": 42,\n\t\t\t},\n\t\t},\n\t}\n\n\texpected := map[interface{}]interface{}{\n\t\t\"key\": \"value2\",\n\t\t\"rancher\": map[interface{}]interface{}{\n\t\t\t\"key2\": map[interface{}]interface{}{\n\t\t\t\t\"subkey\":  \"subvalue2\",\n\t\t\t\t\"subkey2\": \"value\",\n\t\t\t\t\"subkey3\": 43,\n\t\t\t\t\"subnum\":  42,\n\t\t\t},\n\t\t\t\"key3\": map[interface{}]interface{}{\n\t\t\t\t\"subkey3\": 44,\n\t\t\t},\n\t\t},\n\t\t\"key4\": \"value4\",\n\t}\n\n\ttests := map[string]interface{}{\n\t\t\"key\":                  \"value2\",\n\t\t\"rancher.key2.subkey\":  \"subvalue2\",\n\t\t\"rancher.key2.subkey2\": \"value\",\n\t\t\"rancher.key2.subkey3\": 43,\n\t\t\"rancher.key3.subkey3\": 44,\n\t\t\"key4\":                 \"value4\",\n\t}\n\n\tfor k, v := range tests {\n\t\t_, tData := cmdline.GetOrSetVal(k, data, v)\n\t\tval, _ := cmdline.GetOrSetVal(k, tData, nil)\n\t\tdata = tData\n\t\tassert.Equal(v, val)\n\t}\n\n\tassert.Equal(expected, data)\n}\n\ntype OuterData struct {\n\tOne Data `yaml:\"one\"`\n}\n\ntype Data struct {\n\tTwo   bool `yaml:\"two\"`\n\tThree bool `yaml:\"three\"`\n}\n\nfunc TestMapMerge(t *testing.T) {\n\tassert := require.New(t)\n\tone := `\none:\n  two: true`\n\ttwo := `\none:\n  three: true`\n\n\tdata := map[string]map[string]bool{}\n\tyaml.Unmarshal([]byte(one), &data)\n\tyaml.Unmarshal([]byte(two), &data)\n\n\tassert.NotNil(data[\"one\"])\n\tassert.True(data[\"one\"][\"three\"])\n\tassert.False(data[\"one\"][\"two\"])\n\n\tdata2 := &OuterData{}\n\tyaml.Unmarshal([]byte(one), data2)\n\tyaml.Unmarshal([]byte(two), data2)\n\n\tassert.True(data2.One.Three)\n\tassert.True(data2.One.Two)\n}\n\nfunc TestUserDocker(t *testing.T) {\n\tassert := require.New(t)\n\n\tconfig := &CloudConfig{\n\t\tRancher: RancherConfig{\n\t\t\tDocker: DockerConfig{\n\t\t\t\tTLS: true,\n\t\t\t},\n\t\t},\n\t}\n\n\tbytes, err := yaml.Marshal(config)\n\tassert.Nil(err)\n\n\tconfig = &CloudConfig{}\n\tassert.False(config.Rancher.Docker.TLS)\n\terr = yaml.Unmarshal(bytes, config)\n\tassert.Nil(err)\n\tassert.True(config.Rancher.Docker.TLS)\n\n\tdata := map[interface{}]interface{}{}\n\terr = util.Convert(config, &data)\n\tassert.Nil(err)\n\n\tval, ok := data[\"rancher\"].(map[interface{}]interface{})[\"docker\"]\n\tassert.True(ok)\n\n\tm, ok := val.(map[interface{}]interface{})\n\tassert.True(ok)\n\tv, ok := m[\"tls\"]\n\tassert.True(ok)\n\tassert.True(v.(bool))\n\n}\n"
  },
  {
    "path": "config/data_funcs.go",
    "content": "package config\n\nimport (\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\ntype CfgFunc func(*CloudConfig) (*CloudConfig, error)\ntype CfgFuncData struct {\n\tName string\n\tFunc CfgFunc\n}\n\ntype CfgFuncs []CfgFuncData\n\nfunc ChainCfgFuncs(cfg *CloudConfig, cfgFuncs CfgFuncs) (*CloudConfig, error) {\n\tlen := len(cfgFuncs)\n\tfor c, d := range cfgFuncs {\n\t\ti := c + 1\n\t\tname := d.Name\n\t\tcfgFunc := d.Func\n\t\tif cfg == nil {\n\t\t\tlog.Infof(\"[%d/%d] Starting %s WITH NIL cfg\", i, len, name)\n\t\t} else {\n\t\t\tlog.Infof(\"[%d/%d] Starting %s\", i, len, name)\n\t\t}\n\t\tvar err error\n\t\tif cfg, err = cfgFunc(cfg); err != nil {\n\t\t\tlog.Errorf(\"Failed [%d/%d] %s: %v\", i, len, name, err)\n\t\t\treturn cfg, err\n\t\t}\n\t\tlog.Debugf(\"[%d/%d] Done %s\", i, len, name)\n\t}\n\treturn cfg, nil\n}\n\nfunc filterKey(data map[interface{}]interface{}, key []string) (filtered, rest map[interface{}]interface{}) {\n\tif len(key) == 0 {\n\t\treturn data, map[interface{}]interface{}{}\n\t}\n\n\tfiltered = map[interface{}]interface{}{}\n\trest = util.MapCopy(data)\n\n\tk := key[0]\n\tif d, ok := data[k]; ok {\n\t\tswitch d := d.(type) {\n\n\t\tcase map[interface{}]interface{}:\n\t\t\tf, r := filterKey(d, key[1:])\n\n\t\t\tif len(f) != 0 {\n\t\t\t\tfiltered[k] = f\n\t\t\t}\n\n\t\t\tif len(r) != 0 {\n\t\t\t\trest[k] = r\n\t\t\t} else {\n\t\t\t\tdelete(rest, k)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tfiltered[k] = d\n\t\t\tdelete(rest, k)\n\t\t}\n\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "config/disk.go",
    "content": "package config\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n\t\"github.com/burmilla/os/config/cloudinit/initialize\"\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/docker/engine-api/types\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/xeipuuv/gojsonschema\"\n)\n\nfunc ReadConfig(bytes []byte, substituteMetadataVars bool, files ...string) (*CloudConfig, error) {\n\tdata, err := readConfigs(bytes, substituteMetadataVars, true, files...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc := &CloudConfig{}\n\tif err := util.Convert(data, c); err != nil {\n\t\treturn nil, err\n\t}\n\tc = amendNils(c)\n\tc = amendContainerNames(c)\n\treturn c, nil\n}\n\nfunc loadRawDiskConfig(dirPrefix string, full bool) map[interface{}]interface{} {\n\tvar rawCfg map[interface{}]interface{}\n\tif full {\n\t\trawCfg, _ = readConfigs(nil, true, false, OsConfigFile, OemConfigFile)\n\t}\n\n\tfiles := CloudConfigDirFiles(dirPrefix)\n\tfiles = append(files, path.Join(dirPrefix, CloudConfigFile))\n\tadditionalCfgs, _ := readConfigs(nil, true, false, files...)\n\n\treturn util.Merge(rawCfg, additionalCfgs)\n}\n\nfunc loadRawDiskConfigWithError(dirPrefix string, full bool) (map[interface{}]interface{}, error) {\n\tvar rawCfg map[interface{}]interface{}\n\trawCfg, err := readConfigs(nil, true, true, OsConfigFile, OemConfigFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfiles := CloudConfigDirFiles(dirPrefix)\n\tfiles = append(files, path.Join(dirPrefix, CloudConfigFile))\n\tadditionalCfgs, err := readConfigs(nil, true, true, files...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn util.Merge(rawCfg, additionalCfgs), nil\n}\n\nfunc loadRawConfig(dirPrefix string, full bool) map[interface{}]interface{} {\n\trawCfg := loadRawDiskConfig(dirPrefix, full)\n\tprocCmdline, err := cmdline.Read(false)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Error(\"Failed to read kernel params\")\n\t}\n\trawCfg = util.Merge(rawCfg, procCmdline)\n\trawCfg = util.Merge(rawCfg, readElidedCmdline(rawCfg))\n\trawCfg = applyDebugFlags(rawCfg)\n\treturn mergeMetadata(rawCfg, readMetadata())\n}\n\nfunc loadRawConfigWithError(dirPrefix string, full bool) (map[interface{}]interface{}, error) {\n\trawCfg, err := loadRawDiskConfigWithError(dirPrefix, full)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tprocCmdline, err := cmdline.Read(false)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Error(\"Failed to read kernel params\")\n\t}\n\trawCfg = util.Merge(rawCfg, procCmdline)\n\trawCfg = util.Merge(rawCfg, readElidedCmdline(rawCfg))\n\trawCfg = applyDebugFlags(rawCfg)\n\treturn mergeMetadata(rawCfg, readMetadata()), nil\n}\n\nfunc LoadConfig() *CloudConfig {\n\tcfg := LoadConfigWithPrefix(\"\")\n\n\tif cfg.Rancher.Debug {\n\t\tlog.SetDefaultLevel(log.DebugLevel)\n\t} else {\n\t\tlog.SetDefaultLevel(log.InfoLevel)\n\t}\n\n\treturn cfg\n}\n\nfunc LoadConfigWithError() (*CloudConfig, *gojsonschema.Result, error) {\n\trawCfg, err := loadRawConfigWithError(\"\", true)\n\tif err != nil {\n\t\treturn &CloudConfig{}, nil, err\n\t}\n\tcfg := &CloudConfig{}\n\tif err := util.Convert(rawCfg, cfg); err != nil {\n\t\tvalidationErrors, err := ValidateRawCfg(rawCfg)\n\t\treturn &CloudConfig{}, validationErrors, err\n\t}\n\tcfg = amendNils(cfg)\n\tcfg = amendContainerNames(cfg)\n\treturn cfg, nil, nil\n}\n\nfunc LoadConfigWithPrefix(dirPrefix string) *CloudConfig {\n\trawCfg := loadRawConfig(dirPrefix, true)\n\n\tcfg := &CloudConfig{}\n\tif err := util.Convert(rawCfg, cfg); err != nil {\n\t\tlog.Errorf(\"EXITING: Failed to parse configuration: %s\", err)\n\t\tlog.Debugf(\"Bad cfg:\\n%v\\n\", rawCfg)\n\t\t// no point returning {}, it'll just sit there broken\n\t\t// TODO: print some context around what failed..\n\t\tvalidationErrors, err := ValidateRawCfg(rawCfg)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tfor _, validationError := range validationErrors.Errors() {\n\t\t\tlog.Error(validationError)\n\t\t}\n\t\t// TODO: I'd love to panic & recover(), for issues on boot, but it doesn't work yet\n\t\tos.Exit(-1)\n\t\treturn &CloudConfig{}\n\t}\n\tcfg = amendNils(cfg)\n\tcfg = amendContainerNames(cfg)\n\treturn cfg\n}\n\nfunc Insert(m interface{}, args ...interface{}) interface{} {\n\t// TODO: move to util.go\n\tif len(args)%2 != 0 {\n\t\tpanic(\"must have pairs of keys and values\")\n\t}\n\tmv := reflect.ValueOf(m)\n\tif mv.IsNil() {\n\t\tmv = reflect.MakeMap(mv.Type())\n\t}\n\tfor i := 0; i < len(args); i += 2 {\n\t\tmv.SetMapIndex(reflect.ValueOf(args[i]), reflect.ValueOf(args[i+1]))\n\t}\n\treturn mv.Interface()\n}\n\nfunc SaveInitCmdline(cmdLineArgs string) {\n\telidedCfg := cmdline.Parse(cmdLineArgs, false)\n\n\tenv := Insert(make(map[interface{}]interface{}), interface{}(\"EXTRA_CMDLINE\"), interface{}(cmdLineArgs))\n\trancher := Insert(make(map[interface{}]interface{}), interface{}(\"environment\"), env)\n\tnewCfg := Insert(elidedCfg, interface{}(\"rancher\"), rancher)\n\t// make it easy for readElidedCmdline(rawCfg)\n\tnewCfg = Insert(newCfg, interface{}(\"EXTRA_CMDLINE\"), interface{}(cmdLineArgs))\n\n\tif err := WriteToFile(newCfg, CloudConfigInitFile); err != nil {\n\t\tlog.Errorf(\"Failed to write init-cmdline config: %s\", err)\n\t}\n}\n\nfunc CloudConfigDirFiles(dirPrefix string) []string {\n\tcloudConfigDir := path.Join(dirPrefix, CloudConfigDir)\n\n\tfiles, err := ioutil.ReadDir(cloudConfigDir)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\t// do nothing\n\t\t\tlog.Debugf(\"%s does not exist\", CloudConfigDir)\n\t\t} else {\n\t\t\tlog.Errorf(\"Failed to read %s: %v\", CloudConfigDir, err)\n\t\t}\n\t\treturn []string{}\n\t}\n\n\tvar finalFiles []string\n\tfor _, file := range files {\n\t\tif !file.IsDir() && !strings.HasPrefix(file.Name(), \".\") {\n\t\t\tfinalFiles = append(finalFiles, path.Join(cloudConfigDir, file.Name()))\n\t\t}\n\t}\n\n\treturn finalFiles\n}\n\nfunc applyDebugFlags(rawCfg map[interface{}]interface{}) map[interface{}]interface{} {\n\tcfg := &CloudConfig{}\n\tif err := util.Convert(rawCfg, cfg); err != nil {\n\t\treturn rawCfg\n\t}\n\n\tif !cfg.Rancher.Debug {\n\t\treturn rawCfg\n\t}\n\n\tlog.SetLevel(log.DebugLevel)\n\t_, rawCfg = cmdline.GetOrSetVal(\"rancher.docker.debug\", rawCfg, true)\n\t_, rawCfg = cmdline.GetOrSetVal(\"rancher.system_docker.debug\", rawCfg, true)\n\t_, rawCfg = cmdline.GetOrSetVal(\"rancher.bootstrap_docker.debug\", rawCfg, true)\n\t_, rawCfg = cmdline.GetOrSetVal(\"rancher.log\", rawCfg, true)\n\n\treturn rawCfg\n}\n\n// mergeMetadata merges certain options from md (meta-data from the datasource)\n// onto cc (a CloudConfig derived from user-data), if they are not already set\n// on cc (i.e. user-data always takes precedence)\nfunc mergeMetadata(rawCfg map[interface{}]interface{}, md datasource.Metadata) map[interface{}]interface{} {\n\tif rawCfg == nil {\n\t\treturn nil\n\t}\n\tout := util.MapCopy(rawCfg)\n\n\toutHostname, ok := out[\"hostname\"]\n\tif !ok {\n\t\toutHostname = \"\"\n\t}\n\n\tif md.Hostname != \"\" {\n\t\tif outHostname != \"\" {\n\t\t\tlog.Debugf(\"Warning: user-data hostname (%s) overrides metadata hostname (%s)\\n\", outHostname, md.Hostname)\n\t\t} else {\n\t\t\tout[\"hostname\"] = md.Hostname\n\t\t}\n\t}\n\n\t// Sort SSH keys by key name\n\tkeys := []string{}\n\tfor k := range md.SSHPublicKeys {\n\t\tkeys = append(keys, k)\n\t}\n\n\tsort.Sort(sort.StringSlice(keys))\n\n\tfinalKeys, _ := out[\"ssh_authorized_keys\"].([]interface{})\n\tfor _, k := range keys {\n\t\tfinalKeys = append(finalKeys, md.SSHPublicKeys[k])\n\t}\n\n\tout[\"ssh_authorized_keys\"] = finalKeys\n\n\trancherOut, _ := out[\"rancher\"].(map[interface{}]interface{})\n\tif _, ok := rancherOut[\"resize_device\"]; md.RootDisk != \"\" && !ok {\n\t\trancherOut[\"resize_device\"] = md.RootDisk\n\t}\n\n\treturn out\n}\n\nfunc readMetadata() datasource.Metadata {\n\tmetadata := datasource.Metadata{}\n\tif metaDataBytes, err := ioutil.ReadFile(MetaDataFile); err == nil {\n\t\tyaml.Unmarshal(metaDataBytes, &metadata)\n\t}\n\treturn metadata\n}\n\nfunc readElidedCmdline(rawCfg map[interface{}]interface{}) map[interface{}]interface{} {\n\n\tfor k, v := range rawCfg {\n\t\tif key, _ := k.(string); key == \"EXTRA_CMDLINE\" {\n\t\t\tif val, ok := v.(string); ok {\n\t\t\t\tcmdLineObj := cmdline.Parse(strings.TrimSpace(util.UnescapeKernelParams(string(val))), false)\n\n\t\t\t\treturn cmdLineObj\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc amendNils(c *CloudConfig) *CloudConfig {\n\tt := *c\n\tif t.Rancher.Environment == nil {\n\t\tt.Rancher.Environment = map[string]string{}\n\t}\n\tif t.Rancher.BootstrapContainers == nil {\n\t\tt.Rancher.BootstrapContainers = map[string]*composeConfig.ServiceConfigV1{}\n\t}\n\tif t.Rancher.Services == nil {\n\t\tt.Rancher.Services = map[string]*composeConfig.ServiceConfigV1{}\n\t}\n\tif t.Rancher.ServicesInclude == nil {\n\t\tt.Rancher.ServicesInclude = map[string]bool{}\n\t}\n\tif t.Rancher.RegistryAuths == nil {\n\t\tt.Rancher.RegistryAuths = map[string]types.AuthConfig{}\n\t}\n\tif t.Rancher.Sysctl == nil {\n\t\tt.Rancher.Sysctl = map[string]string{}\n\t}\n\treturn &t\n}\n\nfunc amendContainerNames(c *CloudConfig) *CloudConfig {\n\tfor _, scm := range []map[string]*composeConfig.ServiceConfigV1{\n\t\tc.Rancher.BootstrapContainers,\n\t\tc.Rancher.Services,\n\t} {\n\t\tfor k, v := range scm {\n\t\t\tv.ContainerName = k\n\t\t}\n\t}\n\treturn c\n}\n\nfunc WriteToFile(data interface{}, filename string) error {\n\tcontent, err := yaml.Marshal(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := os.MkdirAll(filepath.Dir(filename), os.ModeDir|0700); err != nil {\n\t\treturn err\n\t}\n\n\treturn util.WriteFileAtomic(filename, content, 400)\n}\n\nfunc readConfigs(bytes []byte, substituteMetadataVars, returnErr bool, files ...string) (map[interface{}]interface{}, error) {\n\t// You can't just overlay yaml bytes on to maps, it won't merge, but instead\n\t// just override the keys and not merge the map values.\n\tleft := make(map[interface{}]interface{})\n\tmetadata := readMetadata()\n\tfor _, file := range files {\n\t\t//os.Stderr.WriteString(fmt.Sprintf(\"READCONFIGS(%s)\", file))\n\t\tcontent, err := readConfigFile(file)\n\t\tif err != nil {\n\t\t\tif returnErr {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tlog.Errorf(\"Failed to read config file %s: %s\", file, err)\n\t\t\tcontinue\n\t\t}\n\t\tif len(content) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif substituteMetadataVars {\n\t\t\tcontent = substituteVars(content, metadata)\n\t\t}\n\n\t\tright := make(map[interface{}]interface{})\n\t\terr = yaml.Unmarshal(content, &right)\n\t\tif err != nil {\n\t\t\tif returnErr {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tlog.Errorf(\"Failed to parse config file %s: %s\", file, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Verify there are no issues converting to CloudConfig\n\t\tc := &CloudConfig{}\n\t\tif err := util.Convert(right, c); err != nil {\n\t\t\tif returnErr {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tlog.Errorf(\"Failed to parse config file %s: %s\", file, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tleft = util.Merge(left, right)\n\t}\n\n\tif bytes == nil || len(bytes) == 0 {\n\t\treturn left, nil\n\t}\n\n\tright := make(map[interface{}]interface{})\n\tif substituteMetadataVars {\n\t\tbytes = substituteVars(bytes, metadata)\n\t}\n\n\tif err := yaml.Unmarshal(bytes, &right); err != nil {\n\t\tif returnErr {\n\t\t\treturn nil, err\n\t\t}\n\t\tlog.Errorf(\"Failed to parse bytes: %s\", err)\n\t\treturn left, nil\n\t}\n\n\tc := &CloudConfig{}\n\tif err := util.Convert(right, c); err != nil {\n\t\tif returnErr {\n\t\t\treturn nil, err\n\t\t}\n\t\tlog.Errorf(\"Failed to parse bytes: %s\", err)\n\t\treturn left, nil\n\t}\n\n\tleft = util.Merge(left, right)\n\treturn left, nil\n}\n\nfunc readConfigFile(file string) ([]byte, error) {\n\tcontent, err := ioutil.ReadFile(file)\n\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\terr = nil\n\t\t\tcontent = []byte{}\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn content, err\n}\n\nfunc substituteVars(userDataBytes []byte, metadata datasource.Metadata) []byte {\n\t// TODO: I think this currently does nothing - its hardcoded for COREOS env..\n\tenv := initialize.NewEnvironment(\"\", \"\", \"\", \"\", metadata)\n\tuserData := env.Apply(string(userDataBytes))\n\n\treturn []byte(userData)\n}\n"
  },
  {
    "path": "config/docker_config.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/fatih/structs\"\n)\n\nfunc (d *DockerConfig) FullArgs() []string {\n\targs := []string{}\n\targs = append(args, generateEngineOptsSlice(d.EngineOpts)...)\n\targs = append(args, d.ExtraArgs...)\n\n\tif d.TLS {\n\t\targs = append(args, d.TLSArgs...)\n\t}\n\n\tif d.UserNsEnabled {\n\t\targs = append(args, \"--userns-remap\")\n\t\targs = append(args, \"user-docker:user-docker\")\n\t}\n\treturn args\n}\n\nfunc (d *DockerConfig) AppendEnv() []string {\n\treturn append(os.Environ(), d.Environment...)\n}\n\nfunc generateEngineOptsSlice(opts EngineOpts) []string {\n\toptsStruct := structs.New(opts)\n\n\tvar optsSlice []string\n\tfor k, v := range optsStruct.Map() {\n\t\toptTag := optsStruct.Field(k).Tag(\"opt\")\n\n\t\tswitch value := v.(type) {\n\t\tcase string:\n\t\t\tif value != \"\" {\n\t\t\t\toptsSlice = append(optsSlice, fmt.Sprintf(\"--%s\", optTag), value)\n\t\t\t}\n\t\tcase *bool:\n\t\t\tif value != nil {\n\t\t\t\tif *value {\n\t\t\t\t\toptsSlice = append(optsSlice, fmt.Sprintf(\"--%s\", optTag))\n\t\t\t\t} else {\n\t\t\t\t\toptsSlice = append(optsSlice, fmt.Sprintf(\"--%s=false\", optTag))\n\t\t\t\t}\n\t\t\t}\n\t\tcase []string:\n\t\t\tfor _, elem := range value {\n\t\t\t\tif elem != \"\" {\n\t\t\t\t\toptsSlice = append(optsSlice, fmt.Sprintf(\"--%s\", optTag), elem)\n\t\t\t\t}\n\t\t\t}\n\t\tcase map[string]string:\n\t\t\tfor k, v := range value {\n\t\t\t\tif v != \"\" {\n\t\t\t\t\toptsSlice = append(optsSlice, fmt.Sprintf(\"--%s\", optTag), fmt.Sprintf(\"%s=%s\", k, v))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn optsSlice\n}\n"
  },
  {
    "path": "config/docker_config_test.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc testContains(t *testing.T, s string, substrs ...string) {\n\tfor _, substr := range substrs {\n\t\tif !strings.Contains(s, substr) {\n\t\t\tt.Fail()\n\t\t}\n\t}\n}\n\nfunc TestGenerateEngineOptsString(t *testing.T) {\n\tif len(generateEngineOptsSlice(EngineOpts{})) != 0 {\n\t\tt.Fail()\n\t}\n\tif len(generateEngineOptsSlice(EngineOpts{\n\t\tHost: []string{\n\t\t\t\"\",\n\t\t},\n\t})) != 0 {\n\t\tt.Fail()\n\t}\n\tif len(generateEngineOptsSlice(EngineOpts{\n\t\tLogOpts: map[string]string{\n\t\t\t\"max-file\": \"\",\n\t\t},\n\t})) != 0 {\n\t\tt.Fail()\n\t}\n\n\ttestContains(t, fmt.Sprint(generateEngineOptsSlice(EngineOpts{\n\t\tBridge: \"bridge\",\n\t})), \"--bridge bridge\")\n\n\ttestContains(t, fmt.Sprint(generateEngineOptsSlice(EngineOpts{\n\t\tHost: []string{\n\t\t\t\"unix:///var/run/system-docker.sock\",\n\t\t\t\"unix:///var/run/docker.sock\",\n\t\t},\n\t})), \"--host unix:///var/run/system-docker.sock\", \"--host unix:///var/run/docker.sock\")\n\n\ttestContains(t, fmt.Sprint(generateEngineOptsSlice(EngineOpts{\n\t\tLogOpts: map[string]string{\n\t\t\t\"max-size\": \"25m\",\n\t\t\t\"max-file\": \"2\",\n\t\t},\n\t})), \"--log-opt max-size=25m\", \"--log-opt max-file=2\")\n\n\ttestContains(t, fmt.Sprint(generateEngineOptsSlice(EngineOpts{\n\t\tBridge: \"bridge\",\n\t\tLogOpts: map[string]string{\n\t\t\t\"max-size\": \"25m\",\n\t\t\t\"max-file\": \"2\",\n\t\t},\n\t})), \"--bridge bridge\", \"--log-opt max-size=25m\", \"--log-opt max-file=2\")\n}\n"
  },
  {
    "path": "config/metadata_test.go",
    "content": "// Copyright 2015 CoreOS, Inc.\n// Copyright 2015-2017 Rancher Labs, Inc.\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 config\n\nimport (\n\t\"net\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/config/cloudinit/datasource\"\n)\n\nfunc TestSubstituteUserDataVars(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tmetadata datasource.Metadata\n\t\tinput    string\n\t\tout      string\n\t}{\n\t\t{\n\t\t\t// Userdata with docker-compose syntax\n\t\t\tdatasource.Metadata{\n\t\t\t\tPublicIPv4:  net.ParseIP(\"192.0.2.3\"),\n\t\t\t\tPrivateIPv4: net.ParseIP(\"192.0.2.203\"),\n\t\t\t\tPublicIPv6:  net.ParseIP(\"fe00:1234::\"),\n\t\t\t\tPrivateIPv6: net.ParseIP(\"fe00:5678::\"),\n\t\t\t},\n\t\t\t`servicexyz:\n\t\t\t  image: rancher/servicexyz:v0.3.1\n\t\t\t  ports:\n\t\t\t  - \"$public_ipv4:8001:8001\"\n\t\t\t  - \"$public_ipv6:8001:8001\"\n\t\t\t  - \"$private_ipv4:8001:8001\"\n\t\t\t  - \"$private_ipv6:8001:8001\"`,\n\t\t\t`servicexyz:\n\t\t\t  image: rancher/servicexyz:v0.3.1\n\t\t\t  ports:\n\t\t\t  - \"192.0.2.3:8001:8001\"\n\t\t\t  - \"fe00:1234:::8001:8001\"\n\t\t\t  - \"192.0.2.203:8001:8001\"\n\t\t\t  - \"fe00:5678:::8001:8001\"`,\n\t\t},\n\t\t{\n\t\t\t// Userdata with cloud-config/rancher syntax\n\t\t\tdatasource.Metadata{\n\t\t\t\tPublicIPv4:  net.ParseIP(\"192.0.2.3\"),\n\t\t\t\tPrivateIPv4: net.ParseIP(\"192.0.2.203\"),\n\t\t\t\tPublicIPv6:  net.ParseIP(\"fe00:1234::\"),\n\t\t\t\tPrivateIPv6: net.ParseIP(\"fe00:5678::\"),\n\t\t\t},\n\t\t\t`write_files:\n\t\t\t    - path: /etc/environment\n\t\t\t      content: |\n\t\t\t        PRIVATE_IPV6=$private_ipv6\n\t\t\t        PUBLIC_IPV6=$public_ipv6\n\t\t\trancher:\n\t\t\t  network:\n\t\t\t    interfaces:\n\t\t\t      eth1:\n\t\t\t        address: $private_ipv4/16\n\t\t\t  docker:\n\t\t\t  \ttls_args: ['-H=$public_ipv4:2376']`,\n\t\t\t`write_files:\n\t\t\t    - path: /etc/environment\n\t\t\t      content: |\n\t\t\t        PRIVATE_IPV6=fe00:5678::\n\t\t\t        PUBLIC_IPV6=fe00:1234::\n\t\t\trancher:\n\t\t\t  network:\n\t\t\t    interfaces:\n\t\t\t      eth1:\n\t\t\t        address: 192.0.2.203/16\n\t\t\t  docker:\n\t\t\t  \ttls_args: ['-H=192.0.2.3:2376']`,\n\t\t},\n\t\t{\n\t\t\t// no metadata\n\t\t\tdatasource.Metadata{},\n\t\t\t\"address: $private_ipv4\",\n\t\t\t\"address: \",\n\t\t},\n\t} {\n\n\t\tgot := substituteVars([]byte(tt.input), tt.metadata)\n\t\tif string(got) != tt.out {\n\t\t\tt.Fatalf(\"Userdata substitution incorrectly applied.\\ngot:\\n%s\\nwant:\\n%s\", got, tt.out)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "config/schema.go",
    "content": "package config\n\nvar schema = `{\n\t\"type\": \"object\",\n\t\"additionalProperties\": false,\n\n\t\"properties\": {\n\t\t\"ssh_authorized_keys\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\"write_files\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\"$ref\": \"#/definitions/file_config\"}\n\t\t},\n\t\t\"hostname\": {\"type\": \"string\"},\n\t\t\"mounts\": {\"type\": \"array\"},\n\t\t\"rancher\": {\"$ref\": \"#/definitions/rancher_config\"},\n\t\t\"runcmd\": {\"type\": \"array\"},\n\t\t\"bootcmd\": {\"type\": \"array\"}\n\t},\n\n\t\"definitions\": {\n\t\t\"rancher_config\": {\n\t\t\t\"id\": \"#/definitions/rancher_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"console\": {\"type\": \"string\"},\n\t\t\t\t\"environment\": {\"type\": \"object\"},\n\t\t\t\t\"cloud_init_services\": {\"type\": \"object\"},\n\t\t\t\t\"services\": {\"type\": \"object\"},\n\t\t\t\t\"bootstrap\": {\"type\": \"object\"},\n\t\t\t\t\"autoformat\": {\"type\": \"object\"},\n\t\t\t\t\"bootstrap_docker\": {\"$ref\": \"#/definitions/docker_config\"},\n\t\t\t\t\"cloud_init\": {\"$ref\": \"#/definitions/cloud_init_config\"},\n\t\t\t\t\"debug\": {\"type\": \"boolean\"},\n\t\t\t\t\"rm_usr\": {\"type\": \"boolean\"},\n\t\t\t\t\"no_sharedroot\": {\"type\": \"boolean\"},\n\t\t\t\t\"log\": {\"type\": \"boolean\"},\n\t\t\t\t\"force_console_rebuild\": {\"type\": \"boolean\"},\n\t\t\t\t\"recovery\": {\"type\": \"boolean\"},\n\t\t\t\t\"disable\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"services_include\": {\"type\": \"object\"},\n\t\t\t\t\"modules\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"network\": {\"$ref\": \"#/definitions/network_config\"},\n\t\t\t\t\"repositories\": {\"type\": \"object\"},\n\t\t\t\t\"ssh\": {\"$ref\": \"#/definitions/ssh_config\"},\n\t\t\t\t\"state\": {\"$ref\": \"#/definitions/state_config\"},\n\t\t\t\t\"system_docker\": {\"$ref\": \"#/definitions/docker_config\"},\n\t\t\t\t\"upgrade\": {\"$ref\": \"#/definitions/upgrade_config\"},\n\t\t\t\t\"docker\": {\"$ref\": \"#/definitions/docker_config\"},\n\t\t\t\t\"registry_auths\": {\"type\": \"object\"},\n\t\t\t\t\"defaults\": {\"$ref\": \"#/definitions/defaults_config\"},\n\t\t\t\t\"resize_device\": {\"type\": \"string\"},\n\t\t\t\t\"sysctl\": {\"type\": \"object\"},\n\t\t\t\t\"restart_services\": {\"type\": \"array\"},\n\t\t\t\t\"hypervisor_service\": {\"type\": \"boolean\"},\n\t\t\t\t\"shutdown_timeout\": {\"type\": \"integer\"},\n\t\t\t\t\"http_load_retries\": {\"type\": \"integer\"},\n\t\t\t\t\"preload_wait\": {\"type\": \"boolean\"}\n\t\t\t}\n\t\t},\n\n\t\t\"file_config\": {\n\t\t\t\"id\": \"#/definitions/file_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"encoding\": {\"type\": \"string\"},\n\t\t\t\t\"container\": {\"type\": \"string\"},\n\t\t\t\t\"content\": {\"type\": \"string\"},\n\t\t\t\t\"owner\": {\"type\": \"string\"},\n\t\t\t\t\"path\": {\"type\": \"string\"},\n\t\t\t\t\"permissions\": {\"type\": \"string\"}\n\t\t\t}\n\t\t},\n\n\t\t\"network_config\": {\n\t\t\t\"id\": \"#/definitions/network_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"pre_cmds\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"dhcp_timeout\": {\"type\": \"integer\"},\n\t\t\t\t\"dns\": {\"type\": \"object\"},\n\t\t\t\t\"interfaces\": {\"type\": \"object\"},\n\t\t\t\t\"post_cmds\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"http_proxy\": {\"type\": \"string\"},\n\t\t\t\t\"https_proxy\": {\"type\": \"string\"},\n\t\t\t\t\"no_proxy\": {\"type\": \"string\"},\n\t\t\t\t\"wifi_networks\": {\"type\": \"object\"},\n\t\t\t\t\"modem_networks\": {\"type\": \"object\"}\n\t\t\t}\n\t\t},\n\n\t\t\"upgrade_config\": {\n\t\t\t\"id\": \"#/definitions/upgrade_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"url\": {\"type\": \"string\"},\n\t\t\t\t\"image\": {\"type\": \"string\"},\n\t\t\t\t\"rollback\": {\"type\": \"string\"},\n\t\t\t\t\"policy\": {\"type\": \"string\"}\n\t\t\t}\n\t\t},\n\n\t\t\"docker_config\": {\n\t\t\t\"id\": \"#/definitions/docker_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"engine\": {\"type\": \"string\"},\n\t\t\t\t\"tls\": {\"type\": \"boolean\"},\n\t\t\t\t\"tls_args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"extra_args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"server_cert\": {\"type\": \"string\"},\n\t\t\t\t\"server_key\": {\"type\": \"string\"},\n\t\t\t\t\"ca_cert\": {\"type\": \"string\"},\n\t\t\t\t\"ca_key\": {\"type\": \"string\"},\n\t\t\t\t\"environment\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"storage_context\": {\"type\": \"string\"},\n\t\t\t\t\"exec\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"bridge\": {\"type\": \"string\"},\n\t\t\t\t\"bip\": {\"type\": \"string\"},\n\t\t\t\t\"config_file\": {\"type\": \"string\"},\n\t\t\t\t\"containerd\": {\"type\": \"string\"},\n\t\t\t\t\"debug\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"exec_root\": {\"type\": \"string\"},\n\t\t\t\t\"group\": {\"type\": \"string\"},\n\t\t\t\t\"data_root\": {\"type\": \"string\"},\n\t\t\t\t\"host\": {\"type\": \"array\"},\n\t\t\t\t\"live_restore\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"log_driver\": {\"type\": \"string\"},\n\t\t\t\t\"log_opts\": {\"type\": \"object\"},\n\t\t\t\t\"pid_file\": {\"type\": \"string\"},\n\t\t\t\t\"registry_mirror\": {\"type\": \"string\"},\n\t\t\t\t\"restart\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"storage_driver\": {\"type\": \"string\"},\n\t\t\t\t\"userland_proxy\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"userns_enabled\": {\"type\": [\"boolean\", \"null\"]},\n\t\t\t\t\"insecure_registry\": {\"$ref\": \"#/definitions/list_of_strings\"}\n\t\t\t}\n\t\t},\n\n\t\t\"ssh_config\": {\n\t\t\t\"id\": \"#/definitions/ssh_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"keys\": {\"type\": \"object\"},\n\t\t\t\t\"daemon\": {\"type\": \"boolean\"},\n\t\t\t\t\"port\": {\"type\": \"integer\"},\n\t\t\t\t\"listen_address\": {\"type\": \"string\"}\n\t\t\t}\n\t\t},\n\n\t\t\"state_config\": {\n\t\t\t\"id\": \"#/definitions/state_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"directory\": {\"type\": \"string\"},\n\t\t\t\t\"fstype\": {\"type\": \"string\"},\n\t\t\t\t\"dev\": {\"type\": \"string\"},\n\t\t\t\t\"wait\": {\"type\": \"boolean\"},\n\t\t\t\t\"required\": {\"type\": \"boolean\"},\n\t\t\t\t\"autoformat\": {\"$ref\": \"#/definitions/list_of_strings\"},\n\t\t\t\t\"mdadm_scan\": {\"type\": \"boolean\"},\n\t\t\t\t\"cryptsetup\": {\"type\": \"boolean\"},\n\t\t\t\t\"lvm_scan\": {\"type\": \"boolean\"},\n\t\t\t\t\"rngd\": {\"type\": \"boolean\"},\n\t\t\t\t\"script\": {\"type\": \"string\"},\n\t\t\t\t\"oem_fstype\": {\"type\": \"string\"},\n\t\t\t\t\"oem_dev\": {\"type\": \"string\"},\n\t\t\t\t\"boot_fstype\": {\"type\": \"string\"},\n\t\t\t\t\"boot_dev\": {\"type\": \"string\"}\n\t\t\t}\n\t\t},\n\n\t\t\"cloud_init_config\": {\n\t\t\t\"id\": \"#/definitions/cloud_init_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"datasources\": {\"$ref\": \"#/definitions/list_of_strings\"}\n\t\t\t}\n\t\t},\n\n\t\t\"defaults_config\": {\n\t\t\t\"id\": \"#/definitions/defaults_config\",\n\t\t\t\"type\": \"object\",\n\t\t\t\"additionalProperties\": false,\n\n\t\t\t\"properties\": {\n\t\t\t\t\"hostname\": {\"type\": \"string\"},\n\t\t\t\t\"docker\": {\"type\": \"object\"},\n\t\t\t\t\"network\": {\"$ref\": \"#/definitions/network_config\"},\n\t\t\t\t\"system_docker_logs\": {\"type\": \"string\"}\n\t\t\t}\n\t\t},\n\n\t\t\"list_of_strings\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\"type\": \"string\"},\n\t\t\t\"uniqueItems\": true\n\t\t}\n\t}\n}\n\n`\n"
  },
  {
    "path": "config/types.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\n\t\"github.com/burmilla/os/config/cloudinit/config\"\n\t\"github.com/burmilla/os/config/yaml\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\n\t\"github.com/docker/engine-api/types\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n)\n\nconst (\n\tOemDir           = \"/usr/share/ros/oem\"\n\tBootDir          = \"/boot\"\n\tStateDir         = \"/state\"\n\tRosBin           = \"/usr/bin/ros\"\n\tSysInitBin       = \"/usr/bin/ros-sysinit\"\n\tSystemDockerHost = \"unix:///var/run/system-docker.sock\"\n\tDockerHost       = \"unix:///var/run/docker.sock\"\n\tImagesPath       = \"/usr/share/ros\"\n\tInitImages       = \"images-init.tar\"\n\tSystemImages     = \"images-system.tar\"\n\tUserImages       = \"images-user.tar\"\n\tDebug            = false\n\tSystemDockerBin  = \"/usr/bin/system-dockerd\"\n\tDefaultDind      = \"burmilla/os-dind:17.12.1\"\n\n\tDetachLabel        = \"io.rancher.os.detach\"\n\tCreateOnlyLabel    = \"io.rancher.os.createonly\"\n\tReloadConfigLabel  = \"io.rancher.os.reloadconfig\"\n\tConsoleLabel       = \"io.rancher.os.console\"\n\tScopeLabel         = \"io.rancher.os.scope\"\n\tRebuildLabel       = \"io.docker.compose.rebuild\"\n\tUserDockerLabel    = \"io.rancher.user_docker.name\"\n\tUserDockerNetLabel = \"io.rancher.user_docker.net\"\n\tUserDockerFIPLabel = \"io.rancher.user_docker.fix_ip\"\n\tSystem             = \"system\"\n\n\tOsConfigFile           = \"/usr/share/ros/os-config.yml\"\n\tVarRancherDir          = \"/var/lib/rancher\"\n\tCloudConfigDir         = \"/var/lib/rancher/conf/cloud-config.d\"\n\tCloudConfigInitFile    = \"/var/lib/rancher/conf/cloud-config.d/init.yml\"\n\tCloudConfigBootFile    = \"/var/lib/rancher/conf/cloud-config.d/boot.yml\"\n\tCloudConfigNetworkFile = \"/var/lib/rancher/conf/cloud-config.d/network.yml\"\n\tCloudConfigScriptFile  = \"/var/lib/rancher/conf/cloud-config-script\"\n\tMetaDataFile           = \"/var/lib/rancher/conf/metadata\"\n\tCloudConfigFile        = \"/var/lib/rancher/conf/cloud-config.yml\"\n\tEtcResolvConfFile      = \"/etc/resolv.conf\"\n\tWPAConfigFile          = \"/etc/wpa_supplicant-%s.conf\"\n\tWPATemplateFile        = \"/etc/wpa_supplicant.conf.tpl\"\n\tDHCPCDConfigFile       = \"/etc/dhcpcd.conf\"\n\tDHCPCDTemplateFile     = \"/etc/dhcpcd.conf.tpl\"\n\tMultiDockerConfFile    = \"/var/lib/rancher/conf.d/m-user-docker.yml\"\n\tMultiDockerDataDir     = \"/var/lib/m-user-docker\"\n\tUdevRulesDir           = \"/etc/udev/rules.d\"\n\tUdevRulesExtrasDir     = \"/lib/udev/rules-extras.d\"\n)\n\nvar (\n\tOemConfigFile = OemDir + \"/oem-config.yml\"\n\tVersion       string\n\tBuildDate     string\n\tArch          string\n\tSuffix        string\n\tOsRepo        string\n\tOsBase        string\n\tPrivateKeys   = []string{\n\t\t\"rancher.ssh\",\n\t\t\"rancher.docker.ca_key\",\n\t\t\"rancher.docker.ca_cert\",\n\t\t\"rancher.docker.server_key\",\n\t\t\"rancher.docker.server_cert\",\n\t}\n\tAdditional = []string{\n\t\t\"rancher.password\",\n\t\t\"rancher.autologin\",\n\t\t\"EXTRA_CMDLINE\",\n\t}\n\tSupportedDinds = []string{\n\t\t\"burmilla/os-dind:17.12.1\",\n\t\t\"burmilla/os-dind:18.03.1\",\n\t}\n)\n\nfunc init() {\n\tif Version == \"\" {\n\t\tVersion = \"v0.0.0-dev\"\n\t}\n\tif Arch == \"\" {\n\t\tArch = runtime.GOARCH\n\t}\n\tif Suffix == \"\" && Arch != \"amd64\" {\n\t\tSuffix = \"_\" + Arch\n\t}\n\tif OsBase == \"\" {\n\t\tOsBase = fmt.Sprintf(\"%s/os-base:%s%s\", OsRepo, Version, Suffix)\n\t}\n}\n\ntype Repository struct {\n\tURL string `yaml:\"url,omitempty\"`\n}\n\ntype Repositories map[string]Repository\n\ntype CloudConfig struct {\n\tSSHAuthorizedKeys []string              `yaml:\"ssh_authorized_keys,omitempty\"`\n\tWriteFiles        []File                `yaml:\"write_files,omitempty\"`\n\tHostname          string                `yaml:\"hostname,omitempty\"`\n\tMounts            [][]string            `yaml:\"mounts,omitempty\"`\n\tRancher           RancherConfig         `yaml:\"rancher,omitempty\"`\n\tRuncmd            []yaml.StringandSlice `yaml:\"runcmd,omitempty\"`\n\tBootcmd           []yaml.StringandSlice `yaml:\"bootcmd,omitempty\"`\n}\n\ntype File struct {\n\tconfig.File\n\tContainer string `yaml:\"container,omitempty\"`\n}\n\ntype RancherConfig struct {\n\tConsole             string                                    `yaml:\"console,omitempty\"`\n\tEnvironment         map[string]string                         `yaml:\"environment,omitempty\"`\n\tServices            map[string]*composeConfig.ServiceConfigV1 `yaml:\"services,omitempty\"`\n\tBootstrapContainers map[string]*composeConfig.ServiceConfigV1 `yaml:\"bootstrap,omitempty\"`\n\tCloudInitServices   map[string]*composeConfig.ServiceConfigV1 `yaml:\"cloud_init_services,omitempty\"`\n\tBootstrapDocker     DockerConfig                              `yaml:\"bootstrap_docker,omitempty\"`\n\tCloudInit           CloudInit                                 `yaml:\"cloud_init,omitempty\"`\n\tDebug               bool                                      `yaml:\"debug,omitempty\"`\n\tRmUsr               bool                                      `yaml:\"rm_usr,omitempty\"`\n\tNoSharedRoot        bool                                      `yaml:\"no_sharedroot,omitempty\"`\n\tLog                 bool                                      `yaml:\"log,omitempty\"`\n\tForceConsoleRebuild bool                                      `yaml:\"force_console_rebuild,omitempty\"`\n\tRecovery            bool                                      `yaml:\"recovery,omitempty\"`\n\tDisable             []string                                  `yaml:\"disable,omitempty\"`\n\tServicesInclude     map[string]bool                           `yaml:\"services_include,omitempty\"`\n\tModules             []string                                  `yaml:\"modules,omitempty\"`\n\tNetwork             netconf.NetworkConfig                     `yaml:\"network,omitempty\"`\n\tRepositories        Repositories                              `yaml:\"repositories,omitempty\"`\n\tSSH                 SSHConfig                                 `yaml:\"ssh,omitempty\"`\n\tState               StateConfig                               `yaml:\"state,omitempty\"`\n\tSystemDocker        DockerConfig                              `yaml:\"system_docker,omitempty\"`\n\tUpgrade             UpgradeConfig                             `yaml:\"upgrade,omitempty\"`\n\tDocker              DockerConfig                              `yaml:\"docker,omitempty\"`\n\tRegistryAuths       map[string]types.AuthConfig               `yaml:\"registry_auths,omitempty\"`\n\tDefaults            Defaults                                  `yaml:\"defaults,omitempty\"`\n\tResizeDevice        string                                    `yaml:\"resize_device,omitempty\"`\n\tSysctl              map[string]string                         `yaml:\"sysctl,omitempty\"`\n\tRestartServices     []string                                  `yaml:\"restart_services,omitempty\"`\n\tHypervisorService   bool                                      `yaml:\"hypervisor_service,omitempty\"`\n\tShutdownTimeout     int                                       `yaml:\"shutdown_timeout,omitempty\"`\n\tHTTPLoadRetries     int                                       `yaml:\"http_load_retries,omitempty\"`\n\tPreloadWait         bool                                      `yaml:\"preload_wait,omitempty\"`\n}\n\ntype UpgradeConfig struct {\n\tURL      string `yaml:\"url,omitempty\"`\n\tImage    string `yaml:\"image,omitempty\"`\n\tRollback string `yaml:\"rollback,omitempty\"`\n\tPolicy   string `yaml:\"policy,omitempty\"`\n}\n\ntype EngineOpts struct {\n\tBridge           string            `yaml:\"bridge,omitempty\" opt:\"bridge\"`\n\tBIP              string            `yaml:\"bip,omitempty\" opt:\"bip\"`\n\tConfigFile       string            `yaml:\"config_file,omitempty\" opt:\"config-file\"`\n\tContainerd       string            `yaml:\"containerd,omitempty\" opt:\"containerd\"`\n\tDebug            *bool             `yaml:\"debug,omitempty\" opt:\"debug\"`\n\tExecRoot         string            `yaml:\"exec_root,omitempty\" opt:\"exec-root\"`\n\tGroup            string            `yaml:\"group,omitempty\" opt:\"group\"`\n\tDataRoot         string            `yaml:\"data_root,omitempty\" opt:\"data-root\"`\n\tHost             []string          `yaml:\"host,omitempty\" opt:\"host\"`\n\tInsecureRegistry []string          `yaml:\"insecure_registry\" opt:\"insecure-registry\"`\n\tLiveRestore      *bool             `yaml:\"live_restore,omitempty\" opt:\"live-restore\"`\n\tLogDriver        string            `yaml:\"log_driver,omitempty\" opt:\"log-driver\"`\n\tLogOpts          map[string]string `yaml:\"log_opts,omitempty\" opt:\"log-opt\"`\n\tPidFile          string            `yaml:\"pid_file,omitempty\" opt:\"pidfile\"`\n\tRegistryMirror   string            `yaml:\"registry_mirror,omitempty\" opt:\"registry-mirror\"`\n\tRestart          *bool             `yaml:\"restart,omitempty\" opt:\"restart\"`\n\tStorageDriver    string            `yaml:\"storage_driver,omitempty\" opt:\"storage-driver\"`\n\tUserlandProxy    *bool             `yaml:\"userland_proxy,omitempty\" opt:\"userland-proxy\"`\n}\n\ntype DockerConfig struct {\n\tEngineOpts\n\tEngine         string   `yaml:\"engine,omitempty\"`\n\tTLS            bool     `yaml:\"tls,omitempty\"`\n\tTLSArgs        []string `yaml:\"tls_args,flow,omitempty\"`\n\tExtraArgs      []string `yaml:\"extra_args,flow,omitempty\"`\n\tServerCert     string   `yaml:\"server_cert,omitempty\"`\n\tServerKey      string   `yaml:\"server_key,omitempty\"`\n\tCACert         string   `yaml:\"ca_cert,omitempty\"`\n\tCAKey          string   `yaml:\"ca_key,omitempty\"`\n\tEnvironment    []string `yaml:\"environment,omitempty\"`\n\tStorageContext string   `yaml:\"storage_context,omitempty\"`\n\tUserNsEnabled  bool     `yaml:\"userns_enabled,omitempty\"`\n\tExec           bool     `yaml:\"exec,omitempty\"`\n}\n\ntype SSHConfig struct {\n\tKeys          map[string]string `yaml:\"keys,omitempty\"`\n\tDaemon        bool              `yaml:\"daemon,omitempty\"`\n\tPort          int               `yaml:\"port,omitempty\"`\n\tListenAddress string            `yaml:\"listen_address,omitempty\"`\n}\n\ntype StateConfig struct {\n\tDirectory  string   `yaml:\"directory,omitempty\"`\n\tFsType     string   `yaml:\"fstype,omitempty\"`\n\tDev        string   `yaml:\"dev,omitempty\"`\n\tWait       bool     `yaml:\"wait,omitempty\"`\n\tRequired   bool     `yaml:\"required,omitempty\"`\n\tAutoformat []string `yaml:\"autoformat,omitempty\"`\n\tMdadmScan  bool     `yaml:\"mdadm_scan,omitempty\"`\n\tLvmScan    bool     `yaml:\"lvm_scan,omitempty\"`\n\tCryptsetup bool     `yaml:\"cryptsetup,omitempty\"`\n\tRngd       bool     `yaml:\"rngd,omitempty\"`\n\tScript     string   `yaml:\"script,omitempty\"`\n\tOemFsType  string   `yaml:\"oem_fstype,omitempty\"`\n\tOemDev     string   `yaml:\"oem_dev,omitempty\"`\n\tBootFsType string   `yaml:\"boot_fstype,omitempty\"`\n\tBootDev    string   `yaml:\"boot_dev,omitempty\"`\n}\n\ntype CloudInit struct {\n\tDatasources []string `yaml:\"datasources,omitempty\"`\n}\n\ntype Defaults struct {\n\tHostname         string                `yaml:\"hostname,omitempty\"`\n\tDocker           DockerConfig          `yaml:\"docker,omitempty\"`\n\tNetwork          netconf.NetworkConfig `yaml:\"network,omitempty\"`\n\tSystemDockerLogs string                `yaml:\"system_docker_logs,omitempty\"`\n}\n\nfunc (r Repositories) ToArray() []string {\n\tresult := make([]string, 0, len(r))\n\tfor _, repo := range r {\n\t\tif repo.URL != \"\" {\n\t\t\tresult = append(result, repo.URL)\n\t\t}\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "config/validate.go",
    "content": "package config\n\nimport (\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/xeipuuv/gojsonschema\"\n)\n\n// ConvertKeysToStrings is temporarily copied from libcompose\n// TODO: just import this in the future\nfunc ConvertKeysToStrings(item interface{}) interface{} {\n\tswitch typedDatas := item.(type) {\n\tcase map[string]interface{}:\n\t\tfor key, value := range typedDatas {\n\t\t\ttypedDatas[key] = ConvertKeysToStrings(value)\n\t\t}\n\t\treturn typedDatas\n\tcase map[interface{}]interface{}:\n\t\tnewMap := make(map[string]interface{})\n\t\tfor key, value := range typedDatas {\n\t\t\tstringKey := key.(string)\n\t\t\tnewMap[stringKey] = ConvertKeysToStrings(value)\n\t\t}\n\t\treturn newMap\n\tcase []interface{}:\n\t\tfor i, value := range typedDatas {\n\t\t\ttypedDatas[i] = ConvertKeysToStrings(value)\n\t\t}\n\t\treturn typedDatas\n\tdefault:\n\t\treturn item\n\t}\n}\n\nfunc ValidateBytes(bytes []byte) (*gojsonschema.Result, error) {\n\tvar rawCfg map[string]interface{}\n\tif err := yaml.Unmarshal([]byte(bytes), &rawCfg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ValidateRawCfg(rawCfg)\n}\n\nfunc ValidateRawCfg(rawCfg interface{}) (*gojsonschema.Result, error) {\n\trawCfg = ConvertKeysToStrings(rawCfg).(map[string]interface{})\n\tloader := gojsonschema.NewGoLoader(rawCfg)\n\tschemaLoader := gojsonschema.NewStringLoader(schema)\n\treturn gojsonschema.Validate(schemaLoader, loader)\n}\n"
  },
  {
    "path": "config/validate_test.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\nfunc testValidate(t *testing.T, cfg []byte, contains string) {\n\tfmt.Printf(\"Testing %s, contains %s\", string(cfg), contains)\n\tvalidationErrors, err := ValidateBytes(cfg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif contains == \"\" && len(validationErrors.Errors()) != 0 {\n\t\tfmt.Printf(\"validationErrors: %v\", validationErrors.Errors())\n\t\tt.Fail()\n\t}\n\tif !strings.Contains(fmt.Sprint(validationErrors.Errors()), contains) {\n\t\tt.Fail()\n\t}\n}\n\nfunc TestValidate(t *testing.T) {\n\ttestValidate(t, []byte(\"{}\"), \"\")\n\ttestValidate(t, []byte(`rancher:\n  log: true`), \"\")\n\ttestValidate(t, []byte(`write_files:\n- container: console\n  path: /etc/rc.local\n  permissions: \"0755\"\n  owner: root\n  content: |\n    #!/bin/bash\n    wait-for-docker`), \"\")\n\ttestValidate(t, []byte(`rancher:\n  docker:\n    extra_args: ['--insecure-registry', 'my.registry.com']`), \"\")\n\n\ttestValidate(t, []byte(\"bad_key: {}\"), \"Additional property bad_key is not allowed\")\n\ttestValidate(t, []byte(\"rancher: []\"), \"rancher: Invalid type. Expected: object, given: array\")\n\n\tvar fullConfig map[string]interface{}\n\tif err := util.ConvertIgnoreOmitEmpty(CloudConfig{}, &fullConfig); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfullConfigBytes, err := yaml.Marshal(fullConfig)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttestValidate(t, fullConfigBytes, \"\")\n}\n"
  },
  {
    "path": "config/yaml/command.go",
    "content": "package yaml\n\nimport \"fmt\"\n\n// StringandSlice stores either a string or slice depending on original type\n// Differs from libcompose Stringorslice by being able to determine original type\ntype StringandSlice struct {\n\tStringValue string\n\tSliceValue  []string\n}\n\n// UnmarshalYAML implements the Unmarshaller interface.\n// TODO: this needs to be ported to go-yaml\nfunc (s *StringandSlice) UnmarshalYAML(tag string, value interface{}) error {\n\tswitch value := value.(type) {\n\tcase []interface{}:\n\t\tparts, err := toStrings(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts.SliceValue = parts\n\tcase string:\n\t\ts.StringValue = value\n\tdefault:\n\t\treturn fmt.Errorf(\"Failed to unmarshal StringandSlice: %#v\", value)\n\t}\n\treturn nil\n}\n\n// TODO: use this function from libcompose\nfunc toStrings(s []interface{}) ([]string, error) {\n\tif len(s) == 0 {\n\t\treturn nil, nil\n\t}\n\tr := make([]string, len(s))\n\tfor k, v := range s {\n\t\tif sv, ok := v.(string); ok {\n\t\t\tr[k] = sv\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", v, v)\n\t\t}\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "images/00-rootfs/.dockerignore",
    "content": "assets\nbuild/dist/kernel\n"
  },
  {
    "path": "images/00-rootfs/Dockerfile",
    "content": "FROM scratch\nADD build/rootfs.tar /\n"
  },
  {
    "path": "images/00-rootfs/prebuild.sh",
    "content": "#!/bin/bash\n\nTAR=${DOWNLOADS}/rootfs.tar\n\nif [ -e $TAR ]; then\n    cd $(dirname $0)\n    mkdir -p build\n    cp $TAR build\nfi\n"
  },
  {
    "path": "images/01-base/.dockerignore",
    "content": "Dockerfile*\n.dockerignore\n"
  },
  {
    "path": "images/01-base/Dockerfile",
    "content": "FROM burmilla/os-rootfs\n\nCOPY . /\n\nRUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \\\n    sed -i '/^root/s!/bin/sh!/bin/bash!' /etc/passwd && \\\n    echo 'BurmillaOS \\n \\l' > /etc/issue && \\\n    rm -rf /run \\\n       /linuxrc \\\n       /etc/os-release \\\n       /var/cache \\\n       /var/lock \\\n       /var/log \\\n       /var/run \\\n       /var/spool \\\n       /var/lib/misc && \\\n    mkdir -p \\\n       /home \\\n       /run \\\n       /var/cache \\\n       /var/lock \\\n       /var/log \\\n       /var/run \\\n       /var/spool && \\\n    passwd -l root && \\\n    addgroup -g 1100 rancher && \\\n    addgroup -g 1101 docker && \\\n    adduser -u 1100 -G rancher -D -h /home/rancher -s /bin/bash rancher && \\\n    adduser -u 1101 -G docker -D -h /home/docker -s /bin/bash docker && \\\n    adduser rancher docker && \\\n    adduser rancher sudo && \\\n    adduser docker sudo && \\\n    echo '%sudo ALL=(ALL) ALL' >> /etc/sudoers && \\\n    ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules && \\\n    sed -i s/\"partx --update \\\"\\$part\\\" \\\"\\$dev\\\"\"/\"partx --update --nr \\\"\\$part\\\" \\\"\\$dev\\\"\"/g /usr/bin/growpart && \\\n    sed -i -e 's/duid/clientid/g' /etc/dhcpcd.conf && \\\n    echo -e '\\n# Ignore Docker container interfaces\\ndenyinterfaces veth*\\n' >> /etc/dhcpcd.conf && \\\n    rm -f /etc/wpa_supplicant.conf && \\\n    ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /lib/dhcpcd/dhcpcd-hooks/ && \\\n    rm -f /usr/share/bash-completion/completions/* && \\\n    chmod 555 /lib/dhcpcd/dhcpcd-run-hooks && \\\n    sed -i 1,10d /etc/rsyslog.conf && \\\n    echo \"*.*                /var/log/syslog\" >> /etc/rsyslog.conf && \\\n    \\\n    addgroup -g 1200 user-docker && \\\n    adduser -u 1200 -G user-docker -S -H user-docker && \\\n    echo 'user-docker:100000:65536' > /etc/subuid && \\\n    echo 'user-docker:100000:65536' > /etc/subgid\n# dump kernel log to console (but after we've finished booting)\n#    echo \"kern.*                /dev/console\" >> /etc/rsyslog.conf\n\nENTRYPOINT [\"/usr/bin/ros\", \"entrypoint\"]\n"
  },
  {
    "path": "images/01-base/etc/dhcpcd.conf.tpl",
    "content": "# A sample configuration for dhcpcd.\n# See dhcpcd.conf(5) for details.\n\n# Allow users of this group to interact with dhcpcd via the control socket.\n#controlgroup wheel\n\n# Inform the DHCP server of our hostname for DDNS.\nhostname\n\n# Use the hardware address of the interface for the Client ID.\n#clientid\n# or\n# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.\n# Some non-RFC compliant DHCP servers do not reply with this set.\n# In this case, comment out duid and enable clientid above.\nclientid\n\n# Persist interface configuration when dhcpcd exits.\npersistent\n\n# Rapid commit support.\n# Safe to enable by default because it requires the equivalent option set\n# on the server to actually work.\noption rapid_commit\n\n# A list of options to request from the DHCP server.\noption domain_name_servers, domain_name, domain_search, host_name\noption classless_static_routes\n# Most distributions have NTP support.\noption ntp_servers\n# Respect the network MTU. This is applied to DHCP routes.\noption interface_mtu\n\n# A ServerID is required by RFC2131.\nrequire dhcp_server_identifier\n\n# Generate SLAAC address using the Hardware Address of the interface\n#slaac hwaddr\n# OR generate Stable Private IPv6 Addresses based from the DUID\nslaac private\n\n# Ignore Docker container interfaces\ndenyinterfaces veth*\n\n{{- range $key, $value := .}}\ninterface {{$key}}\nstatic ip_address={{$value.Address}}\nstatic routers={{$value.Gateway}}\n{{- end}}\n"
  },
  {
    "path": "images/01-base/etc/dhcpcd.enter-hook",
    "content": "#!/bin/bash\n\nif [ \"$(ros config get rancher.debug)\" == \"true\" ]; then\n\techo \"DHCPCD: $interface $reason\" &>> /var/log/dhcpcd.debug.log\n\techo \"$(date)\" &>> /var/log/dhcpcd.debug.log\n\tset | sed -ne 's/^new_//p' | sort &>> /var/log/dhcpcd.debug.log\n\techo \"--------------------------\" &>> /var/log/dhcpcd.debug.log\nfi\n"
  },
  {
    "path": "images/01-base/etc/inputrc",
    "content": "# /etc/inputrc - global inputrc for libreadline\n# See readline(3readline) and `info rluserman' for more information.\n\n# Be 8 bit clean.\nset input-meta on\nset output-meta on\n\n# To allow the use of 8bit-characters like the german umlauts, uncomment\n# the line below. However this makes the meta key not work as a meta key,\n# which is annoying to those which don't need to type in 8-bit characters.\n\n# set convert-meta off\n\n# try to enable the application keypad when it is called.  Some systems\n# need this to enable the arrow keys.\n# set enable-keypad on\n\n# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys\n\n# do not bell on tab-completion\n# set bell-style none\n# set bell-style visible\n\n# some defaults / modifications for the emacs mode\n$if mode=emacs\n\n# allow the use of the Home/End keys\n\"\\e[1~\": beginning-of-line\n\"\\e[4~\": end-of-line\n\n# allow the use of the Delete/Insert keys\n\"\\e[3~\": delete-char\n\"\\e[2~\": quoted-insert\n\n# mappings for \"page up\" and \"page down\" to step to the beginning/end\n# of the history\n# \"\\e[5~\": beginning-of-history\n# \"\\e[6~\": end-of-history\n\n# alternate mappings for \"page up\" and \"page down\" to search the history\n# \"\\e[5~\": history-search-backward\n# \"\\e[6~\": history-search-forward\n\n# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving\n\"\\e[1;5C\": forward-word\n\"\\e[1;5D\": backward-word\n\"\\e[5C\": forward-word\n\"\\e[5D\": backward-word\n\"\\e\\e[C\": forward-word\n\"\\e\\e[D\": backward-word\n\n$if term=rxvt\n\"\\e[7~\": beginning-of-line\n\"\\e[8~\": end-of-line\n\"\\eOc\": forward-word\n\"\\eOd\": backward-word\n$endif\n\n# for non RH/Debian xterm, can't hurt for RH/Debian xterm\n# \"\\eOH\": beginning-of-line\n# \"\\eOF\": end-of-line\n\n# for freebsd console\n# \"\\e[H\": beginning-of-line\n# \"\\e[F\": end-of-line\n\n$endif\n"
  },
  {
    "path": "images/01-base/etc/wpa_supplicant.conf.tpl",
    "content": "ctrl_interface=/var/run/wpa_supplicant\nap_scan=1\nupdate_config=1\n\n{{- range $key, $value := .}}\nnetwork={\n\tssid=\"{{$value.SSID}}\"\n\t{{- if gt (len $value.PSK) 0}}\n\tpsk=\"{{$value.PSK}}\"\n\t{{- end}}\n\t{{- if gt (len $value.KeyMgmt) 0}}\n\tkey_mgmt={{$value.KeyMgmt}}\n\t{{- end}}\n\t{{- if $value.ScanSSID}}\n\tscan_ssid={{$value.ScanSSID}}\n\t{{- end}}\n\t{{- if $value.Priority}}\n\tpriority={{$value.Priority}}\n\t{{- end}}\n\t{{- if gt (len $value.Pairwise) 0}}\n\tpairwise={{$value.Pairwise}}\n\t{{- end}}\n\t{{- if gt (len $value.Group) 0}}\n\tgroup={{$value.Group}}\n\t{{- end}}\n\t{{- if gt (len $value.Eap) 0}}\n\teap={{$value.Eap}}\n\t{{- end}}\n\t{{- if gt (len $value.Identity) 0}}\n\tidentity=\"{{$value.Identity}}\"\n\t{{- end}}\n\t{{- if gt (len $value.AnonymousIdentity) 0}}\n\tanonymous_identity=\"{{$value.AnonymousIdentity}}\"\n\t{{- end}}\n\t{{- if $value.EapolFlags}}\n\teapol_flags={{$value.EapolFlags}}\n\t{{- end}}\n\t{{- if gt (len $value.Password) 0}}\n\tpassword=\"{{$value.Password}}\"\n\t{{- end}}\n\t{{- range $i, $v := $value.Phases}}\n\tphase{{addFunc $i 1}}=\"{{$v}}\"\n\t{{- end}}\n\t{{- range $i, $v := $value.CaCerts}}\n\t{{- if eq $i 0}}\n\tca_cert=\"{{$v}}\"\n\t{{- else}}\n\tca_cert{{addFunc $i 1}}=\"{{$v}}\"\n\t{{- end}}\n\t{{- end}}\n\t{{- range $i, $v := $value.ClientCerts}}\n\t{{- if eq $i 0}}\n\tclient_cert=\"{{$v}}\"\n\t{{- else}}\n\tclient_cert{{addFunc $i 1}}=\"{{$v}}\"\n\t{{- end}}\n\t{{- end}}\n\t{{- range $i, $v := $value.PrivateKeys}}\n\t{{- if eq $i 0}}\n\tprivate_key=\"{{$v}}\"\n\t{{- else}}\n\tprivate_key{{addFunc $i 1}}=\"{{$v}}\"\n\t{{- end}}\n\t{{- end}}\n\t{{- range $i, $v := $value.PrivateKeyPasswds}}\n\t{{- if eq $i 0}}\n\tprivate_key_passwd=\"{{$v}}\"\n\t{{- else}}\n\tprivate_key{{addFunc $i 1}}_passwd=\"{{$v}}\"\n\t{{- end}}\n\t{{- end}}\n}\n{{- end}}"
  },
  {
    "path": "images/01-base/usr/bin/growpart",
    "content": "#!/bin/sh\n#    Copyright (C) 2011 Canonical Ltd.\n#    Copyright (C) 2013 Hewlett-Packard Development Company, L.P.\n#\n#    Authors: Scott Moser <smoser@canonical.com>\n#             Juerg Haefliger <juerg.haefliger@hp.com>\n#\n#    This program is free software: you can redistribute it and/or modify\n#    it under the terms of the GNU General Public License as published by\n#    the Free Software Foundation, version 3 of the License.\n#\n#    This program is distributed in the hope that it will be useful,\n#    but WITHOUT ANY WARRANTY; without even the implied warranty of\n#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n#    GNU General Public License for more details.\n#\n#    You should have received a copy of the GNU General Public License\n#    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n# the fudge factor. if within this many bytes dont bother\nFUDGE=${GROWPART_FUDGE:-$((1024*1024))}\nTEMP_D=\"\"\nRESTORE_FUNC=\"\"\nRESTORE_HUMAN=\"\"\nVERBOSITY=0\nDISK=\"\"\nPART=\"\"\nPT_UPDATE=false\nDRY_RUN=0\n\nSFDISK_VERSION=\"\"\nSFDISK_2_26=\"22600\"\nSFDISK_V_WORKING_GPT=\"22603\"\nMBR_BACKUP=\"\"\nGPT_BACKUP=\"\"\n_capture=\"\"\n\nerror() {\n\techo \"$@\" 1>&2\n}\n\nfail() {\n\t[ $# -eq 0 ] || echo \"FAILED:\" \"$@\"\n\texit 2\n}\n\nnochange() {\n\techo \"NOCHANGE:\" \"$@\"\n\texit 1\n}\n\nchanged() {\n\techo \"CHANGED:\" \"$@\"\n\texit 0\n}\n\nchange() {\n\techo \"CHANGE:\" \"$@\"\n\texit 0\n}\n\ncleanup() {\n\tif [ -n \"${RESTORE_FUNC}\" ]; then\n\t\terror \"***** WARNING: Resize failed, attempting to revert ******\"\n\t\tif ${RESTORE_FUNC} ; then\n\t\t\terror \"***** Appears to have gone OK ****\"\n\t\telse\n\t\t\terror \"***** FAILED! ******\"\n\t\t\tif [ -n \"${RESTORE_HUMAN}\" -a -f \"${RESTORE_HUMAN}\" ]; then\n\t\t\t\terror \"**** original table looked like: ****\"\n\t\t\t\tcat \"${RESTORE_HUMAN}\" 1>&2\n\t\t\telse\n\t\t\t\terror \"We seem to have not saved the partition table!\"\n\t\t\tfi\n\t\tfi\n\tfi\n\t[ -z \"${TEMP_D}\" -o ! -d \"${TEMP_D}\" ] || rm -Rf \"${TEMP_D}\"\n}\n\ndebug() {\n\tlocal level=${1}\n\tshift\n\t[ \"${level}\" -gt \"${VERBOSITY}\" ] && return\n\tif [ \"${DEBUG_LOG}\" ]; then\n\t\techo \"$@\" >>\"${DEBUG_LOG}\"\n\telse\n\t\terror \"$@\"\n\tfi\n}\n\ndebugcat() {\n\tlocal level=\"$1\"\n\tshift;\n\t[ \"${level}\" -gt \"$VERBOSITY\" ] && return\n\tif [ \"${DEBUG_LOG}\" ]; then\n\t\tcat \"$@\" >>\"${DEBUG_LOG}\"\n\telse\n\t\tcat \"$@\" 1>&2\n\tfi\n}\n\nmktemp_d() {\n\t# just a mktemp -d that doens't need mktemp if its not there.\n\t_RET=$(mktemp -d \"${TMPDIR:-/tmp}/${0##*/}.XXXXXX\" 2>/dev/null) &&\n\t\treturn\n\t_RET=$(umask 077 && t=\"${TMPDIR:-/tmp}/${0##*/}.$$\" &&\n\t\tmkdir \"${t}\" &&\techo \"${t}\")\n\treturn\n}\n\nUsage() {\n\tcat <<EOF\n${0##*/} disk partition\n   rewrite partition table so that partition takes up all the space it can\n   options:\n    -h | --help       print Usage and exit\n         --fudge F    if part could be resized, but change would be\n                      less than 'F' bytes, do not resize (default: ${FUDGE})\n    -N | --dry-run    only report what would be done, show new 'sfdisk -d'\n    -v | --verbose    increase verbosity / debug\n    -u | --update  R  update the the kernel partition table info after growing\n                      this requires kernel support and 'partx --update'\n                      R is one of:\n                       - 'auto'  : [default] update partition if possible\n                       - 'force' : try despite sanity checks (fail on failure)\n                       - 'off'   : do not attempt\n                       - 'on'    : fail if sanity checks indicate no support\n\n   Example:\n    - ${0##*/} /dev/sda 1\n      Resize partition 1 on /dev/sda\nEOF\n}\n\nbad_Usage() {\n\tUsage 1>&2\n\terror \"$@\"\n\texit 2\n}\n\nsfdisk_restore_legacy() {\n\tsfdisk --no-reread \"${DISK}\" -I \"${MBR_BACKUP}\"\n}\n\nsfdisk_restore() {\n\t# files are named: sfdisk-<device>-<offset>.bak\n\tlocal f=\"\" offset=\"\" fails=0\n\tfor f in \"${MBR_BACKUP}\"*.bak; do\n\t\t[ -f \"$f\" ] || continue\n\t\toffset=${f##*-}\n\t\toffset=${offset%.bak}\n\t\t[ \"$offset\" = \"$f\" ] && {\n\t\t\terror \"WARN: confused by file $f\";\n\t\t\tcontinue;\n\t\t}\n\t\tdd \"if=$f\" \"of=${DISK}\" seek=$(($offset)) bs=1 conv=notrunc ||\n\t\t\t{ error \"WARN: failed restore from $f\"; fails=$(($fails+1)); }\n\tdone\n\treturn $fails\n}\n\nsfdisk_worked_but_blkrrpart_failed() {\n\tlocal ret=\"$1\" output=\"$2\"\n\t# exit code found was just 1, but dont insist on that\n\t#[ $ret -eq 1 ] || return 1\n\t# Successfully wrote the new partition table\n\tgrep -qi \"Success.* wrote.* new.* partition\" \"$output\" &&\n\t\tgrep -qi \"BLKRRPART: Device or resource busy\" \"$output\"\n\treturn\n}\n\nget_sfdisk_version() {\n\t# set SFDISK_VERSION to MAJOR*10000+MINOR*100+MICRO\n\tlocal out oifs=\"$IFS\" ver=\"\"\n\t[ -n \"$SFDISK_VERSION\" ] && return 0\n\t# expected output: sfdisk from util-linux 2.25.2\n\tout=$(sfdisk --version) ||\n\t\t{ error \"failed to get sfdisk version\"; return 1; }\n\tset -- $out\n\tver=$4\n\tcase \"$ver\" in\n\t\t[0-9]*.[0-9]*.[0-9]|[0-9].[0-9]*)\n\t\t\tIFS=\".\"; set -- $ver; IFS=\"$oifs\"\n\t\t\tSFDISK_VERSION=$(($1*10000+$2*100+${3:-0}))\n\t\t\treturn 0;;\n\t\t*) error \"unexpected output in sfdisk --version [$out]\"\n\t\t\treturn 1;;\n\tesac\n}\n\nresize_sfdisk() {\n\tlocal humanpt=\"${TEMP_D}/recovery\"\n\tlocal mbr_backup=\"${TEMP_D}/orig.save\"\n\tlocal restore_func=\"\"\n\tlocal format=\"$1\"\n\n\tlocal change_out=${TEMP_D}/change.out\n\tlocal dump_out=${TEMP_D}/dump.out\n\tlocal new_out=${TEMP_D}/new.out\n\tlocal dump_mod=${TEMP_D}/dump.mod\n\tlocal tmp=\"${TEMP_D}/tmp.out\"\n\tlocal err=\"${TEMP_D}/err.out\"\n\tlocal mbr_max_512=\"4294967296\"\n\n\tlocal pt_start pt_size pt_end max_end new_size change_info dpart\n\tlocal sector_num sector_size disk_size tot out\n\n\trqe sfd_list sfdisk --list --unit=S \"$DISK\" >\"$tmp\" ||\n\t\tfail \"failed: sfdisk --list $DISK\"\n\tif [ \"${SFDISK_VERSION}\" -lt ${SFDISK_2_26} ]; then\n\t\t# exected output contains: Units: sectors of 512 bytes, ...\n\t\tout=$(awk '$1 == \"Units:\" && $5 ~ /bytes/ { print $4 }' \"$tmp\") ||\n\t\t\tfail \"failed to read sfdisk output\"\n\t\tif [ -z \"$out\" ]; then\n\t\t\terror \"WARN: sector size not found in sfdisk output, assuming 512\"\n\t\t\tsector_size=512\n\t\telse\n\t\t\tsector_size=\"$out\"\n\t\tfi\n\t\tlocal _w _cyl _w1 _heads _w2 sectors _w3 t s\n\t\t# show-size is in units of 1024 bytes (same as /proc/partitions)\n\t\tt=$(sfdisk --show-size \"${DISK}\") ||\n\t\t\tfail \"failed: sfdisk --show-size $DISK\"\n\t\tdisk_size=$((t*1024))\n\t\tsector_num=$(($disk_size/$sector_size))\n\t\tmsg=\"disk size '$disk_size' not evenly div by sector size '$sector_size'\"\n\t\t[ \"$((${disk_size}%${sector_size}))\" -eq 0 ] ||\n\t\t\terror \"WARN: $msg\"\n\t\trestore_func=sfdisk_restore_legacy\n\telse\n\t\t# --list first line output:\n\t\t# Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors\n\t\tlocal _x\n\t\tread _x _x _x _x disk_size _x sector_num _x  < \"$tmp\"\n\t\tsector_size=$((disk_size/$sector_num))\n\t\trestore_func=sfdisk_restore\n\tfi\n\n\tdebug 1 \"$sector_num sectors of $sector_size. total size=${disk_size} bytes\"\n\t[ $(($disk_size/512)) -gt $mbr_max_512 ] &&\n\t\tdebug 1 \"WARN: disk is larger than 2TB. additional space will go unused.\"\n\n\trqe sfd_dump sfdisk --unit=S --dump \"${DISK}\" >\"${dump_out}\" ||\n\t\tfail \"failed to dump sfdisk info for ${DISK}\"\n\tRESTORE_HUMAN=\"$dump_out\"\n\n\t{\n\t\techo \"## sfdisk --unit=S --dump ${DISK}\"\n\t\tcat \"${dump_out}\"\n\t}  >\"$humanpt\"\n\n\t[ $? -eq 0 ] || fail \"failed to save sfdisk -d output\"\n\tRESTORE_HUMAN=\"$humanpt\"\n\n\tdebugcat 1 \"$humanpt\"\n\n\tsed -e 's/,//g; s/start=/start /; s/size=/size /' \"${dump_out}\" \\\n\t\t>\"${dump_mod}\" ||\n\t\tfail \"sed failed on dump output\"\n\n\tdpart=\"${DISK}${PART}\" # disk and partition number\n\tif [ -b \"${DISK}p${PART}\" -a \"${DISK%[0-9]}\" != \"${DISK}\" ]; then\n\t\t# for block devices that end in a number (/dev/nbd0)\n\t\t# the partition is \"<name>p<partition_number>\" (/dev/nbd0p1)\n\t\tdpart=\"${DISK}p${PART}\"\n\telif [ \"${DISK#/dev/loop[0-9]}\" != \"${DISK}\" ]; then\n\t\t# for /dev/loop devices, sfdisk output will be <name>p<number>\n\t\t# format also, even though there is not a device there.\n\t\tdpart=\"${DISK}p${PART}\"\n\tfi\n\n\tpt_start=$(awk '$1 == pt { print $4 }' \"pt=${dpart}\" <\"${dump_mod}\") &&\n\t\tpt_size=$(awk '$1 == pt { print $6 }' \"pt=${dpart}\" <\"${dump_mod}\") &&\n\t\t[ -n \"${pt_start}\" -a -n \"${pt_size}\" ] &&\n\t\tpt_end=$((${pt_size}+${pt_start})) ||\n\t\tfail \"failed to get start and end for ${dpart} in ${DISK}\"\n\n\t# find the minimal starting location that is >= pt_end \n\tmax_end=$(awk '$3 == \"start\" { if($4 >= pt_end && $4 < min)\n\t\t{ min = $4 } } END { printf(\"%s\\n\",min); }' \\\n\t\tmin=${sector_num} pt_end=${pt_end} \"${dump_mod}\") &&\n\t\t[ -n \"${max_end}\" ] ||\n\t\tfail \"failed to get max_end for partition ${PART}\"\n\n\tmbr_max_sectors=$((mbr_max_512*$((sector_size/512))))\n\tif [ \"$max_end\" -gt \"$mbr_max_sectors\" ]; then\n\t\tmax_end=$mbr_max_sectors\n\tfi\n\n\tif [ \"$format\" = \"gpt\" ]; then\n\t\t# sfdisk respects 'last-lba' in input, and complains about\n\t\t# partitions that go past that.  without it, it does the right thing.\n\t\tsed -i '/^last-lba:/d' \"$dump_out\" ||\n\t\t\tfail \"failed to remove last-lba from output\"\n\tfi\n\n\tlocal gpt_second_size=\"33\"\n\tif [ \"${max_end}\" -gt \"$((${sector_num}-${gpt_second_size}))\" ]; then\n\t\t# if mbr allow subsequent conversion to gpt without shrinking the\n\t\t# partition.  safety net at cost of 33 sectors, seems reasonable.\n\t\t# if gpt, we can't write there anyway.\n\t\tdebug 1 \"padding ${gpt_second_size} sectors for gpt secondary header\"\n\t\tmax_end=$((${sector_num}-${gpt_second_size}))\n\tfi\n\n\tdebug 1 \"max_end=${max_end} tot=${sector_num} pt_end=${pt_end}\" \\\n\t\t\"pt_start=${pt_start} pt_size=${pt_size}\"\n\t[ $((${pt_end})) -eq ${max_end} ] &&\n\t\tnochange \"partition ${PART} is size ${pt_size}. it cannot be grown\"\n\t[ $((${pt_end}+(${FUDGE}/$sector_size))) -gt ${max_end} ] &&\n\t\tnochange \"partition ${PART} could only be grown by\" \\\n\t\t\"$((${max_end}-${pt_end})) [fudge=$((${FUDGE}/$sector_size))]\"\n\n\t# now, change the size for this partition in ${dump_out} to be the\n\t# new size\n\tnew_size=$((${max_end}-${pt_start}))\n\tsed \"\\|^\\s*${dpart} |s/${pt_size},/${new_size},/\" \"${dump_out}\" \\\n\t\t>\"${new_out}\" ||\n\t\tfail \"failed to change size in output\"\n\n\tchange_info=\"partition=${PART} start=${pt_start} old: size=${pt_size} end=${pt_end} new: size=${new_size},end=${max_end}\"\n\tif [ ${DRY_RUN} -ne 0 ]; then\n\t\techo \"CHANGE: ${change_info}\"\n\t\t{\n\t\t\techo \"# === old sfdisk -d ===\"\n\t\t\tcat \"${dump_out}\"\n\t\t\techo \"# === new sfdisk -d ===\"\n\t\t\tcat \"${new_out}\"\n\t\t} 1>&2\n\t\texit 0\n\tfi\n\n\tMBR_BACKUP=\"${mbr_backup}\"\n\tLANG=C sfdisk --no-reread \"${DISK}\" --force \\\n\t\t-O \"${mbr_backup}\" <\"${new_out}\" >\"${change_out}\" 2>&1\n\tret=$?\n\t[ $ret -eq 0 ] || RESTORE_FUNC=\"${restore_func}\"\n\n\tif [ $ret -eq 0 ]; then\n\t\t:\n\telif $PT_UPDATE &&\n\t\tsfdisk_worked_but_blkrrpart_failed \"$ret\" \"${change_out}\"; then\n\t\t# if the command failed, but it looks like only because\n\t\t# the device was busy and we have pt_update, then go on\n\t\tdebug 1 \"sfdisk failed, but likely only because of blkrrpart\"\n\telse\n\t\terror \"attempt to resize ${DISK} failed. sfdisk output below:\"\n\t\tsed 's,^,| ,' \"${change_out}\" 1>&2\n\t\tfail \"failed to resize\"\n\tfi\n\n\trq pt_update pt_update \"$DISK\" \"$PART\" ||\n\t\tfail \"pt_resize failed\"\n\n\tRESTORE_FUNC=\"\"\n\n\tchanged \"${change_info}\"\n\n\t# dump_out looks something like:\n\t## partition table of /tmp/out.img\n\t#unit: sectors\n\t#\n\t#/tmp/out.img1 : start=        1, size=    48194, Id=83\n\t#/tmp/out.img2 : start=    48195, size=   963900, Id=83\n\t#/tmp/out.img3 : start=  1012095, size=   305235, Id=82\n\t#/tmp/out.img4 : start=  1317330, size=   771120, Id= 5\n\t#/tmp/out.img5 : start=  1317331, size=   642599, Id=83\n\t#/tmp/out.img6 : start=  1959931, size=    48194, Id=83\n\t#/tmp/out.img7 : start=  2008126, size=    80324, Id=83\n}\n\ngpt_restore() {\n\tsgdisk -l \"${GPT_BACKUP}\" \"${DISK}\"\n}\n\nresize_sgdisk() {\n\tGPT_BACKUP=\"${TEMP_D}/pt.backup\"\n\n\tlocal pt_info=\"${TEMP_D}/pt.info\"\n\tlocal pt_pretend=\"${TEMP_D}/pt.pretend\"\n\tlocal pt_data=\"${TEMP_D}/pt.data\"\n\tlocal out=\"${TEMP_D}/out\"\n\n\tlocal dev=\"disk=${DISK} partition=${PART}\"\n\n\tlocal pt_start pt_end pt_size last pt_max code guid name new_size\n\tlocal old new change_info sector_size\n\t\n\t# Dump the original partition information and details to disk. This is\n\t# used in case something goes wrong and human interaction is required\n\t# to revert any changes.\n\trqe sgd_info sgdisk \"--info=${PART}\" --print \"${DISK}\" >\"${pt_info}\" ||\n\t\tfail \"${dev}: failed to dump original sgdisk info\"\n\tRESTORE_HUMAN=\"${pt_info}\"\n\n\tsector_size=$(awk '$0 ~ /^Logical sector size:.*bytes/ { print $4 }' \\\n\t\t\"$pt_info\") && [ -n \"$sector_size\" ] || {\n\t\tsector_size=512\n\t\terror \"WARN: did not find sector size, assuming 512\"\n\t}\n\n\tdebug 1 \"$dev: original sgdisk info:\"\n\tdebugcat 1 \"${pt_info}\"\n\n\t# Pretend to move the backup GPT header to the end of the disk and dump\n\t# the resulting partition information. We use this info to determine if\n\t# we have to resize the partition.\n\trqe sgd_pretend sgdisk --pretend --move-second-header \\\n\t\t--print \"${DISK}\" >\"${pt_pretend}\" ||\n\t\tfail \"${dev}: failed to dump pretend sgdisk info\"\n\n\tdebug 1 \"$dev: pretend sgdisk info\"\n\tdebugcat 1 \"${pt_pretend}\"\n\n\t# Extract the partition data from the pretend dump\n\tawk 'found { print } ; $1 == \"Number\" { found = 1 }' \\\n\t\t\"${pt_pretend}\" >\"${pt_data}\" ||\n\t\tfail \"${dev}: failed to parse pretend sgdisk info\"\n\n\t# Get the start and end sectors of the partition to be grown\n\tpt_start=$(awk '$1 == '\"${PART}\"' { print $2 }' \"${pt_data}\") &&\n\t\t[ -n \"${pt_start}\" ] ||\n\t\tfail \"${dev}: failed to get start sector\"\n\tpt_end=$(awk '$1 == '\"${PART}\"' { print $3 }' \"${pt_data}\") &&\n\t\t[ -n \"${pt_end}\" ] ||\n\t\tfail \"${dev}: failed to get end sector\"\n\tpt_size=\"$((${pt_end} - ${pt_start}))\"\n\n\t# Get the last usable sector\n\tlast=$(awk '/last usable sector is/ { print $NF }' \\\n\t\t\"${pt_pretend}\") && [ -n \"${last}\" ] ||\n\t\tfail \"${dev}: failed to get last usable sector\"\n\n\t# Find the minimal start sector that is >= pt_end \n\tpt_max=$(awk '{ if ($2 >= pt_end && $2 < min) { min = $2 } } END \\\n\t\t{ print min }' min=\"${last}\" pt_end=\"${pt_end}\" \\\n\t\t\"${pt_data}\") && [ -n \"${pt_max}\" ] ||\n\t\tfail \"${dev}: failed to find max end sector\"\n\n\tdebug 1 \"${dev}: pt_start=${pt_start} pt_end=${pt_end}\" \\\n\t\t\"pt_size=${pt_size} pt_max=${pt_max} last=${last}\"\n\n\t# Check if the partition can be grown\n\t[ \"${pt_end}\" -eq \"${pt_max}\" ] &&\n\t\tnochange \"${dev}: size=${pt_size}, it cannot be grown\"\n\t[ \"$((${pt_end} + ${FUDGE}/${sector_size}))\" -gt \"${pt_max}\" ] &&\n\t\tnochange \"${dev}: could only be grown by\" \\\n\t\t\"$((${pt_max} - ${pt_end})) [fudge=$((${FUDGE}/$sector_size))]\"\n\n\t# The partition can be grown if we made it here. Get some more info\n\t# about it so we can do it properly.\n\t# FIXME: Do we care about the attribute flags?\n\tcode=$(awk '/^Partition GUID code:/ { print $4 }' \"${pt_info}\")\n\tguid=$(awk '/^Partition unique GUID:/ { print $4 }' \"${pt_info}\")\n\tname=$(awk '/^Partition name:/ { gsub(/'\"'\"'/, \"\") ; \\\n\t\tif (NF >= 3) print substr($0, index($0, $3)) }' \"${pt_info}\")\n\t[ -n \"${code}\" -a -n \"${guid}\" ] ||\n\t\tfail \"${dev}: failed to parse sgdisk details\"\n\n\tdebug 1 \"${dev}: code=${code} guid=${guid} name='${name}'\"\n\tlocal wouldrun=\"\"\n\t[ \"$DRY_RUN\" -ne 0 ] && wouldrun=\"would-run\"\n\n\t# Calculate the new size of the partition\n\tnew_size=$((${pt_max} - ${pt_start}))\n\told=\"old: size=${pt_size},end=${pt_end}\"\n\tnew=\"new: size=${new_size},end=${pt_max}\"\n\tchange_info=\"${dev}: start=${pt_start} ${old} ${new}\"\n\t\n\t# Backup the current partition table, we're about to modify it\n\trq sgd_backup $wouldrun sgdisk \"--backup=${GPT_BACKUP}\" \"${DISK}\" ||\n\t\tfail \"${dev}: failed to backup the partition table\"\n\n\t# Modify the partition table. We do it all in one go (the order is\n\t# important!):\n\t#  - move the GPT backup header to the end of the disk\n\t#  - delete the partition\n\t#  - recreate the partition with the new size\n\t#  - set the partition code\n\t#  - set the partition GUID\n\t#  - set the partition name\n\trq sgdisk_mod $wouldrun sgdisk --move-second-header \"--delete=${PART}\" \\\n\t\t\"--new=${PART}:${pt_start}:${pt_max}\" \\\n\t\t\"--typecode=${PART}:${code}\" \\\n\t\t\"--partition-guid=${PART}:${guid}\" \\\n\t\t\"--change-name=${PART}:${name}\" \"${DISK}\" &&\n\t\trq pt_update $wouldrun pt_update \"$DISK\" \"$PART\" || {\n\t\tRESTORE_FUNC=gpt_restore\n\t\tfail \"${dev}: failed to repartition\"\n\t}\n\n\t# Dry run\n\t[ \"${DRY_RUN}\" -ne 0 ] && change \"${change_info}\"\n\n\tchanged \"${change_info}\"\n}\n\nkver_to_num() {\n\tlocal kver=\"$1\" maj=\"\" min=\"\" mic=\"0\"\n\tkver=${kver%%-*}\n\tmaj=${kver%%.*}\n\tmin=${kver#${maj}.}\n\tmin=${min%%.*}\n\tmic=${kver#${maj}.${min}.}\n\t[ \"$kver\" = \"$mic\" ] && mic=0\n\t_RET=$(($maj*1000*1000+$min*1000+$mic))\n}\n\nkver_cmp() {\n\tlocal op=\"$2\" n1=\"\" n2=\"\"\n\tkver_to_num \"$1\"\n\tn1=\"$_RET\"\n\tkver_to_num \"$3\"\n\tn2=\"$_RET\"\n\t[ $n1 $op $n2 ]\n}\n\nrq() {\n\t# runquieterror(label, command)\n\t# gobble stderr of a command unless it errors\n\tlocal label=\"$1\" ret=\"\" efile=\"\"\n\tefile=\"$TEMP_D/$label.err\"\n\tshift;\n\n\tlocal rlabel=\"running\"\n\t[ \"$1\" = \"would-run\" ] && rlabel=\"would-run\" && shift\n\n\tlocal cmd=\"\" x=\"\"\n\tfor x in \"$@\"; do\n\t\t[ \"${x#* }\" != \"$x\" -o \"${x#* \\\"}\" != \"$x\" ] && x=\"'$x'\"\n\t\tcmd=\"$cmd $x\"\n\tdone\n\tcmd=${cmd# }\n\n\tdebug 2 \"$rlabel[$label][$_capture]\" \"$cmd\"\n\t[ \"$rlabel\" = \"would-run\" ] && return 0\n\n\tif [ \"${_capture}\" = \"erronly\" ]; then\n\t\t\"$@\" 2>\"$TEMP_D/$label.err\"\n\t\tret=$?\n\telse\n\t\t\"$@\" >\"$TEMP_D/$label.err\" 2>&1\n\t\tret=$?\n\tfi\n\tif [ $ret -ne 0 ]; then\n\t\terror \"failed [$label:$ret]\" \"$@\"\n \t\tcat \"$efile\" 1>&2\n\tfi\n\treturn $ret\n}\n\nrqe() {\n\tlocal _capture=\"erronly\"\n\trq \"$@\"\n}\n\nverify_ptupdate() {\n\tlocal input=\"$1\" found=\"\" reason=\"\" kver=\"\"\n\n\t# we can always satisfy 'off'\n\tif [ \"$input\" = \"off\" ]; then\n \t\t_RET=\"false\";\n\t\treturn 0;\n\tfi\n\n\tif command -v partx >/dev/null 2>&1; then\n\t\tlocal out=\"\" ret=0\n\t\tout=$(partx --help 2>&1)\n\t\tret=$?\n\t\tif [ $ret -eq 0 ]; then\n\t\t\techo \"$out\" | grep -q -- --update || {\n\t\t\t\treason=\"partx has no '--update' flag in usage.\"\n\t\t\t\tfound=\"off\"\n\t\t\t}\n\t\telse\n\t\t\treason=\"'partx --help' returned $ret. assuming it is old.\"\n\t\t\tfound=\"off\"\n\t\tfi\n\telse\n\t\treason=\"no 'partx' command\"\n\t\tfound=\"off\"\n\tfi\n\n\tif [ -z \"$found\" ]; then\n\t\tif [ \"$(uname)\" != \"Linux\" ]; then\n\t\t\treason=\"Kernel is not Linux per uname.\"\n\t\t\tfound=\"off\"\n\t\tfi\n\tfi\n\n\tif [ -z \"$found\" ]; then\n\t\tkver=$(uname -r) || debug 1 \"uname -r failed!\"\n\n\t\tif ! kver_cmp \"${kver-0.0.0}\" -ge 3.8.0; then\n\t\t\treason=\"Kernel '$kver' < 3.8.0.\"\n\t\t\tfound=\"off\"\n\t\tfi\n\tfi\n\n\tif [ -z \"$found\" ]; then\n\t\t_RET=\"true\"\n\t\treturn 0\n\tfi\n\n\tcase \"$input\" in\n\t\ton) error \"$reason\"; return 1;;\n\t\tauto)\n\t\t\t_RET=\"false\";\n\t\t\tdebug 1 \"partition update disabled: $reason\"\n\t\t\treturn 0;;\n\t\tforce)\n\t\t\t_RET=\"true\"\n\t\t\terror \"WARNING: ptupdate forced on even though: $reason\"\n\t\t\treturn 0;;\n\tesac\n\terror \"unknown input '$input'\";\n\treturn 1;\n}\n\npt_update() {\n\tlocal dev=\"$1\" part=\"$2\" update=\"${3:-$PT_UPDATE}\"\n\tif ! $update; then\n\t\treturn 0\n\tfi\n\t# partx only works on block devices (do not run on file)\n\t[ -b \"$dev\" ] || return 0\n\tpartx --update \"$part\" \"$dev\"\n}\n\nhas_cmd() {\n\tcommand -v \"${1}\" >/dev/null 2>&1\n}\n\nresize_sgdisk_gpt() {\n\tresize_sgdisk gpt\n}\n\nresize_sgdisk_dos() {\n\tfail \"unable to resize dos label with sgdisk\"\n}\n\nresize_sfdisk_gpt() {\n\tresize_sfdisk gpt\n}\n\nresize_sfdisk_dos() {\n\tresize_sfdisk dos\n}\n\nget_table_format() {\n\tlocal out=\"\" disk=\"$1\"\n\tif has_cmd blkid && out=$(blkid -o value -s PTTYPE \"$disk\") &&\n\t\t[ \"$out\" = \"dos\" -o \"$out\" = \"gpt\" ]; then\n\t\t_RET=\"$out\"\n\t\treturn\n\tfi\n\t_RET=\"dos\"\n\tif [ ${SFDISK_VERSION} -lt ${SFDISK_2_26} ] &&\n\t\tout=$(sfdisk --id --force \"$disk\" 1 2>/dev/null); then\n\t\tif [ \"$out\" = \"ee\" ]; then\n\t\t\t_RET=\"gpt\"\n\t\telse\n\t\t\t_RET=\"dos\"\n\t\tfi\n\t\treturn\n\telif out=$(LANG=C sfdisk --list \"$disk\"); then\n\t\tout=$(echo \"$out\" | sed -e '/Disklabel type/!d' -e 's/.*: //')\n\t\tcase \"$out\" in\n\t\t\tgpt|dos) _RET=\"$out\";;\n\t\t\t*) error \"WARN: unknown label $out\";;\n\t\tesac\n\tfi\n}\n\nget_resizer() {\n\tlocal format=\"$1\" user=${2:-\"auto\"}\n\n\tcase \"$user\" in\n\t\tsgdisk) _RET=\"resize_sgdisk_$format\"; return;;\n\t\tsfdisk) _RET=\"resize_sfdisk_$format\"; return;;\n\t\tauto) :;;\n\t\t*) error \"unexpected input: '$user'\";;\n\tesac\n\n\tif [ \"$format\" = \"dos\" ]; then\n\t\t_RET=\"resize_sfdisk_dos\"\n\t\treturn 0\n\tfi\n\n\tif [ \"${SFDISK_VERSION}\" -ge ${SFDISK_V_WORKING_GPT} ]; then\n\t\t# sfdisk 2.26.2 works for resize but loses type (LP: #1474090)\n\t\t_RET=\"resize_sfdisk_gpt\"\n\telif has_cmd sgdisk; then\n\t\t_RET=\"resize_sgdisk_$format\"\n\telse\n\t\terror \"no tools available to resize disk with '$format'\"\n\t\treturn 1\n\tfi\n\treturn 0\n}\n\npt_update=\"auto\"\nresizer=${GROWPART_RESIZER:-\"auto\"}\nwhile [ $# -ne 0 ]; do\n\tcur=${1}\n\tnext=${2}\n\tcase \"$cur\" in\n\t\t-h|--help)\n\t\t\tUsage\n\t\t\texit 0\n\t\t\t;;\n\t\t--fudge)\n\t\t\tFUDGE=${next}\n\t\t\tshift\n\t\t\t;;\n\t\t-N|--dry-run)\n\t\t\tDRY_RUN=1\n\t\t\t;;\n\t\t-u|--update|--update=*)\n\t\t\tif [ \"${cur#--update=}\" != \"$cur\" ]; then\n\t\t\t\tnext=\"${cur#--update=}\"\n\t\t\telse\n\t\t\t\tshift\n\t\t\tfi\n\t\t\tcase \"$next\" in\n\t\t\t\toff|auto|force|on) pt_update=$next;;\n\t\t\t\t*) fail \"unknown --update option: $next\";;\n\t\t\tesac\n\t\t\t;;\n\t\t-v|--verbose)\n\t\t\tVERBOSITY=$(($VERBOSITY+1))\n\t\t\t;;\n\t\t--)\n\t\t\tshift\n\t\t\tbreak\n\t\t\t;;\n\t\t-*)\n\t\t\tfail \"unknown option ${cur}\"\n\t\t\t;;\n\t\t*)\n\t\t\tif [ -z \"${DISK}\" ]; then\n\t\t\t\tDISK=${cur}\n\t\t\telse\n\t\t\t\t[ -z \"${PART}\" ] || fail \"confused by arg ${cur}\"\n\t\t\t\tPART=${cur}\n\t\t\tfi\n\t\t\t;;\n\tesac\n\tshift\ndone\n\n[ -n \"${DISK}\" ] || bad_Usage \"must supply disk and partition-number\"\n[ -n \"${PART}\" ] || bad_Usage \"must supply partition-number\"\n\nhas_cmd \"sfdisk\" || fail \"sfdisk not found\"\nget_sfdisk_version || fail\n\n[ -e \"${DISK}\" ] || fail \"${DISK}: does not exist\"\n\n[ \"${PART#*[!0-9]}\" = \"${PART}\" ] || fail \"partition-number must be a number\"\n\nverify_ptupdate \"$pt_update\" || fail\nPT_UPDATE=$_RET\n\ndebug 1 \"update-partition set to $PT_UPDATE\"\n\nmktemp_d && TEMP_D=\"${_RET}\" || fail \"failed to make temp dir\"\ntrap cleanup 0 # EXIT - some shells may not like 'EXIT' but are ok with 0\n\n# get the ID of the first partition to determine if it's MBR or GPT\nget_table_format \"$DISK\" || fail\nformat=$_RET\nget_resizer \"$format\" \"$resizer\" ||\n    fail \"failed to get a resizer for id '$id'\"\nresizer=$_RET\n\ndebug 1 \"resizing $PART on $DISK using $resizer\"\n\"$resizer\"\n\n# vi: ts=4 noexpandtab\n"
  },
  {
    "path": "images/01-base/usr/bin/start_ntp.sh",
    "content": "#!/bin/sh\nset -ex\necho \"starting in one shot mode to fix large time differences\"\nntpd -gq\necho \"starting long running nptd\"\nexec ntpd --nofork -g\n"
  },
  {
    "path": "images/01-base/usr/lib/dhcpcd/dhcpcd-hooks/10-mtu",
    "content": "# Configure the MTU for the interface\n\nmtu_dir=\"$state_dir/mtu\"\n\nset_mtu()\n{\n\tlocal mtu=$1\n\n\tif [ -w /sys/class/net/$interface/mtu ]; then\n\t\techo \"$mtu\" >/sys/class/net/$interface/mtu\n\telse\n\t\tifconfig \"$interface\" mtu \"$mtu\"\n\tfi\n}\n\nif [ \"$reason\" = PREINIT -a -e \"$mtu_dir/$interface\" ]; then\n\trm \"$mtu_dir/$interface\"\nelif [ -n \"$new_interface_mtu\" ] && $if_up; then\n\t# The smalled MTU dhcpcd can work with is 576\n\tif [ \"$new_interface_mtu\" -ge 576 ]; then\n\t\tif set_mtu \"$new_interface_mtu\"; then\n\t\t\tsyslog info \"MTU set to $new_interface_mtu\"\n\t\t\t# Save the MTU so we can restore it later\n\t\t\tif [ ! -e \"$mtu_dir/$interface\" ]; then\n\t\t\t\tmkdir -p \"$mtu_dir\"\n\t\t\t\techo \"$ifmtu\" > \"$mtu_dir/$interface\"\n\t\t\tfi\n\t\tfi\n\tfi\nelif [ -e \"$mtu_dir/$interface\" ]; then\n\tif $if_up || $if_down; then\n\t\t# No MTU in this state, so restore the prior MTU\n\t\tmtu=$(cat \"$mtu_dir/$interface\")\n\t\tsyslog info \"MTU restored to $mtu\"\n\t\tset_mtu \"$mtu\"\n\t\trm \"$mtu_dir/$interface\"\n\tfi\nfi\n"
  },
  {
    "path": "images/01-base/usr/lib/dhcpcd/dhcpcd-run-hooks",
    "content": "#!/bin/sh\n# dhcpcd client configuration script \n#\n# dhcpcd 6.11.5\n# Copyright (c) 2006-2016 Roy Marples\n# Compiled in features: INET IPv4LL INET6 DHCPv6 AUTH\n#\n# Fixed issues:\n# - remove logger in syslog func: https://github.com/rancher/os/issues/2684\n\n\n# Handy variables and functions for our hooks to use\ncase \"$reason\" in\n\tROUTERADVERT)\n\t\tifsuffix=\".ra\";;\n\tINFORM6|BOUND6|RENEW6|REBIND6|REBOOT6|EXPIRE6|RELEASE6|STOP6)\n\t\tifsuffix=\".dhcp6\";;\n\tIPV4LL)\n\t\tifsuffix=\".ipv4ll\";;\n\t*)\n\t\tifsuffix=\".dhcp\";;\nesac\nifname=\"$interface$ifsuffix\"\n\nfrom=from\nsignature_base=\"# Generated by dhcpcd\"\nsignature=\"$signature_base $from $ifname\"\nsignature_base_end=\"# End of dhcpcd\"\nsignature_end=\"$signature_base_end $from $ifname\"\nstate_dir=/var/run/dhcpcd\n_detected_init=false\n\n: ${if_up:=false}\n: ${if_down:=false}\n: ${syslog_debug:=false}\n\n# Ensure that all arguments are unique\nuniqify()\n{\n\tlocal result= i=\n\tfor i do\n\t\tcase \" $result \" in\n\t\t\t*\" $i \"*);;\n\t\t\t*) result=\"$result $i\";;\n\t\tesac\n\tdone\n\techo \"${result# *}\"\n}\n\n# List interface config files in a directory.\n# If dhcpcd is running as a single instance then it will have a list of\n# interfaces in the preferred order.\n# Otherwise we just use what we have.\nlist_interfaces()\n{\n\tlocal i= x= ifaces=\n\tfor i in $interface_order; do\n\t\tfor x in \"$1\"/$i.*; do\n\t\t\t[ -f \"$x\" ] && ifaces=\"$ifaces${ifaces:+ }${x##*/}\"\n\t\tdone\n\tdone\n\tfor x in \"$1\"/*; do\n\t\t[ -f \"$x\" ] && ifaces=\"$ifaces${ifaces:+ }${x##*/}\"\n\tdone\n\tuniqify $ifaces\n}\n\n# Trim function\ntrim()\n{\n\tlocal var=\"$*\"\n\n\tvar=${var#\"${var%%[![:space:]]*}\"}\n\tvar=${var%\"${var##*[![:space:]]}\"}\n\tif [ -z \"$var\" ]; then\n\t\t# So it seems our shell doesn't support wctype(3) patterns\n\t\t# Fall back to sed\n\t\tvar=$(echo \"$*\" | sed -e 's/^[[:space:]]*//;s/[[:space:]]*$//')\n\tfi\n\tprintf %s \"$var\"\n}\n\n# We normally use sed to extract values using a key from a list of files\n# but sed may not always be available at the time.\nkey_get_value()\n{\n\tlocal key=\"$1\" value= x= line=\n\n\tshift\n\tif type sed >/dev/null 2>&1; then\n\t\tsed -n \"s/^$key//p\" $@\n\telse\n\t\tfor x do\n\t\t\twhile read line; do\n\t\t\t\tcase \"$line\" in\n\t\t\t\t\"$key\"*) echo \"${line##$key}\";;\n\t\t\t\tesac\n\t\t\tdone < \"$x\"\n\t\tdone\n\tfi\n}\n\n# We normally use sed to remove markers from a configuration file\n# but sed may not always be available at the time.\nremove_markers()\n{\n\tlocal m1=\"$1\" m2=\"$2\" x= line= in_marker=0\n\n\tshift; shift\n\tif type sed >/dev/null 2>&1; then\n\t\tsed \"/^$m1/,/^$m2/d\" $@\n\telse\n\t\tfor x do\n\t\t\twhile read line; do\n\t\t\t\tcase \"$line\" in\n\t\t\t\t\"$m1\"*) in_marker=1;;\n\t\t\t\t\"$m2\"*) in_marker=0;;\n\t\t\t\t*) [ $in_marker = 0 ] && echo \"$line\";;\n\t\t\t\tesac\n\t\t\tdone < \"$x\"\n\t\tdone\n\tfi\n}\n\n# Compare two files.\ncomp_file()\n{\n\n\t[ -e \"$1\" -a -e \"$2\" ] || return 1\n\n\tif type cmp >/dev/null 2>&1; then\n\t\tcmp -s \"$1\" \"$2\"\n\telif type diff >/dev/null 2>&1; then\n\t\tdiff -q \"$1\" \"$2\" >/dev/null\n\telse\n\t\t# Hopefully we're only working on small text files ...\n\t\t[ \"$(cat \"$1\")\" = \"$(cat \"$2\")\" ]\n\tfi\n}\n\n# Compare two files.\n# If different, replace first with second otherwise remove second.\nchange_file()\n{\n\n\tif [ -e \"$1\" ]; then\n\t\tif comp_file \"$1\" \"$2\"; then\n\t\t\trm -f \"$2\"\n\t\t\treturn 1\n\t\tfi\n\tfi\n\tcat \"$2\" > \"$1\"\n\trm -f \"$2\"\n\treturn 0\n}\n\n# Compare two files.\n# If different, copy or link depending on target type\ncopy_file()\n{\n\n\tif [ -h \"$2\" ]; then\n\t\t[ \"$(readlink \"$2\")\" = \"$1\" ] && return 1\n\t\tln -sf \"$1\" \"$2\"\n\telse\n\t\tcomp_file \"$1\" \"$2\" && return 1\n\t\tcat \"$1\" >\"$2\"\n\tfi\n}\n\n# Save a config file\nsave_conf()\n{\n\n\tif [ -f \"$1\" ]; then\n\t\trm -f \"$1-pre.$interface\"\n\t\tcat \"$1\" > \"$1-pre.$interface\"\n\tfi\n}\n\n# Restore a config file\nrestore_conf()\n{\n\n\t[ -f \"$1-pre.$interface\" ] || return 1\n\tcat \"$1-pre.$interface\" > \"$1\"\n\trm -f \"$1-pre.$interface\"\n}\n\n# Write a syslog entry\nsyslog()\n{\n\tlocal lvl=\"$1\"\n\n\tif [ \"$lvl\" = debug ]; then\n\t\t${syslog_debug} || return 0\n\tfi\n\t[ -n \"$lvl\" ] && shift\n\t[ -n \"$*\" ] || return 0\n\tcase \"$lvl\" in\n\terr|error)\techo \"$interface: $*\" >&2;;\n\t*)\t\techo \"$interface: $*\";;\n\tesac\n}\n\n# Check for a valid domain name as per RFC1123 with the exception of\n# allowing - and _ as they seem to be widely used.\nvalid_domainname()\n{\n\tlocal name=\"$1\" label\n\n\t[ -z \"$name\" -o ${#name} -gt 255 ] && return 1\n\t\n\twhile [ -n \"$name\" ]; do\n\t\tlabel=\"${name%%.*}\"\n\t\t[ -z \"$label\" -o ${#label} -gt 63 ] && return 1\n\t\tcase \"$label\" in\n\t\t-*|_*|*-|*_)\t\treturn 1;;\n\t\t# some sh require - as the first or last character in the class\n\t\t# when matching it\n\t\t*[![:alnum:]_-]*)\treturn 1;;\n\t\tesac\n\t\t[ \"$name\" = \"${name#*.}\" ] && break\n\t\tname=\"${name#*.}\"\n\tdone\n\treturn 0\t\n}\n\nvalid_domainname_list()\n{\n\tlocal name\n\n\tfor name do\n\t\tvalid_domainname \"$name\" || return $?\n\tdone\n\treturn 0\n}\n\n# Check for a valid path\nvalid_path()\n{\n\n\tcase \"$@\" in\n\t*[![:alnum:]#%+-_:\\.,@~\\\\/\\[\\]=\\ ]*) return 1;;\n\tesac\n\treturn 0\n}\n\n# With the advent of alternative init systems, it's possible to have\n# more than one installed. So we need to try and guess what one we're\n# using unless overriden by configure.\ndetect_init()\n{\n\t_service_exists=\"\"\n\t_service_cmd=\"\"\n\t_service_status=\"\"\n\n\t[ -n \"$_service_cmd\" ] && return 0\n\n\tif ${_detected_init}; then\n\t\t[ -n \"$_service_cmd\" ]\n\t\treturn $?\n\tfi\n\n\t# Detect the running init system.\n\t# As systemd and OpenRC can be installed on top of legacy init\n\t# systems we try to detect them first.\n\tlocal status=\"\"\n\t: ${status:=status}\n\tif [ -x /bin/systemctl -a -S /run/systemd/private ]; then\n\t\t_service_exists=\"/bin/systemctl --quiet is-enabled \\$1.service\"\n\t\t_service_status=\"/bin/systemctl --quiet is-active \\$1.service\"\n\t\t_service_cmd=\"/bin/systemctl \\$2 \\$1.service\"\n\telif [ -x /usr/bin/systemctl -a -S /run/systemd/private ]; then\n\t\t_service_exists=\"/usr/bin/systemctl --quiet is-enabled \\$1.service\"\n\t\t_service_status=\"/usr/bin/systemctl --quiet is-active \\$1.service\"\n\t\t_service_cmd=\"/usr/bin/systemctl \\$2 \\$1.service\"\n\telif [ -x /sbin/rc-service -a \\\n\t    -s /libexec/rc/init.d/softlevel -o -s /run/openrc/softlevel ]\n\tthen\n\t\t_service_exists=\"/sbin/rc-service -e \\$1\"\n\t\t_service_cmd=\"/sbin/rc-service \\$1 -- -D \\$2\"\n\telif [ -x /usr/sbin/invoke-rc.d ]; then\n\t\t_service_exists=\"/usr/sbin/invoke-rc.d --query --quiet \\$1 start >/dev/null 2>&1 || [ \\$? = 104 ]\"\n\t\t_service_cmd=\"/usr/sbin/invoke-rc.d \\$1 \\$2\"\n\telif [ -x /sbin/service ]; then\n\t\t_service_exists=\"/sbin/service \\$1 >/dev/null 2>&1\"\n\t\t_service_cmd=\"/sbin/service \\$1 \\$2\"\n\telif [ -x /usr/sbin/service ]; then\n\t\t_service_exists=\"/usr/sbin/service \\$1 $status >/dev/null 2>&1\"\n\t\t_service_cmd=\"/usr/sbin/service \\$1 \\$2\"\n\telif [ -x /bin/sv ]; then\n\t\t_service_exists=\"/bin/sv status \\1 >/dev/null 2>&1\"\n\t\t_service_cmd=\"/bin/sv \\$1 \\$2\"\n\telif [ -x /usr/bin/sv ]; then\n\t\t_service_exists=\"/usr/bin/sv status \\1 >/dev/null 2>&1\"\n\t\t_service_cmd=\"/usr/bin/sv \\$1 \\$2\"\n\telif [ -e /etc/slackware-version -a -d /etc/rc.d ]; then\n\t\t_service_exists=\"[ -x /etc/rc.d/rc.\\$1 ]\"\n\t\t_service_cmd=\"/etc/rc.d/rc.\\$1 \\$2\"\n\t\t_service_status=\"/etc/rc.d/rc.\\$1 status >/dev/null 2>&1\"\n\telse\n\t\tfor x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do\n\t\t\tif [ -d $x ]; then\n\t\t\t\t_service_exists=\"[ -x $x/\\$1 ]\"\n\t\t\t\t_service_cmd=\"$x/\\$1 \\$2\"\n\t\t\t\t_service_status=\"$x/\\$1 $status >/dev/null 2>&1\"\n\t\t\t\tbreak\n\t\t\tfi\n\t\tdone\n\t\tif [ -e /etc/arch-release ]; then\n\t\t\t_service_status=\"[ -e /var/run/daemons/\\$1 ]\"\n\t\telif [ \"$x\" = \"/etc/rc.d\" -a -e /etc/rc.d/rc.subr ]; then\n\t\t\t_service_status=\"$x/\\$1 check >/dev/null 2>&1\"\n\t\tfi\n\tfi\n\n\t_detected_init=true\n\tif [ -z \"$_service_cmd\" ]; then\n\t\tsyslog err \"could not detect a useable init system\"\n\t\treturn 1\n\tfi\n\treturn 0\n}\n\n# Check a system service exists \nservice_exists()\n{\n\n\tif [ -z \"$_service_exists\" ]; then\n\t\tdetect_init || return 1\n\tfi\n\teval $_service_exists\n}\n\n# Send a command to a system service\nservice_cmd()\n{\n\n\tif [ -z \"$_service_cmd\" ]; then\n\t\tdetect_init || return 1\n\tfi\n\teval $_service_cmd\n}\n\n# Send a command to a system service if it is running\nservice_status()\n{\n\n\tif [ -z \"$_service_cmd\" ]; then\n\t\tdetect_init || return 1\n\tfi\n\tif [ -n \"$_service_status\" ]; then\n\t\teval $_service_status\n\telse\n\t\tservice_command $1 status >/dev/null 2>&1\n\tfi\n}\n\n# Handy macros for our hooks\nservice_command()\n{\n\n\tservice_exists $1 && service_cmd $1 $2\n}\nservice_condcommand()\n{\n\n\tservice_exists $1 && service_status $1 && service_cmd $1 $2\n}\n\n# We source each script into this one so that scripts run earlier can\n# remove variables from the environment so later scripts don't see them.\n# Thus, the user can create their dhcpcd.enter/exit-hook script to configure\n# /etc/resolv.conf how they want and stop the system scripts ever updating it.\nfor hook in \\\n\t/etc/dhcpcd.enter-hook \\\n\t/lib/dhcpcd/dhcpcd-hooks/* \\\n\t/etc/dhcpcd.exit-hook\ndo\n\tfor skip in $skip_hooks; do\n\t\tcase \"$hook\" in\n\t\t\t*/*~)\t\t\t\tcontinue 2;;\n\t\t\t*/\"$skip\")\t\t\tcontinue 2;;\n\t\t\t*/[0-9][0-9]\"-$skip\")\t\tcontinue 2;;\n\t\t\t*/[0-9][0-9]\"-$skip.sh\")\tcontinue 2;;\n\t\tesac\n\tdone\n\tif [ -f \"$hook\" ]; then\n\t\t. \"$hook\"\n\tfi\ndone\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/50-firmware.rules",
    "content": "# stub for immediately telling the kernel that userspace firmware loading\n# failed; necessary to avoid long timeouts with CONFIG_FW_LOADER_USER_HELPER=y\nSUBSYSTEM==\"firmware\", ACTION==\"add\", ATTR{loading}=\"-1\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/70-uaccess.rules",
    "content": "#  This file is part of systemd.\n#\n#  systemd is free software; you can redistribute it and/or modify it\n#  under the terms of the GNU Lesser General Public License as published by\n#  the Free Software Foundation; either version 2.1 of the License, or\n#  (at your option) any later version.\n\nACTION==\"remove\", GOTO=\"uaccess_end\"\nENV{MAJOR}==\"\", GOTO=\"uaccess_end\"\n\n# PTP/MTP protocol devices, cameras, portable media players\nSUBSYSTEM==\"usb\", ENV{ID_USB_INTERFACES}==\"*:060101:*\", TAG+=\"uaccess\"\n\n# Digicams with proprietary protocol\nENV{ID_GPHOTO2}==\"?*\", TAG+=\"uaccess\"\n\n# SCSI and USB scanners\nENV{libsane_matched}==\"yes\", TAG+=\"uaccess\"\n\n# HPLIP devices (necessary for ink level check and HP tool maintenance)\nENV{ID_HPLIP}==\"1\", TAG+=\"uaccess\"\n\n# optical drives\nSUBSYSTEM==\"block\", ENV{ID_CDROM}==\"1\", TAG+=\"uaccess\"\nSUBSYSTEM==\"scsi_generic\", SUBSYSTEMS==\"scsi\", ATTRS{type}==\"4|5\", TAG+=\"uaccess\"\n\n# Sound devices\nSUBSYSTEM==\"sound\", TAG+=\"uaccess\" \\\n  OPTIONS+=\"static_node=snd/timer\", OPTIONS+=\"static_node=snd/seq\"\n\n# ffado is an userspace driver for firewire sound cards\nSUBSYSTEM==\"firewire\", ENV{ID_FFADO}==\"1\", TAG+=\"uaccess\"\n\n# Webcams, frame grabber, TV cards\nSUBSYSTEM==\"video4linux\", TAG+=\"uaccess\"\nSUBSYSTEM==\"dvb\", TAG+=\"uaccess\"\n\n# IIDC devices: industrial cameras and some webcams\nSUBSYSTEM==\"firewire\", ATTR{units}==\"*0x00a02d:0x00010*\",  TAG+=\"uaccess\"\nSUBSYSTEM==\"firewire\", ATTR{units}==\"*0x00b09d:0x00010*\",  TAG+=\"uaccess\"\n# AV/C devices: camcorders, set-top boxes, TV sets, audio devices, and more\nSUBSYSTEM==\"firewire\", ATTR{units}==\"*0x00a02d:0x010001*\", TAG+=\"uaccess\"\nSUBSYSTEM==\"firewire\", ATTR{units}==\"*0x00a02d:0x014001*\", TAG+=\"uaccess\"\n\n# DRI video devices\nSUBSYSTEM==\"drm\", KERNEL==\"card*|renderD*\", TAG+=\"uaccess\"\n\n# KVM\nSUBSYSTEM==\"misc\", KERNEL==\"kvm\", TAG+=\"uaccess\"\n\n# smart-card readers\nENV{ID_SMARTCARD_READER}==\"?*\", TAG+=\"uaccess\"\n\n# (USB) authentication devices\nENV{ID_SECURITY_TOKEN}==\"?*\", TAG+=\"uaccess\"\n\n# PDA devices\nENV{ID_PDA}==\"?*\", TAG+=\"uaccess\"\n\n# Programmable remote control\nENV{ID_REMOTE_CONTROL}==\"1\", TAG+=\"uaccess\"\n\n# joysticks\nSUBSYSTEM==\"input\", ENV{ID_INPUT_JOYSTICK}==\"?*\", TAG+=\"uaccess\"\n\n# color measurement devices\nENV{COLOR_MEASUREMENT_DEVICE}==\"?*\", TAG+=\"uaccess\"\n\n# DDC/CI device, usually high-end monitors such as the DreamColor\nENV{DDC_DEVICE}==\"?*\", TAG+=\"uaccess\"\n\n# media player raw devices (for user-mode drivers, Android SDK, etc.)\nSUBSYSTEM==\"usb\", ENV{ID_MEDIA_PLAYER}==\"?*\", TAG+=\"uaccess\"\n\n# software-defined radio communication devices\nENV{ID_SOFTWARE_RADIO}==\"?*\", TAG+=\"uaccess\"\n\nLABEL=\"uaccess_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/73-special-net-names.rules",
    "content": "# On Dell PowerEdge systems, the iDRAC7 and later support a USB Virtual NIC\n#   which terminates in the iDRAC. Help identify this with 'idrac'\nACTION==\"add\", SUBSYSTEM==\"net\", SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"a102\", NAME=\"idrac\"\n\n# ibmveth devices' $DEVPATH number is tied to (virtual) hardware (slot id\n# selected in the HMC), thus this provides a reliable naming (e. g.\n# \"/devices/vio/30000002/net/eth1\"); we ignore the bus number, as\n# there should only ever be one bus, and then remove leading zeros\nACTION==\"add\", SUBSYSTEM==\"net\", NAME==\"\", DRIVERS==\"ibmveth\", PROGRAM=\"/bin/sh -ec 'D=${DEVPATH#*/vio/}; D=${D%%%%/*}; D=${D#????}; D=${D#0}; D=${D#0}; D=${D#0}; D=${D#0}; echo ${D:-0}'\", NAME=\"ibmveth$result\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/73-usb-net-by-mac.rules",
    "content": "# Use MAC based names for network interfaces which are directly or indirectly\n# on USB and have an universally administered (stable) MAC address (second bit\n# is 0). Don't do this when ifnames is disabled via kernel command line or\n# customizing/disabling 80-net-setup-link.rules.\n\nIMPORT{cmdline}=\"net.ifnames\"\nENV{net.ifnames}==\"0\", GOTO=\"usb_net_by_mac_end\"\n\nACTION==\"add\", SUBSYSTEM==\"net\", SUBSYSTEMS==\"usb\", NAME==\"\", \\\n    ATTR{address}==\"?[014589cd]:*\", \\\n    TEST!=\"/etc/udev/rules.d/80-net-setup-link.rules\", \\\n    IMPORT{builtin}=\"net_id\", NAME=\"$env{ID_NET_NAME_MAC}\"\n\nLABEL=\"usb_net_by_mac_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-cinterion-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_cinterion_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_cinterion_port_types_end\"\nENV{ID_VENDOR_ID}!=\"1e2d\", GOTO=\"mm_cinterion_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\nATTRS{idVendor}==\"1e2d\", ATTRS{idProduct}==\"0053\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_CINTERION_PORT_TYPE_GPS}=\"1\"\n\nLABEL=\"mm_cinterion_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-dell-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_dell_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"413c\", GOTO=\"mm_dell_vendorcheck\"\nGOTO=\"mm_dell_port_types_end\"\n\nLABEL=\"mm_dell_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# DW5580 is a Dell-branded Telit modem\n# tag is needed here both for dynamic port recognition and  minimizing port probing time\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"81ba\", ENV{ID_MM_TELIT_TAGGED}=\"1\", ENV{ID_MM_TELIT_PORTS_TAGGED}=\"1\"\n\nGOTO=\"mm_dell_port_types_end\"\nLABEL=\"mm_dell_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-ericsson-mbm.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_mbm_end\"\nSUBSYSTEMS==\"usb\", GOTO=\"mm_mbm_check\"\nGOTO=\"mm_mbm_end\"\n\nLABEL=\"mm_mbm_check\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# Ericsson F3507g\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1900\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1900\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1902\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1902\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F3607gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1904\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1904\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1905\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1905\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1906\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1906\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F3307\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"190a\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1909\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F3307 R2\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1914\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C3607w\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1049\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C3607w v2\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"190b\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F5521gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"190d\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"190d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1911\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1911\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson H5321gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1919\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson H5321w\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"191d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F5321gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1917\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson F5321w\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"191b\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C5621gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"191f\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C5621w\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1921\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson H5321gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1926\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1926\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1927\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1927\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C3304w\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1928\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Ericsson C5621 TFF\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"1936\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Sony-Ericsson MD300\nATTRS{idVendor}==\"0fce\", ATTRS{idProduct}==\"d0cf\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Sony-Ericsson MD400\nATTRS{idVendor}==\"0fce\", ATTRS{idProduct}==\"d0e1\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Sony-Ericsson MD400G\nATTRS{idVendor}==\"0fce\", ATTRS{idProduct}==\"d103\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Dell 5560\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818e\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Dell 5550\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Dell 5530 HSDPA\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8147\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8147\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Dell F3607gw\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8183\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8183\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8184\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8184\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Dell F3307\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818b\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818b\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818c\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"818c\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP hs2330 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"271d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP hs2320 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"261d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP hs2340 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"3a1d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP hs2350 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"3d1d\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"3d1d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP lc2000 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"301d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# HP lc2010 Mobile Broadband Module\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"2f1d\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Toshiba\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"130b\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"130b\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Toshiba F3607gw\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"130c\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"130c\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1311\", ENV{.MM_USBIFNUM}==\"09\", ENV{ID_MM_ERICSSON_MBM_GPS_PORT}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1311\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Toshiba F3307\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1315\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1316\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1317\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Toshiba F5521gw\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1313\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1314\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Toshiba H5321gw\nATTRS{idVendor}==\"0930\", ATTRS{idProduct}==\"1319\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\n# Lenovo N5321gw\nATTRS{idVendor}==\"0bdb\", ATTRS{idProduct}==\"193e\", ENV{ID_MM_ERICSSON_MBM}=\"1\"\n\nLABEL=\"mm_mbm_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-haier-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_haier_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_haier_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"201e\", GOTO=\"mm_haier_port_types_vendorcheck\"\nGOTO=\"mm_haier_port_types_end\"\n\nLABEL=\"mm_haier_port_types_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# Haier CE81B\nATTRS{idVendor}==\"201e\", ATTRS{idProduct}==\"10f8\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_HAIER_PORT_TYPE_MODEM}=\"1\"\n\nLABEL=\"mm_haier_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-huawei-net-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\nACTION!=\"add|change|move\", GOTO=\"mm_huawei_port_types_end\"\n\nENV{ID_VENDOR_ID}!=\"12d1\", GOTO=\"mm_huawei_port_types_end\"\n\n# MU609 does not support getportmode (crashes modem with default firmware)\nATTRS{idProduct}==\"1573\", ENV{ID_MM_HUAWEI_DISABLE_GETPORTMODE}=\"1\"\n\n# Mark the modem and at port flags for ModemManager\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"01\", ATTRS{bInterfaceProtocol}==\"01\", ENV{ID_MM_HUAWEI_MODEM_PORT}=\"1\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"01\", ATTRS{bInterfaceProtocol}==\"02\", ENV{ID_MM_HUAWEI_AT_PORT}=\"1\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"02\", ATTRS{bInterfaceProtocol}==\"01\", ENV{ID_MM_HUAWEI_MODEM_PORT}=\"1\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"02\", ATTRS{bInterfaceProtocol}==\"02\", ENV{ID_MM_HUAWEI_AT_PORT}=\"1\"\n\n# GPS NMEA port on MU609\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"01\", ATTRS{bInterfaceProtocol}==\"05\", ENV{ID_MM_HUAWEI_GPS_PORT}=\"1\"\n# GPS NMEA port on MU909\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"ff\", ATTRS{bInterfaceSubClass}==\"01\", ATTRS{bInterfaceProtocol}==\"14\", ENV{ID_MM_HUAWEI_GPS_PORT}=\"1\"\n\n# Only the standard ECM or NCM port can support dial-up with AT NDISDUP through AT port\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"02\", ATTRS{bInterfaceSubClass}==\"06\",ATTRS{bInterfaceProtocol}==\"00\", ENV{ID_MM_HUAWEI_NDISDUP_SUPPORTED}=\"1\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceClass}==\"02\", ATTRS{bInterfaceSubClass}==\"0d\",ATTRS{bInterfaceProtocol}==\"00\", ENV{ID_MM_HUAWEI_NDISDUP_SUPPORTED}=\"1\"\n\nLABEL=\"mm_huawei_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-longcheer-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\n# Longcheer makes modules that other companies rebrand, like:\n#\n# Alcatel One Touch X020\n# Alcatel One Touch X030\n# MobiData MBD-200HU\n# ST Mobile Connect HSUPA USB Modem\n#\n# Most of these values were scraped from various Longcheer-based Windows\n# driver .inf files.  cmmdm.inf lists the actual data (ie PPP) ports, while\n# cmser.inf lists the aux ports that may be either AT-capable or not but\n# cannot be used for PPP.\n\n\nACTION!=\"add|change|move\", GOTO=\"mm_longcheer_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_longcheer_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1c9e\", GOTO=\"mm_longcheer_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1bbb\", GOTO=\"mm_tamobile_vendorcheck\"\nGOTO=\"mm_longcheer_port_types_end\"\n\nLABEL=\"mm_longcheer_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"3197\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"3197\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"3197\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6000\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6000\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6000\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6060\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6060\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6060\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\n# Alcatel One Touch X020\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6061\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6061\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"6061\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7001\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7001\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7001\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7001\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7002\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7002\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7002\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7002\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7002\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7101\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7101\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7101\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7101\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7102\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7102\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7102\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7102\", ENV{.MM_USBIFNUM}==\"06\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"7102\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8000\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8000\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8000\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8000\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8001\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8001\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8001\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8001\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8002\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8002\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8002\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"8002\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\n# ChinaBird PL68\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9000\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9000\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9000\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9001\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9001\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9001\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9001\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9002\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9002\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9002\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9002\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9003\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9003\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9003\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9003\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9003\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9004\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9004\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9004\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9005\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9005\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9005\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9010\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9010\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9010\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9010\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9012\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9012\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9012\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9012\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9020\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9020\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9020\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9020\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9022\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9022\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9022\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9022\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\n# Zoom products\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9602\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9602\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9602\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9602\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9603\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9603\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9603\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9603\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9604\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9604\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9604\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9604\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9605\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9605\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9605\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9605\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9605\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9606\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9606\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9606\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9606\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9606\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1c9e\", ATTRS{idProduct}==\"9607\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nGOTO=\"mm_longcheer_port_types_end\"\n\n\nLABEL=\"mm_tamobile_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# Alcatel One Touch X060s\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{ID_MM_LONGCHEER_TAGGED}=\"1\"\n\nGOTO=\"mm_longcheer_port_types_end\"\n\n\nLABEL=\"mm_longcheer_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-mtk-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_mtk_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0e8d\", GOTO=\"mm_mtk_port_types_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2001\", GOTO=\"mm_dlink_port_types_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"07d1\", GOTO=\"mm_dlink_port_types_vendorcheck\"\nGOTO=\"mm_mtk_port_types_end\"\n\n# MediaTek devices ---------------------------\n\nLABEL=\"mm_mtk_port_types_vendorcheck\"\nATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a1\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a1\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a1\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a2\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a2\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a2\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a4\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a4\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a4\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a5\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a5\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a5\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a7\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a7\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"00a7\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nGOTO=\"mm_mtk_port_types_end\"\n\n# D-Link devices ---------------------------\n\nLABEL=\"mm_dlink_port_types_vendorcheck\"\nATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# D-Link DWM-156 A3\nATTRS{idVendor}==\"07d1\", ATTRS{idProduct}==\"7e11\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"07d1\", ATTRS{idProduct}==\"7e11\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"07d1\", ATTRS{idProduct}==\"7e11\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\n# D-Link DWM-156 A5 (and later?)\nATTRS{idVendor}==\"2001\", ATTRS{idProduct}==\"7d00\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_MTK_MODEM_PORT}=\"1\"\nATTRS{idVendor}==\"2001\", ATTRS{idProduct}==\"7d00\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_MTK_AT_PORT}=\"1\"\nATTRS{idVendor}==\"2001\", ATTRS{idProduct}==\"7d00\", ENV{ID_MM_MTK_TAGGED}=\"1\"\n\nGOTO=\"mm_mtk_port_types_end\"\n\nLABEL=\"mm_mtk_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-nokia-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_nokia_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_nokia_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0421\", GOTO=\"mm_nokia_port_types_vendorcheck\"\nGOTO=\"mm_nokia_port_types_end\"\n\nLABEL=\"mm_nokia_port_types_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# For Nokia Internet Sticks (CS-xx) the modem/PPP port appears to always be USB interface 1\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"060D\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0611\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"061A\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"061B\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"061F\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0619\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0620\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0623\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0624\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"0625\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"062A\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"062E\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nATTRS{idVendor}==\"0421\", ATTRS{idProduct}==\"062F\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}=\"1\"\n\nLABEL=\"mm_nokia_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-pcmcia-device-blacklist.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_pcmcia_device_blacklist_end\"\nSUBSYSTEM!=\"pcmcia\", GOTO=\"mm_pcmcia_device_blacklist_end\"\n\n# Gemplus Serial Port smartcard adapter\nATTRS{prod_id1}==\"Gemplus\", ATTRS{prod_id2}==\"SerialPort\", ATTRS{prod_id3}==\"GemPC Card\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\nLABEL=\"mm_pcmcia_device_blacklist_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-platform-serial-whitelist.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_platform_device_whitelist_end\"\nSUBSYSTEM!=\"platform\", GOTO=\"mm_platform_device_whitelist_end\"\n\n# Be careful here since many devices connected to platform drivers on PCs\n# are legacy devices that won't like probing.  But often on embedded\n# systems serial ports are provided by platform devices.\n\n# Allow atmel_usart\nDRIVERS==\"atmel_usart\", ENV{ID_MM_PLATFORM_DRIVER_PROBE}=\"1\"\n\nLABEL=\"mm_platform_device_whitelist_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-qdl-device-blacklist.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change\", GOTO=\"mm_qdl_device_blacklist_end\"\n\n# Acer Gobi QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9211\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# HP un2400 Gobi QDL Device\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"201d\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# HP un2420 Gobi QDL Device\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"241d\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Panasonic Gobi QDL device\nATTRS{idVendor}==\"04da\", ATTRS{idProduct}==\"250c\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Dell Gobi QDL device\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8171\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Novatel Gobi QDL device\nATTRS{idVendor}==\"1410\", ATTRS{idProduct}==\"a008\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1410\", ATTRS{idProduct}==\"a014\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Asus Gobi QDL device\nATTRS{idVendor}==\"0b05\", ATTRS{idProduct}==\"1774\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# ONDA Gobi QDL device\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"fff2\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# OQO Gobi QDL device\nATTRS{idVendor}==\"1557\", ATTRS{idProduct}==\"0a80\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Generic Gobi QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9008\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Generic Gobi QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9201\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Generic Gobi QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9221\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Generic Gobi QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9231\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Unknown Gobi QDL device\nATTRS{idVendor}==\"1f45\", ATTRS{idProduct}==\"0001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Dell Gobi 2000 QDL device (N0218, VU936)\nATTRS{idVendor}==\"413c\", ATTRS{idProduct}==\"8185\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Generic Gobi 2000 QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9208\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Sony Gobi 2000 QDL device (N0279, VU730)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9224\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Samsung Gobi 2000 QDL device (VL176)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9244\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# HP Gobi 2000 QDL device (VP412)\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"241d\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Acer Gobi 2000 QDL device (VP413)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9214\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Asus Gobi 2000 QDL device (VR305)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9264\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Top Global Gobi 2000 QDL device (VR306)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9234\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# iRex Technologies Gobi 2000 QDL device (VR307)\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9274\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Sierra Wireless Gobi 2000 QDL device (VT773)\nATTRS{idVendor}==\"1199\", ATTRS{idProduct}==\"9000\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# CMDTech Gobi 2000 QDL device (VU922)\nATTRS{idVendor}==\"16d8\", ATTRS{idProduct}==\"8001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Gobi 2000 QDL device\nATTRS{idVendor}==\"05c6\", ATTRS{idProduct}==\"9204\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\nLABEL=\"mm_qdl_device_blacklist_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-simtech-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\n# Simtech makes modules that other companies rebrand, like:\n#\n# A-LINK 3GU\n# SCT UM300\n#\n# Most of these values were scraped from various SimTech-based Windows\n# driver .inf files.  *mdm.inf lists the main command ports, while\n# *ser.inf lists the aux ports that may be used for PPP.\n\n\nACTION!=\"add|change|move\", GOTO=\"mm_simtech_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_simtech_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1e0e\", GOTO=\"mm_alink_vendorcheck\"\nGOTO=\"mm_simtech_port_types_end\"\n\nLABEL=\"mm_alink_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# A-LINK 3GU\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"cefe\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"cefe\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"cefe\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"cefe\", ENV{ID_MM_SIMTECH_TAGGED}=\"1\"\n\n# Prolink PH-300\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9100\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9100\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9100\", ENV{ID_MM_SIMTECH_TAGGED}=\"1\"\n\n# SCT UM300\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9200\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9200\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1e0e\", ATTRS{idProduct}==\"9200\", ENV{ID_MM_SIMTECH_TAGGED}=\"1\"\n\nGOTO=\"mm_simtech_port_types_end\"\n\nLABEL=\"mm_simtech_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-telit-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_telit_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_telit_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1bc7\", GOTO=\"mm_telit_vendorcheck\"\nGOTO=\"mm_telit_port_types_end\"\n\nLABEL=\"mm_telit_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# UC864-E, UC864-E-AUTO, UC864-K, UC864-WD, UC864-WDU\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1003\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1003\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_TELIT_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1003\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# UC864-G\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1004\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1004\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1004\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_TELIT_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1004\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# CC864-DUAL\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1005\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1005\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1005\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_TELIT_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1005\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# CC864-SINGLE, CC864-KPS\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1006\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1006\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_TELIT_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1006\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# DE910-DUAL\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1010\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1010\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_TELIT_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1010\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1010\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# CE910-DUAL\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1011\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"1011\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\n\n# HE910, UE910, UL865 (dynamic port identification supported)\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"0021\", ENV{ID_MM_TELIT_TAGGED}=\"1\", ENV{ID_MM_TELIT_PORTS_TAGGED}=\"1\"\n\n# GE910 (dynamic port identification supported)\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"0022\", ENV{ID_MM_TELIT_TAGGED}=\"1\"\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"0022\", ENV{ID_MM_TELIT_PORTS_TAGGED}=\"1\"\n\n# LE910 V2\nATTRS{idVendor}==\"1bc7\", ATTRS{idProduct}==\"0036\", ENV{ID_MM_TELIT_TAGGED}=\"1\", ENV{ID_MM_TELIT_PORTS_TAGGED}=\"1\"\n\n# NOTE: Qualcomm Gobi-based devices like the LE920 should not be handled\n# by this plugin, but by the Gobi plugin.\n\nGOTO=\"mm_telit_port_types_end\"\nLABEL=\"mm_telit_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-usb-device-blacklist.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_usb_device_blacklist_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"mm_usb_device_blacklist_end\"\nENV{DEVTYPE}!=\"usb_device\",  GOTO=\"mm_usb_device_blacklist_end\"\n\n# APC UPS devices\nATTRS{idVendor}==\"051d\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Sweex 1000VA\nATTRS{idVendor}==\"0925\", ATTRS{idProduct}==\"1234\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Agiler UPS\nATTRS{idVendor}==\"05b8\", ATTRS{idProduct}==\"0000\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Krauler UP-M500VA\nATTRS{idVendor}==\"0001\", ATTRS{idProduct}==\"0000\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Ablerex 625L USB\nATTRS{idVendor}==\"ffff\", ATTRS{idProduct}==\"0000\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Belkin F6C1200-UNV\nATTRS{idVendor}==\"0665\", ATTRS{idProduct}==\"5161\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Various Liebert and Phoenixtec Power devices\nATTRS{idVendor}==\"06da\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Unitek Alpha 1200Sx\nATTRS{idVendor}==\"0f03\", ATTRS{idProduct}==\"0001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Various Tripplite devices\nATTRS{idVendor}==\"09ae\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Various MGE Office Protection Systems devices\nATTRS{idVendor}==\"0463\", ATTRS{idProduct}==\"0001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"0463\", ATTRS{idProduct}==\"ffff\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# CyberPower 900AVR/BC900D\nATTRS{idVendor}==\"0764\", ATTRS{idProduct}==\"0005\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n# CyberPower CP1200AVR/BC1200D\nATTRS{idVendor}==\"0764\", ATTRS{idProduct}==\"0501\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Various Belkin devices\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0980\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0900\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0910\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0912\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0551\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0751\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0375\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"1100\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# HP R/T 2200 INTL (like SMART2200RMXL2U)\nATTRS{idVendor}==\"03f0\", ATTRS{idProduct}==\"1f0a\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Powerware devices\nATTRS{idVendor}==\"0592\", ATTRS{idProduct}==\"0002\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Palm Treo 700/900/etc\n# Shouldn't be probed themselves, but you can install programs like\n# \"MobileStream USB Modem\" which changes the USB PID of the device to something\n# that isn't blacklisted.\nATTRS{idVendor}==\"0830\", ATTRS{idProduct}==\"0061\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# GlobalScaleTechnologies SheevaPlug\nATTRS{idVendor}==\"9e88\", ATTRS{idProduct}==\"9e8f\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Atmel Corp at91sam SAMBA bootloader\nATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"6124\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Dangerous Prototypes Bus Pirate v4\nATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"fb00\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices from the Swiss Federal Institute of Technology\nATTRS{idVendor}==\"0617\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# West Mountain Radio devices\nATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"814a\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"814b\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"2405\", ATTRS{idProduct}==\"0003\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Arduinos\nATTRS{idVendor}==\"2341\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"2a03\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1b4f\", ATTRS{idProduct}==\"9207\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1b4f\", ATTRS{idProduct}==\"9208\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Adafruit Flora\nATTRS{idVendor}==\"239a\", ATTRS{idProduct}==\"0004\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"239a\", ATTRS{idProduct}==\"8004\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices from Pololu Corporation\n# except some possible future products.\nATTRS{idVendor}==\"1ffb\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1ffb\", ATTRS{idProduct}==\"00ad\", ENV{ID_MM_DEVICE_IGNORE}=\"0\"\nATTRS{idVendor}==\"1ffb\", ATTRS{idProduct}==\"00ae\", ENV{ID_MM_DEVICE_IGNORE}=\"0\"\n\n# Altair U-Boot device\nATTRS{idVendor}==\"0216\", ATTRS{idProduct}==\"0051\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Bluegiga BLE112B\nATTRS{idVendor}==\"2458\", ATTRS{idProduct}==\"0001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# MediaTek GPS chip (HOLUX M-1200E, GlobalTop Gms-d1, etc)\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"3329\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# MediaTek MT65xx preloader\nATTRS{idVendor}==\"0e8d\", ATTRS{idProduct}==\"2000\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# PS-360 OEM (GPS sold with MS Street and Trips 2005)\nATTRS{idVendor}==\"067b\", ATTRS{idProduct}==\"aaa0\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# u-blox AG, u-blox 5 GPS chips\nATTRS{idVendor}==\"1546\", ATTRS{idProduct}==\"01a5\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1546\", ATTRS{idProduct}==\"01a6\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"1546\", ATTRS{idProduct}==\"01a7\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Garmin GPS devices\nDRIVERS==\"garmin_gps\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Cypress M8-based GPS devices, UPSes, and serial converters\nDRIVERS==\"cypress_m8\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices in the Openmoko vendor ID\nATTRS{idVendor}==\"1d50\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices from 3D Robotics\nATTRS{idVendor}==\"26ac\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# empiriKit science lab controller device\nATTRS{idVendor}==\"0425\", ATTRS{idProduct}==\"0408\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Infineon Flashloader used by Intel XMM modem bootloader\nATTRS{idVendor}==\"8087\", ATTRS{idProduct}==\"0716\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nATTRS{idVendor}==\"8087\", ATTRS{idProduct}==\"0801\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# GW Instek AFG-2225 arbitrary function generator\nATTRS{idVendor}==\"2184\", ATTRS{idProduct}==\"001c\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# PalmOS devices - even though some are phones, they are so old they most\n# likely are not being used anymore\nDRIVERS==\"visor\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Palmconnect\nATTRS{idVendor}==\"0830\", ATTRS{idProduct}==\"0080\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# IMC flashing device\nATTRS{idVendor}==\"058b\", ATTRS{idProduct}==\"0041\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices from the Access Interfacing Solutions (Access Ltd)\n# Access IS do not produce modems and are unlikely to do so in future\nATTRS{idVendor}==\"0db5\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Palm M500\nATTRS{idVendor}==\"0830\", ATTRS{idProduct}==\"0001\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Palm M505\nATTRS{idVendor}==\"0830\", ATTRS{idProduct}==\"0002\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Palm M515\nATTRS{idVendor}==\"0830\", ATTRS{idProduct}==\"0003\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# All devices from POSNET POLSKA S.A.\n# POSNET POLSKA S.A. do not produce modems and are unlikely to do so in future\nATTRS{idVendor}==\"1424\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# proxmark3\nATTRS{manufacturer}==\"proxmark.org\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\n# Sigma Sport Docking Station TOPLINE 2009\nATTRS{idVendor}==\"1d9d\", ATTRS{idProduct}==\"1010\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n# Sigma Sport Docking Station TOPLINE 2012\nATTRS{idVendor}==\"1d9d\", ATTRS{idProduct}==\"1011\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\n\nLABEL=\"mm_usb_device_blacklist_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-usb-serial-adapters-greylist.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_usb_serial_adapters_greylist_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"mm_usb_serial_adapters_greylist_end\"\nENV{DEVTYPE}!=\"usb_device\",  GOTO=\"mm_usb_serial_adapters_greylist_end\"\n\n# Belkin F5U183 Serial Adapter\nATTRS{idVendor}==\"050d\", ATTRS{idProduct}==\"0103\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# FTDI-based serial adapters\n#   FTDI does USB to serial converter ICs; and it's very likely that they'll\n#   never do modems themselves, so it should be safe to add a rule only based\n#   on the vendor Id.\nATTRS{idVendor}==\"0403\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# ATEN Intl UC-232A (Prolific)\nATTRS{idVendor}==\"0557\", ATTRS{idProduct}==\"2008\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Prolific USB to Serial adapter\nATTRS{idVendor}==\"067b\", ATTRS{idProduct}==\"2303\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Magic Control Technology Corp adapters\nATTRS{idVendor}==\"0711\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Cygnal Integrated Products, Inc. CP210x\nATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea71\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# QinHeng Electronics HL-340\nATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Atmel Corp. LUFA USB to Serial Adapter Project (Arduino)\nATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"204b\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)\nATTRS{idVendor}==\"0525\", ATTRS{idProduct}==\"a4a7\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\n# Cypress Serial-USB devices\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0002\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0003\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0004\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0005\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0006\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0007\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"0009\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\nATTRS{idVendor}==\"04B4\", ATTRS{idProduct}==\"000A\", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}=\"1\"\n\nLABEL=\"mm_usb_serial_adapters_greylist_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-x22x-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\n# Alcatel One Touch X220D\n# Alcatel One Touch X200\n#\n# These values were scraped from the X220D's Windows .inf files.  jrdmdm.inf\n# lists the actual command and data (ie PPP) ports, while jrdser.inf lists the\n# aux ports that may be either AT-capable or not but cannot be used for PPP.\n\n\nACTION!=\"add|change|move\", GOTO=\"mm_x22x_port_types_end\"\nSUBSYSTEM!=\"tty\", GOTO=\"mm_x22x_port_types_end\"\n\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"1bbb\", GOTO=\"mm_x22x_generic_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0b3c\", GOTO=\"mm_x22x_olivetti_vendorcheck\"\nGOTO=\"mm_x22x_port_types_end\"\n\n# Generic JRD devices ---------------------------\n\nLABEL=\"mm_x22x_generic_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# Alcatel X200\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_X22X_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0000\", ENV{ID_MM_X22X_TAGGED}=\"1\"\n\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_X22X_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"0017\", ENV{ID_MM_X22X_TAGGED}=\"1\"\n\n# Archos G9\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_X22X_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_X22X_PORT_TYPE_NMEA}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_X22X_PORT_TYPE_VOICE}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"1bbb\", ATTRS{idProduct}==\"00B7\", ENV{ID_MM_X22X_TAGGED}=\"1\"\n\nGOTO=\"mm_x22x_port_types_end\"\n\n# Olivetti devices ---------------------------\n\nLABEL=\"mm_x22x_olivetti_vendorcheck\"\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\n# Olicard 200\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_X22X_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{.MM_USBIFNUM}==\"06\", ENV{ID_MM_X22X_PORT_TYPE_AUX}=\"1\"\nATTRS{idVendor}==\"0b3c\", ATTRS{idProduct}==\"c005\", ENV{ID_MM_X22X_TAGGED}=\"1\"\n\nGOTO=\"mm_x22x_port_types_end\"\n\nLABEL=\"mm_x22x_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/77-mm-zte-port-types.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\nACTION!=\"add|change|move\", GOTO=\"mm_zte_port_types_end\"\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"19d2\", GOTO=\"mm_zte_port_types\"\nGOTO=\"mm_zte_port_types_end\"\n\nLABEL=\"mm_zte_port_types\"\n\nSUBSYSTEMS==\"usb\", ATTRS{bInterfaceNumber}==\"?*\", ENV{.MM_USBIFNUM}=\"$attr{bInterfaceNumber}\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0001\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0001\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0002\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0002\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0003\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0003\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0004\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0004\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0005\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0005\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0006\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0006\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0007\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0007\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0008\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0008\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0009\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0009\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"000A\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"000A\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0012\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0012\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0015\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0015\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0016\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0016\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0017\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0018\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0018\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0019\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0019\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0021\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0021\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0024\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0024\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0025\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0025\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0030\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0030\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0031\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0031\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0033\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0033\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0037\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0037\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0039\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0039\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0042\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0042\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0043\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0043\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0048\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0048\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0049\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0049\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0052\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0052\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0054\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0054\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0055\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0055\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0057\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0057\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0058\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0058\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0061\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0061\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0063\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0063\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0064\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0064\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0066\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0066\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0078\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0078\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0082\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0082\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0091\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0091\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0104\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0104\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0106\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0106\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0108\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0108\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0113\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0113\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0117\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0117\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0118\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0118\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0121\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0121\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0122\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0122\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0123\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0123\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0124\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0124\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0125\", ENV{.MM_USBIFNUM}==\"05\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0125\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0126\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0126\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0128\", ENV{.MM_USBIFNUM}==\"04\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0128\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0156\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"0156\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1007\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1007\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1008\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1008\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1010\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1010\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1254\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1254\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1515\", ENV{.MM_USBIFNUM}==\"00\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1515\", ENV{.MM_USBIFNUM}==\"02\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"2002\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"2002\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"2003\", ENV{.MM_USBIFNUM}==\"03\", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"2003\", ENV{.MM_USBIFNUM}==\"01\", ENV{ID_MM_ZTE_PORT_TYPE_AUX}=\"1\"\n\n# Icera-based devices that use DHCP, not AT%IPDPADDR\nATTRS{product}==\"K3805-z\", ENV{ID_MM_ZTE_ICERA_DHCP}=\"1\"\n\n# MF60 exposes QMI, but it is unusable, fallback to AT+PPP\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1402\", SUBSYSTEM==\"usb\", KERNEL==\"cdc-wdm*\", ENV{ID_MM_PORT_IGNORE}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1402\", SUBSYSTEM==\"usbmisc\", KERNEL==\"cdc-wdm*\", ENV{ID_MM_PORT_IGNORE}=\"1\"\nATTRS{idVendor}==\"19d2\", ATTRS{idProduct}==\"1402\", SUBSYSTEM==\"net\", ENV{ID_MM_PORT_IGNORE}=\"1\"\n\nLABEL=\"mm_zte_port_types_end\"\n"
  },
  {
    "path": "images/01-base/usr/lib/udev/rules-extras.d/80-mm-candidate.rules",
    "content": "# do not edit this file, it will be overwritten on update\n\n# Tag any devices that MM might be interested in; if ModemManager is started\n# up right after udev, when MM explicitly requests devices on startup it may\n# get devices that haven't had all rules run yet.  Thus, we tag devices we're\n# interested in and when handling devices during MM startup we ignore any\n# that don't have this tag.  MM will still get the udev 'add' event for the\n# device a short while later and then process it as normal.\n\nACTION!=\"add|change|move\", GOTO=\"mm_candidate_end\"\n\n# Opening bound but disconnected Bluetooth RFCOMM ttys would initiate the\n# connection. Don't do that.\nKERNEL==\"rfcomm[0-9]*\", DEVPATH==\"*/virtual/*\", GOTO=\"mm_candidate_end\"\n\nSUBSYSTEM==\"tty\", ENV{ID_MM_CANDIDATE}=\"1\"\nSUBSYSTEM==\"net\", ENV{ID_MM_CANDIDATE}=\"1\"\nKERNEL==\"cdc-wdm*\", SUBSYSTEM==\"usb\", ENV{ID_MM_CANDIDATE}=\"1\"\nKERNEL==\"cdc-wdm*\", SUBSYSTEM==\"usbmisc\", ENV{ID_MM_CANDIDATE}=\"1\"\n\nLABEL=\"mm_candidate_end\"\n"
  },
  {
    "path": "images/01-base/usr/share/logrotate/logrotate.d/dhcpcd.debug",
    "content": "/var/log/dhcpcd.debug.log\n{\n\trotate 7\n\tdaily\n\tmissingok\n\tcopytruncate\n}\n"
  },
  {
    "path": "images/02-acpid/.dockerignore",
    "content": "Dockerfile*\n.dockerignore\n"
  },
  {
    "path": "images/02-acpid/Dockerfile",
    "content": "FROM burmilla/os-base\nCOPY . /\n"
  },
  {
    "path": "images/02-acpid/etc/acpi/events/lid",
    "content": "event=button/lid\naction=/etc/acpi/suspend.sh %e\n"
  },
  {
    "path": "images/02-acpid/etc/acpi/suspend.sh",
    "content": "#!/bin/sh\nif [ \"$3\" = \"close\" ]; then\n    echo -n \"mem\" > /sys/power/state\nfi\n"
  },
  {
    "path": "images/02-bootstrap/.dockerignore",
    "content": "Dockerfile*\n.dockerignore\n"
  },
  {
    "path": "images/02-bootstrap/Dockerfile",
    "content": "FROM burmilla/os-base\nCOPY . /\n"
  },
  {
    "path": "images/02-bootstrap/od-1m0",
    "content": "0000000 000000 000000 000000 000000 000000 000000 000000 000000\n*\n1048576\n"
  },
  {
    "path": "images/02-bootstrap/usr/sbin/auto-format.sh",
    "content": "#!/bin/bash\nexec &>> /var/log/boot/autoformat.log\nset -ex\n\nMAGIC=${MAGIC:-\"boot2docker, please format-me\"}\nDEVS=(${AUTOFORMAT})\n\nfor dev in ${DEVS[@]}; do\n    if [ -b \"${dev}\" ]; then\n\n        # Test for our magic string (it means that the disk was made by ./boot2docker init)\n        HEADER=`dd if=${dev} bs=1 count=${#MAGIC} 2>/dev/null`\n\n        if [ \"$HEADER\" = \"$MAGIC\" ]; then\n            # save the preload userdata.tar file\n            dd if=${dev} of=/userdata.tar bs=1 count=8192\n        elif ! od -A d -N 1048576 ${dev} | head -n 3 | diff ./od-1m0 - >/dev/null 2>&1; then\n            # do not auto-format if the disk does not begin with 1MB filled with 00\n            continue\n        fi\n\n\n        if [ -e \"/userdata.tar\" ]; then\n            mkfs.ext4 -L B2D_STATE ${dev}\n            mkdir -p /mnt/new-root\n            mount -t ext4 ${dev} /mnt/new-root\n            pushd /mnt/new-root\n            mkdir -p ./var/lib/rancher/conf/cloud-config.d\n            echo $(tar -xvf /userdata.tar)\n            AUTHORIZED_KEY1=$(cat ./.ssh/authorized_keys)\n            AUTHORIZED_KEY2=$(cat ./.ssh/authorized_keys2)\n            tee ./var/lib/rancher/conf/cloud-config.d/machine.yml << EOF\n#cloud-config\n\nrancher:\n network:\n  interfaces:\n   eth0:\n    dhcp: true\n   eth1:\n    dhcp: true\n   lo:\n    address: 127.0.0.1/8\n\nssh_authorized_keys:\n - ${AUTHORIZED_KEY1}\n - ${AUTHORIZED_KEY2}\n\nusers:\n - name: docker\n   ssh_authorized_keys:\n   - ${AUTHORIZED_KEY1}\n   - ${AUTHORIZED_KEY2}\nEOF\n            popd\n            umount /mnt/new-root\n        else\n            mkfs.ext4 -L RANCHER_STATE ${dev}\n        fi\n\n        # do not check another device\n        break\n    fi\ndone\n"
  },
  {
    "path": "images/02-console/Dockerfile",
    "content": "FROM debian:bullseye-slim\n\nCOPY build/sshd_config.append.tpl /etc/ssh/\nCOPY build/lsb-release /etc/\n\nRUN apt-get update \\\n    && apt-get install -y --no-install-recommends fdisk eject ipset iptables openssh-server rsync locales \\\n                           sudo less curl ca-certificates psmisc htop kmod iproute2 \\\n                           net-tools bash-completion wget \\\n                           nano open-iscsi iputils-ping nvi \\\n                           apparmor nfs-common \\\n    && update-alternatives --set iptables /usr/sbin/iptables-legacy \\\n    && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \\\n    && rm -rf /var/lib/apt/lists/* \\\n    && rm -rf /etc/ssh/*key* \\\n    && echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen \\\n    && locale-gen \\\n    && find /usr/share/i18n/charmaps -not -path /usr/share/i18n/charmaps/UTF-8.gz -name '*.gz' -exec rm -rf {} \\; \\\n    && find /usr/share/i18n/locales -not -path /usr/share/i18n/locales/en_US -name '*_*' -exec rm -rf {} \\; \\\n    && addgroup --gid 1100 rancher \\\n    && addgroup --gid 1101 docker \\\n    && useradd -u 1100 -g rancher -G docker,sudo -m -s /bin/bash rancher \\\n    && useradd -u 1101 -g docker -G docker,sudo -m -s /bin/bash docker \\\n    && echo '## allow password less for rancher user' >> /etc/sudoers \\\n    && echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \\\n    && echo '## allow password less for docker user' >> /etc/sudoers \\\n    && echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \\\n    && ln -s /bin/ps /usr/bin/ps \\\n    && cat /etc/ssh/sshd_config > /etc/ssh/sshd_config.tpl \\\n    && cat /etc/ssh/sshd_config.append.tpl >> /etc/ssh/sshd_config.tpl \\\n    && rm -f /etc/ssh/sshd_config.append.tpl /etc/ssh/sshd_config \\\n    && echo > /etc/motd \\\n    \\\n    && addgroup --gid 1200 user-docker \\\n    && adduser --system -u 1200 --gid 1200 --disabled-login --no-create-home user-docker \\\n    && echo 'user-docker:100000:65536' > /etc/subuid \\\n    && echo 'user-docker:100000:65536' > /etc/subgid\n\nCOPY build/iscsid.conf /etc/iscsi/\n\nENTRYPOINT [\"/usr/bin/ros\", \"entrypoint\"]\n"
  },
  {
    "path": "images/02-console/iscsid.conf",
    "content": "#\n# Open-iSCSI default configuration.\n# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf\n#\n# Note: To set any of these values for a specific node/session run\n# the iscsiadm --mode node --op command for the value. See the README\n# and man page for iscsiadm for details on the --op command.\n#\n\n######################\n# iscsid daemon config\n######################\n# If you want iscsid to start the first time an iscsi tool\n# needs to access it, instead of starting it when the init\n# scripts run, set the iscsid startup command here. This\n# should normally only need to be done by distro package\n# maintainers.\n#\n# Default for Fedora and RHEL. (uncomment to activate).\n# iscsid.startup = /etc/rc.d/init.d/iscsid force-start\n# \n# Default for upstream open-iscsi scripts (uncomment to activate).\niscsid.startup = /sbin/iscsid\n\n# Check for active mounts on devices reachable through a session\n# and refuse to logout if there are any.  Defaults to \"No\".\n# iscsid.safe_logout = Yes\n\n#############################\n# NIC/HBA and driver settings\n#############################\n# open-iscsi can create a session and bind it to a NIC/HBA.\n# To set this up see the example iface config file.\n\n#*****************\n# Startup settings\n#*****************\n\n# To request that the iscsi initd scripts startup a session set to \"automatic\".\n# node.startup = automatic\n#\n# To manually startup the session set to \"manual\". The default is manual.\nnode.startup = manual\n\n# For \"automatic\" startup nodes, setting this to \"Yes\" will try logins on each\n# available iface until one succeeds, and then stop.  The default \"No\" will try\n# logins on all available ifaces simultaneously.\nnode.leading_login = No\n\n# *************\n# CHAP Settings\n# *************\n\n# To enable CHAP authentication set node.session.auth.authmethod\n# to CHAP. The default is None.\n#node.session.auth.authmethod = CHAP\n\n# To set a CHAP username and password for initiator\n# authentication by the target(s), uncomment the following lines:\n#node.session.auth.username = username\n#node.session.auth.password = password\n\n# To set a CHAP username and password for target(s)\n# authentication by the initiator, uncomment the following lines:\n#node.session.auth.username_in = username_in\n#node.session.auth.password_in = password_in\n\n# To enable CHAP authentication for a discovery session to the target\n# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.\n#discovery.sendtargets.auth.authmethod = CHAP\n\n# To set a discovery session CHAP username and password for the initiator\n# authentication by the target(s), uncomment the following lines:\n#discovery.sendtargets.auth.username = username\n#discovery.sendtargets.auth.password = password\n\n# To set a discovery session CHAP username and password for target(s)\n# authentication by the initiator, uncomment the following lines:\n#discovery.sendtargets.auth.username_in = username_in\n#discovery.sendtargets.auth.password_in = password_in\n\n# ********\n# Timeouts\n# ********\n#\n# See the iSCSI README's Advanced Configuration section for tips\n# on setting timeouts when using multipath or doing root over iSCSI.\n#\n# To specify the length of time to wait for session re-establishment\n# before failing SCSI commands back to the application when running\n# the Linux SCSI Layer error handler, edit the line.\n# The value is in seconds and the default is 120 seconds.\n# Special values:\n# - If the value is 0, IO will be failed immediately.\n# - If the value is less than 0, IO will remain queued until the session\n# is logged back in, or until the user runs the logout command.\nnode.session.timeo.replacement_timeout = 120\n\n# To specify the time to wait for login to complete, edit the line.\n# The value is in seconds and the default is 15 seconds.\nnode.conn[0].timeo.login_timeout = 15\n\n# To specify the time to wait for logout to complete, edit the line.\n# The value is in seconds and the default is 15 seconds.\nnode.conn[0].timeo.logout_timeout = 15\n\n# Time interval to wait for on connection before sending a ping.\nnode.conn[0].timeo.noop_out_interval = 5\n\n# To specify the time to wait for a Nop-out response before failing\n# the connection, edit this line. Failing the connection will\n# cause IO to be failed back to the SCSI layer. If using dm-multipath\n# this will cause the IO to be failed to the multipath layer.\nnode.conn[0].timeo.noop_out_timeout = 5\n\n# To specify the time to wait for abort response before\n# failing the operation and trying a logical unit reset edit the line.\n# The value is in seconds and the default is 15 seconds.\nnode.session.err_timeo.abort_timeout = 15\n\n# To specify the time to wait for a logical unit response\n# before failing the operation and trying session re-establishment\n# edit the line.\n# The value is in seconds and the default is 30 seconds.\nnode.session.err_timeo.lu_reset_timeout = 30\n\n# To specify the time to wait for a target response\n# before failing the operation and trying session re-establishment\n# edit the line.\n# The value is in seconds and the default is 30 seconds.\nnode.session.err_timeo.tgt_reset_timeout = 30\n\n\n#******\n# Retry\n#******\n\n# To specify the number of times iscsid should retry a login\n# if the login attempt fails due to the node.conn[0].timeo.login_timeout\n# expiring modify the following line. Note that if the login fails\n# quickly (before node.conn[0].timeo.login_timeout fires) because the network\n# layer or the target returns an error, iscsid may retry the login more than\n# node.session.initial_login_retry_max times.\n#\n# This retry count along with node.conn[0].timeo.login_timeout\n# determines the maximum amount of time iscsid will try to\n# establish the initial login. node.session.initial_login_retry_max is\n# multiplied by the node.conn[0].timeo.login_timeout to determine the\n# maximum amount.\n#\n# The default node.session.initial_login_retry_max is 8 and\n# node.conn[0].timeo.login_timeout is 15 so we have:\n#\n# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max =\n#\t\t\t\t\t\t\t\t120 seconds\n#\n# Valid values are any integer value. This only\n# affects the initial login. Setting it to a high value can slow\n# down the iscsi service startup. Setting it to a low value can\n# cause a session to not get logged into, if there are distuptions\n# during startup or if the network is not ready at that time.\nnode.session.initial_login_retry_max = 8\n\n################################\n# session and device queue depth\n################################\n\n# To control how many commands the session will queue set\n# node.session.cmds_max to an integer between 2 and 2048 that is also\n# a power of 2. The default is 128.\nnode.session.cmds_max = 2048\n\n# To control the device's queue depth set node.session.queue_depth\n# to a value between 1 and 1024. The default is 32.\nnode.session.queue_depth = 1024\n\n##################################\n# MISC SYSTEM PERFORMANCE SETTINGS\n##################################\n\n# For software iscsi (iscsi_tcp) and iser (ib_iser) each session\n# has a thread used to transmit or queue data to the hardware. For\n# cxgb3i you will get a thread per host.\n#\n# Setting the thread's priority to a lower value can lead to higher throughput\n# and lower latencies. The lowest value is -20. Setting the priority to\n# a higher value, can lead to reduced IO performance, but if you are seeing\n# the iscsi or scsi threads dominate the use of the CPU then you may want\n# to set this value higher.\n#\n# Note: For cxgb3i you must set all sessions to the same value, or the\n# behavior is not defined.\n#\n# The default value is -20. The setting must be between -20 and 20.\nnode.session.xmit_thread_priority = -20\n\n\n#***************\n# iSCSI settings\n#***************\n\n# To enable R2T flow control (i.e., the initiator must wait for an R2T\n# command before sending any data), uncomment the following line:\n#\n#node.session.iscsi.InitialR2T = Yes\n#\n# To disable R2T flow control (i.e., the initiator has an implied\n# initial R2T of \"FirstBurstLength\" at offset 0), uncomment the following line:\n#\n# The defaults is No.\nnode.session.iscsi.InitialR2T = No\n\n#\n# To disable immediate data (i.e., the initiator does not send\n# unsolicited data with the iSCSI command PDU), uncomment the following line:\n#\n#node.session.iscsi.ImmediateData = No\n#\n# To enable immediate data (i.e., the initiator sends unsolicited data\n# with the iSCSI command packet), uncomment the following line:\n#\n# The default is Yes\nnode.session.iscsi.ImmediateData = Yes\n\n# To specify the maximum number of unsolicited data bytes the initiator\n# can send in an iSCSI PDU to a target, edit the following line.\n#\n# The value is the number of bytes in the range of 512 to (2^24-1) and\n# the default is 262144\nnode.session.iscsi.FirstBurstLength = 1048576\n\n# To specify the maximum SCSI payload that the initiator will negotiate\n# with the target for, edit the following line.\n#\n# The value is the number of bytes in the range of 512 to (2^24-1) and\n# the defauls it 16776192\nnode.session.iscsi.MaxBurstLength = 16776192\n\n# To specify the maximum number of data bytes the initiator can receive\n# in an iSCSI PDU from a target, edit the following line.\n#\n# The value is the number of bytes in the range of 512 to (2^24-1) and\n# the default is 262144\nnode.conn[0].iscsi.MaxRecvDataSegmentLength = 1048576\n\n# To specify the maximum number of data bytes the initiator will send\n# in an iSCSI PDU to the target, edit the following line.\n#\n# The value is the number of bytes in the range of 512 to (2^24-1).\n# Zero is a special case. If set to zero, the initiator will use\n# the target's MaxRecvDataSegmentLength for the MaxXmitDataSegmentLength.\n# The default is 0.\nnode.conn[0].iscsi.MaxXmitDataSegmentLength = 0\n\n# To specify the maximum number of data bytes the initiator can receive\n# in an iSCSI PDU from a target during a discovery session, edit the\n# following line.\n#\n# The value is the number of bytes in the range of 512 to (2^24-1) and\n# the default is 32768\n# \ndiscovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 1048576\n\n# To allow the targets to control the setting of the digest checking,\n# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines:\n#node.conn[0].iscsi.HeaderDigest = CRC32C,None\n#node.conn[0].iscsi.DataDigest = CRC32C,None\n#\n# To allow the targets to control the setting of the digest checking,\n# with the initiator requesting a preference of disabling the checking,\n# uncomment one or both of the following lines:\n#node.conn[0].iscsi.HeaderDigest = None,CRC32C\n#node.conn[0].iscsi.DataDigest = None,CRC32C\n#\n# To enable CRC32C digest checking for the header and/or data part of\n# iSCSI PDUs, uncomment one or both of the following lines:\n#node.conn[0].iscsi.HeaderDigest = CRC32C\n#node.conn[0].iscsi.DataDigest = CRC32C\n#\n# To disable digest checking for the header and/or data part of\n# iSCSI PDUs, uncomment one or both of the following lines:\n#node.conn[0].iscsi.HeaderDigest = None\n#node.conn[0].iscsi.DataDigest = None\n#\n# The default is to never use DataDigests or HeaderDigests.\n#\n\n# For multipath configurations, you may want more than one session to be\n# created on each iface record.  If node.session.nr_sessions is greater\n# than 1, performing a 'login' for that node will ensure that the\n# appropriate number of sessions is created.\nnode.session.nr_sessions = 1\n\n#************\n# Workarounds\n#************\n\n# Some targets like IET prefer after an initiator has sent a task\n# management function like an ABORT TASK or LOGICAL UNIT RESET, that\n# it does not respond to PDUs like R2Ts. To enable this behavior uncomment\n# the following line (The default behavior is Yes):\nnode.session.iscsi.FastAbort = Yes\n\n# Some targets like Equalogic prefer that after an initiator has sent\n# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that\n# it continue to respond to R2Ts. To enable this uncomment this line\n# node.session.iscsi.FastAbort = No\n"
  },
  {
    "path": "images/02-console/prebuild.sh",
    "content": "#!/bin/bash\nset -e\n\nVERSION=${VERSION:?\"VERSION not set\"}\n\ncd $(dirname $0)\n\nrm -rf ./build\nmkdir -p ./build\ncp sshd_config.append.tpl ./build/\ncp iscsid.conf ./build/\n\ncat > ./build/lsb-release << EOF\nDISTRIB_ID=${DISTRIB_ID}\nDISTRIB_RELEASE=${VERSION}\nDISTRIB_DESCRIPTION=\"${DISTRIB_ID} ${VERSION}\"\nEOF\n"
  },
  {
    "path": "images/02-console/sshd_config.append.tpl",
    "content": "\n{{- if .Port}}\nPort {{.Port}}\n{{- end}}\n\n{{- if .ListenAddress}}\nListenAddress {{.ListenAddress}}\n{{- end}}\n\nClientAliveInterval 180\n\nUseDNS no\n\nAllowGroups docker\n\n# Enforce security settings\nProtocol 2\nPermitRootLogin no\nMaxAuthTries 4\nIgnoreRhosts yes\nHostbasedAuthentication no\nPermitEmptyPasswords no\nAllowTcpForwarding no\nDebianBanner no\n\n# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com hardening guide.\nKexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com\n"
  },
  {
    "path": "images/02-logrotate/.dockerignore",
    "content": "Dockerfile*\n.dockerignore\n"
  },
  {
    "path": "images/02-logrotate/Dockerfile",
    "content": "FROM burmilla/os-base\nCOPY . /\nRUN chmod 644 /etc/logrotate.conf\nENTRYPOINT [\"/usr/bin/entrypoint.sh\"]\n"
  },
  {
    "path": "images/02-logrotate/etc/logrotate.conf",
    "content": "compress\n\ninclude /etc/logrotate.d\n"
  },
  {
    "path": "images/02-logrotate/usr/bin/entrypoint.sh",
    "content": "#!/bin/bash\n\nfor f in /usr/share/logrotate/logrotate.d/*; do\n    target=/etc/logrotate.d/$(basename ${f})\n    if [ ! -e ${target} ]; then\n        cp ${f} ${target}\n    fi\ndone\n\nexec /usr/bin/ros entrypoint \"$@\"\n"
  },
  {
    "path": "images/02-logrotate/usr/share/logrotate/logrotate.d/docker",
    "content": "/var/log/docker.log\n/var/log/system-docker.log\n{\n\trotate 7\n\tdaily\n\tmissingok\n\tcopytruncate\n}\n"
  },
  {
    "path": "images/02-syslog/.dockerignore",
    "content": "Dockerfile*\n.dockerignore\n"
  },
  {
    "path": "images/02-syslog/Dockerfile",
    "content": "FROM burmilla/os-base\nCOPY . /\nENTRYPOINT [\"/usr/bin/entrypoint.sh\"]\n"
  },
  {
    "path": "images/02-syslog/usr/bin/entrypoint.sh",
    "content": "#!/bin/bash\n\ncp /usr/share/logrotate/logrotate.d/* /etc/logrotate.d\n\nexec /usr/bin/ros entrypoint \"$@\"\n"
  },
  {
    "path": "images/02-syslog/usr/share/logrotate/logrotate.d/syslog",
    "content": "/var/log/messages\n/var/log/secure\n/var/log/syslog\n{\n\trotate 7\n\tdaily\n\tdelaycompress\n\tmissingok\n\tsharedscripts\n\tpostrotate\n\t\t/usr/bin/ros service kill --signal SIGHUP syslog\n\tendscript\n}\n"
  },
  {
    "path": "main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/cmd/cloudinitexecute\"\n\t\"github.com/burmilla/os/cmd/cloudinitsave\"\n\t\"github.com/burmilla/os/cmd/control\"\n\tosInit \"github.com/burmilla/os/cmd/init\"\n\t\"github.com/burmilla/os/cmd/network\"\n\t\"github.com/burmilla/os/cmd/power\"\n\t\"github.com/burmilla/os/cmd/respawn\"\n\t\"github.com/burmilla/os/cmd/sysinit\"\n\t\"github.com/burmilla/os/cmd/wait\"\n\t\"github.com/burmilla/os/pkg/dfs\"\n\n\t\"github.com/docker/docker/pkg/reexec\"\n)\n\nvar entrypoints = map[string]func(){\n\t\"autologin\":          control.AutologinMain,\n\t\"cloud-init-execute\": cloudinitexecute.Main,\n\t\"cloud-init-save\":    cloudinitsave.Main,\n\t\"dockerlaunch\":       dfs.Main,\n\t\"init\":               osInit.MainInit,\n\t\"netconf\":            network.Main,\n\t\"recovery\":           control.AutologinMain,\n\t\"ros-bootstrap\":      control.BootstrapMain,\n\t\"ros-sysinit\":        sysinit.Main,\n\t\"wait-for-docker\":    wait.Main,\n\t\"respawn\":            respawn.Main,\n\n\t// Power commands\n\t\"halt\":     power.Shutdown,\n\t\"poweroff\": power.Shutdown,\n\t\"reboot\":   power.Shutdown,\n\t\"shutdown\": power.Shutdown,\n}\n\nfunc main() {\n\tif 0 == 1 {\n\t\t// TODO: move this into a \"dev/debug +build\"\n\t\tfmt.Fprintf(os.Stderr, \"ros main(%s) ppid:%d - print to stdio\\n\", os.Args[0], os.Getppid())\n\n\t\tfilename := \"/dev/kmsg\"\n\t\tf, err := os.OpenFile(filename, os.O_WRONLY, 0644)\n\t\tif err == nil {\n\t\t\tfmt.Fprintf(f, \"ros main(%s) ppid:%d - print to %s\\n\", os.Args[0], os.Getppid(), filename)\n\t\t}\n\t\tf.Close()\n\t}\n\n\tfor name, f := range entrypoints {\n\t\treexec.Register(name, f)\n\t}\n\n\tif !reexec.Init() {\n\t\tcontrol.Main()\n\t}\n}\n"
  },
  {
    "path": "os-config.tpl.yml",
    "content": "rancher:\n  shutdown_timeout: 60\n  http_load_retries: 6\n  environment:\n    VERSION: {{.VERSION}}\n    SUFFIX: {{.SUFFIX}}\n    REGISTRY_DOMAIN: \"docker.io\"\n  defaults:\n    hostname: {{.HOSTNAME_DEFAULT}}\n    docker:\n      engine: latest\n    network:\n      dhcp_timeout: 10\n      dns:\n        nameservers: [8.8.8.8, 8.8.4.4]\n    system_docker_logs: /var/log/system-docker.log\n  ssh:\n    daemon: true\n  hypervisor_service: true\n  services_include:\n  {{- if eq \"true\" .AZURE_SERVICE}}\n    waagent: true\n  {{- end}}\n  {{- if eq \"true\" .PROXMOXVE_SERVICE}}\n    qemu-guest-agent: true\n  {{- end}}\n  bootstrap:\n    bootstrap:\n      image: {{.OS_REPO}}/os-bootstrap:{{.VERSION}}{{.SUFFIX}}\n      command: ros-bootstrap\n      labels:\n        io.rancher.os.detach: \"false\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      volumes:\n      - /dev:/host/dev\n      - /lib/modules:/lib/modules\n      - /lib/firmware:/lib/firmware\n      - /usr/bin/ros:/usr/bin/ros:ro\n      - /usr/bin/ros:/usr/bin/ros-bootstrap:ro\n      - /usr/share/ros:/usr/share/ros:ro\n      - /var/lib/rancher:/var/lib/rancher:ro\n      - /var/log:/var/log\n  cloud_init_services:\n    cloud-init:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: cloud-init-save\n      labels:\n        io.rancher.os.detach: \"false\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: host\n      uts: host\n      pid: host\n      ipc: host\n      privileged: true\n      volumes:\n      - /etc/resolv.conf:/etc/resolv.conf\n      - /dev:/host/dev\n      - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt.rancher\n      - /lib/modules:/lib/modules\n      - /lib/firmware:/lib/firmware\n      - /usr/bin/ros:/usr/bin/ros:ro\n      - /usr/bin/ros:/usr/bin/cloud-init-save\n      - /usr/share/ros:/usr/share/ros:ro\n      - /var/lib/rancher:/var/lib/rancher\n      - /var/lib/rancher/conf:/var/lib/rancher/conf\n      - /var/log:/var/log\n  bootstrap_docker:\n    bridge: none\n    storage_driver: overlay2\n    restart: false\n    data_root: /var/lib/system-docker\n    group: root\n    host: [\"unix:///var/run/system-docker.sock\"]\n    userland_proxy: false\n  console: {{.OS_CONSOLE}}\n  cloud_init:\n    datasources:\n    - configdrive:/media/config-2\n  repositories:\n    core:\n      url: {{.OS_SERVICES_REPO}}/v2.0.x\n  state:\n    fstype: auto\n    oem_fstype: auto\n    oem_dev: LABEL=RANCHER_OEM\n    boot_fstype: auto\n    boot_dev: LABEL=RANCHER_BOOT\n    rngd: true\n  sysctl:\n    fs.file-max: 1000000000\n    fs.inotify.max_user_instances: 1024\n    fs.inotify.max_user_watches: 1048576\n    net.core.somaxconn: 4096\n    net.ipv4.tcp_retries2: 5\n    vm.dirty_background_ratio: 5\n    vm.dirty_ratio: 15\n    vm.dirty_expire_centisecs: 500\n    vm.dirty_writeback_centisecs: 100\n    vm.overcommit_memory: 1\n    vm.max_map_count: 262144\n    vm.min_free_kbytes: 65536\n    vm.swappiness: 0\n  services:\n    command-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes:\n      - /usr/bin/ros:/usr/bin/ros:ro\n      - /usr/bin/system-docker:/usr/bin/system-docker:ro\n      - /usr/bin/system-docker-runc:/usr/bin/system-docker-runc:ro\n    system-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes:\n      - /dev:/host/dev\n      - /etc/docker:/etc/docker\n      - /etc/hosts:/etc/hosts\n      - /etc/logrotate.d:/etc/logrotate.d\n      - /etc/resolv.conf:/etc/resolv.conf\n      - /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt.rancher\n      - /lib/firmware:/lib/firmware\n      - /lib/modules:/lib/modules\n      - /run:/run\n      - /usr/share/ros:/usr/share/ros\n      - /var/lib/boot2docker:/var/lib/boot2docker\n      - /var/lib/rancher/cache:/var/lib/rancher/cache\n      - /var/lib/rancher/conf:/var/lib/rancher/conf\n      - /var/lib/rancher:/var/lib/rancher\n      - /var/lib/waagent:/var/lib/waagent\n      - /var/log:/var/log\n      - /var/run:/var/run\n    container-data-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes:\n      - /var/lib/user-docker:/var/lib/docker\n      - /var/lib/m-user-docker:/var/lib/m-user-docker\n    user-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes:\n      - /home:/home\n      - /opt:/opt\n      - /var/lib/kubelet:/var/lib/kubelet\n    media-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes:\n      - /media:/media:shared\n      - /mnt:/mnt:shared\n    all-volumes:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: echo\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n        io.docker.compose.rebuild: always\n      log_driver: json-file\n      net: none\n      privileged: true\n      read_only: true\n      volumes_from:\n      - container-data-volumes\n      - command-volumes\n      - media-volumes\n      - user-volumes\n      - system-volumes\n    {{if eq \"amd64\" .ARCH -}}\n    acpid:\n      image: {{.OS_REPO}}/os-acpid:{{.VERSION}}{{.SUFFIX}}\n      command: /usr/sbin/acpid -f\n      labels:\n        io.rancher.os.scope: system\n      net: host\n      uts: host\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    {{end -}}\n    cloud-init-execute:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: cloud-init-execute -pre-console\n      labels:\n        io.rancher.os.detach: \"false\"\n        io.rancher.os.scope: system\n        io.rancher.os.after: ntp\n      net: host\n      uts: host\n      privileged: true\n      volumes_from:\n      - system-volumes\n      volumes:\n      - /usr/bin/ros:/usr/bin/ros:ro\n    console:\n      image: {{.OS_REPO}}/os-console:{{.VERSION}}{{.SUFFIX}}\n      command: ros console-init\n      labels:\n        io.rancher.os.scope: system\n        io.rancher.os.after: network\n        io.docker.compose.rebuild: \"false\"\n        io.rancher.os.console: default\n      environment:\n      - HTTP_PROXY\n      - HTTPS_PROXY\n      - NO_PROXY\n      net: host\n      uts: host\n      pid: host\n      ipc: host\n      privileged: true\n      oom_score_adj: -100\n      restart: always\n      volumes_from:\n      - all-volumes\n      volumes:\n      - /media:/media:shared\n      - /mnt:/mnt:shared\n    logrotate:\n      image: {{.OS_REPO}}/os-logrotate:{{.VERSION}}{{.SUFFIX}}\n      command: /usr/sbin/logrotate -v /etc/logrotate.conf\n      labels:\n        io.rancher.os.createonly: \"true\"\n        io.rancher.os.scope: system\n        io.rancher.os.before: system-cron\n        cron.schedule: \"@hourly\"\n      uts: host\n      net: none\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    network:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: netconf\n      labels:\n        io.rancher.os.scope: system\n        io.rancher.os.after: udev\n        io.rancher.os.reloadconfig: \"true\"\n      net: host\n      uts: host\n      pid: host\n      privileged: true\n      volumes_from:\n      - system-volumes\n      - command-volumes\n      volumes:\n      - /usr/bin/ipset:/sbin/ipset:ro\n      - /usr/bin/iptables:/sbin/iptables:ro\n    ntp:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: /bin/start_ntp.sh\n      labels:\n        io.rancher.os.scope: system\n        io.rancher.os.after: network\n      net: host\n      uts: host\n      privileged: true\n      restart: always\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    preload-user-images:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: ros preload-images\n      net: host\n      labels:\n        io.rancher.os.detach: \"false\"\n        io.rancher.os.scope: system\n        io.rancher.os.after: console\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    syslog:\n      image: {{.OS_REPO}}/os-syslog:{{.VERSION}}{{.SUFFIX}}\n      command: rsyslogd -n\n      labels:\n        io.rancher.os.scope: system\n      log_driver: json-file\n      net: host\n      uts: host\n      privileged: true\n      restart: always\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    system-cron:\n      {{if eq \"amd64\" .ARCH -}}\n      image: burmilla/container-crontab:v0.5.0\n      {{else -}}\n      image: burmilla/container-crontab:v0.5.0{{.SUFFIX}}\n      {{end -}}\n      labels:\n        io.rancher.os.scope: system\n      uts: host\n      net: none\n      privileged: true\n      restart: always\n      volumes:\n      - /var/run/system-docker.sock:/var/run/docker.sock\n    udev-cold:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: ros udev-settle\n      labels:\n        io.rancher.os.detach: \"false\"\n        io.rancher.os.scope: system\n      net: host\n      uts: host\n      privileged: true\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    udev:\n      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}\n      command: udevd\n      labels:\n        io.rancher.os.detach: \"true\"\n        io.rancher.os.scope: system\n        io.rancher.os.after: udev-cold\n      net: host\n      uts: host\n      privileged: true\n      restart: always\n      volumes_from:\n      - command-volumes\n      - system-volumes\n    docker:\n      {{if eq \"amd64\" .ARCH -}}\n      image: {{.OS_REPO}}/os-docker:latest\n      {{else -}}\n      image: {{.OS_REPO}}/os-docker:latest\n      {{end -}}\n      command: ros user-docker\n      environment:\n      - HTTP_PROXY\n      - HTTPS_PROXY\n      - NO_PROXY\n      labels:\n        io.rancher.os.scope: system\n        io.rancher.os.after: console\n      net: host\n      pid: host\n      ipc: host\n      uts: host\n      privileged: true\n      restart: always\n      volumes_from:\n      - all-volumes\n      volumes:\n      - /sys:/host/sys\n      - /var/lib/system-docker:/var/lib/system-docker:shared\n  system_docker:\n    exec: true\n    storage_driver: overlay2\n    bridge: none\n    restart: false\n    data_root: /var/lib/system-docker\n    group: root\n    host: [\"unix:///var/run/system-docker.sock\"]\n    pid_file: /var/run/system-docker.pid\n    exec_root: /var/run/system-docker\n    config_file: /etc/docker/system-docker.json\n    userland_proxy: false\n    log_opts:\n      max-size: 25m\n      max-file: 2\n  upgrade:\n    url: {{.OS_RELEASES_YML}}/releases{{.SUFFIX}}.yml\n    image: {{.OS_REPO}}/os\n    policy: download\n  docker:\n    engine: latest\n    group: docker\n    host: [\"unix:///var/run/docker.sock\"]\n    log_opts:\n      max-size: 25m\n      max-file: 2\n    tls_args: [--tlsverify, --tlscacert=/etc/docker/tls/ca.pem, --tlscert=/etc/docker/tls/server-cert.pem, --tlskey=/etc/docker/tls/server-key.pem,\n      '-H=0.0.0.0:2376']\n"
  },
  {
    "path": "pkg/compose/project.go",
    "content": "package compose\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/burmilla/os/config\"\n\trosDocker \"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\tdockerClient \"github.com/docker/engine-api/client\"\n\t\"github.com/docker/libcompose/cli/logger\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/docker\"\n\tcomposeClient \"github.com/docker/libcompose/docker/client\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/events\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc CreateService(cfg *config.CloudConfig, name string, serviceConfig *composeConfig.ServiceConfigV1) (project.Service, error) {\n\tif cfg == nil {\n\t\tcfg = config.LoadConfig()\n\t}\n\n\tp, err := CreateServiceSet(\"once\", cfg, map[string]*composeConfig.ServiceConfigV1{\n\t\tname: serviceConfig,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p.CreateService(name)\n}\n\nfunc CreateServiceSet(name string, cfg *config.CloudConfig, configs map[string]*composeConfig.ServiceConfigV1) (*project.Project, error) {\n\tp, err := newProject(name, cfg, nil, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\taddServices(p, map[interface{}]interface{}{}, configs)\n\n\treturn p, nil\n}\n\nfunc RunServiceSet(name string, cfg *config.CloudConfig, configs map[string]*composeConfig.ServiceConfigV1) (*project.Project, error) {\n\tp, err := CreateServiceSet(name, cfg, configs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, p.Up(context.Background(), options.Up{\n\t\tLog: cfg.Rancher.Log,\n\t})\n}\n\nfunc GetProject(cfg *config.CloudConfig, networkingAvailable, loadConsole bool) (*project.Project, error) {\n\treturn newCoreServiceProject(cfg, networkingAvailable, loadConsole)\n}\n\nfunc newProject(name string, cfg *config.CloudConfig, environmentLookup composeConfig.EnvironmentLookup, authLookup *rosDocker.ConfigAuthLookup) (*project.Project, error) {\n\tclientFactory, err := rosDocker.NewClientFactory(composeClient.Options{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif environmentLookup == nil {\n\t\tenvironmentLookup = rosDocker.NewConfigEnvironment(cfg)\n\t}\n\tif authLookup == nil {\n\t\tauthLookup = rosDocker.NewConfigAuthLookup(cfg)\n\t}\n\n\tserviceFactory := &rosDocker.ServiceFactory{\n\t\tDeps: map[string][]string{},\n\t}\n\tcontext := &docker.Context{\n\t\tClientFactory: clientFactory,\n\t\tAuthLookup:    authLookup,\n\t\tContext: project.Context{\n\t\t\tProjectName:       name,\n\t\t\tEnvironmentLookup: environmentLookup,\n\t\t\tServiceFactory:    serviceFactory,\n\t\t\tLoggerFactory:     logger.NewColorLoggerFactory(),\n\t\t},\n\t}\n\tserviceFactory.Context = context\n\n\tauthLookup.SetContext(context)\n\n\treturn docker.NewProject(context, &composeConfig.ParseOptions{\n\t\tInterpolate: true,\n\t\tValidate:    false,\n\t\tPreprocess:  preprocessServiceMap,\n\t})\n}\n\nfunc preprocessServiceMap(serviceMap composeConfig.RawServiceMap) (composeConfig.RawServiceMap, error) {\n\tnewServiceMap := make(composeConfig.RawServiceMap)\n\n\tfor k, v := range serviceMap {\n\t\tnewServiceMap[k] = make(composeConfig.RawService)\n\n\t\tfor k2, v2 := range v {\n\t\t\tif k2 == \"environment\" || k2 == \"labels\" {\n\t\t\t\tnewServiceMap[k][k2] = preprocess(v2, true)\n\t\t\t} else {\n\t\t\t\tnewServiceMap[k][k2] = preprocess(v2, false)\n\t\t\t}\n\n\t\t}\n\t}\n\n\treturn newServiceMap, nil\n}\n\nfunc preprocess(item interface{}, replaceTypes bool) interface{} {\n\tswitch typedDatas := item.(type) {\n\n\tcase map[interface{}]interface{}:\n\t\tnewMap := make(map[interface{}]interface{})\n\n\t\tfor key, value := range typedDatas {\n\t\t\tnewMap[key] = preprocess(value, replaceTypes)\n\t\t}\n\t\treturn newMap\n\n\tcase []interface{}:\n\t\t// newArray := make([]interface{}, 0) will cause golint to complain\n\t\tvar newArray []interface{}\n\t\tnewArray = make([]interface{}, 0)\n\n\t\tfor _, value := range typedDatas {\n\t\t\tnewArray = append(newArray, preprocess(value, replaceTypes))\n\t\t}\n\t\treturn newArray\n\n\tdefault:\n\t\tif replaceTypes {\n\t\t\treturn fmt.Sprint(item)\n\t\t}\n\t\treturn item\n\t}\n}\n\nfunc addServices(p *project.Project, enabled map[interface{}]interface{}, configs map[string]*composeConfig.ServiceConfigV1) map[interface{}]interface{} {\n\tserviceConfigsV2, _ := composeConfig.ConvertServices(configs)\n\n\t// Note: we ignore errors while loading services\n\tunchanged := true\n\tfor name, serviceConfig := range serviceConfigsV2 {\n\t\thash := composeConfig.GetServiceHash(name, serviceConfig)\n\n\t\tif enabled[name] == hash {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := p.AddConfig(name, serviceConfig); err != nil {\n\t\t\tlog.Infof(\"Failed loading service %s\", name)\n\t\t\tcontinue\n\t\t}\n\n\t\tif unchanged {\n\t\t\tenabled = util.MapCopy(enabled)\n\t\t\tunchanged = false\n\t\t}\n\t\tenabled[name] = hash\n\t}\n\treturn enabled\n}\n\nfunc adjustContainerNames(m map[interface{}]interface{}) map[interface{}]interface{} {\n\tfor k, v := range m {\n\t\tif k, ok := k.(string); ok {\n\t\t\tif v, ok := v.(map[interface{}]interface{}); ok {\n\t\t\t\tif _, ok := v[\"container_name\"]; !ok {\n\t\t\t\t\tv[\"container_name\"] = k\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn m\n}\n\nfunc newCoreServiceProject(cfg *config.CloudConfig, useNetwork, loadConsole bool) (*project.Project, error) {\n\tenvironmentLookup := rosDocker.NewConfigEnvironment(cfg)\n\tauthLookup := rosDocker.NewConfigAuthLookup(cfg)\n\n\tp, err := newProject(\"os\", cfg, environmentLookup, authLookup)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tprojectEvents := make(chan events.Event)\n\tp.AddListener(project.NewDefaultListener(p))\n\tp.AddListener(projectEvents)\n\n\tp.ReloadCallback = projectReload(p, &useNetwork, loadConsole, environmentLookup, authLookup)\n\n\tgo func() {\n\t\tfor event := range projectEvents {\n\t\t\tif event.EventType == events.ContainerStarted && event.ServiceName == \"network\" {\n\t\t\t\tuseNetwork = true\n\t\t\t}\n\t\t}\n\t}()\n\n\terr = p.ReloadCallback()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to reload os: %v\", err)\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\nfunc StageServices(cfg *config.CloudConfig, services ...string) error {\n\tp, err := newProject(\"stage-services\", cfg, nil, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// read engine services\n\tcomposeConfigs := map[string]composeConfig.ServiceConfigV1{}\n\tif _, err := os.Stat(config.MultiDockerConfFile); err == nil {\n\t\t// read from engine compose\n\t\tmultiEngineBytes, err := ioutil.ReadFile(config.MultiDockerConfFile)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to read %s : %v\", config.MultiDockerConfFile, err)\n\t\t}\n\t\terr = yaml.Unmarshal(multiEngineBytes, &composeConfigs)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to unmarshal %s : %v\", config.MultiDockerConfFile, err)\n\t\t}\n\t}\n\n\tfor _, service := range services {\n\t\tvar bytes []byte\n\t\tfoundServiceConfig := map[string]composeConfig.ServiceConfigV1{}\n\n\t\tif _, ok := composeConfigs[service]; ok {\n\t\t\tfoundServiceConfig[service] = composeConfigs[service]\n\t\t\tbytes, err = yaml.Marshal(foundServiceConfig)\n\t\t} else {\n\t\t\tbytes, err = network.LoadServiceResource(service, true, cfg)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to load %s : %v\", service, err)\n\t\t}\n\n\t\tm := map[interface{}]interface{}{}\n\t\tif err := yaml.Unmarshal(bytes, &m); err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to parse YAML configuration: %s : %v\", service, err)\n\t\t}\n\n\t\tbytes, err = yaml.Marshal(m)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to marshal YAML configuration: %s : %v\", service, err)\n\t\t}\n\n\t\terr = p.Load(bytes)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to load %s : %v\", service, err)\n\t\t}\n\t}\n\n\t// Reduce service configurations to just image and labels\n\tneedToPull := false\n\tvar client, userClient, systemClient dockerClient.APIClient\n\tfor _, serviceName := range p.ServiceConfigs.Keys() {\n\t\tserviceConfig, _ := p.ServiceConfigs.Get(serviceName)\n\n\t\t// test to see if we need to Pull\n\t\tif serviceConfig.Labels[config.ScopeLabel] != config.System {\n\t\t\tif userClient == nil {\n\t\t\t\tuserClient, err = rosDocker.NewDefaultClient()\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Error(err)\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tclient = userClient\n\t\t} else {\n\t\t\tif systemClient == nil {\n\t\t\t\tsystemClient, err = rosDocker.NewSystemClient()\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Error(err)\n\t\t\t\t}\n\t\t\t\tclient = systemClient\n\t\t\t}\n\t\t}\n\t\tif client != nil {\n\t\t\t_, _, err := client.ImageInspectWithRaw(context.Background(), serviceConfig.Image, false)\n\t\t\tif err == nil {\n\t\t\t\tlog.Infof(\"Service %s using local image %s\", serviceName, serviceConfig.Image)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tneedToPull = true\n\n\t\tp.ServiceConfigs.Add(serviceName, &composeConfig.ServiceConfig{\n\t\t\tImage:  serviceConfig.Image,\n\t\t\tLabels: serviceConfig.Labels,\n\t\t})\n\t}\n\n\tif needToPull {\n\t\treturn p.Pull(context.Background())\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/compose/reload.go",
    "content": "package compose\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project\"\n)\n\nfunc LoadService(p *project.Project, cfg *config.CloudConfig, useNetwork bool, service string) error {\n\t// First check the multi engine service file.\n\t// If the name has been found in multi enging service file and matches, will not execute network.LoadServiceResource\n\t// Otherwise will execute network.LoadServiceResource\n\tbytes, err := network.LoadMultiEngineResource(service)\n\tif err != nil || bytes == nil {\n\t\tbytes, err = network.LoadServiceResource(service, useNetwork, cfg)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tm := map[interface{}]interface{}{}\n\tif err = yaml.Unmarshal(bytes, &m); err != nil {\n\t\te := fmt.Errorf(\"Failed to parse YAML configuration for %s: %v\", service, err)\n\t\tlog.Error(e)\n\t\treturn e\n\t}\n\n\tm = adjustContainerNames(m)\n\n\tbytes, err = yaml.Marshal(m)\n\tif err != nil {\n\t\te := fmt.Errorf(\"Failed to marshal YAML configuration for %s: %v\", service, err)\n\t\tlog.Error(e)\n\t\treturn e\n\t}\n\n\tif err = p.Load(bytes); err != nil {\n\t\te := fmt.Errorf(\"Failed to load %s: %v\", service, err)\n\t\tlog.Error(e)\n\t\treturn e\n\t}\n\n\treturn nil\n}\n\nfunc LoadSpecialService(p *project.Project, cfg *config.CloudConfig, serviceName, serviceValue string) error {\n\t// Save config in case load fails\n\tpreviousConfig, ok := p.ServiceConfigs.Get(serviceName)\n\n\tp.ServiceConfigs.Add(serviceName, &composeConfig.ServiceConfig{})\n\n\tif err := LoadService(p, cfg, true, serviceValue); err != nil {\n\t\t// Rollback to previous config\n\t\tif ok {\n\t\t\tp.ServiceConfigs.Add(serviceName, previousConfig)\n\t\t}\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc loadConsoleService(cfg *config.CloudConfig, p *project.Project) error {\n\tif cfg.Rancher.Console == \"\" || cfg.Rancher.Console == \"default\" {\n\t\treturn nil\n\t}\n\treturn LoadSpecialService(p, cfg, \"console\", cfg.Rancher.Console)\n}\n\nfunc loadEngineService(cfg *config.CloudConfig, p *project.Project) error {\n\tif cfg.Rancher.Docker.Engine == \"\" || cfg.Rancher.Docker.Engine == cfg.Rancher.Defaults.Docker.Engine {\n\t\treturn nil\n\t}\n\treturn LoadSpecialService(p, cfg, \"docker\", cfg.Rancher.Docker.Engine)\n}\n\nfunc projectReload(p *project.Project, useNetwork *bool, loadConsole bool, environmentLookup *docker.ConfigEnvironment, authLookup *docker.ConfigAuthLookup) func() error {\n\tenabled := map[interface{}]interface{}{}\n\treturn func() error {\n\t\tcfg := config.LoadConfig()\n\n\t\tenvironmentLookup.SetConfig(cfg)\n\t\tauthLookup.SetConfig(cfg)\n\n\t\tenabled = addServices(p, enabled, cfg.Rancher.Services)\n\n\t\tfor service, serviceEnabled := range cfg.Rancher.ServicesInclude {\n\t\t\tif _, ok := enabled[service]; ok || !serviceEnabled {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif err := LoadService(p, cfg, *useNetwork, service); err != nil {\n\t\t\t\tif err != network.ErrNoNetwork {\n\t\t\t\t\tlog.Errorf(\"Failed to load service(%s): %v\", service, err)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tenabled[service] = service\n\t\t}\n\n\t\tif !*useNetwork {\n\t\t\treturn nil\n\t\t}\n\n\t\tif loadConsole {\n\t\t\tif err := loadConsoleService(cfg, p); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to load rancher.console=(%s): %v\", cfg.Rancher.Console, err)\n\t\t\t}\n\t\t}\n\n\t\tif err := loadEngineService(cfg, p); err != nil {\n\t\t\tlog.Errorf(\"Failed to load rancher.docker.engine=(%s): %v\", cfg.Rancher.Docker.Engine, err)\n\t\t}\n\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "pkg/dfs/scratch.go",
    "content": "package dfs\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/init/one\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\t\"github.com/docker/libnetwork/resolvconf\"\n)\n\nconst (\n\tdefaultPrefix = \"/usr\"\n\tiptables      = \"/sbin/iptables\"\n\tmodprobe      = \"/sbin/modprobe\"\n\tdistSuffix    = \".dist\"\n)\n\nvar (\n\tmounts = [][]string{\n\t\t{\"devtmpfs\", \"/dev\", \"devtmpfs\", \"\"},\n\t\t{\"none\", \"/dev/pts\", \"devpts\", \"\"},\n\t\t{\"shm\", \"/dev/shm\", \"tmpfs\", \"rw,nosuid,nodev,noexec,relatime,size=65536k\"},\n\t\t{\"mqueue\", \"/dev/mqueue\", \"mqueue\", \"rw,nosuid,nodev,noexec,relatime\"},\n\t\t{\"none\", \"/proc\", \"proc\", \"\"},\n\t\t{\"none\", \"/run\", \"tmpfs\", \"\"},\n\t\t{\"none\", \"/sys\", \"sysfs\", \"\"},\n\t\t{\"none\", \"/sys/fs/cgroup\", \"tmpfs\", \"\"},\n\t\t{\"debugfs\", \"/sys/kernel/debug\", \"debugfs\", \"\"},\n\t}\n)\n\ntype Config struct {\n\tFork              bool\n\tPidOne            bool\n\tCommandName       string\n\tDNSConfig         netconf.DNSConfig\n\tBridgeName        string\n\tBridgeAddress     string\n\tBridgeMtu         int\n\tCgroupHierarchy   map[string]string\n\tLogFile           string\n\tNoLog             bool\n\tNoFiles           uint64\n\tEnvironment       []string\n\tDataRootDirectory string\n\tDaemonConfig      string\n}\n\nfunc createMounts(mounts ...[]string) error {\n\tfor _, mount := range mounts {\n\t\tlog.Debugf(\"Mounting %s %s %s %s\", mount[0], mount[1], mount[2], mount[3])\n\t\terr := util.Mount(mount[0], mount[1], mount[2], mount[3])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc createDirs(dirs ...string) error {\n\tfor _, dir := range dirs {\n\t\tif _, err := os.Stat(dir); os.IsNotExist(err) {\n\t\t\tlog.Debugf(\"Creating %s\", dir)\n\t\t\terr = os.MkdirAll(dir, 0755)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc mountCgroups(hierarchyConfig map[string]string) error {\n\tf, err := os.Open(\"/proc/cgroups\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tscanner := bufio.NewScanner(f)\n\n\thierarchies := make(map[string][]string)\n\n\tfor scanner.Scan() {\n\t\ttext := scanner.Text()\n\t\tlog.Debugf(\"/proc/cgroups: %s\", text)\n\t\tfields := strings.Split(text, \"\\t\")\n\t\tcgroup := fields[0]\n\t\tif cgroup == \"\" || cgroup[0] == '#' || (len(fields) > 3 && fields[3] == \"0\") {\n\t\t\tcontinue\n\t\t}\n\n\t\thierarchy := hierarchyConfig[cgroup]\n\t\tif hierarchy == \"\" {\n\t\t\thierarchy = fields[1]\n\t\t}\n\n\t\tif hierarchy == \"0\" {\n\t\t\thierarchy = cgroup\n\t\t}\n\n\t\thierarchies[hierarchy] = append(hierarchies[hierarchy], cgroup)\n\t}\n\n\tfor _, hierarchy := range hierarchies {\n\t\tif err := mountCgroup(strings.Join(hierarchy, \",\")); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err = scanner.Err(); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"Done mouting cgroupfs\")\n\treturn nil\n}\n\nfunc CreateSymlinks(pathSets [][]string) error {\n\tfor _, paths := range pathSets {\n\t\tif err := CreateSymlink(paths[0], paths[1]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc CreateSymlink(src, dest string) error {\n\tif _, err := os.Lstat(dest); os.IsNotExist(err) {\n\t\tlog.Debugf(\"Symlinking %s => %s\", dest, src)\n\t\tif err = os.Symlink(src, dest); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc mountCgroup(cgroup string) error {\n\tif err := createDirs(\"/sys/fs/cgroup/\" + cgroup); err != nil {\n\t\treturn err\n\t}\n\n\tif err := createMounts([][]string{{\"none\", \"/sys/fs/cgroup/\" + cgroup, \"cgroup\", cgroup}}...); err != nil {\n\t\treturn err\n\t}\n\n\tparts := strings.Split(cgroup, \",\")\n\tif len(parts) > 1 {\n\t\tfor _, part := range parts {\n\t\t\tif err := CreateSymlink(\"/sys/fs/cgroup/\"+cgroup, \"/sys/fs/cgroup/\"+part); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc execDocker(config *Config, docker, cmd string, args []string) (*exec.Cmd, error) {\n\tif len(args) > 0 && args[0] == \"docker\" {\n\t\targs = args[1:]\n\t}\n\tlog.Debugf(\"Launching Docker %s %s %v\", docker, cmd, args)\n\n\tenv := os.Environ()\n\tif len(config.Environment) != 0 {\n\t\tenv = append(env, config.Environment...)\n\t}\n\n\tif config.Fork {\n\t\tcmd := exec.Command(docker, args...)\n\t\tif !config.NoLog {\n\t\t\tcmd.Stdout = os.Stdout\n\t\t\tcmd.Stderr = os.Stderr\n\t\t}\n\t\tcmd.Env = env\n\t\terr := cmd.Start()\n\t\tif err != nil {\n\t\t\treturn cmd, err\n\t\t}\n\t\tif config.PidOne {\n\t\t\tone.PidOne()\n\t\t}\n\t\treturn cmd, err\n\t}\n\n\treturn nil, syscall.Exec(expand(docker), append([]string{cmd}, args...), env)\n}\n\nfunc copyDefault(folder, name string) error {\n\tdefaultFile := path.Join(defaultPrefix, folder, name)\n\treturn CopyFile(defaultFile, folder, name)\n}\n\nfunc copyDefaultFolder(folder string) error {\n\tlog.Debugf(\"Copying folder %s\", folder)\n\tdefaultFolder := path.Join(defaultPrefix, folder)\n\tfiles, _ := ioutil.ReadDir(defaultFolder)\n\tfor _, file := range files {\n\t\tvar err error\n\t\tif file.IsDir() {\n\t\t\terr = copyDefaultFolder(path.Join(folder, file.Name()))\n\t\t} else {\n\t\t\terr = copyDefault(folder, file.Name())\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc defaultFiles(files ...string) error {\n\tfor _, file := range files {\n\t\tdir := path.Dir(file)\n\t\tname := path.Base(file)\n\t\tif err := copyDefault(dir, name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc defaultFolders(folders ...string) error {\n\tfor _, folder := range folders {\n\t\tif err := copyDefaultFolder(folder); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc CopyFile(src, folder, name string) error {\n\treturn CopyFileOverwrite(src, folder, name, false)\n}\n\nfunc CopyFileOverwrite(src, folder, name string, overwrite bool) error {\n\tif _, err := os.Lstat(src); os.IsNotExist(err) {\n\t\tlog.Debugf(\"Not copying %s, does not exists\", src)\n\t\treturn nil\n\t}\n\n\tdst := path.Join(folder, name)\n\tif !overwrite {\n\t\tif _, err := os.Lstat(dst); err == nil {\n\t\t\tlog.Debugf(\"Not copying %s => %s already exists\", src, dst)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif err := createDirs(folder); err != nil {\n\t\treturn err\n\t}\n\n\tstat, err := os.Lstat(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif stat.Mode()&os.ModeSymlink != 0 {\n\t\tsymDst, err := os.Readlink(src)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to readlink: %v\", err)\n\t\t\treturn err\n\t\t}\n\t\t// file is a symlink\n\t\tlog.Debugf(\"Symlinking %s => %s\", dst, symDst)\n\t\treturn os.Symlink(symDst, dst)\n\t}\n\n\tsrcFile, err := os.Open(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer srcFile.Close()\n\n\tdstFile, err := os.Create(dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer dstFile.Close()\n\n\tlog.Debugf(\"Copying %s => %s\", src, dst)\n\t_, err = io.Copy(dstFile, srcFile)\n\treturn err\n}\n\nfunc tryCreateFile(name, content string) error {\n\tif _, err := os.Stat(name); err == nil {\n\t\treturn nil\n\t}\n\n\tif err := createDirs(path.Dir(name)); err != nil {\n\t\treturn err\n\t}\n\n\treturn ioutil.WriteFile(name, []byte(content), 0644)\n}\n\nfunc createPasswd() error {\n\treturn tryCreateFile(\"/etc/passwd\", \"root:x:0:0:root:/root:/bin/sh\\n\")\n}\n\nfunc createGroup() error {\n\treturn tryCreateFile(\"/etc/group\", \"root:x:0:\\n\")\n}\n\nfunc setupNetworking(cfg *Config) error {\n\tif cfg == nil {\n\t\treturn nil\n\t}\n\n\thostname, err := os.Hostname()\n\tif err != nil {\n\t\treturn err\n\t}\n\ttryCreateFile(\"/etc/hosts\", `127.0.0.1    localhost\n::1    localhost ip6-localhost ip6-loopback\nfe00::0    ip6-localnet\nff00::0    ip6-mcastprefix\nff02::1    ip6-allnodes\nff02::2    ip6-allrouters\n\n127.0.1.1       `+hostname)\n\n\tif len(cfg.DNSConfig.Nameservers) != 0 {\n\t\tresolve, err := ioutil.ReadFile(\"/etc/resolv.conf\")\n\t\tlog.Debugf(\"Resolve.conf == [%s], %v\", resolve, err)\n\n\t\tif err != nil {\n\t\t\tlog.Infof(\"scratch Writing empty resolv.conf (%v) %v\", []string{}, []string{})\n\t\t\tif _, err := resolvconf.Build(\"/etc/resolv.conf\", []string{}, []string{}, nil); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tif cfg.BridgeName != \"\" && cfg.BridgeName != \"none\" {\n\t\tlog.Debugf(\"Creating bridge %s (%s)\", cfg.BridgeName, cfg.BridgeAddress)\n\t\tif _, err := netconf.ApplyNetworkConfigs(&netconf.NetworkConfig{\n\t\t\tInterfaces: map[string]netconf.InterfaceConfig{\n\t\t\t\tcfg.BridgeName: {\n\t\t\t\t\tAddress: cfg.BridgeAddress,\n\t\t\t\t\tMTU:     cfg.BridgeMtu,\n\t\t\t\t\tBridge:  \"true\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, false, false); err != nil {\n\t\t\tlog.Errorf(\"Error creating bridge: %s\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc GetValue(index int, args []string) string {\n\tval := args[index]\n\tparts := strings.SplitN(val, \"=\", 2)\n\tif len(parts) == 1 {\n\t\tif len(args) > index+1 {\n\t\t\treturn args[index+1]\n\t\t}\n\t\treturn \"\"\n\t}\n\treturn parts[1]\n}\n\nfunc ParseConfig(config *Config, args ...string) []string {\n\tfor i, arg := range args {\n\t\tif strings.HasPrefix(arg, \"--bip\") {\n\t\t\tconfig.BridgeAddress = GetValue(i, args)\n\t\t} else if strings.HasPrefix(arg, \"--fixed-cidr\") {\n\t\t\tconfig.BridgeAddress = GetValue(i, args)\n\t\t} else if strings.HasPrefix(arg, \"-b\") || strings.HasPrefix(arg, \"--bridge\") {\n\t\t\tconfig.BridgeName = GetValue(i, args)\n\t\t} else if strings.HasPrefix(arg, \"--config-file\") {\n\t\t\tconfig.DaemonConfig = GetValue(i, args)\n\t\t} else if strings.HasPrefix(arg, \"--mtu\") {\n\t\t\tmtu, err := strconv.Atoi(GetValue(i, args))\n\t\t\tif err != nil {\n\t\t\t\tconfig.BridgeMtu = mtu\n\t\t\t}\n\t\t} else if strings.HasPrefix(arg, \"--data-root\") {\n\t\t\tconfig.DataRootDirectory = GetValue(i, args)\n\t\t}\n\t}\n\n\tif config.BridgeName != \"\" && config.BridgeAddress != \"\" {\n\t\tnewArgs := []string{}\n\t\tskip := false\n\t\tfor _, arg := range args {\n\t\t\tif skip {\n\t\t\t\tskip = false\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif arg == \"--bip\" {\n\t\t\t\tskip = true\n\t\t\t\tcontinue\n\t\t\t} else if strings.HasPrefix(arg, \"--bip=\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tnewArgs = append(newArgs, arg)\n\t\t}\n\n\t\targs = newArgs\n\t}\n\n\treturn args\n}\n\nfunc PrepareFs(config *Config) error {\n\tif err := createMounts(mounts...); err != nil {\n\t\treturn err\n\t}\n\n\tif util.GetHypervisor() != \"wsl2\" {\n\t\tif err := mountCgroups(config.CgroupHierarchy); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := createLayout(config); err != nil {\n\t\treturn err\n\t}\n\n\treturn firstPrepare()\n}\n\nfunc touchSocket(path string) error {\n\tif err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) {\n\t\treturn err\n\t}\n\treturn ioutil.WriteFile(path, []byte{}, 0700)\n}\n\nfunc touchSockets(args ...string) error {\n\ttouched := false\n\n\tfor i, arg := range args {\n\t\tif strings.HasPrefix(arg, \"-H\") {\n\t\t\tval := GetValue(i, args)\n\t\t\tif strings.HasPrefix(val, \"unix://\") {\n\t\t\t\tval = val[len(\"unix://\"):]\n\t\t\t\tlog.Debugf(\"Creating temp file at %s\", val)\n\t\t\t\tif err := touchSocket(val); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ttouched = true\n\t\t\t}\n\t\t}\n\t}\n\n\tif !touched {\n\t\treturn touchSocket(\"/var/run/docker.sock\")\n\t}\n\n\treturn nil\n}\n\nfunc createDaemonConfig(config *Config) error {\n\tif config.DaemonConfig == \"\" {\n\t\treturn nil\n\t}\n\n\tif _, err := os.Stat(config.DaemonConfig); os.IsNotExist(err) {\n\t\tif err := os.MkdirAll(path.Dir(config.DaemonConfig), 0755); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn ioutil.WriteFile(config.DaemonConfig, []byte(\"{}\"), 0600)\n\t}\n\n\treturn nil\n}\n\nfunc cleanupFiles(dataRootDirectory string) {\n\tzeroFiles := []string{\n\t\t\"/etc/docker/key.json\",\n\t\t\"/etc/docker/daemon.json\",\n\t\t\"/etc/docker/system-daemon.json\",\n\t\tpath.Join(dataRootDirectory, \"image/overlay/repositories.json\"),\n\t}\n\n\tfor _, file := range zeroFiles {\n\t\tif stat, err := os.Stat(file); err == nil {\n\t\t\tif stat.Size() < 2 {\n\t\t\t\tlog.Warnf(\"Deleting invalid json file: %s\", file)\n\t\t\t\tos.Remove(file)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc createLayout(config *Config) error {\n\tif err := createDirs(\"/tmp\", \"/root/.ssh\", \"/var\", \"/usr/lib\"); err != nil {\n\t\treturn err\n\t}\n\n\tdataRootDirectory := config.DataRootDirectory\n\n\tif config.DataRootDirectory == \"\" {\n\t\tdataRootDirectory = \"/var/lib/docker\"\n\t}\n\n\tif err := createDirs(dataRootDirectory); err != nil {\n\t\treturn err\n\t}\n\n\tif err := createDaemonConfig(config); err != nil {\n\t\treturn err\n\t}\n\n\tcleanupFiles(dataRootDirectory)\n\n\tsymlinks := [][]string{\n\t\t{\"usr/lib\", \"/lib\"},\n\t\t{\"usr/sbin\", \"/sbin\"},\n\t\t{\"../run\", \"/var/run\"},\n\t}\n\n\trootCmdline := cmdline.GetCmdline(\"root\")\n\trootDevice := rootCmdline.(string)\n\tif rootDevice != \"\" {\n\t\tif _, err := os.Stat(\"/dev/root\"); os.IsNotExist(err) {\n\t\t\tsymlinks = append(symlinks, []string{rootDevice, \"/dev/root\"})\n\t\t}\n\t}\n\n\treturn CreateSymlinks(symlinks)\n}\n\nfunc firstPrepare() error {\n\tos.Setenv(\"PATH\", \"/sbin:/usr/sbin:/usr/bin\")\n\n\tif err := defaultFiles(\n\t\t\"/etc/ssl/certs/ca-certificates.crt\",\n\t\t\"/etc/passwd\",\n\t\t\"/etc/group\",\n\t); err != nil {\n\t\treturn err\n\t}\n\n\tif err := defaultFolders(\n\t\t\"/etc/docker\",\n\t); err != nil {\n\t\treturn err\n\t}\n\n\tif err := createPasswd(); err != nil {\n\t\treturn err\n\t}\n\n\treturn createGroup()\n}\n\nfunc secondPrepare(config *Config, docker string, args ...string) error {\n\n\tif err := setupNetworking(config); err != nil {\n\t\treturn err\n\t}\n\n\tif err := touchSockets(args...); err != nil {\n\t\treturn err\n\t}\n\n\tif err := setupLogging(config); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, i := range []string{docker, iptables, modprobe} {\n\t\tif err := setupBin(config, i); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := setUlimit(config); err != nil {\n\t\treturn err\n\t}\n\n\tioutil.WriteFile(\"/proc/sys/net/ipv4/ip_forward\", []byte(\"1\"), 0655)\n\n\treturn nil\n}\n\nfunc expand(bin string) string {\n\texpanded, err := exec.LookPath(bin)\n\tif err == nil {\n\t\treturn expanded\n\t}\n\treturn bin\n}\n\nfunc setupBin(config *Config, bin string) error {\n\texpanded, err := exec.LookPath(bin)\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\texpanded, err = exec.LookPath(bin + distSuffix)\n\tif err != nil {\n\t\t// Purposely not returning error\n\t\treturn nil\n\t}\n\n\treturn CreateSymlink(expanded, expanded[:len(expanded)-len(distSuffix)])\n}\n\nfunc setupLogging(config *Config) error {\n\tif config.LogFile == \"\" {\n\t\treturn nil\n\t}\n\n\tif err := createDirs(path.Dir(config.LogFile)); err != nil {\n\t\treturn err\n\t}\n\n\toutput, err := os.OpenFile(config.LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsyscall.Dup3(int(output.Fd()), int(os.Stdout.Fd()), 0)\n\tsyscall.Dup3(int(output.Fd()), int(os.Stderr.Fd()), 0)\n\n\treturn nil\n}\n\nfunc setUlimit(cfg *Config) error {\n\tvar rLimit syscall.Rlimit\n\tif err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit); err != nil {\n\t\treturn err\n\t}\n\tif cfg.NoFiles == 0 {\n\t\trLimit.Max = 1000000\n\t} else {\n\t\trLimit.Max = cfg.NoFiles\n\t}\n\trLimit.Cur = rLimit.Max\n\treturn syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)\n}\n\nfunc runOrExec(config *Config, docker string, args ...string) (*exec.Cmd, error) {\n\tif err := secondPrepare(config, docker, args...); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcmd := path.Base(docker)\n\tif config != nil && config.CommandName != \"\" {\n\t\tcmd = config.CommandName\n\t}\n\n\tif cmd == \"dockerd\" && len(args) > 1 && args[0] == \"daemon\" {\n\t\targs = args[1:]\n\t}\n\n\treturn execDocker(config, docker, cmd, args)\n}\n\nfunc LaunchDocker(config *Config, docker string, args ...string) (*exec.Cmd, error) {\n\tif err := PrepareFs(config); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn runOrExec(config, docker, args...)\n}\n\nfunc Main() {\n\tlog.InitLogger()\n\tif os.Getenv(\"DOCKER_LAUNCH_DEBUG\") == \"true\" {\n\t\tlog.SetLevel(log.DebugLevel)\n\t}\n\n\tif len(os.Args) < 2 {\n\t\tlog.Fatalf(\"Usage Example: %s /usr/bin/docker -d -D\", os.Args[0])\n\t}\n\n\targs := []string{}\n\tif len(os.Args) > 1 {\n\t\targs = os.Args[2:]\n\t}\n\n\tvar config Config\n\targs = ParseConfig(&config, args...)\n\n\tif os.Getenv(\"DOCKER_LAUNCH_REAP\") == \"true\" {\n\t\tconfig.Fork = true\n\t\tconfig.PidOne = true\n\t}\n\n\tlog.Debugf(\"Launch config %#v\", config)\n\n\t_, err := LaunchDocker(&config, os.Args[1], args...)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "pkg/docker/auth.go",
    "content": "package docker\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/docker/docker/registry\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/libcompose/docker\"\n)\n\n// ConfigAuthLookup will lookup registry auth info from cloud config\n// if a context is set, it will also lookup auth info from the Docker config file\ntype ConfigAuthLookup struct {\n\tcfg                    *config.CloudConfig\n\tcontext                *docker.Context\n\tdockerConfigAuthLookup *docker.ConfigAuthLookup\n}\n\nfunc NewConfigAuthLookup(cfg *config.CloudConfig) *ConfigAuthLookup {\n\treturn &ConfigAuthLookup{\n\t\tcfg: cfg,\n\t}\n}\n\nfunc populateRemaining(authConfig *types.AuthConfig) error {\n\tif authConfig.Auth == \"\" {\n\t\treturn nil\n\t}\n\n\tdecoded, err := base64.URLEncoding.DecodeString(authConfig.Auth)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdecodedSplit := strings.Split(string(decoded), \":\")\n\tif len(decodedSplit) != 2 {\n\t\treturn fmt.Errorf(\"Invalid auth: %s\", authConfig.Auth)\n\t}\n\n\tauthConfig.Username = decodedSplit[0]\n\tauthConfig.Password = decodedSplit[1]\n\n\treturn nil\n}\n\nfunc (c *ConfigAuthLookup) SetConfig(cfg *config.CloudConfig) {\n\tc.cfg = cfg\n}\n\nfunc (c *ConfigAuthLookup) SetContext(context *docker.Context) {\n\tc.context = context\n\tc.dockerConfigAuthLookup = docker.NewConfigAuthLookup(context)\n}\n\nfunc (c *ConfigAuthLookup) Lookup(repoInfo *registry.RepositoryInfo) types.AuthConfig {\n\tif repoInfo == nil || repoInfo.Index == nil {\n\t\treturn types.AuthConfig{}\n\t}\n\tauthConfig := registry.ResolveAuthConfig(c.All(), repoInfo.Index)\n\n\terr := populateRemaining(&authConfig)\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn types.AuthConfig{}\n\t}\n\n\treturn authConfig\n}\n\nfunc (c *ConfigAuthLookup) All() map[string]types.AuthConfig {\n\tregistryAuths := c.cfg.Rancher.RegistryAuths\n\tif c.dockerConfigAuthLookup != nil {\n\t\tfor registry, authConfig := range c.dockerConfigAuthLookup.All() {\n\t\t\tregistryAuths[registry] = authConfig\n\t\t}\n\t}\n\treturn registryAuths\n}\n"
  },
  {
    "path": "pkg/docker/client.go",
    "content": "package docker\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\n\tdockerClient \"github.com/docker/engine-api/client\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc NewSystemClient() (dockerClient.APIClient, error) {\n\treturn NewClient(config.SystemDockerHost)\n}\n\nfunc NewDefaultClient() (dockerClient.APIClient, error) {\n\treturn NewClient(config.DockerHost)\n}\n\nfunc NewClient(endpoint string) (dockerClient.APIClient, error) {\n\tclient, err := dockerClient.NewClient(endpoint, \"\", nil, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = ClientOK(endpoint, func() bool {\n\t\t_, err := client.Info(context.Background())\n\t\treturn err == nil\n\t})\n\n\treturn client, err\n}\n"
  },
  {
    "path": "pkg/docker/client_factory.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tdockerclient \"github.com/docker/engine-api/client\"\n\tcomposeClient \"github.com/docker/libcompose/docker/client\"\n\t\"github.com/docker/libcompose/project\"\n\t\"golang.org/x/net/context\"\n)\n\ntype ClientFactory struct {\n\tuserClient   dockerclient.APIClient\n\tsystemClient dockerclient.APIClient\n\tuserOnce     sync.Once\n\tsystemOnce   sync.Once\n}\n\nfunc NewClientFactory(opts composeClient.Options) (project.ClientFactory, error) {\n\tuserOpts := opts\n\tsystemOpts := opts\n\n\tuserOpts.Host = config.DockerHost\n\tsystemOpts.Host = config.SystemDockerHost\n\n\tuserClient, err := composeClient.Create(userOpts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsystemClient, err := composeClient.Create(systemOpts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ClientFactory{\n\t\tuserClient:   userClient,\n\t\tsystemClient: systemClient,\n\t}, nil\n}\n\nfunc (c *ClientFactory) Create(service project.Service) dockerclient.APIClient {\n\tif IsSystemContainer(service.Config()) {\n\t\twaitFor(&c.systemOnce, c.systemClient, config.SystemDockerHost)\n\t\treturn c.systemClient\n\t}\n\n\twaitFor(&c.userOnce, c.userClient, config.DockerHost)\n\treturn c.userClient\n}\n\nfunc waitFor(once *sync.Once, client dockerclient.APIClient, endpoint string) {\n\tonce.Do(func() {\n\t\terr := ClientOK(endpoint, func() bool {\n\t\t\t_, err := client.Info(context.Background())\n\t\t\treturn err == nil\n\t\t})\n\t\tif err != nil {\n\t\t\tpanic(err.Error())\n\t\t}\n\t})\n}\n\nfunc ClientOK(endpoint string, test func() bool) error {\n\tbackoff := util.Backoff{}\n\tdefer backoff.Close()\n\n\tvar err error\n\tretry := false\n\tfor ok := range backoff.Start() {\n\t\tif !ok {\n\t\t\terr = fmt.Errorf(\"Timeout waiting for Docker at %s\", endpoint)\n\t\t\tbreak\n\t\t}\n\t\tif test() {\n\t\t\tbreak\n\t\t}\n\t\tretry = true\n\t\tlog.Infof(\"Waiting for Docker at %s\", endpoint)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif retry {\n\t\tlog.Infof(\"Connected to Docker at %s\", endpoint)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/docker/env.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n)\n\ntype ConfigEnvironment struct {\n\tcfg *config.CloudConfig\n}\n\nfunc NewConfigEnvironment(cfg *config.CloudConfig) *ConfigEnvironment {\n\treturn &ConfigEnvironment{\n\t\tcfg: cfg,\n\t}\n}\n\nfunc appendEnv(array []string, key, value string) []string {\n\tparts := strings.SplitN(key, \"/\", 2)\n\tif len(parts) == 2 {\n\t\tkey = parts[1]\n\t}\n\n\treturn append(array, fmt.Sprintf(\"%s=%s\", key, value))\n}\n\nfunc environmentFromCloudConfig(cfg *config.CloudConfig) map[string]string {\n\tenvironment := cfg.Rancher.Environment\n\tif cfg.Rancher.Network.HTTPProxy != \"\" {\n\t\tenvironment[\"http_proxy\"] = cfg.Rancher.Network.HTTPProxy\n\t\tenvironment[\"HTTP_PROXY\"] = cfg.Rancher.Network.HTTPProxy\n\t}\n\tif cfg.Rancher.Network.HTTPSProxy != \"\" {\n\t\tenvironment[\"https_proxy\"] = cfg.Rancher.Network.HTTPSProxy\n\t\tenvironment[\"HTTPS_PROXY\"] = cfg.Rancher.Network.HTTPSProxy\n\t}\n\tif cfg.Rancher.Network.NoProxy != \"\" {\n\t\tenvironment[\"no_proxy\"] = cfg.Rancher.Network.NoProxy\n\t\tenvironment[\"NO_PROXY\"] = cfg.Rancher.Network.NoProxy\n\t}\n\tif v := config.GetKernelVersion(); v != \"\" {\n\t\tenvironment[\"KERNEL_VERSION\"] = v\n\t\tlog.Debugf(\"Using /proc/version to set rancher.environment.KERNEL_VERSION = %s\", v)\n\t}\n\treturn environment\n}\n\nfunc lookupKeys(cfg *config.CloudConfig, keys ...string) []string {\n\tenvironment := environmentFromCloudConfig(cfg)\n\n\tfor _, key := range keys {\n\t\tif strings.HasSuffix(key, \"*\") {\n\t\t\tresult := []string{}\n\t\t\tfor envKey, envValue := range environment {\n\t\t\t\tkeyPrefix := key[:len(key)-1]\n\t\t\t\tif strings.HasPrefix(envKey, keyPrefix) {\n\t\t\t\t\tresult = appendEnv(result, envKey, envValue)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(result) > 0 {\n\t\t\t\treturn result\n\t\t\t}\n\t\t} else if value, ok := environment[key]; ok {\n\t\t\treturn appendEnv([]string{}, key, value)\n\t\t}\n\t}\n\n\treturn []string{}\n}\n\nfunc (c *ConfigEnvironment) SetConfig(cfg *config.CloudConfig) {\n\tc.cfg = cfg\n}\n\nfunc (c *ConfigEnvironment) Lookup(key, serviceName string, serviceConfig *composeConfig.ServiceConfig) []string {\n\tfullKey := fmt.Sprintf(\"%s/%s\", serviceName, key)\n\treturn lookupKeys(c.cfg, fullKey, key)\n}\n"
  },
  {
    "path": "pkg/docker/service.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n\n\t\"github.com/docker/docker/layer\"\n\tdockerclient \"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/docker\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\ntype Service struct {\n\t*docker.Service\n\tdeps    map[string][]string\n\tcontext *docker.Context\n\tproject *project.Project\n}\n\nfunc NewService(factory *ServiceFactory, name string, serviceConfig *composeConfig.ServiceConfig, context *docker.Context, project *project.Project) *Service {\n\treturn &Service{\n\t\tService: docker.NewService(name, serviceConfig, context),\n\t\tdeps:    factory.Deps,\n\t\tcontext: context,\n\t\tproject: project,\n\t}\n}\n\nfunc (s *Service) DependentServices() []project.ServiceRelationship {\n\trels := s.Service.DependentServices()\n\tfor _, dep := range s.deps[s.Name()] {\n\t\trels = appendLink(rels, dep, true, s.project)\n\t}\n\n\tif s.requiresSyslog() {\n\t\trels = appendLink(rels, \"syslog\", false, s.project)\n\t}\n\n\tif s.requiresUserDocker() {\n\t\trels = appendLink(rels, \"docker\", false, s.project)\n\t} else if s.missingImage() {\n\t\trels = appendLink(rels, \"network\", false, s.project)\n\t}\n\treturn rels\n}\n\nfunc (s *Service) missingImage() bool {\n\timage := s.Config().Image\n\tif image == \"\" {\n\t\treturn false\n\t}\n\tclient := s.context.ClientFactory.Create(s)\n\n\t// If it is already built-in, we should use tag image\n\t// use case: open-vmtools with another REGISTRY_DOMAIN setting\n\tregistryDomain := config.LoadConfig().Rancher.Environment[\"REGISTRY_DOMAIN\"]\n\tif registryDomain != \"docker.io\" && strings.Index(image, registryDomain) >= 0 {\n\t\torginImage := strings.SplitN(image, \"/\", 2)[1]\n\t\t_, _, err := client.ImageInspectWithRaw(context.Background(), orginImage, false)\n\t\tif err == nil {\n\t\t\tlog.Infof(\"Will tag image %s to %s\", orginImage, image)\n\t\t\toptions := types.ImageTagOptions{\n\t\t\t\tImageID:        orginImage,\n\t\t\t\tRepositoryName: strings.SplitN(image, \":\", 2)[0],\n\t\t\t\tTag:            strings.SplitN(image, \":\", 2)[1],\n\t\t\t\tForce:          false,\n\t\t\t}\n\t\t\tif err := client.ImageTag(context.Background(), options); err != nil {\n\t\t\t\tlog.Warnf(\"Failed to tag image from %s to %s: %v\", orginImage, image, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t_, _, err := client.ImageInspectWithRaw(context.Background(), image, false)\n\treturn err != nil\n}\n\nfunc (s *Service) requiresSyslog() bool {\n\treturn s.Config().Logging.Driver == \"syslog\"\n}\n\nfunc (s *Service) requiresUserDocker() bool {\n\treturn s.Config().Labels[config.ScopeLabel] != config.System\n}\n\nfunc appendLink(deps []project.ServiceRelationship, name string, optional bool, p *project.Project) []project.ServiceRelationship {\n\tif _, ok := p.ServiceConfigs.Get(name); !ok {\n\t\treturn deps\n\t}\n\trel := project.NewServiceRelationship(name, project.RelTypeLink)\n\trel.Optional = optional\n\treturn append(deps, rel)\n}\n\nfunc (s *Service) shouldRebuild(ctx context.Context) (bool, error) {\n\tcontainers, err := s.Containers(ctx)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tcfg := config.LoadConfig()\n\tfor _, c := range containers {\n\t\toutOfSync, err := c.(*docker.Container).OutOfSync(ctx, s.Service.Config().Image)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\n\t\t_, containerInfo, err := s.getContainer(ctx)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tname := containerInfo.Name[1:]\n\n\t\torigRebuildLabel := containerInfo.Config.Labels[config.RebuildLabel]\n\t\tnewRebuildLabel := s.Config().Labels[config.RebuildLabel]\n\t\trebuildLabelChanged := newRebuildLabel != origRebuildLabel\n\t\tlog.WithFields(log.Fields{\n\t\t\t\"origRebuildLabel\":    origRebuildLabel,\n\t\t\t\"newRebuildLabel\":     newRebuildLabel,\n\t\t\t\"rebuildLabelChanged\": rebuildLabelChanged,\n\t\t\t\"outOfSync\":           outOfSync}).Debug(\"Rebuild values\")\n\n\t\tif newRebuildLabel == \"always\" {\n\t\t\treturn true, nil\n\t\t}\n\t\tif s.Name() == \"console\" && cfg.Rancher.ForceConsoleRebuild {\n\t\t\tif err := config.Set(\"rancher.force_console_rebuild\", false); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\treturn true, nil\n\t\t}\n\t\tif outOfSync {\n\t\t\tif s.Name() == \"console\" {\n\t\t\t\torigConsoleLabel := containerInfo.Config.Labels[config.ConsoleLabel]\n\t\t\t\tnewConsoleLabel := s.Config().Labels[config.ConsoleLabel]\n\t\t\t\tif newConsoleLabel != origConsoleLabel {\n\t\t\t\t\treturn true, nil\n\t\t\t\t}\n\t\t\t} else if rebuildLabelChanged || origRebuildLabel != \"false\" {\n\t\t\t\treturn true, nil\n\t\t\t} else {\n\t\t\t\tlog.Warnf(\"%s needs rebuilding\", name)\n\t\t\t}\n\t\t}\n\t}\n\treturn false, nil\n}\n\nfunc (s *Service) Up(ctx context.Context, options options.Up) error {\n\tlabels := s.Config().Labels\n\n\t// wait for networking if necessary\n\tif after := labels[\"io.rancher.os.after\"]; after == \"network\" {\n\t\tif err := network.AllDefaultGWOK(network.DefaultRoutesCheckTimeout); err != nil {\n\t\t\tlog.Warnf(\"Timeout to wait for the networking ready: %v\", err)\n\t\t}\n\t}\n\n\tif err := s.Service.Create(ctx, options.Create); err != nil {\n\t\treturn err\n\t}\n\n\tshouldRebuild, err := s.shouldRebuild(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif shouldRebuild {\n\t\tlog.Infof(\"Rebuilding %s\", s.Name())\n\t\tcs, err := s.Service.Containers(ctx)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, c := range cs {\n\t\t\tif _, err := c.(*docker.Container).Recreate(ctx, s.Config().Image); err != nil {\n\t\t\t\t// sometimes we can get ErrMountNameConflict when booting on RPi\n\t\t\t\t// ignore this error so that ros can boot success, otherwise it will hang forever\n\t\t\t\tif strings.Contains(err.Error(), layer.ErrMountNameConflict.Error()) {\n\t\t\t\t\tlog.Warn(err)\n\t\t\t\t} else {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif err = s.rename(ctx); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif labels[config.CreateOnlyLabel] == \"true\" {\n\t\treturn s.checkReload(labels)\n\t}\n\tif err := s.Service.Up(ctx, options); err != nil {\n\t\treturn err\n\t}\n\tif labels[config.DetachLabel] == \"false\" {\n\t\tif err := s.wait(ctx); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn s.checkReload(labels)\n}\n\nfunc (s *Service) checkReload(labels map[string]string) error {\n\tif labels[config.ReloadConfigLabel] == \"true\" {\n\t\treturn project.ErrRestart\n\t}\n\treturn nil\n}\n\nfunc (s *Service) Create(ctx context.Context, options options.Create) error {\n\treturn s.Service.Create(ctx, options)\n}\n\nfunc (s *Service) getContainer(ctx context.Context) (dockerclient.APIClient, types.ContainerJSON, error) {\n\tcontainers, err := s.Service.Containers(ctx)\n\n\tif err != nil {\n\t\treturn nil, types.ContainerJSON{}, err\n\t}\n\n\tif len(containers) == 0 {\n\t\treturn nil, types.ContainerJSON{}, fmt.Errorf(\"No containers found for %s\", s.Name())\n\t}\n\n\tid, err := containers[0].ID()\n\tif err != nil {\n\t\treturn nil, types.ContainerJSON{}, err\n\t}\n\n\tclient := s.context.ClientFactory.Create(s)\n\tinfo, err := client.ContainerInspect(context.Background(), id)\n\treturn client, info, err\n}\n\nfunc (s *Service) wait(ctx context.Context) error {\n\tclient, info, err := s.getContainer(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, err := client.ContainerWait(context.Background(), info.ID); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (s *Service) rename(ctx context.Context) error {\n\tclient, info, err := s.getContainer(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(info.Name) > 0 && info.Name[1:] != s.Name() {\n\t\tlog.Debugf(\"Renaming container %s => %s\", info.Name[1:], s.Name())\n\t\treturn client.ContainerRename(context.Background(), info.ID, s.Name())\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/docker/service_factory.go",
    "content": "package docker\n\nimport (\n\t\"github.com/burmilla/os/pkg/util\"\n\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/docker\"\n\t\"github.com/docker/libcompose/project\"\n)\n\ntype ServiceFactory struct {\n\tContext *docker.Context\n\tDeps    map[string][]string\n}\n\nfunc (s *ServiceFactory) Create(project *project.Project, name string, serviceConfig *composeConfig.ServiceConfig) (project.Service, error) {\n\tif after := serviceConfig.Labels[\"io.rancher.os.after\"]; after != \"\" {\n\t\tfor _, dep := range util.TrimSplit(after, \",\") {\n\t\t\tif dep == \"cloud-init\" {\n\t\t\t\tdep = \"cloud-init-execute\"\n\t\t\t}\n\t\t\ts.Deps[name] = append(s.Deps[name], dep)\n\t\t}\n\t}\n\tif before := serviceConfig.Labels[\"io.rancher.os.before\"]; before != \"\" {\n\t\tfor _, dep := range util.TrimSplit(before, \",\") {\n\t\t\tif dep == \"cloud-init\" {\n\t\t\t\tdep = \"cloud-init-execute\"\n\t\t\t}\n\t\t\ts.Deps[dep] = append(s.Deps[dep], name)\n\t\t}\n\t}\n\n\treturn NewService(s, name, serviceConfig, s.Context, project), nil\n}\n"
  },
  {
    "path": "pkg/docker/util.go",
    "content": "package docker\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n)\n\nfunc IsSystemContainer(serviceConfig *composeConfig.ServiceConfig) bool {\n\treturn serviceConfig.Labels[config.ScopeLabel] == config.System\n}\n"
  },
  {
    "path": "pkg/hostname/hostname.go",
    "content": "package hostname\n\nimport (\n\t\"bufio\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config\"\n)\n\nfunc SetHostnameFromCloudConfig(cc *config.CloudConfig) error {\n\tvar hostname string\n\tif cc.Hostname == \"\" {\n\t\thostname = cc.Rancher.Defaults.Hostname\n\t} else {\n\t\thostname = cc.Hostname\n\t}\n\n\tif hostname == \"\" {\n\t\treturn nil\n\t}\n\n\t// set hostname\n\treturn syscall.Sethostname([]byte(hostname))\n}\n\nfunc SyncHostname() error {\n\thostname, err := os.Hostname()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif hostname == \"\" {\n\t\treturn nil\n\t}\n\n\thosts, err := os.Open(\"/etc/hosts\")\n\tdefer hosts.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\tlines := bufio.NewScanner(hosts)\n\thostsContent := \"\"\n\tfor lines.Scan() {\n\t\tline := strings.TrimSpace(lines.Text())\n\t\tfields := strings.Fields(line)\n\t\tif len(fields) > 0 && fields[0] == \"127.0.1.1\" {\n\t\t\thostsContent += \"127.0.1.1 \" + hostname + \"\\n\"\n\t\t\tcontinue\n\t\t}\n\t\thostsContent += line + \"\\n\"\n\t}\n\treturn ioutil.WriteFile(\"/etc/hosts\", []byte(hostsContent), 0600)\n}\n"
  },
  {
    "path": "pkg/init/b2d/b2d.go",
    "content": "package b2d\n\nimport (\n\t\"os\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/init/configfiles\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nconst (\n\tboot2DockerMagic string = \"boot2docker, please format-me\"\n)\n\nvar (\n\tboot2DockerEnvironment bool\n)\n\nfunc B2D(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif _, err := os.Stat(\"/var/lib/boot2docker\"); os.IsNotExist(err) {\n\t\terr := os.Mkdir(\"/var/lib/boot2docker\", 0755)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to create boot2docker directory: %v\", err)\n\t\t}\n\t}\n\n\tif dev := util.ResolveDevice(\"LABEL=B2D_STATE\"); dev != \"\" {\n\t\tboot2DockerEnvironment = true\n\t\tcfg.Rancher.State.Dev = \"LABEL=B2D_STATE\"\n\t\tlog.Infof(\"boot2DockerEnvironment %s: %s\", cfg.Rancher.State.Dev, dev)\n\t\treturn cfg, nil\n\t}\n\n\tdevices := []string{\"/dev/sda\", \"/dev/vda\"}\n\tdata := make([]byte, len(boot2DockerMagic))\n\n\tfor _, device := range devices {\n\t\tf, err := os.Open(device)\n\t\tif err == nil {\n\t\t\tdefer f.Close()\n\n\t\t\t_, err = f.Read(data)\n\t\t\tif err == nil && string(data) == boot2DockerMagic {\n\t\t\t\tboot2DockerEnvironment = true\n\t\t\t\tcfg.Rancher.State.Dev = \"LABEL=B2D_STATE\"\n\t\t\t\tcfg.Rancher.State.Autoformat = []string{device}\n\t\t\t\tlog.Infof(\"boot2DockerEnvironment %s: Autoformat %s\", cfg.Rancher.State.Dev, cfg.Rancher.State.Autoformat[0])\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t// save here so the bootstrap service can see it (when booting from iso, its very early)\n\tif boot2DockerEnvironment {\n\t\tif err := config.Set(\"rancher.state.dev\", cfg.Rancher.State.Dev); err != nil {\n\t\t\tlog.Errorf(\"Failed to update rancher.state.dev: %v\", err)\n\t\t}\n\t\tif err := config.Set(\"rancher.state.autoformat\", cfg.Rancher.State.Autoformat); err != nil {\n\t\t\tlog.Errorf(\"Failed to update rancher.state.autoformat: %v\", err)\n\t\t}\n\t}\n\n\treturn config.LoadConfig(), nil\n}\n\nfunc Env(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tlog.Debugf(\"memory Resolve.conf == [%s]\", configfiles.ConfigFiles[\"/etc/resolv.conf\"])\n\n\tif boot2DockerEnvironment {\n\t\tif err := config.Set(\"rancher.state.dev\", cfg.Rancher.State.Dev); err != nil {\n\t\t\tlog.Errorf(\"Failed to update rancher.state.dev: %v\", err)\n\t\t}\n\t\tif err := config.Set(\"rancher.state.autoformat\", cfg.Rancher.State.Autoformat); err != nil {\n\t\t\tlog.Errorf(\"Failed to update rancher.state.autoformat: %v\", err)\n\t\t}\n\t}\n\n\treturn config.LoadConfig(), nil\n}\n"
  },
  {
    "path": "pkg/init/bootstrap/bootstrap.go",
    "content": "package bootstrap\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/init/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/sysinit\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nfunc bootstrapServices(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif util.ResolveDevice(cfg.Rancher.State.Dev) != \"\" && len(cfg.Bootcmd) == 0 {\n\t\tlog.Info(\"NOT Running Bootstrap\")\n\n\t\treturn cfg, nil\n\t}\n\tlog.Info(\"Running Bootstrap\")\n\t_, err := compose.RunServiceSet(\"bootstrap\", cfg, cfg.Rancher.BootstrapContainers)\n\treturn cfg, err\n}\n\nfunc Bootstrap(cfg *config.CloudConfig) error {\n\tlog.Info(\"Launching Bootstrap Docker\")\n\n\tc, err := docker.Start(cfg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer docker.Stop(c)\n\n\t_, err = config.ChainCfgFuncs(cfg,\n\t\t[]config.CfgFuncData{\n\t\t\t{Name: \"bootstrap loadImages\", Func: sysinit.LoadBootstrapImages},\n\t\t\t{Name: \"bootstrap Services\", Func: bootstrapServices},\n\t\t})\n\treturn err\n}\n"
  },
  {
    "path": "pkg/init/cloudinit/cloudinit.go",
    "content": "package cloudinit\n\nimport (\n\t\"io/ioutil\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/init/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/sysinit\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nfunc CloudInit(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tstateConfig := config.LoadConfigWithPrefix(config.StateDir)\n\tcfg.Rancher.CloudInit.Datasources = stateConfig.Rancher.CloudInit.Datasources\n\n\thypervisor := util.GetHypervisor()\n\tif hypervisor == \"\" {\n\t\tlog.Infof(\"ros init: No Detected Hypervisor\")\n\t} else {\n\t\tlog.Infof(\"ros init: Detected Hypervisor: %s\", hypervisor)\n\t}\n\tif hypervisor == \"vmware\" {\n\t\t// add vmware to the end - we don't want to over-ride an choices the user has made\n\t\tcfg.Rancher.CloudInit.Datasources = append(cfg.Rancher.CloudInit.Datasources, hypervisor)\n\t}\n\n\texoscale, err := onlyExoscale()\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\tif exoscale {\n\t\tcfg.Rancher.CloudInit.Datasources = append([]string{\"exoscale\"}, cfg.Rancher.CloudInit.Datasources...)\n\t}\n\n\tproxmox, err := onlyProxmox()\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\tif proxmox {\n\t\tcfg.Rancher.CloudInit.Datasources = append([]string{\"proxmox\"}, cfg.Rancher.CloudInit.Datasources...)\n\t}\n\n\tif len(cfg.Rancher.CloudInit.Datasources) == 0 {\n\t\tlog.Info(\"No specific datasources, ignore cloudinit\")\n\t\treturn cfg, nil\n\t}\n\tif onlyConfigDrive(cfg.Rancher.CloudInit.Datasources) {\n\t\tconfigDev := util.ResolveDevice(\"LABEL=config-2\")\n\t\tif configDev == \"\" {\n\t\t\t// Check v9fs: https://www.kernel.org/doc/Documentation/filesystems/9p.txt\n\t\t\tmatches, _ := filepath.Glob(\"/sys/bus/virtio/drivers/9pnet_virtio/virtio*/mount_tag\")\n\t\t\tif len(matches) == 0 {\n\t\t\t\tlog.Info(\"Configdrive was enabled but has no configdrive device or filesystem, ignore cloudinit\")\n\t\t\t\treturn cfg, nil\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := config.Set(\"rancher.cloud_init.datasources\", cfg.Rancher.CloudInit.Datasources); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tif stateConfig.Rancher.Network.DHCPTimeout > 0 {\n\t\tcfg.Rancher.Network.DHCPTimeout = stateConfig.Rancher.Network.DHCPTimeout\n\t\tif err := config.Set(\"rancher.network.dhcp_timeout\", stateConfig.Rancher.Network.DHCPTimeout); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif len(stateConfig.Rancher.Network.WifiNetworks) > 0 {\n\t\tcfg.Rancher.Network.WifiNetworks = stateConfig.Rancher.Network.WifiNetworks\n\t\tif err := config.Set(\"rancher.network.wifi_networks\", stateConfig.Rancher.Network.WifiNetworks); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n\n\tif len(stateConfig.Rancher.Network.Interfaces) > 0 {\n\t\t// DO also uses static networking, but this IP may change if:\n\t\t// 1. not using Floating IP\n\t\t// 2. creating a droplet with a snapshot, the snapshot cached the previous IP\n\t\tif onlyDigitalOcean(cfg.Rancher.CloudInit.Datasources) {\n\t\t\tlog.Info(\"Do not use the previous network settings on DigitalOcean\")\n\t\t} else {\n\t\t\tcfg.Rancher.Network = stateConfig.Rancher.Network\n\t\t\tif err := config.Set(\"rancher.network\", stateConfig.Rancher.Network); err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t}\n\t\t}\n\t}\n\n\tlog.Infof(\"init, runCloudInitServices(%v)\", cfg.Rancher.CloudInit.Datasources)\n\tif err := runCloudInitServices(cfg); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t// It'd be nice to push to rsyslog before this, but we don't have network\n\tlog.AddRSyslogHook()\n\n\treturn config.LoadConfig(), nil\n}\n\nfunc runCloudInitServices(cfg *config.CloudConfig) error {\n\tc, err := docker.Start(cfg)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer docker.Stop(c)\n\n\t_, err = config.ChainCfgFuncs(cfg,\n\t\t[]config.CfgFuncData{\n\t\t\t{Name: \"cloudinit loadImages\", Func: sysinit.LoadBootstrapImages},\n\t\t\t{Name: \"cloudinit Services\", Func: runCloudInitServiceSet},\n\t\t})\n\treturn err\n}\n\nfunc runCloudInitServiceSet(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tlog.Info(\"Running cloud-init services\")\n\t_, err := compose.RunServiceSet(\"cloud-init\", cfg, cfg.Rancher.CloudInitServices)\n\treturn cfg, err\n}\n\nfunc onlyConfigDrive(datasources []string) bool {\n\tif len(datasources) != 1 {\n\t\treturn false\n\t}\n\tfor _, ds := range datasources {\n\t\tparts := strings.SplitN(ds, \":\", 2)\n\t\tif parts[0] == \"configdrive\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc onlyDigitalOcean(datasources []string) bool {\n\tif len(datasources) != 1 {\n\t\treturn false\n\t}\n\tfor _, ds := range datasources {\n\t\tparts := strings.SplitN(ds, \":\", 2)\n\t\tif parts[0] == \"digitalocean\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc onlyExoscale() (bool, error) {\n\tf, err := ioutil.ReadFile(\"/sys/class/dmi/id/product_name\")\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn strings.HasPrefix(string(f), \"Exoscale\"), nil\n}\n\nfunc onlyProxmox() (bool, error) {\n\tf, err := ioutil.ReadFile(\"/sys/class/dmi/id/product_name\")\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn strings.Contains(string(f), \"Proxmox\"), nil\n}\n"
  },
  {
    "path": "pkg/init/configfiles/configfiles.go",
    "content": "package configfiles\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nvar (\n\tConfigFiles = map[string][]byte{}\n)\n\nfunc ReadConfigFiles(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tfilesToCopy := []string{\n\t\tconfig.CloudConfigInitFile,\n\t\tconfig.CloudConfigScriptFile,\n\t\tconfig.CloudConfigBootFile,\n\t\tconfig.CloudConfigNetworkFile,\n\t\tconfig.MetaDataFile,\n\t\tconfig.EtcResolvConfFile,\n\t}\n\t// And all the files in /var/log/boot/\n\t// TODO: I wonder if we can put this code into the log module, and have things write to the buffer until we FsReady()\n\tbootLog := \"/var/log/\"\n\tif files, err := ioutil.ReadDir(bootLog); err == nil {\n\t\tfor _, file := range files {\n\t\t\tif !file.IsDir() {\n\t\t\t\tfilePath := filepath.Join(bootLog, file.Name())\n\t\t\t\tfilesToCopy = append(filesToCopy, filePath)\n\t\t\t\tlog.Debugf(\"Swizzle: Found %s to save\", filePath)\n\t\t\t}\n\t\t}\n\t}\n\tbootLog = \"/var/log/boot/\"\n\tif files, err := ioutil.ReadDir(bootLog); err == nil {\n\t\tfor _, file := range files {\n\t\t\tfilePath := filepath.Join(bootLog, file.Name())\n\t\t\tfilesToCopy = append(filesToCopy, filePath)\n\t\t\tlog.Debugf(\"Swizzle: Found %s to save\", filePath)\n\t\t}\n\t}\n\tfor _, name := range filesToCopy {\n\t\tif _, err := os.Lstat(name); !os.IsNotExist(err) {\n\t\t\tcontent, err := ioutil.ReadFile(name)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"read cfg file (%s) %s\", name, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlog.Debugf(\"Swizzle: Saved %s to memory\", name)\n\t\t\tConfigFiles[name] = content\n\t\t}\n\t}\n\treturn cfg, nil\n}\n\nfunc WriteConfigFiles(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tfor name, content := range ConfigFiles {\n\t\tdirMode := os.ModeDir | 0755\n\t\tfileMode := os.FileMode(0444)\n\t\tif strings.HasPrefix(name, \"/var/lib/rancher/conf/\") {\n\t\t\t// only make the conf files harder to get to\n\t\t\tdirMode = os.ModeDir | 0700\n\t\t\tif name == config.CloudConfigScriptFile {\n\t\t\t\tfileMode = os.FileMode(0755)\n\t\t\t} else {\n\t\t\t\tfileMode = os.FileMode(0400)\n\t\t\t}\n\t\t}\n\t\tif err := os.MkdirAll(filepath.Dir(name), dirMode); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tif err := util.WriteFileAtomic(name, content, fileMode); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t\tlog.Infof(\"Swizzle: Wrote file to %s\", name)\n\t}\n\tif err := os.MkdirAll(config.VarRancherDir, os.ModeDir|0755); err != nil {\n\t\tlog.Error(err)\n\t}\n\tif err := os.Chmod(config.VarRancherDir, os.ModeDir|0755); err != nil {\n\t\tlog.Error(err)\n\t}\n\tlog.FsReady()\n\tlog.Debugf(\"WARNING: switchroot and mount OEM2 and BOOT phases not written to log file\")\n\n\treturn cfg, nil\n}\n"
  },
  {
    "path": "pkg/init/debug/debug.go",
    "content": "package debug\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nfunc PrintAndLoadConfig(_ *config.CloudConfig) (*config.CloudConfig, error) {\n\tPrintConfig()\n\n\tcfg := config.LoadConfig()\n\treturn cfg, nil\n}\n\nfunc PrintConfig() {\n\tcfgString, err := config.Export(false, true)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\"err\": err}).Error(\"Error serializing config\")\n\t} else {\n\t\tlog.Debugf(\"Config: %s\", cfgString)\n\t}\n}\n"
  },
  {
    "path": "pkg/init/docker/docker.go",
    "content": "package docker\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/dfs\"\n)\n\nfunc Start(cfg *config.CloudConfig) (chan interface{}, error) {\n\tlaunchConfig, args := GetLaunchConfig(cfg, &cfg.Rancher.BootstrapDocker)\n\tlaunchConfig.Fork = true\n\tlaunchConfig.LogFile = \"\"\n\tlaunchConfig.NoLog = true\n\n\tcmd, err := dfs.LaunchDocker(launchConfig, config.SystemDockerBin, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc := make(chan interface{})\n\tgo func() {\n\t\t<-c\n\t\tcmd.Process.Signal(syscall.SIGTERM)\n\t\tcmd.Wait()\n\t\tc <- struct{}{}\n\t}()\n\n\treturn c, nil\n}\n\nfunc Stop(c chan interface{}) error {\n\tc <- struct{}{}\n\t<-c\n\n\treturn nil\n}\n\nfunc GetLaunchConfig(cfg *config.CloudConfig, dockerCfg *config.DockerConfig) (*dfs.Config, []string) {\n\tvar launchConfig dfs.Config\n\n\targs := dfs.ParseConfig(&launchConfig, dockerCfg.FullArgs()...)\n\n\tlaunchConfig.DNSConfig.Nameservers = cfg.Rancher.Defaults.Network.DNS.Nameservers\n\tlaunchConfig.DNSConfig.Search = cfg.Rancher.Defaults.Network.DNS.Search\n\tlaunchConfig.Environment = dockerCfg.Environment\n\n\tif !cfg.Rancher.Debug {\n\t\tlaunchConfig.LogFile = cfg.Rancher.Defaults.SystemDockerLogs\n\t}\n\n\treturn &launchConfig, args\n}\n"
  },
  {
    "path": "pkg/init/env/env.go",
    "content": "package env\n\nimport (\n\t\"os\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/init/fsmount\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util/network\"\n)\n\nfunc Init(c *config.CloudConfig) (*config.CloudConfig, error) {\n\tos.Setenv(\"PATH\", \"/sbin:/usr/sbin:/usr/bin\")\n\tif fsmount.IsInitrd() {\n\t\tlog.Debug(\"Booting off an in-memory filesystem\")\n\t\t// Magic setting to tell Docker to do switch_root and not pivot_root\n\t\tos.Setenv(\"DOCKER_RAMDISK\", \"true\")\n\t} else {\n\t\tlog.Debug(\"Booting off a persistent filesystem\")\n\t}\n\n\treturn c, nil\n}\n\nfunc Proxy(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tnetwork.SetProxyEnvironmentVariables()\n\n\treturn cfg, nil\n}\n"
  },
  {
    "path": "pkg/init/fsmount/fsmount.go",
    "content": "package fsmount\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/config/cmdline\"\n\t\"github.com/burmilla/os/pkg/init/bootstrap\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nconst (\n\ttmpfsMagic int64 = 0x01021994\n\tramfsMagic int64 = 0x858458f6\n)\n\nvar (\n\tShouldSwitchRoot bool\n)\n\nfunc MountOem(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif err := mountConfigured(\"oem\", cfg.Rancher.State.OemDev, cfg.Rancher.State.OemFsType, config.OemDir); err != nil {\n\t\tlog.Debugf(\"Not mounting OEM: %v\", err)\n\t} else {\n\t\tlog.Infof(\"Mounted OEM: %s\", cfg.Rancher.State.OemDev)\n\t}\n\n\treturn cfg, nil\n}\n\nfunc MountBoot(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif IsInitrd() {\n\t\treturn cfg, nil\n\t}\n\n\trootDevice := cmdline.GetCmdline(\"root\").(string)\n\n\tif rootDevice != \"\" && strings.Contains(rootDevice, \"mmcblk\") {\n\t\tif err := util.Mount(\"/dev/mmcblk0p1\", config.BootDir, \"vfat\", \"\"); err != nil {\n\t\t\tlog.Debugf(\"Not mounting BOOT: %v\", err)\n\t\t\treturn cfg, nil\n\t\t}\n\t}\n\n\tif err := mountConfigured(\"boot\", cfg.Rancher.State.BootDev, cfg.Rancher.State.BootFsType, config.BootDir); err != nil {\n\t\tlog.Debugf(\"Not mounting BOOT: %v\", err)\n\t} else {\n\t\tlog.Infof(\"Mounted BOOT: %s\", cfg.Rancher.State.BootDev)\n\t}\n\n\treturn cfg, nil\n}\n\nfunc mountConfigured(display, dev, fsType, target string) error {\n\tvar err error\n\n\tif dev == \"\" {\n\t\treturn nil\n\t}\n\n\tdev = util.ResolveDevice(dev)\n\tif dev == \"\" {\n\t\treturn fmt.Errorf(\"Could not resolve device %q\", dev)\n\t}\n\tif fsType == \"auto\" {\n\t\tfsType, err = util.GetFsType(dev)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"FsType has been set to %s\", fsType)\n\tlog.Infof(\"Mounting %s device %s to %s\", display, dev, target)\n\treturn util.Mount(dev, target, fsType, \"\")\n}\n\nfunc mountState(cfg *config.CloudConfig) error {\n\treturn mountConfigured(\"state\", cfg.Rancher.State.Dev, cfg.Rancher.State.FsType, config.StateDir)\n}\n\nfunc tryMountState(cfg *config.CloudConfig) error {\n\terr := mountState(cfg)\n\tif err == nil {\n\t\treturn nil\n\t}\n\tlog.Infof(\"Skipped an error when first mounting: %v\", err)\n\n\t// If we failed to mount lets run bootstrap and try again\n\tif err := bootstrap.Bootstrap(cfg); err != nil {\n\t\treturn err\n\t}\n\n\treturn mountState(cfg)\n}\n\nfunc tryMountStateAndBootstrap(cfg *config.CloudConfig) (*config.CloudConfig, bool, error) {\n\tif !IsInitrd() || cfg.Rancher.State.Dev == \"\" {\n\t\treturn cfg, false, nil\n\t}\n\n\tif err := tryMountState(cfg); !cfg.Rancher.State.Required && err != nil {\n\t\treturn cfg, false, nil\n\t} else if err != nil {\n\t\treturn cfg, false, err\n\t}\n\n\treturn cfg, true, nil\n}\n\nfunc IsInitrd() bool {\n\tvar stat syscall.Statfs_t\n\tsyscall.Statfs(\"/\", &stat)\n\treturn int64(stat.Type) == tmpfsMagic || int64(stat.Type) == ramfsMagic\n}\n\nfunc MountStateAndBootstrap(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tvar err error\n\tcfg, ShouldSwitchRoot, err = tryMountStateAndBootstrap(cfg)\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn cfg, nil\n}\n"
  },
  {
    "path": "pkg/init/hypervisor/hypervisor.go",
    "content": "package hypervisor\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nfunc Tools(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tenableHypervisorService(cfg, util.GetHypervisor())\n\treturn config.LoadConfig(), nil\n}\n\nfunc enableHypervisorService(cfg *config.CloudConfig, hypervisorName string) {\n\tif hypervisorName == \"\" {\n\t\treturn\n\t}\n\n\t// enable open-vm-tools and hyperv-vm-tools\n\t// these services(xenhvm-vm-tools, kvm-vm-tools, and bhyve-vm-tools) don't exist yet\n\tserviceName := \"\"\n\tswitch hypervisorName {\n\tcase \"vmware\":\n\t\tserviceName = \"open-vm-tools\"\n\tcase \"hyperv\":\n\t\tserviceName = \"hyperv-vm-tools\"\n\tdefault:\n\t\tlog.Infof(\"no hypervisor matched\")\n\t}\n\n\tif serviceName != \"\" {\n\t\tif !cfg.Rancher.HypervisorService {\n\t\t\tlog.Infof(\"Skipping %s as `rancher.hypervisor_service` is set to false\", serviceName)\n\t\t\treturn\n\t\t}\n\n\t\t// Check removed - there's an x509 cert failure on first boot of an installed system\n\t\t// check quickly to see if there is a yml file available\n\t\t//\tif service.ValidService(serviceName, cfg) {\n\t\tlog.Infof(\"Setting rancher.services_include. %s=true\", serviceName)\n\t\tif err := config.Set(\"rancher.services_include.\"+serviceName, \"true\"); err != nil {\n\t\t\tlog.Error(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/init/modules/modules.go",
    "content": "package modules\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nfunc LoadModules(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tmounted := map[string]bool{}\n\n\tf, err := os.Open(\"/proc/modules\")\n\tif err != nil {\n\t\treturn cfg, err\n\t}\n\tdefer f.Close()\n\n\treader := bufio.NewScanner(f)\n\tfor reader.Scan() {\n\t\tmounted[strings.SplitN(reader.Text(), \" \", 2)[0]] = true\n\t}\n\n\tif util.GetHypervisor() == \"hyperv\" {\n\t\tcfg.Rancher.Modules = append(cfg.Rancher.Modules, \"hv_utils\", \"hv_storvsc\", \"hv_vmbus\")\n\t}\n\n\tfor _, module := range cfg.Rancher.Modules {\n\t\tif mounted[module] {\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debugf(\"Loading module %s\", module)\n\t\t// split module and module parameters\n\t\tcmdParam := strings.SplitN(module, \" \", -1)\n\t\tcmd := exec.Command(\"modprobe\", cmdParam...)\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"Could not load module %s, err %v\", module, err)\n\t\t}\n\t}\n\n\treturn cfg, reader.Err()\n}\n"
  },
  {
    "path": "pkg/init/one/one.go",
    "content": "//go:build linux\n// +build linux\n\npackage one\n\nimport (\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n)\n\nfunc PidOne() error {\n\tc := make(chan os.Signal, 2048)\n\tsignal.Notify(c, syscall.SIGCHLD)\n\n\tfor range c {\n\t\tfor {\n\t\t\tif pid, err := syscall.Wait4(-1, nil, syscall.WNOHANG, nil); err != nil || pid <= 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/init/prepare/prepare.go",
    "content": "package prepare\n\nimport (\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/dfs\"\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nvar (\n\tmountConfig = dfs.Config{\n\t\tCgroupHierarchy: map[string]string{\n\t\t\t\"cpu\":      \"cpu\",\n\t\t\t\"cpuacct\":  \"cpu\",\n\t\t\t\"net_cls\":  \"net_cls\",\n\t\t\t\"net_prio\": \"net_cls\",\n\t\t},\n\t}\n)\n\nfunc FS(c *config.CloudConfig) (*config.CloudConfig, error) {\n\treturn c, dfs.PrepareFs(&mountConfig)\n}\n\nfunc SaveCmdline(c *config.CloudConfig) (*config.CloudConfig, error) {\n\t// the Kernel Patch added for BurmillaOS passes `--` (only) elided kernel boot params to the init process\n\tcmdLineArgs := strings.Join(os.Args, \" \")\n\tconfig.SaveInitCmdline(cmdLineArgs)\n\n\tcfg := config.LoadConfig()\n\tlog.Debugf(\"Cmdline debug = %t\", cfg.Rancher.Debug)\n\tif cfg.Rancher.Debug {\n\t\tlog.SetLevel(log.DebugLevel)\n\t} else {\n\t\tlog.SetLevel(log.InfoLevel)\n\t}\n\n\treturn cfg, nil\n}\n"
  },
  {
    "path": "pkg/init/recovery/recovery.go",
    "content": "package recovery\n\nimport (\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/init/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/netconf\"\n\t\"github.com/burmilla/os/pkg/sysinit\"\n\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/yaml\"\n)\n\nvar (\n\t// TODO: move this into the os-config file so it can be customised.\n\trecoveryDockerService = composeConfig.ServiceConfigV1{\n\t\tImage: config.OsBase,\n\t\tCommand: yaml.Command{\n\t\t\t\"ros\",\n\t\t\t\"recovery-init\",\n\t\t},\n\t\tLabels: map[string]string{\n\t\t\tconfig.DetachLabel: \"false\",\n\t\t\tconfig.ScopeLabel:  \"system\",\n\t\t},\n\t\tLogDriver:  \"json-file\",\n\t\tNet:        \"host\",\n\t\tUts:        \"host\",\n\t\tPid:        \"host\",\n\t\tIpc:        \"host\",\n\t\tPrivileged: true,\n\t\tVolumes: []string{\n\t\t\t\"/dev:/host/dev\",\n\t\t\t\"/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt.rancher\",\n\t\t\t\"/lib/modules:/lib/modules\",\n\t\t\t\"/lib/firmware:/lib/firmware\",\n\t\t\t\"/usr/bin/ros:/usr/bin/ros:ro\",\n\t\t\t\"/usr/bin/ros:/usr/bin/cloud-init-save\",\n\t\t\t\"/usr/bin/ros:/usr/bin/respawn:ro\",\n\t\t\t\"/usr/share/ros:/usr/share/ros:ro\",\n\t\t\t\"/var/lib/rancher:/var/lib/rancher\",\n\t\t\t\"/var/lib/rancher/conf:/var/lib/rancher/conf\",\n\t\t\t\"/var/run:/var/run\",\n\t\t},\n\t}\n)\n\nfunc LoadRecoveryConsole(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif cfg.Rancher.Recovery {\n\t\tRecovery(nil)\n\t}\n\treturn cfg, nil\n}\n\nfunc Recovery(initFailure error) {\n\tif initFailure != nil {\n\t\tlog.Errorf(\"BurmillaOS has failed to boot: %v\", initFailure)\n\t}\n\tlog.Info(\"Launching recovery console\")\n\n\tvar recoveryConfig config.CloudConfig\n\trecoveryConfig.Rancher.Defaults = config.Defaults{\n\t\tNetwork: netconf.NetworkConfig{\n\t\t\tDNS: netconf.DNSConfig{\n\t\t\t\tNameservers: []string{\n\t\t\t\t\t\"8.8.8.8\",\n\t\t\t\t\t\"8.8.4.4\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\trecoveryConfig.Rancher.BootstrapDocker = config.DockerConfig{\n\t\tEngineOpts: config.EngineOpts{\n\t\t\tBridge:        \"none\",\n\t\t\tStorageDriver: \"overlay2\",\n\t\t\tRestart:       &[]bool{false}[0],\n\t\t\tDataRoot:      \"/var/lib/recovery-docker\",\n\t\t\tGroup:         \"root\",\n\t\t\tHost:          []string{\"unix:///var/run/system-docker.sock\"},\n\t\t\tUserlandProxy: &[]bool{false}[0],\n\t\t},\n\t}\n\n\t_, err := docker.Start(&recoveryConfig)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t_, err = config.ChainCfgFuncs(&recoveryConfig,\n\t\t[]config.CfgFuncData{\n\t\t\t{Name: \"loadSystemImages\", Func: sysinit.LoadBootstrapImages},\n\t\t\t{Name: \"recovery console\", Func: recoveryServices},\n\t\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc recoveryServices(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\t_, err := compose.RunServiceSet(\"recovery\", cfg, map[string]*composeConfig.ServiceConfigV1{\n\t\t\"recovery\": &recoveryDockerService,\n\t})\n\treturn nil, err\n}\n"
  },
  {
    "path": "pkg/init/sharedroot/sharedroot.go",
    "content": "package sharedroot\n\nimport (\n\t\"os\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/init/fsmount\"\n\n\t\"github.com/docker/docker/pkg/mount\"\n)\n\nfunc Setup(c *config.CloudConfig) (*config.CloudConfig, error) {\n\tif c.Rancher.NoSharedRoot {\n\t\treturn c, nil\n\t}\n\n\tif fsmount.IsInitrd() {\n\t\tfor _, i := range []string{\"/mnt\", \"/media\", \"/var/lib/system-docker\"} {\n\t\t\tif err := os.MkdirAll(i, 0755); err != nil {\n\t\t\t\treturn c, err\n\t\t\t}\n\t\t\tif err := mount.Mount(\"tmpfs\", i, \"tmpfs\", \"rw\"); err != nil {\n\t\t\t\treturn c, err\n\t\t\t}\n\t\t\tif err := mount.MakeShared(i); err != nil {\n\t\t\t\treturn c, err\n\t\t\t}\n\t\t}\n\t\treturn c, nil\n\t}\n\n\treturn c, mount.MakeShared(\"/\")\n}\n"
  },
  {
    "path": "pkg/init/switchroot/switchroot.go",
    "content": "package switchroot\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/dfs\"\n\t\"github.com/burmilla/os/pkg/init/fsmount\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n)\n\nfunc SwitchRoot(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tif !fsmount.ShouldSwitchRoot {\n\t\treturn cfg, nil\n\t}\n\tlog.Debugf(\"Switching to new root at %s %s\", config.StateDir, cfg.Rancher.State.Directory)\n\tif err := switchRoot(config.StateDir, cfg.Rancher.State.Directory, cfg.Rancher.RmUsr); err != nil {\n\t\treturn cfg, err\n\t}\n\treturn cfg, nil\n}\n\nfunc cleanupTarget(rootfs, targetUsr, usr, usrVer, tmpDir string) (bool, error) {\n\tlog.Debugf(\"Deleting %s\", targetUsr)\n\tif err := os.Remove(targetUsr); err != nil && !os.IsNotExist(err) {\n\t\tlog.Errorf(\"Failed to delete %s, possibly invalid BurmillaOS state partition: %v\", targetUsr, err)\n\t\treturn false, err\n\t}\n\n\tif err := dfs.CreateSymlink(usrVer, path.Join(rootfs, \"usr\")); err != nil {\n\t\treturn false, err\n\t}\n\n\tlog.Debugf(\"Deleting %s\", tmpDir)\n\tif err := os.RemoveAll(tmpDir); err != nil {\n\t\t// Don't care if this fails\n\t\tlog.Errorf(\"Failed to cleanup temp directory %s: %v\", tmpDir, err)\n\t}\n\n\tif _, err := os.Stat(usr); err == nil {\n\t\treturn false, nil\n\t}\n\n\treturn true, nil\n}\n\nfunc copyMoveRoot(rootfs string, rmUsr bool) error {\n\tusrVer := fmt.Sprintf(\"usr-%s\", config.Version)\n\tusr := path.Join(rootfs, usrVer)\n\ttargetUsr := path.Join(rootfs, \"usr\")\n\ttmpDir := path.Join(rootfs, \"tmp\")\n\n\tif rmUsr {\n\t\tlog.Warnf(\"Development setup. Removing old usr: %s\", usr)\n\t\tif err := os.RemoveAll(usr); err != nil {\n\t\t\t// Don't care if this fails\n\t\t\tlog.Errorf(\"Failed to remove %s: %v\", usr, err)\n\t\t}\n\t}\n\n\tif cont, err := cleanupTarget(rootfs, targetUsr, usr, usrVer, tmpDir); !cont {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"Creating temp dir directory %s\", tmpDir)\n\tif err := os.MkdirAll(tmpDir, 0755); err != nil {\n\t\treturn err\n\t}\n\n\tusrVerTmp, err := ioutil.TempDir(tmpDir, usrVer)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"Copying to temp dir %s\", usrVerTmp)\n\n\tif err := archive.CopyWithTar(\"/usr\", usrVerTmp); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"Renaming %s => %s\", usrVerTmp, usr)\n\tif err := os.Rename(usrVerTmp, usr); err != nil {\n\t\treturn err\n\t}\n\n\tfiles, err := ioutil.ReadDir(\"/\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, file := range files {\n\t\tfilename := path.Join(\"/\", file.Name())\n\n\t\tif filename == rootfs || strings.HasPrefix(rootfs, filename+\"/\") {\n\t\t\tlog.Debugf(\"Skipping Deleting %s\", filename)\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Debugf(\"Deleting %s\", filename)\n\t\tif err := os.RemoveAll(filename); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc switchRoot(rootfs, subdir string, rmUsr bool) error {\n\tif err := syscall.Unmount(config.OemDir, 0); err != nil {\n\t\tlog.Debugf(\"Not umounting OEM: %v\", err)\n\t}\n\n\tif subdir != \"\" {\n\t\tfullRootfs := path.Join(rootfs, subdir)\n\t\tif _, err := os.Stat(fullRootfs); os.IsNotExist(err) {\n\t\t\tif err := os.MkdirAll(fullRootfs, 0755); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to create directory %s: %v\", fullRootfs, err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tlog.Debugf(\"Bind mounting mount %s to %s\", fullRootfs, rootfs)\n\t\tif err := syscall.Mount(fullRootfs, rootfs, \"\", syscall.MS_BIND, \"\"); err != nil {\n\t\t\tlog.Errorf(\"Failed to bind mount subdir for %s: %v\", fullRootfs, err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor _, i := range []string{\"/dev\", \"/sys\", \"/proc\", \"/run\"} {\n\t\tlog.Debugf(\"Moving mount %s to %s\", i, path.Join(rootfs, i))\n\t\tif err := os.MkdirAll(path.Join(rootfs, i), 0755); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := syscall.Mount(i, path.Join(rootfs, i), \"\", syscall.MS_MOVE, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := copyMoveRoot(rootfs, rmUsr); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"chdir %s\", rootfs)\n\tif err := syscall.Chdir(rootfs); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"mount MS_MOVE %s\", rootfs)\n\tif err := syscall.Mount(rootfs, \"/\", \"\", syscall.MS_MOVE, \"\"); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"chroot .\")\n\tif err := syscall.Chroot(\".\"); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"chdir /\")\n\tif err := syscall.Chdir(\"/\"); err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debugf(\"Successfully moved to new root at %s\", path.Join(rootfs, subdir))\n\tos.Unsetenv(\"DOCKER_RAMDISK\")\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/log/log.go",
    "content": "package log\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log/syslog\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config/cmdline\"\n\n\t\"github.com/sirupsen/logrus\"\n\tlsyslog \"github.com/sirupsen/logrus/hooks/syslog\"\n)\n\nvar logFile *os.File\nvar userHook *ShowuserlogHook\nvar defaultLogLevel logrus.Level\nvar debugThisLogger = false\n\ntype Fields logrus.Fields\ntype Level logrus.Level\ntype Logger logrus.Logger\n\nconst (\n\t// PanicLevel level, highest level of severity. Logs and then calls panic with the\n\t// message passed to Debug, Info, ...\n\tPanicLevel Level = iota\n\t// FatalLevel level. Logs and then calls `os.Exit(1)`. It will exit even if the\n\t// logging level is set to Panic.\n\tFatalLevel\n\t// ErrorLevel level. Logs. Used for errors that should definitely be noted.\n\t// Commonly used for hooks to send errors to an error tracking service.\n\tErrorLevel\n\t// WarnLevel level. Non-critical entries that deserve eyes.\n\tWarnLevel\n\t// InfoLevel level. General operational entries about what's going on inside the\n\t// application.\n\tInfoLevel\n\t// DebugLevel level. Usually only enabled when debugging. Very verbose logging.\n\tDebugLevel\n)\n\nfunc SetOutput(out io.Writer) {\n\tlogrus.SetOutput(out)\n}\nfunc SetDefaultLevel(level Level) {\n\tdefaultLogLevel = logrus.Level(level)\n}\nfunc SetLevel(level Level) {\n\tif userHook != nil {\n\t\tuserHook.Level = logrus.Level(level)\n\t} else {\n\t\tlogrus.SetLevel(logrus.Level(level))\n\t}\n}\n\nfunc GetLevel() Level {\n\tif userHook != nil {\n\t\treturn Level(userHook.Level)\n\t}\n\treturn Level(logrus.GetLevel())\n}\n\nfunc Debugf(format string, args ...interface{}) {\n\tlogrus.Debugf(format, args...)\n}\nfunc Infof(format string, args ...interface{}) {\n\tlogrus.Infof(format, args...)\n}\nfunc Printf(format string, args ...interface{}) {\n\tlogrus.Printf(format, args...)\n}\nfunc Warnf(format string, args ...interface{}) {\n\tlogrus.Warnf(format, args...)\n}\nfunc Warningf(format string, args ...interface{}) {\n\tlogrus.Warningf(format, args...)\n}\nfunc Errorf(format string, args ...interface{}) {\n\tlogrus.Errorf(format, args...)\n}\nfunc Fatalf(format string, args ...interface{}) {\n\tlogrus.Fatalf(format, args...)\n}\nfunc Panicf(format string, args ...interface{}) {\n\tlogrus.Panicf(format, args...)\n}\n\nfunc Debug(args ...interface{}) {\n\tlogrus.Debug(args...)\n}\nfunc Info(args ...interface{}) {\n\tlogrus.Info(args...)\n}\nfunc Print(args ...interface{}) {\n\tlogrus.Print(args...)\n}\nfunc Warn(args ...interface{}) {\n\tlogrus.Warn(args...)\n}\nfunc Warning(args ...interface{}) {\n\tlogrus.Warning(args...)\n}\nfunc Error(args ...interface{}) {\n\tlogrus.Error(args...)\n}\nfunc Fatal(args ...interface{}) {\n\tlogrus.Fatal(args...)\n}\nfunc Panic(args ...interface{}) {\n\tlogrus.Panic(args...)\n}\n\nfunc WithField(key string, value interface{}) *logrus.Entry {\n\treturn logrus.WithField(key, value)\n}\nfunc WithFields(fields Fields) *logrus.Entry {\n\treturn logrus.WithFields(logrus.Fields(fields))\n}\n\n// InitLogger sets up Logging to log to /dev/kmsg and to Syslog\nfunc InitLogger() {\n\tif logTheseApps() {\n\t\tinnerInit(false)\n\t\tFsReady()\n\t\tAddRSyslogHook()\n\n\t\tpwd, err := os.Getwd()\n\t\tif err != nil {\n\t\t\tlogrus.Error(err)\n\t\t}\n\t\tlogrus.Debugf(\"START: %v in %s\", os.Args, pwd)\n\t}\n}\n\nfunc logTheseApps() bool {\n\t// TODO: mmm, not very functional.\n\tif filepath.Base(os.Args[0]) == \"ros\" ||\n\t\t//\t\tfilepath.Base(os.Args[0]) == \"system-docker\" ||\n\t\tfilepath.Base(os.Args[0]) == \"host_ros\" {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// InitDeferedLogger stores the log messages until FsReady() is called\n// TODO: actually store them :)\n// TODO: need to work out how to pass entries from a binary run before we switchfs back to init and have it store and write it later\nfunc InitDeferedLogger() {\n\tif logTheseApps() {\n\t\tinnerInit(true)\n\t\t//logrus.SetOutput(ioutil.Discard)\n\t\t// write to dmesg until we can write to file. (maybe we can do this if rancher.debug=true?)\n\t\tf, err := os.OpenFile(\"/dev/kmsg\", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)\n\t\tif err == nil {\n\t\t\tlogFile = f\n\t\t\tlogrus.SetOutput(logFile)\n\t\t}\n\n\t\tpwd, err := os.Getwd()\n\t\tif err != nil {\n\t\t\tlogrus.Error(err)\n\t\t}\n\t\tlogrus.Debugf(\"START: %v in %s\", os.Args, pwd)\n\t}\n}\n\nfunc innerInit(deferedHook bool) {\n\tif userHook != nil {\n\t\treturn // we've already initialised it\n\t}\n\n\t// All logs go through the Hooks, and they choose what to do with them.\n\tlogrus.StandardLogger().Level = logrus.DebugLevel\n\n\tif logTheseApps() {\n\t\tAddUserHook(deferedHook)\n\t}\n}\n\n// AddRSyslogHook only needs to be called separately when using the InitDeferedLogger\n// init.Main can't read /proc/cmdline at start.\n// and then fails due to the network not being up\n// TODO: create a \"defered SyslogHook that always gets initialised, but if it fails to connect, stores the logs\n//\n//\tand retries connecting every time its triggered....\nfunc AddRSyslogHook() {\n\tval := cmdline.GetCmdline(\"netconsole\")\n\tnetconsole := val.(string)\n\tif netconsole != \"\" {\n\t\t// \"loglevel=8 netconsole=9999@10.0.2.14/,514@192.168.33.148/\"\n\n\t\t// 192.168.33.148:514\n\t\tn := strings.Split(netconsole, \",\")\n\t\tif len(n) == 2 {\n\t\t\td := strings.Split(n[1], \"@\")\n\t\t\tif len(d) == 2 {\n\t\t\t\tnetconsoleDestination := fmt.Sprintf(\"%s:%s\", strings.TrimRight(d[1], \"/\"), d[0])\n\n\t\t\t\thook, err := lsyslog.NewSyslogHook(\"udp\", netconsoleDestination, syslog.LOG_DEBUG, \"\")\n\t\t\t\tif err == nil {\n\t\t\t\t\tlogrus.StandardLogger().Hooks.Add(hook)\n\t\t\t\t\tInfof(\"Sending BurmillaOS Logs to: %s\", netconsoleDestination)\n\t\t\t\t} else {\n\t\t\t\t\tErrorf(\"Error creating SyslogHook: %s\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nfunc FsReady() {\n\tfilename := \"/var/log/boot/\" + filepath.Base(os.Args[0]) + \".log\"\n\tif err := os.MkdirAll(filepath.Dir(filename), os.ModeDir|0755); debugThisLogger && err != nil {\n\t\tlogrus.Errorf(\"FsReady mkdir(%s): %s\", filename, err)\n\t}\n\tf, err := os.OpenFile(filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)\n\tif err != nil {\n\t\tif debugThisLogger {\n\t\t\tlogrus.Errorf(\"FsReady opening %s: %s\", filename, err)\n\t\t}\n\t} else {\n\t\tif debugThisLogger {\n\t\t\tlogrus.Infof(\"Setting log output for %s to: %s\", os.Args[0], filename)\n\t\t}\n\t\tlogFile = f\n\t\tlogrus.SetOutput(logFile)\n\t}\n}\n\n// AddUserHook is used to filter what log messages are written to the screen\nfunc AddUserHook(deferedHook bool) error {\n\tif userHook != nil {\n\t\treturn nil\n\t}\n\n\tprintLogLevel := logrus.InfoLevel\n\n\tuh, err := NewShowuserlogHook(printLogLevel, filepath.Base(os.Args[0]))\n\tif err != nil {\n\t\tlogrus.Errorf(\"error creating userHook(%s): %s\", os.Args[0], err)\n\t\treturn err\n\t}\n\tuserHook = uh\n\tlogrus.StandardLogger().Hooks.Add(uh)\n\n\tif debugThisLogger {\n\t\tif deferedHook {\n\t\t\tlogrus.Debugf(\"------------info Starting defered User Hook (%s)\", os.Args[0])\n\t\t} else {\n\t\t\tlogrus.Debugf(\"------------info Starting User Hook (%s)\", os.Args[0])\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/log/showuserlog.go",
    "content": "package log\n\nimport (\n\t\"fmt\"\n\t\"log/syslog\"\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n\tlogrus_syslog \"github.com/sirupsen/logrus/hooks/syslog\"\n)\n\n// ShowuserlogHook stores all levels of logrus entries in memory until its told the BurmillaOS logging system is ready\n// then it replays them to be logged\ntype ShowuserlogHook struct {\n\tLevel         logrus.Level\n\tsyslogHook    *logrus_syslog.SyslogHook\n\tstoredEntries []*logrus.Entry\n\tappName       string\n}\n\n// NewShowuserlogHook creates a new hook for use\nfunc NewShowuserlogHook(l logrus.Level, app string) (*ShowuserlogHook, error) {\n\treturn &ShowuserlogHook{l, nil, []*logrus.Entry{}, app}, nil\n}\n\n// Fire is called by logrus when the Hook is active\nfunc (hook *ShowuserlogHook) Fire(entry *logrus.Entry) error {\n\tif entry.Level <= hook.Level {\n\t\t//if f, err := os.OpenFile(\"/dev/kmsg\", os.O_WRONLY, 0644); err != nil {\n\t\t//\tfmt.Fprintf(f, \"%s:%s: %s\\n\", hook.appName, entry.Level, entry.Message)\n\t\t//\tf.Close()\n\t\t//} else {\n\t\tfmt.Printf(\"[            ] %s:%s: %s\\n\", hook.appName, entry.Level, entry.Message)\n\t\t//}\n\t}\n\n\tif hook.syslogHook == nil {\n\t\thook.storedEntries = append(hook.storedEntries, entry)\n\t} else {\n\t\terr := hook.syslogHook.Fire(entry)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"LOGERR: Unable to syslog.Fire %v, %v\", entry, err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Levels returns all log levels, so we can process them ourselves\nfunc (hook *ShowuserlogHook) Levels() []logrus.Level {\n\treturn []logrus.Level{\n\t\tlogrus.DebugLevel,\n\t\tlogrus.InfoLevel,\n\t\tlogrus.WarnLevel,\n\t\tlogrus.ErrorLevel,\n\t\tlogrus.FatalLevel,\n\t\tlogrus.PanicLevel,\n\t}\n}\n\n// NotUsedYetLogSystemReady Set up Syslog Hook, and replay any stored entries.\nfunc (hook *ShowuserlogHook) NotUsedYetLogSystemReady() error {\n\tif hook.syslogHook == nil {\n\t\th, err := logrus_syslog.NewSyslogHook(\"\", \"\", syslog.LOG_INFO, \"\")\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"error creating SyslogHook: %v\", err)\n\t\t\treturn err\n\t\t}\n\t\thook.syslogHook = h\n\n\t\tfor _, entry := range hook.storedEntries {\n\t\t\tline, _ := entry.String()\n\t\t\tfmt.Printf(\"---- CATCHUP %s\\n\", line)\n\t\t\thook.syslogHook.Fire(entry)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/netconf/bonding.go",
    "content": "package netconf\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/vishvananda/netlink\"\n)\n\nconst (\n\tbase           = \"/sys/class/net/\"\n\tbondingMasters = \"/sys/class/net/bonding_masters\"\n)\n\ntype Bonding struct {\n\tname string\n}\n\nfunc (b *Bonding) init() error {\n\t_, err := os.Stat(bondingMasters)\n\tif os.IsNotExist(err) {\n\t\tlog.Info(\"Loading bonding kernel module\")\n\t\tcmd := exec.Command(\"modprobe\", \"bonding\")\n\t\tcmd.Stderr = os.Stderr\n\t\tcmd.Stdout = os.Stdin\n\t\terr = cmd.Run()\n\t\tif err != nil {\n\t\t\tfor i := 0; i < 30; i++ {\n\t\t\t\tif _, err = os.Stat(bondingMasters); err == nil {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\ttime.Sleep(100 * time.Millisecond)\n\t\t\t}\n\t\t}\n\t}\n\t_, err = os.Stat(bondingMasters)\n\treturn err\n}\n\nfunc contains(file, word string) (bool, error) {\n\twords, err := ioutil.ReadFile(file)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tfor _, s := range strings.Split(strings.TrimSpace(string(words)), \" \") {\n\t\tif s == strings.TrimSpace(word) {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\nfunc (b *Bonding) linkDown() error {\n\tlink, err := netlink.LinkByName(b.name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn netlink.LinkSetDown(link)\n}\n\nfunc (b *Bonding) ListSlaves() ([]string, error) {\n\tfile := base + b.name + \"/bonding/slaves\"\n\twords, err := ioutil.ReadFile(file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresult := []string{}\n\tfor _, s := range strings.Split(strings.TrimSpace(string(words)), \" \") {\n\t\tif s != \"\" {\n\t\t\tresult = append(result, s)\n\t\t}\n\t}\n\treturn result, nil\n}\n\nfunc (b *Bonding) RemoveSlave(slave string) error {\n\tif ok, err := contains(base+b.name+\"/bonding/slaves\", slave); err != nil {\n\t\treturn err\n\t} else if !ok {\n\t\treturn nil\n\t}\n\n\tp := base + b.name + \"/bonding/slaves\"\n\tlog.Infof(\"Removing slave %s from master %s\", slave, b.name)\n\treturn ioutil.WriteFile(p, []byte(\"-\"+slave), 0644)\n}\n\nfunc (b *Bonding) AddSlave(slave string) error {\n\tif ok, err := contains(base+b.name+\"/bonding/slaves\", slave); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\treturn nil\n\t}\n\n\tp := base + b.name + \"/bonding/slaves\"\n\tlog.Infof(\"Adding slave %s to master %s\", slave, b.name)\n\treturn ioutil.WriteFile(p, []byte(\"+\"+slave), 0644)\n}\n\nfunc (b *Bonding) Opt(key, value string) error {\n\tif key == \"mode\" {\n\t\t// Don't care about errors here\n\t\tb.linkDown()\n\t\tslaves, _ := b.ListSlaves()\n\t\tfor _, slave := range slaves {\n\t\t\tb.RemoveSlave(slave)\n\t\t}\n\t}\n\n\tp := base + b.name + \"/bonding/\" + key\n\tif err := ioutil.WriteFile(p, []byte(value), 0644); err != nil {\n\t\tlog.Errorf(\"Failed to set %s=%s on %s: %v\", key, value, b.name, err)\n\t\treturn err\n\t}\n\n\tlog.Infof(\"Set %s=%s on %s\", key, value, b.name)\n\n\treturn nil\n}\n\nfunc Bond(name string) (*Bonding, error) {\n\tb := &Bonding{name: name}\n\tif err := b.init(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif ok, err := contains(bondingMasters, name); err != nil {\n\t\treturn nil, err\n\t} else if ok {\n\t\treturn b, nil\n\t}\n\n\tlog.Infof(\"Creating bond %s\", name)\n\treturn b, ioutil.WriteFile(bondingMasters, []byte(\"+\"+name), 0644)\n}\n"
  },
  {
    "path": "pkg/netconf/bridge.go",
    "content": "package netconf\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/vishvananda/netlink\"\n)\n\ntype Bridge struct {\n\tname string\n}\n\nfunc NewBridge(name string) (*Bridge, error) {\n\tb := &Bridge{name: name}\n\treturn b, b.init()\n}\n\nfunc (b *Bridge) init() error {\n\tlink, err := netlink.LinkByName(b.name)\n\tif err == nil {\n\t\tif _, ok := link.(*netlink.Bridge); !ok {\n\t\t\treturn fmt.Errorf(\"%s is not a bridge device\", b.name)\n\t\t}\n\t\treturn nil\n\t}\n\n\tbridge := netlink.Bridge{}\n\tbridge.LinkAttrs.Name = b.name\n\n\treturn netlink.LinkAdd(&bridge)\n}\n\nfunc (b *Bridge) AddLink(link netlink.Link) error {\n\texisting, err := netlink.LinkByName(b.name)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif bridge, ok := existing.(*netlink.Bridge); ok {\n\t\tif link.Attrs().MasterIndex != bridge.Index {\n\t\t\treturn netlink.LinkSetMaster(link, bridge)\n\t\t}\n\t} else {\n\t\treturn fmt.Errorf(\"%s is not a bridge\", b.name)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/netconf/ipv4ll_linux.go",
    "content": "package netconf\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"net\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/j-keck/arping\"\n\t\"github.com/vishvananda/netlink\"\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nfunc AssignLinkLocalIP(link netlink.Link) error {\n\tifaceName := link.Attrs().Name\n\n\taddrs, err := getLinkAddrs(link)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, addr := range addrs {\n\t\tif addr.String()[:7] == \"169.254\" {\n\t\t\tlog.Info(\"Link Local IP already set on interface\")\n\t\t\treturn nil\n\t\t}\n\t}\n\trandSource, err := getPseudoRandomGenerator(link.Attrs().HardwareAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// try a random address upto 10 times\n\tfor i := 0; i < 10; i++ {\n\t\trandGenerator := rand.New(*randSource)\n\t\trandomNum := randGenerator.Uint32()\n\t\tdstIP := getNewIPV4LLAddr(randomNum)\n\t\tif dstIP[2] == 0 || dstIP[2] == 255 {\n\t\t\ti--\n\t\t\tcontinue\n\t\t}\n\t\t_, _, err := arping.PingOverIfaceByName(dstIP, ifaceName)\n\t\tif err != nil {\n\t\t\t// this ip is not being used\n\t\t\taddr, err := netlink.ParseAddr(dstIP.String() + \"/16\")\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"error while parsing ipv4ll addr, err = %v\", err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := netlink.AddrAdd(link, addr); err != nil {\n\t\t\t\tlog.Error(\"ipv4ll addr add failed\")\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlog.Infof(\"Set %s on %s\", dstIP.String(), link.Attrs().Name)\n\t\t\treturn nil\n\t\t}\n\t}\n\tlog.Error(\"Could not find a suitable ipv4ll\")\n\treturn fmt.Errorf(\"Could not find a suitable ipv4ll\")\n}\n\nfunc RemoveLinkLocalIP(link netlink.Link) error {\n\taddrs, err := getLinkAddrs(link)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, addr := range addrs {\n\t\tif addr.String()[:7] == \"169.254\" {\n\t\t\tif err := netlink.AddrDel(link, &addr); err != nil {\n\t\t\t\tlog.Error(\"ipv4ll addr del failed\")\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tlog.Infof(\"Removed LinkLocal %s from %s\", addr.String(), link.Attrs().Name)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getNewIPV4LLAddr(randomNum uint32) net.IP {\n\tbyte1 := randomNum & 255 // use least significant 8 bits\n\tbyte2 := randomNum >> 24 // use most significant 8 bits\n\treturn []byte{169, 254, byte(byte1), byte(byte2)}\n}\n\nfunc getPseudoRandomGenerator(haAddr []byte) (*rand.Source, error) {\n\tseed, _ := binary.Varint(haAddr)\n\tsrc := rand.NewSource(seed)\n\treturn &src, nil\n}\n\nfunc getLinkAddrs(link netlink.Link) ([]netlink.Addr, error) {\n\taddrs, err := netlink.AddrList(link, nl.FAMILY_ALL)\n\tif err != nil {\n\t\tlog.Errorf(\"Error fetching existing ip on interface, %s\", err)\n\t\terr = nil // atm, we ignore this, as the link may not have one?\n\t}\n\treturn addrs, err\n}\n"
  },
  {
    "path": "pkg/netconf/netconf_linux.go",
    "content": "package netconf\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"net\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\n\tshlex \"github.com/flynn/go-shlex\"\n\tglob \"github.com/ryanuber/go-glob\"\n\t\"github.com/vishvananda/netlink\"\n)\n\nconst (\n\tCONF = \"/var/lib/rancher/conf\"\n\tMODE = \"mode\"\n)\n\nvar (\n\tdefaultDhcpArgs = []string{\"dhcpcd\", \"-MA4\"}\n\texitDhcpArgs    = []string{\"dhcpcd\", \"-x\"}\n\texitWpaArgs     = []string{\"wpa_cli\", \"terminate\"}\n\tdhcpReleaseCmd  = \"dhcpcd --release\"\n)\n\nfunc createInterfaces(netCfg *NetworkConfig) {\n\tconfigured := map[string]bool{}\n\n\tfor name, iface := range netCfg.Interfaces {\n\t\tif iface.Bridge == \"true\" {\n\t\t\tif _, err := NewBridge(name); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to create bridge %s: %v\", name, err)\n\t\t\t}\n\t\t} else if iface.Bridge != \"\" {\n\t\t\tif _, err := NewBridge(iface.Bridge); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to create bridge %s: %v\", iface.Bridge, err)\n\t\t\t}\n\t\t} else if iface.Bond != \"\" {\n\t\t\tbond, err := Bond(iface.Bond)\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to create bond %s: %v\", iface.Bond, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif !configured[iface.Bond] {\n\t\t\t\tif bondIface, ok := netCfg.Interfaces[iface.Bond]; ok {\n\t\t\t\t\t// Other settings depends on mode, so set it first\n\t\t\t\t\tif v, ok := bondIface.BondOpts[MODE]; ok {\n\t\t\t\t\t\tbond.Opt(MODE, v)\n\t\t\t\t\t}\n\n\t\t\t\t\tfor k, v := range bondIface.BondOpts {\n\t\t\t\t\t\tif k != MODE {\n\t\t\t\t\t\t\tbond.Opt(k, v)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconfigured[iface.Bond] = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc createSlaveInterfaces(netCfg *NetworkConfig) {\n\tlinks, err := GetValidLinkList()\n\tif err != nil {\n\t\tlog.Errorf(\"Failed to list links: %v\", err)\n\t\treturn\n\t}\n\n\tfor _, link := range links {\n\t\tmatch, ok := findMatch(link, netCfg)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tvlanDefs, err := ParseVlanDefinitions(match.Vlans)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to create vlans on device %s: %v\", link.Attrs().Name, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, vlanDef := range vlanDefs {\n\t\t\tif _, err = NewVlan(link, vlanDef.Name, vlanDef.ID); err != nil {\n\t\t\t\tlog.Errorf(\"Failed to create vlans on device %s, id %d: %v\", link.Attrs().Name, vlanDef.ID, err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc findMatch(link netlink.Link, netCfg *NetworkConfig) (InterfaceConfig, bool) {\n\tlinkName := link.Attrs().Name\n\tvar match InterfaceConfig\n\texactMatch := false\n\tfound := false\n\n\tfor key, netConf := range netCfg.Interfaces {\n\t\tif netConf.Match == \"\" {\n\t\t\tnetConf.Match = key\n\t\t}\n\n\t\tif netConf.Match == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.HasPrefix(netConf.Match, \"mac\") {\n\t\t\tif strings.Contains(netConf.Match, \"*\") {\n\t\t\t\t// If selector contains wildcard * and MAC address matches wildcard then return\n\t\t\t\t// Don't match mac address of a bond or VLAN interface because it is the same address as the slave or parent.\n\t\t\t\tif glob.Glob(netConf.Match[4:], link.Attrs().HardwareAddr.String()) && link.Attrs().Name != netConf.Bond && link.Type() != \"vlan\" {\n\t\t\t\t\treturn netConf, true\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\thaAddr, err := net.ParseMAC(netConf.Match[4:])\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Failed to parse mac %s: %v\", netConf.Match[4:], err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Don't match mac address of a bond or VLAN interface because it is the same address as the slave or parent.\n\t\t\tif bytes.Compare(haAddr, link.Attrs().HardwareAddr) == 0 && link.Attrs().Name != netConf.Bond && link.Type() != \"vlan\" {\n\t\t\t\t// MAC address match is used over all other matches\n\t\t\t\treturn netConf, true\n\t\t\t}\n\t\t}\n\n\t\tif !exactMatch && glob.Glob(netConf.Match, linkName) {\n\t\t\tmatch = netConf\n\t\t\tfound = true\n\t\t}\n\n\t\tif netConf.Match == linkName {\n\t\t\t// Found exact match, use it over wildcard match\n\t\t\tmatch = netConf\n\t\t\texactMatch = true\n\t\t}\n\t}\n\n\treturn match, exactMatch || found\n}\n\nfunc populateDefault(netCfg *NetworkConfig) {\n\tif netCfg.Interfaces == nil {\n\t\tnetCfg.Interfaces = map[string]InterfaceConfig{}\n\t}\n\n\tif len(netCfg.Interfaces) == 0 {\n\t\tnetCfg.Interfaces[\"eth*\"] = InterfaceConfig{\n\t\t\tDHCP: true,\n\t\t}\n\t}\n\n\tif _, ok := netCfg.Interfaces[\"lo\"]; !ok {\n\t\tnetCfg.Interfaces[\"lo\"] = InterfaceConfig{\n\t\t\tAddresses: []string{\n\t\t\t\t\"127.0.0.1/8\",\n\t\t\t\t\"::1/128\",\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunc ApplyNetworkConfigs(netCfg *NetworkConfig, userSetHostname, userSetDNS bool) (bool, error) {\n\tpopulateDefault(netCfg)\n\n\tlog.Debugf(\"Config: %#v\", netCfg)\n\trunCmds(netCfg.PreCmds, \"\")\n\tdefer runCmds(netCfg.PostCmds, \"\")\n\n\tcreateInterfaces(netCfg)\n\tcreateSlaveInterfaces(netCfg)\n\n\tlinks, err := GetValidLinkList()\n\tif err != nil {\n\t\tlog.Errorf(\"error getting LinkList: %s\", err)\n\t\treturn false, err\n\t}\n\n\t//apply network config\n\tfor _, link := range links {\n\t\tif !strings.Contains(link.Attrs().Name, \"wlan\") {\n\t\t\tapplyOuter(link, netCfg, userSetHostname, userSetDNS)\n\t\t}\n\t}\n\n\t// apply wifi network config\n\tfor _, link := range links {\n\t\tif strings.Contains(link.Attrs().Name, \"wlan\") {\n\t\t\tapplyOuter(link, netCfg, userSetHostname, userSetDNS)\n\t\t}\n\t}\n\n\t// make sure there was a DHCP set dns - or tell ros to write 8.8.8.8,8.8.8.4\n\tlog.Infof(\"Checking to see if DNS was set by DHCP\")\n\tdnsSet := false\n\tfor _, link := range links {\n\t\tlinkName := link.Attrs().Name\n\t\tlog.Infof(\"dns testing %s\", linkName)\n\t\tlease := GetDhcpLease(linkName)\n\t\tif _, ok := lease[\"domain_name_servers\"]; ok {\n\t\t\tlog.Infof(\"dns was dhcp set for %s\", linkName)\n\t\t\tdnsSet = true\n\t\t}\n\t}\n\n\treturn dnsSet, nil\n}\n\nfunc applyOuter(link netlink.Link, netCfg *NetworkConfig, userSetHostname, userSetDNS bool) {\n\tlinkName := link.Attrs().Name\n\tlog.Debugf(\"applyOuter(%v, %v), link: %s\", userSetHostname, userSetDNS, linkName)\n\tmatch, ok := findMatch(link, netCfg)\n\tif !ok {\n\t\treturn\n\t}\n\n\tlog.Debugf(\"Config(%s): %#v\", linkName, match)\n\n\t// We plan to use the dhcpcd hook to control the wpa_supplicant, Whether the Wi-Fi network uses DHCP or Static\n\t// https://wiki.archlinux.org/index.php/Dhcpcd#Hooks.\n\tif match.WifiNetwork != \"\" {\n\t\tmatch.DHCP = true\n\t}\n\n\trunCmds(match.PreUp, linkName)\n\tdefer runCmds(match.PostUp, linkName)\n\n\tif !match.DHCP {\n\t\tif err := applyInterfaceConfig(link, match); err != nil {\n\t\t\tlog.Errorf(\"Failed to apply settings to %s : %v\", linkName, err)\n\t\t}\n\t}\n\n\tif !match.DHCP && !hasDhcp(linkName) {\n\t\tlog.Debugf(\"Skipping(%s): DHCP=false && no DHCP lease yet\", linkName)\n\t\treturn\n\t}\n\n\tif match.DHCP {\n\t\tif match.WifiNetwork != \"\" {\n\t\t\trunWifiDhcp(netCfg, link, match.WifiNetwork, !userSetHostname, !userSetDNS)\n\t\t} else {\n\t\t\trunDhcp(netCfg, link.Attrs().Name, match.DHCPArgs, !userSetHostname, !userSetDNS)\n\t\t}\n\t} else {\n\t\tlog.Infof(\"dhcp release %s\", link.Attrs().Name)\n\t\trunDhcp(netCfg, link.Attrs().Name, dhcpReleaseCmd, false, true)\n\t}\n}\n\nfunc GetDhcpLease(iface string) (lease map[string]string) {\n\tlease = make(map[string]string)\n\n\tout := getDhcpLeaseString(iface)\n\tlog.Debugf(\"getDhcpLease %s: %s\", iface, out)\n\n\tlines := strings.Split(string(out), \"\\n\")\n\tfor _, line := range lines {\n\t\tl := strings.SplitN(line, \"=\", 2)\n\t\tlog.Debugf(\"line: %v\", l)\n\t\tif len(l) > 1 {\n\t\t\tlease[l[0]] = l[1]\n\t\t}\n\t}\n\treturn lease\n}\n\nfunc getDhcpLeaseString(iface string) []byte {\n\targs := defaultDhcpArgs\n\targs = append(args, \"-U\", iface)\n\tcmd := exec.Command(args[0], args[1:]...)\n\t//cmd.Stderr = os.Stderr\n\tout, err := cmd.Output()\n\tlog.Debugf(\"Running cmd: %s, output: %s\", args, string(out))\n\tif err != nil {\n\t\t// dhcpcd works fine, but gets an error: exit status 1\n\t\tlog.Warnf(\"Failed to run cmd: %s, error: %v\", args, err)\n\t}\n\treturn out\n}\n\nfunc hasDhcp(iface string) bool {\n\tout := getDhcpLeaseString(iface)\n\treturn len(out) > 0\n}\n\nfunc runDhcp(netCfg *NetworkConfig, iface string, argstr string, setHostname, setDNS bool) {\n\targs := []string{}\n\tif argstr != \"\" {\n\t\tvar err error\n\t\targs, err = shlex.Split(argstr)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to parse [%s]: %v\", argstr, err)\n\t\t}\n\t}\n\tif len(args) == 0 {\n\t\targs = defaultDhcpArgs\n\t}\n\n\tif setHostname {\n\t\targs = append(args, \"-e\", \"force_hostname=true\")\n\t}\n\n\tif !setDNS {\n\t\targs = append(args, \"--nohook\", \"resolv.conf\")\n\t}\n\n\tif netCfg.DHCPTimeout > 0 {\n\t\targs = append(args, \"--timeout\", strconv.Itoa(netCfg.DHCPTimeout))\n\t}\n\n\t// Wait for lease\n\t// TODO: this should be optional - based on kernel arg?\n\targs = append(args, \"-w\", \"--debug\")\n\n\targs = append(args, iface)\n\tcmd := exec.Command(args[0], args[1:]...)\n\tlog.Infof(\"Running DHCP on %s: %s\", iface, strings.Join(args, \" \"))\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"Failed to run dhcpcd for %s: %v\", iface, err)\n\t}\n}\n\nfunc runWifiDhcp(netCfg *NetworkConfig, link netlink.Link, network string, setHostname, setDNS bool) {\n\tiface := link.Attrs().Name\n\tif _, ok := netCfg.WifiNetworks[network]; !ok {\n\t\treturn\n\t}\n\n\t// Remove DHCP lease IP and static IP\n\tif hasDhcp(iface) {\n\t\trunDhcp(netCfg, iface, dhcpReleaseCmd, false, true)\n\t}\n\texistAddress, _ := getLinkAddrs(link)\n\tfor _, addr := range existAddress {\n\t\tlog.Infof(\"removing  %s from %s\", addr.String(), link.Attrs().Name)\n\t\tremoveAddress(addr, link)\n\t}\n\n\trunDhcp(netCfg, iface, \"\", setHostname, setDNS)\n}\n\nfunc linkUp(link netlink.Link, netConf InterfaceConfig) error {\n\tif err := netlink.LinkSetUp(link); err != nil {\n\t\tlog.Errorf(\"failed to setup link: %v\", err)\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc applyAddress(address string, link netlink.Link, netConf InterfaceConfig) error {\n\taddr, err := netlink.ParseAddr(address)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := netlink.AddrAdd(link, addr); err == syscall.EEXIST {\n\t\t//Ignore this error\n\t} else if err != nil {\n\t\tlog.Errorf(\"addr add failed: %v\", err)\n\t} else {\n\t\tlog.Infof(\"Set %s on %s\", netConf.Address, link.Attrs().Name)\n\t}\n\n\treturn nil\n}\n\nfunc removeAddress(addr netlink.Addr, link netlink.Link) error {\n\tif err := netlink.AddrDel(link, &addr); err == syscall.EEXIST {\n\t\t//Ignore this error\n\t} else if err != nil {\n\t\tlog.Errorf(\"addr del failed: %v\", err)\n\t} else {\n\t\tlog.Infof(\"Removed %s from %s\", addr.String(), link.Attrs().Name)\n\t}\n\n\treturn nil\n}\n\n// setGateway(add=false) will set _one_ gateway on an interface (ie, replace an existing one)\n// setGateway(add=true) will add another gateway to an interface\nfunc setGateway(gateway string, add bool) error {\n\tif gateway == \"\" {\n\t\treturn nil\n\t}\n\n\tgatewayIP := net.ParseIP(gateway)\n\tif gatewayIP == nil {\n\t\treturn errors.New(\"Invalid gateway address \" + gateway)\n\t}\n\n\troute := netlink.Route{\n\t\tScope: netlink.SCOPE_UNIVERSE,\n\t\tGw:    gatewayIP,\n\t}\n\n\tif add {\n\t\tif err := netlink.RouteAdd(&route); err == syscall.EEXIST {\n\t\t\t//Ignore this error\n\t\t} else if err != nil {\n\t\t\tlog.Errorf(\"gateway add failed: %v\", err)\n\t\t\treturn err\n\t\t}\n\t\tlog.Infof(\"Added default gateway %s\", gateway)\n\t} else {\n\t\tif err := netlink.RouteReplace(&route); err == syscall.EEXIST {\n\t\t\t//Ignore this error\n\t\t} else if err != nil {\n\t\t\tlog.Errorf(\"gateway replace failed: %v\", err)\n\t\t\treturn err\n\t\t}\n\t\tlog.Infof(\"Replaced default gateway %s\", gateway)\n\t}\n\n\treturn nil\n}\n\nfunc applyInterfaceConfig(link netlink.Link, netConf InterfaceConfig) error {\n\t//TODO: skip doing anything if the settings are \"default\"?\n\t//TODO: how do you undo a non-default with a default?\n\t// ATM, this removes\n\n\t// TODO: undo\n\tif netConf.Bond != \"\" {\n\t\tif err := netlink.LinkSetDown(link); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tb, err := Bond(netConf.Bond)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn b.AddSlave(link.Attrs().Name)\n\t}\n\n\t//TODO: undo\n\tif netConf.Bridge != \"\" && netConf.Bridge != \"true\" {\n\t\tb, err := NewBridge(netConf.Bridge)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := b.AddLink(link); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn linkUp(link, netConf)\n\t}\n\n\tif netConf.IPV4LL {\n\t\tif err := AssignLinkLocalIP(link); err != nil {\n\t\t\tlog.Errorf(\"IPV4LL set failed: %v\", err)\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tif err := RemoveLinkLocalIP(link); err != nil {\n\t\t\tlog.Errorf(\"IPV4LL del failed: %v\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\taddresses := []string{}\n\n\tif netConf.Address != \"\" {\n\t\taddresses = append(addresses, netConf.Address)\n\t}\n\n\tif len(netConf.Addresses) > 0 {\n\t\taddresses = append(addresses, netConf.Addresses...)\n\t}\n\n\texistingAddrs, _ := getLinkAddrs(link)\n\taddrMap := make(map[string]bool)\n\tfor _, address := range addresses {\n\t\taddrMap[address] = true\n\t}\n\tfor _, addr := range existingAddrs {\n\t\tif _, ok := addrMap[addr.IPNet.String()]; !ok {\n\t\t\tif netConf.DHCP || netConf.IPV4LL {\n\t\t\t\t// let the dhcpcd take care of it\n\t\t\t\tlog.Infof(\"leaving  %s from %s\", addr.String(), link.Attrs().Name)\n\t\t\t} else {\n\t\t\t\tlog.Infof(\"removing  %s from %s\", addr.String(), link.Attrs().Name)\n\t\t\t\tremoveAddress(addr, link)\n\t\t\t}\n\t\t}\n\t}\n\tfor _, address := range addresses {\n\t\tlog.Infof(\"Applying %s to %s\", address, link.Attrs().Name)\n\t\terr := applyAddress(address, link, netConf)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to apply address %s to %s: %v\", address, link.Attrs().Name, err)\n\t\t}\n\t}\n\n\t// TODO: can we set to default?\n\tif netConf.MTU > 0 {\n\t\tif err := netlink.LinkSetMTU(link, netConf.MTU); err != nil {\n\t\t\tlog.Errorf(\"set MTU Failed: %v\", err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := linkUp(link, netConf); err != nil {\n\t\treturn err\n\t}\n\n\t// replace the existing gw with the main ipv4 one\n\tif err := setGateway(netConf.Gateway, true); err != nil {\n\t\tlog.Errorf(\"Fail to set gateway %s\", netConf.Gateway)\n\t}\n\t//and then add the ipv6 one if it exists\n\tif err := setGateway(netConf.GatewayIpv6, true); err != nil {\n\t\tlog.Errorf(\"Fail to set gateway %s\", netConf.GatewayIpv6)\n\t}\n\n\t// TODO: how to remove a GW? (on aws it seems to be hard to find out what the gw is :/)\n\treturn nil\n}\n\nfunc runCmds(cmds []string, iface string) {\n\tlog.Debugf(\"runCmds(on %s): %v\", iface, cmds)\n\tfor _, cmd := range cmds {\n\t\tlog.Debugf(\"runCmd(on %s): %v\", iface, cmd)\n\t\tcmd = strings.TrimSpace(cmd)\n\t\tif cmd == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\targs, err := shlex.Split(strings.Replace(cmd, \"$iface\", iface, -1))\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to parse command [%s]: %v\", cmd, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tlog.Infof(\"Running command %s %v\", args[0], args[1:])\n\t\tcmd := exec.Command(args[0], args[1:]...)\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run command [%v]: %v\", cmd, err)\n\t\t\tcontinue\n\t\t}\n\t}\n}\n\nfunc GetValidLinkList() ([]netlink.Link, error) {\n\tvar validLinkList []netlink.Link\n\tlinks, err := netlink.LinkList()\n\tif err != nil {\n\t\treturn validLinkList, err\n\t}\n\n\tfor _, l := range links {\n\t\tlinkName := l.Attrs().Name\n\t\tif linkName == \"lo\" || linkName == \"docker-sys\" || linkName == \"docker0\" {\n\t\t\tcontinue\n\t\t}\n\t\tvalidLinkList = append(validLinkList, l)\n\t}\n\n\treturn validLinkList, nil\n}\n\nfunc StopDhcpcd() {\n\tcmd := exec.Command(exitDhcpArgs[0], exitDhcpArgs[1:]...)\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tif err := cmd.Run(); err != nil {\n\t\tlog.Errorf(\"Failed to run command [%v]: %v\", cmd, err)\n\t}\n}\n\nfunc StopWpaSupplicant() {\n\tlinks, err := GetValidLinkList()\n\tif err != nil {\n\t\tlog.Errorf(\"error getting LinkList: %s\", err)\n\t\treturn\n\t}\n\t// need terminate all ifname\n\tfor _, link := range links {\n\t\tcmd := exec.Command(exitWpaArgs[0], exitWpaArgs[1], \"-i\", link.Attrs().Name)\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tif err := cmd.Run(); err != nil {\n\t\t\tlog.Errorf(\"Failed to run command %v: %v\", cmd.Args, err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/netconf/netconf_linux_test.go",
    "content": "package netconf\n\nimport (\n\t\"net\"\n\t\"testing\"\n\n\t\"github.com/vishvananda/netlink\"\n)\n\ntype mockLink struct {\n\tattrs netlink.LinkAttrs\n\tt     string\n}\n\nfunc (l mockLink) Attrs() *netlink.LinkAttrs {\n\treturn &l.attrs\n}\n\nfunc (l mockLink) Type() string {\n\treturn l.t\n}\n\nfunc TestFindMatch(t *testing.T) {\n\ttestCases := []struct {\n\t\tmatch    string\n\t\tmac      string\n\t\tt        string\n\t\tname     string\n\t\tbond     string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\t\"mac:aa:bb:cc:dd:ee:ff\",\n\t\t\t\"aa:bb:cc:dd:ee:ff\",\n\t\t\t\"fake\",\n\t\t\t\"eth0\",\n\t\t\t\"bond0\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"mac:aa:bb:cc:*\",\n\t\t\t\"aa:bb:cc:12:34:56\",\n\t\t\t\"fake\",\n\t\t\t\"eth0\",\n\t\t\t\"bond0\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"mac:aa:bb:cc:*\",\n\t\t\t\"11:bb:cc:dd:ee:ff\",\n\t\t\t\"fake\",\n\t\t\t\"eth0\",\n\t\t\t\"bond0\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"mac:aa:bb:cc:dd:ee:ff\",\n\t\t\t\"aa:bb:cc:dd:ee:11\",\n\t\t\t\"fake\",\n\t\t\t\"eth0\",\n\t\t\t\"bond0\",\n\t\t\tfalse,\n\t\t},\n\t\t// This is a bond eg. bond0\n\t\t{\n\t\t\t\"mac:aa:bb:*\",\n\t\t\t\"aa:bb:cc:dd:ee:11\",\n\t\t\t\"bond\",\n\t\t\t\"bond0\",\n\t\t\t\"bond0\",\n\t\t\tfalse,\n\t\t},\n\t}\n\n\tfor i, tt := range testCases {\n\t\tnetCfg := NetworkConfig{\n\t\t\tInterfaces: map[string]InterfaceConfig{\n\t\t\t\ttt.name: InterfaceConfig{\n\t\t\t\t\tMatch: tt.match,\n\t\t\t\t\tBond:  tt.bond,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tlinkAttrs := netlink.NewLinkAttrs()\n\t\tlinkAttrs.Name = tt.name\n\t\tlinkAttrs.HardwareAddr, _ = net.ParseMAC(tt.mac)\n\t\tlink := mockLink{attrs: linkAttrs}\n\n\t\t_, match := findMatch(link, &netCfg)\n\n\t\tif match != tt.expected {\n\t\t\tt.Errorf(\"Test case %d failed: mac: '%s' match '%s' expected: '%v' got: '%v'\", i, tt.mac, tt.match, tt.expected, match)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "pkg/netconf/types.go",
    "content": "package netconf\n\ntype NetworkConfig struct {\n\tPreCmds       []string                      `yaml:\"pre_cmds,omitempty\"`\n\tDHCPTimeout   int                           `yaml:\"dhcp_timeout,omitempty\"`\n\tDNS           DNSConfig                     `yaml:\"dns,omitempty\"`\n\tInterfaces    map[string]InterfaceConfig    `yaml:\"interfaces,omitempty\"`\n\tPostCmds      []string                      `yaml:\"post_cmds,omitempty\"`\n\tHTTPProxy     string                        `yaml:\"http_proxy,omitempty\"`\n\tHTTPSProxy    string                        `yaml:\"https_proxy,omitempty\"`\n\tNoProxy       string                        `yaml:\"no_proxy,omitempty\"`\n\tWifiNetworks  map[string]WifiNetworkConfig  `yaml:\"wifi_networks,omitempty\"`\n\tModemNetworks map[string]ModemNetworkConfig `yaml:\"modem_networks,omitempty\"`\n}\n\ntype InterfaceConfig struct {\n\tMatch       string            `yaml:\"match,omitempty\"`\n\tDHCP        bool              `yaml:\"dhcp,omitempty\"`\n\tDHCPArgs    string            `yaml:\"dhcp_args,omitempty\"`\n\tAddress     string            `yaml:\"address,omitempty\"`\n\tAddresses   []string          `yaml:\"addresses,omitempty\"`\n\tIPV4LL      bool              `yaml:\"ipv4ll,omitempty\"`\n\tGateway     string            `yaml:\"gateway,omitempty\"`\n\tGatewayIpv6 string            `yaml:\"gateway_ipv6,omitempty\"`\n\tMTU         int               `yaml:\"mtu,omitempty\"`\n\tBridge      string            `yaml:\"bridge,omitempty\"`\n\tBond        string            `yaml:\"bond,omitempty\"`\n\tBondOpts    map[string]string `yaml:\"bond_opts,omitempty\"`\n\tPostUp      []string          `yaml:\"post_up,omitempty\"`\n\tPreUp       []string          `yaml:\"pre_up,omitempty\"`\n\tVlans       string            `yaml:\"vlans,omitempty\"`\n\tWifiNetwork string            `yaml:\"wifi_network,omitempty\"`\n}\n\ntype DNSConfig struct {\n\tNameservers []string `yaml:\"nameservers,flow,omitempty\"`\n\tSearch      []string `yaml:\"search,flow,omitempty\"`\n}\n\ntype WifiNetworkConfig struct {\n\tAddress           string   `yaml:\"address,omitempty\"`\n\tGateway           string   `yaml:\"gateway,omitempty\"`\n\tScanSSID          int      `yaml:\"scan_ssid,omitempty\"`\n\tSSID              string   `yaml:\"ssid,omitempty\"`\n\tPSK               string   `yaml:\"psk,omitempty\"`\n\tPriority          int      `yaml:\"priority,omitempty\"`\n\tPairwise          string   `yaml:\"pairwise,omitempty\"`\n\tGroup             string   `yaml:\"group,omitempty\"`\n\tEap               string   `yaml:\"eap,omitempty\"`\n\tIdentity          string   `yaml:\"identity,omitempty\"`\n\tAnonymousIdentity string   `yaml:\"anonymous_identity,omitempty\"`\n\tCaCerts           []string `yaml:\"ca_certs,omitempty\"`\n\tClientCerts       []string `yaml:\"client_certs,omitempty\"`\n\tPrivateKeys       []string `yaml:\"private_keys,omitempty\"`\n\tPrivateKeyPasswds []string `yaml:\"private_key_passwds,omitempty\"`\n\tPhases            []string `yaml:\"phases,omitempty\"`\n\tEapolFlags        int      `yaml:\"eapol_flags,omitempty\"`\n\tKeyMgmt           string   `yaml:\"key_mgmt,omitempty\"`\n\tPassword          string   `yaml:\"password,omitempty\"`\n}\n\ntype ModemNetworkConfig struct {\n\tApn       string `yaml:\"apn\"`\n\tExtraArgs string `yaml:\"extra_args,omitempty\"`\n}\n"
  },
  {
    "path": "pkg/netconf/vlan.go",
    "content": "package netconf\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/vishvananda/netlink\"\n)\n\ntype VlanDefinition struct {\n\tID   int\n\tName string\n}\n\ntype Vlan struct {\n\tname string\n\tlink netlink.Link\n\tid   int\n}\n\nfunc NewVlan(link netlink.Link, name string, id int) (*Vlan, error) {\n\tif name == \"\" {\n\t\tname = fmt.Sprintf(\"%s.%d\", link.Attrs().Name, id)\n\t}\n\n\tv := &Vlan{\n\t\tname: name,\n\t\tlink: link,\n\t\tid:   id,\n\t}\n\treturn v, v.init()\n}\n\nfunc (v *Vlan) init() error {\n\tlink, err := netlink.LinkByName(v.name)\n\tif err == nil {\n\t\tif _, ok := link.(*netlink.Vlan); !ok {\n\t\t\treturn fmt.Errorf(\"%s is not a VLAN device\", v.name)\n\t\t}\n\t\treturn nil\n\t}\n\n\tvlan := netlink.Vlan{}\n\tvlan.ParentIndex = v.link.Attrs().Index\n\tvlan.Name = v.name\n\tvlan.VlanId = v.id\n\n\treturn netlink.LinkAdd(&vlan)\n}\n\nfunc ParseVlanDefinitions(vlans string) ([]VlanDefinition, error) {\n\tvlans = strings.TrimSpace(vlans)\n\tif vlans == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tresult := []VlanDefinition{}\n\n\tfor _, vlan := range strings.Split(vlans, \",\") {\n\t\tidName := strings.SplitN(strings.TrimSpace(vlan), \":\", 2)\n\t\tid, err := strconv.Atoi(idName[0])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Invalid format in %s: %v\", vlans, err)\n\t\t}\n\n\t\tdef := VlanDefinition{\n\t\t\tID: id,\n\t\t}\n\n\t\tif len(idName) > 1 {\n\t\t\tdef.Name = idName[1]\n\t\t}\n\n\t\tresult = append(result, def)\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "pkg/sysinit/sysinit.go",
    "content": "package sysinit\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/burmilla/os/cmd/control\"\n\t\"github.com/burmilla/os/config\"\n\t\"github.com/burmilla/os/pkg/compose\"\n\t\"github.com/burmilla/os/pkg/docker\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"golang.org/x/net/context\"\n)\n\nconst (\n\tsystemImagesPreloadDirectory = \"/var/lib/rancher/preload/system-docker\"\n\tsystemImagesLoadStamp        = \"/var/lib/rancher/.sysimages_%s_loaded.done\"\n)\n\nfunc hasImage(name string) bool {\n\tstamp := path.Join(config.StateDir, name)\n\tif _, err := os.Stat(stamp); os.IsNotExist(err) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc getImagesArchive(bootstrap bool) string {\n\tvar archive string\n\tif bootstrap {\n\t\tarchive = path.Join(config.ImagesPath, config.InitImages)\n\t} else {\n\t\tarchive = path.Join(config.ImagesPath, config.SystemImages)\n\t}\n\n\treturn archive\n}\n\nfunc LoadBootstrapImages(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\treturn loadImages(cfg, true)\n}\n\nfunc LoadSystemImages(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\tstamp := fmt.Sprintf(systemImagesLoadStamp, strings.Replace(config.Version, \".\", \"_\", -1))\n\tif _, err := os.Stat(stamp); os.IsNotExist(err) {\n\t\tos.Create(stamp)\n\t\treturn loadImages(cfg, false)\n\t}\n\n\tlog.Infof(\"Skipped loading system images because %s exists\", systemImagesLoadStamp)\n\treturn cfg, nil\n}\n\nfunc loadImages(cfg *config.CloudConfig, bootstrap bool) (*config.CloudConfig, error) {\n\tarchive := getImagesArchive(bootstrap)\n\n\tclient, err := docker.NewSystemClient()\n\tif err != nil {\n\t\treturn cfg, err\n\t}\n\n\tif !hasImage(filepath.Base(archive)) {\n\t\tif _, err := os.Stat(archive); os.IsNotExist(err) {\n\t\t\tlog.Fatalf(\"FATAL: Could not load images from %s (file not found)\", archive)\n\t\t}\n\n\t\t// client.ImageLoad is an asynchronous operation\n\t\t// To ensure the order of execution, use cmd instead of it\n\t\tlog.Infof(\"Loading images from %s\", archive)\n\t\tcmd := exec.Command(\"/usr/bin/system-docker\", \"load\", \"-q\", \"-i\", archive)\n\t\tif out, err := cmd.CombinedOutput(); err != nil {\n\t\t\tlog.Fatalf(\"FATAL: Error loading images from %s (%v)\\n%s \", archive, err, out)\n\t\t}\n\n\t\tlog.Infof(\"Done loading images from %s\", archive)\n\t}\n\n\tdockerImages, _ := client.ImageList(context.Background(), types.ImageListOptions{})\n\tfor _, dimg := range dockerImages {\n\t\tlog.Debugf(\"Loaded a docker image: %s\", dimg.RepoTags)\n\t}\n\n\treturn cfg, nil\n}\n\nfunc SysInit() error {\n\tcfg := config.LoadConfig()\n\n\tif err := control.PreloadImages(docker.NewSystemClient, systemImagesPreloadDirectory); err != nil {\n\t\tlog.Errorf(\"Failed to preload System Docker images: %v\", err)\n\t}\n\n\t_, err := config.ChainCfgFuncs(cfg,\n\t\tconfig.CfgFuncs{\n\t\t\t{Name: \"loadSystemImages\", Func: LoadSystemImages},\n\t\t\t{Name: \"start project\", Func: func(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\t\t\t\tp, err := compose.GetProject(cfg, false, true)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn cfg, err\n\t\t\t\t}\n\t\t\t\treturn cfg, p.Up(context.Background(), options.Up{\n\t\t\t\t\tCreate: options.Create{\n\t\t\t\t\t\tNoRecreate: true,\n\t\t\t\t\t},\n\t\t\t\t\tLog: cfg.Rancher.Log,\n\t\t\t\t})\n\t\t\t}},\n\t\t\t{Name: \"sync\", Func: func(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\t\t\t\tsyscall.Sync()\n\t\t\t\treturn cfg, nil\n\t\t\t}},\n\t\t\t{Name: \"banner\", Func: func(cfg *config.CloudConfig) (*config.CloudConfig, error) {\n\t\t\t\tlog.Infof(\"BurmillaOS %s started\", config.Version)\n\t\t\t\treturn cfg, nil\n\t\t\t}}})\n\treturn err\n}\n\nfunc loadServicesCache() {\n\t// this code make sure the open-vm-tools, modem-manager... services can be started correct when there is no network\n\t// make sure the cache directory exist\n\tif err := os.MkdirAll(\"/var/lib/rancher/cache/\", os.ModeDir|0755); err != nil {\n\t\tlog.Errorf(\"Create service cache diretory error: %v\", err)\n\t}\n\n\t// move os-services cache file\n\tif _, err := os.Stat(\"/usr/share/ros/services-cache\"); err == nil {\n\t\tfiles, err := ioutil.ReadDir(\"/usr/share/ros/services-cache/\")\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Read file error: %v\", err)\n\t\t}\n\t\tfor _, f := range files {\n\t\t\terr := os.Rename(\"/usr/share/ros/services-cache/\"+f.Name(), \"/var/lib/rancher/cache/\"+f.Name())\n\t\t\tif err != nil {\n\t\t\t\tlog.Errorf(\"Rename file error: %v\", err)\n\t\t\t}\n\t\t}\n\t\tif err := os.Remove(\"/usr/share/ros/services-cache\"); err != nil {\n\t\t\tlog.Errorf(\"Remove file error: %v\", err)\n\t\t}\n\t}\n}\n\nfunc RunSysInit(c *config.CloudConfig) (*config.CloudConfig, error) {\n\tloadServicesCache()\n\targs := append([]string{config.SysInitBin}, os.Args[1:]...)\n\n\tcmd := &exec.Cmd{\n\t\tPath: config.RosBin,\n\t\tArgs: args,\n\t}\n\n\tcmd.Stdin = os.Stdin\n\tcmd.Stderr = os.Stderr\n\tcmd.Stdout = os.Stdout\n\n\tif err := cmd.Start(); err != nil {\n\t\treturn c, err\n\t}\n\n\treturn c, os.Stdin.Close()\n}\n"
  },
  {
    "path": "pkg/util/backoff.go",
    "content": "package util\n\nimport \"time\"\n\ntype Backoff struct {\n\tStartMillis, MaxIntervalMillis, MaxMillis int\n\tc                                         chan bool\n\tdone                                      chan bool\n}\n\nfunc (b *Backoff) Start() <-chan bool {\n\tb.c = make(chan bool)\n\tb.done = make(chan bool)\n\tgo b.backoff()\n\treturn b.c\n}\n\nfunc (b *Backoff) Close() error {\n\tb.done <- true\n\treturn nil\n}\n\nfunc (b *Backoff) backoff() {\n\tif b.StartMillis == 0 && b.MaxIntervalMillis == 0 {\n\t\tb.StartMillis = 100\n\t\tb.MaxIntervalMillis = 2000\n\t\tb.MaxMillis = 300000\n\t}\n\n\tstart := time.Now()\n\tcurrentMillis := b.StartMillis\n\n\tfor {\n\t\twriteVal := true\n\t\tif time.Now().Sub(start) > (time.Duration(b.MaxMillis) * time.Millisecond) {\n\t\t\tb.c <- false\n\t\t}\n\n\t\tselect {\n\t\tcase <-b.done:\n\t\t\tclose(b.done)\n\t\t\tclose(b.c)\n\t\t\treturn\n\t\tcase b.c <- writeVal:\n\t\t}\n\n\t\ttime.Sleep(time.Duration(currentMillis) * time.Millisecond)\n\n\t\tcurrentMillis *= 2\n\t\tif currentMillis > b.MaxIntervalMillis {\n\t\t\tcurrentMillis = b.MaxIntervalMillis\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pkg/util/cutil.go",
    "content": "//go:build linux\n// +build linux\n\npackage util\n\n/*\n#cgo LDFLAGS: -lmount -lblkid -luuid\n#include<blkid/blkid.h>\n#include<libmount/libmount.h>\n#include<stdlib.h>\n#cgo pkg-config: libselinux libsepol\n#include <selinux/selinux.h>\n*/\nimport \"C\"\nimport (\n\t\"errors\"\n\t\"unsafe\"\n)\n\n// ResolveDevice this isn't reliable - blkid -L LABEL works more often :(\nfunc ResolveDevice(spec string) string {\n\tcSpec := C.CString(spec)\n\tdefer C.free(unsafe.Pointer(cSpec))\n\tcString := C.blkid_evaluate_spec(cSpec, nil)\n\tdefer C.free(unsafe.Pointer(cString))\n\treturn C.GoString(cString)\n}\n\nfunc GetFsType(device string) (string, error) {\n\tvar ambi *C.int\n\tcDevice := C.CString(device)\n\tdefer C.free(unsafe.Pointer(cDevice))\n\tcString := C.mnt_get_fstype(cDevice, ambi, nil)\n\tdefer C.free(unsafe.Pointer(cString))\n\tif cString != nil {\n\t\treturn C.GoString(cString), nil\n\t}\n\treturn \"\", errors.New(\"Error while getting fstype\")\n}\n"
  },
  {
    "path": "pkg/util/network/cache.go",
    "content": "package network\n\nimport (\n\t\"crypto/md5\"\n\t\"encoding/hex\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n)\n\nconst (\n\tcacheDirectory = \"/var/lib/rancher/cache/\"\n)\n\nfunc locationHash(location string) string {\n\tsum := md5.Sum([]byte(location))\n\treturn hex.EncodeToString(sum[:])\n}\n\nfunc cacheLookup(location string) []byte {\n\tcacheFile := cacheDirectory + locationHash(location)\n\tbytes, err := ioutil.ReadFile(cacheFile)\n\tif err == nil {\n\t\tlog.Debugf(\"Using cached file: %s\", cacheFile)\n\t\treturn bytes\n\t}\n\treturn nil\n}\n\nfunc cacheAdd(location string, data []byte) {\n\ttempFile, err := ioutil.TempFile(cacheDirectory, \"\")\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer os.Remove(tempFile.Name())\n\n\t_, err = tempFile.Write(data)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcacheFile := cacheDirectory + locationHash(location)\n\tos.Rename(tempFile.Name(), cacheFile)\n}\n\nfunc cacheMove(location string) (string, error) {\n\tcacheFile := cacheDirectory + locationHash(location)\n\ttempFile := cacheFile + \"_temp\"\n\tif err := os.Rename(cacheFile, tempFile); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn tempFile, nil\n}\n\nfunc cacheMoveBack(name string) error {\n\treturn os.Rename(name, strings.TrimRight(name, \"_temp\"))\n}\n"
  },
  {
    "path": "pkg/util/network/network.go",
    "content": "package network\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/config\"\n\thttpRetry \"github.com/burmilla/os/config/cloudinit/pkg\"\n\t\"github.com/burmilla/os/pkg/log\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\tcomposeConfig \"github.com/docker/libcompose/config\"\n)\n\nvar (\n\tErrNoNetwork = errors.New(\"Networking not available to load resource\")\n\tErrNotFound  = errors.New(\"Failed to find resource\")\n)\n\nfunc GetServices(urls []string) ([]string, error) {\n\treturn getServices(urls, \"services\")\n}\n\nfunc GetConsoles(urls []string) ([]string, error) {\n\treturn getServices(urls, \"consoles\")\n}\n\nfunc GetEngines(urls []string) ([]string, error) {\n\treturn getServices(urls, \"engines\")\n}\n\nfunc getServices(urls []string, key string) ([]string, error) {\n\tresult := []string{}\n\n\tfor _, url := range urls {\n\t\tindexURL := fmt.Sprintf(\"%s/index.yml\", url)\n\t\tcontent, err := LoadResource(indexURL, true)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to load %s: %v\", indexURL, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tservices := make(map[string][]string)\n\t\terr = yaml.Unmarshal(content, &services)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to unmarshal %s: %v\", indexURL, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif list, ok := services[key]; ok {\n\t\t\tresult = append(result, list...)\n\t\t}\n\t}\n\n\treturn result, nil\n}\n\nfunc SetProxyEnvironmentVariables() {\n\tcfg := config.LoadConfig()\n\tif cfg.Rancher.Network.HTTPProxy != \"\" {\n\t\terr := os.Setenv(\"HTTP_PROXY\", cfg.Rancher.Network.HTTPProxy)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Unable to set HTTP_PROXY: %s\", err)\n\t\t}\n\t}\n\tif cfg.Rancher.Network.HTTPSProxy != \"\" {\n\t\terr := os.Setenv(\"HTTPS_PROXY\", cfg.Rancher.Network.HTTPSProxy)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Unable to set HTTPS_PROXY: %s\", err)\n\t\t}\n\t}\n\tif cfg.Rancher.Network.NoProxy != \"\" {\n\t\terr := os.Setenv(\"NO_PROXY\", cfg.Rancher.Network.NoProxy)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Unable to set NO_PROXY: %s\", err)\n\t\t}\n\t}\n\tif cfg.Rancher.Network.HTTPProxy != \"\" {\n\t\tconfig.Set(\"rancher.environment.http_proxy\", cfg.Rancher.Network.HTTPProxy)\n\t\tconfig.Set(\"rancher.environment.HTTP_PROXY\", cfg.Rancher.Network.HTTPProxy)\n\t}\n\tif cfg.Rancher.Network.HTTPSProxy != \"\" {\n\t\tconfig.Set(\"rancher.environment.https_proxy\", cfg.Rancher.Network.HTTPSProxy)\n\t\tconfig.Set(\"rancher.environment.HTTPS_PROXY\", cfg.Rancher.Network.HTTPSProxy)\n\t}\n\tif cfg.Rancher.Network.NoProxy != \"\" {\n\t\tconfig.Set(\"rancher.environment.no_proxy\", cfg.Rancher.Network.NoProxy)\n\t\tconfig.Set(\"rancher.environment.NO_PROXY\", cfg.Rancher.Network.NoProxy)\n\t}\n}\n\nfunc LoadFromNetworkWithCache(location string) ([]byte, error) {\n\tbytes := cacheLookup(location)\n\tif bytes != nil {\n\t\treturn bytes, nil\n\t}\n\treturn LoadFromNetwork(location)\n}\n\nfunc LoadFromNetwork(location string) ([]byte, error) {\n\tvar err error\n\n\tif err = AllDefaultGWOK(DefaultRoutesCheckTimeout); err != nil {\n\t\treturn nil, err\n\t}\n\tSetProxyEnvironmentVariables()\n\n\tnet.DefaultResolver.PreferGo = true\n\tcfg := config.LoadConfig()\n\tclient := httpRetry.NewHTTPClient()\n\tclient.MaxRetries = cfg.Rancher.HTTPLoadRetries\n\tlog.Debugf(\"start trying LoadFromNetwork(%s)\", location)\n\tbytes, err := client.GetRetry(location)\n\tif err != nil {\n\t\tlog.Errorf(\"failed to LoadFromNetwork: %v\", err)\n\t\treturn nil, err\n\t}\n\tlog.Debugf(\"LoadFromNetwork(%s) returned\", location)\n\tcacheAdd(location, bytes)\n\n\treturn bytes, nil\n}\n\nfunc LoadResource(location string, network bool) ([]byte, error) {\n\tif strings.HasPrefix(location, \"http:/\") || strings.HasPrefix(location, \"https:/\") {\n\t\tif !network {\n\t\t\treturn nil, ErrNoNetwork\n\t\t}\n\t\treturn LoadFromNetworkWithCache(location)\n\t} else if strings.HasPrefix(location, \"/\") {\n\t\treturn ioutil.ReadFile(location)\n\t}\n\n\treturn nil, ErrNotFound\n}\n\nfunc serviceURL(url, name string) string {\n\treturn fmt.Sprintf(\"%s/%s/%s.yml\", url, name[0:1], name)\n}\n\nfunc LoadServiceResource(name string, useNetwork bool, cfg *config.CloudConfig) ([]byte, error) {\n\tbytes, err := LoadResource(name, useNetwork)\n\tif err == nil {\n\t\tlog.Debugf(\"Loaded %s from %s\", name, name)\n\t\treturn bytes, nil\n\t}\n\tif err == ErrNoNetwork || !useNetwork {\n\t\treturn nil, ErrNoNetwork\n\t}\n\n\turls := cfg.Rancher.Repositories.ToArray()\n\tfor _, url := range urls {\n\t\tserviceURL := serviceURL(url, name)\n\t\tbytes, err = LoadResource(serviceURL, useNetwork)\n\t\tif err == nil {\n\t\t\tlog.Debugf(\"Loaded %s from %s\", name, serviceURL)\n\t\t\treturn bytes, nil\n\t\t}\n\t}\n\n\treturn nil, err\n}\n\nfunc LoadMultiEngineResource(name string) ([]byte, error) {\n\tcomposeConfigs := map[string]composeConfig.ServiceConfigV1{}\n\tif _, err := os.Stat(config.MultiDockerConfFile); err == nil {\n\t\tmultiEngineBytes, err := ioutil.ReadFile(config.MultiDockerConfFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terr = yaml.Unmarshal(multiEngineBytes, &composeConfigs)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif _, ok := composeConfigs[name]; !ok {\n\t\treturn nil, errors.New(\"Failed to found \" + name + \" from \" + config.MultiDockerConfFile + \" will load from network\")\n\t}\n\n\tfoundServiceConfig := map[string]composeConfig.ServiceConfigV1{}\n\tfoundServiceConfig[name] = composeConfigs[name]\n\tbytes, err := yaml.Marshal(foundServiceConfig)\n\tif err == nil {\n\t\treturn bytes, err\n\t}\n\n\treturn nil, err\n}\n\nfunc UpdateCaches(urls []string, key string) error {\n\tfor _, url := range urls {\n\t\tindexURL := fmt.Sprintf(\"%s/index.yml\", url)\n\t\tcontent, err := UpdateCache(indexURL)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tservices := make(map[string][]string)\n\t\terr = yaml.Unmarshal(content, &services)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tlist := services[key]\n\t\tfor _, name := range list {\n\t\t\tserviceURL := serviceURL(url, name)\n\t\t\t// no need to handle error\n\t\t\tUpdateCache(serviceURL)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc UpdateCache(location string) ([]byte, error) {\n\t// move cache file to temp directory\n\ttempFile, err := cacheMove(location)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcontent, err := LoadResource(location, true)\n\tif err != nil {\n\t\t// move back old cache file\n\t\tif err := cacheMoveBack(tempFile); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn ioutil.ReadFile(location)\n\t}\n\t// remove old cache file\n\tif err := os.Remove(tempFile); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn content, nil\n}\n"
  },
  {
    "path": "pkg/util/network/network_test.go",
    "content": "package network\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc NoTestLoadResourceSimple(t *testing.T) {\n\tassert := require.New(t)\n\n\texpected := `services:\n- debian-console\n- ubuntu-console\n`\n\texpected = strings.TrimSpace(expected)\n\n\tb, e := LoadResource(\"https://raw.githubusercontent.com/rancher/os-services/v0.3.4/index.yml\", true)\n\n\tassert.Nil(e)\n\tassert.Equal(expected, strings.TrimSpace(string(b)))\n}\n"
  },
  {
    "path": "pkg/util/network/route.go",
    "content": "package network\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/burmilla/os/pkg/log\"\n\t\"github.com/burmilla/os/pkg/util\"\n)\n\nconst (\n\tDefaultRoutesCheckTimeout = 20000 // 20 second\n\n\tipv4RouteFile = \"/proc/net/route\"\n\tipv6RouteFile = \"/proc/net/ipv6_route\"\n\n\tipv4DefaultGWFlags = \"0003\"\n\tipv6DefaultGWFlags = \"00450003\"\n)\n\nfunc checkIPv4GW() bool {\n\tif _, err := os.Stat(ipv4RouteFile); os.IsNotExist(err) {\n\t\treturn false\n\t}\n\tfile, err := os.Open(ipv4RouteFile)\n\tif err != nil {\n\t\treturn false\n\t}\n\tdefer file.Close()\n\tscanner := bufio.NewReader(file)\n\tfor {\n\t\tline, err := scanner.ReadString('\\n')\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\t//ignore the headers in the route info\n\t\tif strings.HasPrefix(line, \"Iface\") {\n\t\t\tcontinue\n\t\t}\n\t\tfields := strings.Fields(line)\n\t\t// Interested in fields:\n\t\t//  3 - flags\n\t\tif fields[3] == ipv4DefaultGWFlags {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc checkIPv6GW() bool {\n\tif _, err := os.Stat(ipv6RouteFile); os.IsNotExist(err) {\n\t\treturn false\n\t}\n\tfile, err := os.Open(ipv6RouteFile)\n\tif err != nil {\n\t\treturn false\n\t}\n\tdefer file.Close()\n\tscanner := bufio.NewReader(file)\n\tfor {\n\t\tline, err := scanner.ReadString('\\n')\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tfields := strings.Fields(line)\n\t\t// Interested in fields:\n\t\t//  3 - flags\n\t\tif fields[3] == ipv6DefaultGWFlags {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc checkAllDefaultGW() bool {\n\treturn checkIPv4GW() || checkIPv6GW()\n}\n\nfunc AllDefaultGWOK(timeout int) error {\n\tbackoff := util.Backoff{\n\t\tStartMillis:       100,\n\t\tMaxIntervalMillis: 2000,\n\t\tMaxMillis:         timeout,\n\t}\n\tdefer backoff.Close()\n\n\tvar err error\n\tfor ok := range backoff.Start() {\n\t\tif !ok {\n\t\t\terr = fmt.Errorf(\"Timeout waiting for the default gateway ready\")\n\t\t\tbreak\n\t\t}\n\t\tif checkAllDefaultGW() {\n\t\t\tbreak\n\t\t}\n\t\tlog.Debug(\"Waiting for the default gateway ready\")\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlog.Debug(\"The default gateway is ready\")\n\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/util/term.go",
    "content": "//go:build linux\n// +build linux\n\npackage util\n\nimport \"github.com/tredoe/term\"\n\nfunc IsRunningInTty() bool {\n\treturn term.IsTerminal(1)\n}\n"
  },
  {
    "path": "pkg/util/util.go",
    "content": "package util\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strings\"\n\n\tosYaml \"github.com/burmilla/os/config/yaml\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\nconst (\n\tdockerCgroupsFile = \"/proc/self/cgroup\"\n)\n\ntype AnyMap map[interface{}]interface{}\n\nfunc Contains(values []string, value string) bool {\n\tif len(value) == 0 {\n\t\treturn false\n\t}\n\n\tfor _, i := range values {\n\t\tif i == value {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\ntype ReturnsErr func() error\n\nfunc FileCopy(src, dest string) error {\n\tdata, err := ioutil.ReadFile(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn WriteFileAtomic(dest, data, 0666)\n}\n\nfunc HTTPDownloadToFile(url, dest string) error {\n\tres, err := http.Get(url)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer res.Body.Close()\n\tbody, err := ioutil.ReadAll(res.Body)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn WriteFileAtomic(dest, body, 0666)\n}\n\nfunc WriteFileAtomic(filename string, data []byte, perm os.FileMode) error {\n\tdir, file := path.Split(filename)\n\ttempFile, err := ioutil.TempFile(dir, fmt.Sprintf(\".%s\", file))\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer os.Remove(tempFile.Name())\n\n\tif _, err := tempFile.Write(data); err != nil {\n\t\treturn err\n\t}\n\tif err := tempFile.Close(); err != nil {\n\t\treturn err\n\t}\n\tif err := os.Chmod(tempFile.Name(), perm); err != nil {\n\t\treturn err\n\t}\n\n\treturn os.Rename(tempFile.Name(), filename)\n}\n\nfunc Convert(from, to interface{}) error {\n\tbytes, err := yaml.Marshal(from)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn yaml.Unmarshal(bytes, to)\n}\n\nfunc ConvertIgnoreOmitEmpty(from, to interface{}) error {\n\tvar buffer bytes.Buffer\n\n\tencoder := yaml.NewEncoder(&buffer)\n\tencoder.IgnoreOmitEmpty = true\n\n\tif err := encoder.Encode(from); err != nil {\n\t\treturn err\n\t}\n\n\tdecoder := yaml.NewDecoder(&buffer)\n\n\treturn decoder.Decode(to)\n}\n\nfunc Copy(d interface{}) interface{} {\n\tswitch d := d.(type) {\n\tcase map[interface{}]interface{}:\n\t\treturn MapCopy(d)\n\tcase []interface{}:\n\t\treturn SliceCopy(d)\n\tdefault:\n\t\treturn d\n\t}\n}\n\nfunc Merge(left, right map[interface{}]interface{}) map[interface{}]interface{} {\n\tresult := MapCopy(left)\n\n\tfor k, r := range right {\n\t\tif l, ok := left[k]; ok {\n\t\t\tswitch l := l.(type) {\n\t\t\tcase map[interface{}]interface{}:\n\t\t\t\tswitch r := r.(type) {\n\t\t\t\tcase map[interface{}]interface{}:\n\t\t\t\t\tresult[k] = Merge(l, r)\n\t\t\t\tdefault:\n\t\t\t\t\tresult[k] = r\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tresult[k] = r\n\t\t\t}\n\t\t} else {\n\t\t\tresult[k] = Copy(r)\n\t\t}\n\t}\n\n\treturn result\n}\n\nfunc MapCopy(data map[interface{}]interface{}) map[interface{}]interface{} {\n\tresult := map[interface{}]interface{}{}\n\tfor k, v := range data {\n\t\tresult[k] = Copy(v)\n\t}\n\treturn result\n}\n\nfunc SliceCopy(data []interface{}) []interface{} {\n\tresult := make([]interface{}, len(data), len(data))\n\tfor k, v := range data {\n\t\tresult[k] = Copy(v)\n\t}\n\treturn result\n}\n\nfunc RemoveString(slice []string, s string) []string {\n\tresult := []string{}\n\tfor _, elem := range slice {\n\t\tif elem != s {\n\t\t\tresult = append(result, elem)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc ToStrings(data []interface{}) []string {\n\tresult := make([]string, len(data), len(data))\n\tfor k, v := range data {\n\t\tresult[k] = v.(string)\n\t}\n\treturn result\n}\n\nfunc Map2KVPairs(m map[string]string) []string {\n\tr := make([]string, 0, len(m))\n\tfor k, v := range m {\n\t\tr = append(r, k+\"=\"+v)\n\t}\n\treturn r\n}\n\nfunc KVPairs2Map(kvs []string) map[string]string {\n\tr := make(map[string]string, len(kvs))\n\tfor _, kv := range kvs {\n\t\ts := strings.SplitN(kv, \"=\", 2)\n\t\tr[s[0]] = s[1]\n\t}\n\treturn r\n}\n\nfunc TrimSplitN(str, sep string, count int) []string {\n\tresult := []string{}\n\tfor _, part := range strings.SplitN(strings.TrimSpace(str), sep, count) {\n\t\tresult = append(result, strings.TrimSpace(part))\n\t}\n\n\treturn result\n}\n\nfunc TrimSplit(str, sep string) []string {\n\treturn TrimSplitN(str, sep, -1)\n}\n\nfunc GetCurrentContainerID() (string, error) {\n\tfile, err := os.Open(dockerCgroupsFile)\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfileReader := bufio.NewScanner(file)\n\tif !fileReader.Scan() {\n\t\treturn \"\", errors.New(\"Empty file /proc/self/cgroup\")\n\t}\n\tline := fileReader.Text()\n\tparts := strings.Split(line, \"/\")\n\n\tfor len(parts) != 3 {\n\t\tif !fileReader.Scan() {\n\t\t\treturn \"\", errors.New(\"Found no docker cgroups\")\n\t\t}\n\t\tline = fileReader.Text()\n\t\tparts = strings.Split(line, \"/\")\n\t\tif len(parts) == 3 {\n\t\t\tif strings.HasSuffix(parts[1], \"docker\") {\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\tparts = nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parts[len(parts)-1:][0], nil\n}\n\nfunc UnescapeKernelParams(s string) string {\n\ts = strings.Replace(s, `\\\"`, `\"`, -1)\n\ts = strings.Replace(s, `\\'`, `'`, -1)\n\treturn s\n}\n\nfunc ExistsAndExecutable(path string) bool {\n\tinfo, err := os.Stat(path)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tmode := info.Mode().Perm()\n\treturn mode&os.ModePerm != 0\n}\n\nfunc RunScript(path string, args ...string) error {\n\tif !ExistsAndExecutable(path) {\n\t\treturn nil\n\t}\n\n\tscript, err := os.Open(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmagic := make([]byte, 2)\n\tif _, err = script.Read(magic); err != nil {\n\t\treturn err\n\t}\n\n\tcmd := exec.Command(\"/bin/sh\", path)\n\tif string(magic) == \"#!\" {\n\t\tcmd = exec.Command(path, args...)\n\t}\n\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\n\treturn cmd.Run()\n}\n\nfunc RunCommandSequence(commandSequence []osYaml.StringandSlice) error {\n\tfor _, command := range commandSequence {\n\t\tvar cmd *exec.Cmd\n\t\tif command.StringValue != \"\" {\n\t\t\tcmd = exec.Command(\"sh\", \"-c\", command.StringValue)\n\t\t} else if len(command.SliceValue) > 0 {\n\t\t\tcmd = exec.Command(command.SliceValue[0], command.SliceValue[1:]...)\n\t\t} else {\n\t\t\tcontinue\n\t\t}\n\t\tcmd.Stdout = os.Stdout\n\t\tcmd.Stderr = os.Stderr\n\t\tif err := cmd.Run(); err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to run %s: %v\", command, err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc GenerateDindEngineScript(name string) error {\n\tif err := RemoveDindEngineScript(name); err != nil {\n\t\treturn err\n\t}\n\n\tbytes := []byte(\"/usr/bin/docker -H unix:///var/lib/m-user-docker/\" + name + \"/docker-\" + name + \".sock $@\")\n\n\terr := ioutil.WriteFile(\"/usr/bin/docker-\"+name, bytes, 755)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc RemoveDindEngineScript(name string) error {\n\tif _, err := os.Stat(\"/usr/bin/docker-\" + name); err == nil {\n\t\terr = os.Remove(\"/usr/bin/docker-\" + name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "pkg/util/util_linux.go",
    "content": "//go:build linux\n// +build linux\n\npackage util\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/SvenDowideit/cpuid\"\n\t\"github.com/docker/docker/pkg/mount\"\n)\n\nfunc mountProc() error {\n\tif _, err := os.Stat(\"/proc/self/mountinfo\"); os.IsNotExist(err) {\n\t\tif _, err := os.Stat(\"/proc\"); os.IsNotExist(err) {\n\t\t\tif err = os.Mkdir(\"/proc\", 0755); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif err := syscall.Mount(\"none\", \"/proc\", \"proc\", 0, \"\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc Mount(device, target, fsType, options string) error {\n\tif err := mountProc(); err != nil {\n\t\treturn nil\n\t}\n\n\tbindMount := false\n\tfor _, v := range strings.Split(options, \",\") {\n\t\tif v == \"bind\" {\n\t\t\tbindMount = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif bindMount {\n\t\tdeviceInfo, err := os.Stat(device)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmode := deviceInfo.Mode()\n\n\t\tswitch {\n\t\tcase mode.IsDir():\n\t\t\tif err := os.MkdirAll(target, 0755); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase mode.IsRegular():\n\t\t\terr := os.MkdirAll(filepath.Dir(target), 0755)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfile, err := os.OpenFile(target, os.O_CREATE, mode&os.ModePerm)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := file.Close(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tdefault:\n\t\t\treturn os.ErrInvalid\n\t\t}\n\t} else {\n\t\terr := os.MkdirAll(target, 0755)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif fsType == \"auto\" || fsType == \"\" {\n\t\t\tinferredType, err := GetFsType(device)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfsType = inferredType\n\t\t}\n\t}\n\n\treturn mount.Mount(device, target, fsType, options)\n}\n\nfunc Unmount(target string) error {\n\treturn mount.Unmount(target)\n}\n\nfunc Blkid(label string) (deviceName, deviceType string, err error) {\n\t// Not all blkid's have `blkid -L label (see busybox/alpine)\n\tcmd := exec.Command(\"blkid\")\n\tcmd.Stderr = os.Stderr\n\tout, err := cmd.Output()\n\tif err != nil {\n\t\treturn\n\t}\n\tr := bytes.NewReader(out)\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\tif !strings.Contains(line, `LABEL=\"`+label+`\"`) {\n\t\t\tcontinue\n\t\t}\n\t\td := strings.Split(line, \":\")\n\t\tdeviceName = d[0]\n\n\t\ts1 := strings.Split(line, `TYPE=\"`)\n\t\ts2 := strings.Split(s1[1], `\"`)\n\t\tdeviceType = s2[0]\n\t\treturn\n\t}\n\treturn\n}\n\nfunc BlkidType(deviceType string) (deviceNames []string, err error) {\n\t// Not all blkid's have `blkid -L label (see busybox/alpine)\n\tcmd := exec.Command(\"blkid\")\n\tcmd.Stderr = os.Stderr\n\tout, err := cmd.Output()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tr := bytes.NewReader(out)\n\ts := bufio.NewScanner(r)\n\tfor s.Scan() {\n\t\tline := s.Text()\n\t\tif !strings.Contains(line, `TYPE=\"`+deviceType+`\"`) {\n\t\t\tcontinue\n\t\t}\n\t\td := strings.Split(line, \":\")\n\t\tdeviceName := d[0]\n\t\tdeviceNames = append(deviceNames, deviceName)\n\t}\n\treturn deviceNames, nil\n}\n\n// GetHypervisor tries to detect if we're running in a VM, and returns a string for its type\nfunc GetHypervisor() string {\n\thv := cpuid.CPU.HypervisorName\n\tif hv == \"hyperv\" {\n\t\tdata, err := os.ReadFile(\"/proc/sys/kernel/osrelease\")\n\t\tif err != nil {\n\t\t\treturn hv\n\t\t}\n\t\tif strings.Contains(string(data), \"microsoft-standard-WSL2\") {\n\t\t\thv = \"wsl2\"\n\t\t}\n\t}\n\treturn hv\n}\n"
  },
  {
    "path": "pkg/util/util_test.go",
    "content": "package util\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype testCloudConfig struct {\n\tHostname string `yaml:\"hostname,omitempty\"`\n\tKey1     string `yaml:\"key1,omitempty\"`\n\tKey2     string `yaml:\"key2,omitempty\"`\n}\n\nfunc TestConvertMergesLeftIntoRight(t *testing.T) {\n\tassert := require.New(t)\n\tcc0 := testCloudConfig{Key1: \"k1v0\", Key2: \"k2v0\"}\n\tcc1 := map[interface{}]interface{}{\"key1\": \"k1value1\", \"hostname\": \"somehost\"}\n\tConvert(cc1, &cc0)\n\texpected := testCloudConfig{Hostname: \"somehost\", Key1: \"k1value1\", Key2: \"k2v0\"}\n\tassert.Equal(expected, cc0)\n}\n\nfunc NoTestCopyPointer(t *testing.T) {\n\tassert := require.New(t)\n\ttestCCpt := &testCloudConfig{}\n\tm0 := map[string]interface{}{\"a\": testCCpt, \"b\": testCCpt}\n\tm1 := Copy(m0).(map[string]interface{})\n\tm1[\"a\"].(*testCloudConfig).Hostname = \"somehost\"\n\tassert.Equal(\"\", m0[\"a\"].(*testCloudConfig).Hostname)\n\tassert.Equal(\"somehost\", m1[\"a\"].(*testCloudConfig).Hostname)\n\tassert.Equal(\"\", m1[\"b\"].(*testCloudConfig).Hostname)\n}\n\nfunc TestMapCopy(t *testing.T) {\n\tassert := require.New(t)\n\tm0 := map[interface{}]interface{}{\"a\": 1, \"b\": map[interface{}]interface{}{\"c\": 3}, \"d\": \"4\"}\n\tm1 := MapCopy(m0)\n\tassert.Equal(m0, m1)\n\n\tdelete(m0, \"a\")\n\tassert.Equal(len(m1), len(m0)+1)\n\n\tb0 := m0[\"b\"].(map[interface{}]interface{})\n\tb1 := m1[\"b\"].(map[interface{}]interface{})\n\tb1[\"e\"] = \"queer\"\n\n\tassert.Equal(len(b1), len(b0)+1)\n}\n\nfunc TestSliceCopy(t *testing.T) {\n\tassert := require.New(t)\n\tm0 := []interface{}{1, map[interface{}]interface{}{\"c\": 3}, \"4\"}\n\tm1 := SliceCopy(m0)\n\tassert.Equal(m0, m1)\n\n\tm0 = m0[1:]\n\tassert.Equal(len(m1), len(m0)+1)\n\n\tb0 := m0[0].(map[interface{}]interface{})\n\tb1 := m1[1].(map[interface{}]interface{})\n\tb1[\"e\"] = \"queer\"\n\n\tassert.Equal(len(b1), len(b0)+1)\n}\n\nfunc TestMerge(t *testing.T) {\n\tassert := require.New(t)\n\n\tm0 := map[interface{}]interface{}{\n\t\t\"a\": 1,\n\t\t\"b\": map[interface{}]interface{}{\"c\": 3},\n\t\t\"d\": \"4\",\n\t\t\"f\": []interface{}{1, 2, 3},\n\t}\n\tm1 := MapCopy(m0)\n\tm1[\"e\"] = \"added\"\n\tm1[\"d\"] = \"replaced\"\n\tm1[\"f\"] = []interface{}{2, 3, 4}\n\n\tdelete(m0, \"a\")\n\tb1 := m1[\"b\"].(map[interface{}]interface{})\n\tdelete(b1, \"c\")\n\texpected := map[interface{}]interface{}{\n\t\t\"a\": 1,\n\t\t\"b\": map[interface{}]interface{}{\"c\": 3},\n\t\t\"d\": \"replaced\",\n\t\t\"e\": \"added\",\n\t\t\"f\": []interface{}{2, 3, 4},\n\t}\n\tassert.Equal(expected, Merge(m0, m1))\n}\n\nfunc TestCmdLineStr(t *testing.T) {\n\tassert := require.New(t)\n\n\tcmdLine := `rancher.cloud_init.datasources=[\\'url:http://192.168.1.100/cloud-config\\']`\n\tassert.Equal(\"rancher.cloud_init.datasources=['url:http://192.168.1.100/cloud-config']\", UnescapeKernelParams(cmdLine))\n\n\tcmdLine = `rancher.cloud_init.datasources=[\\\"url:http://192.168.1.100/cloud-config\\\"]`\n\tassert.Equal(`rancher.cloud_init.datasources=[\"url:http://192.168.1.100/cloud-config\"]`, UnescapeKernelParams(cmdLine))\n}\n"
  },
  {
    "path": "pkg/util/versions/compare.go",
    "content": "package versions\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\n// compare compares two version strings\n// returns -1 if v1 < v2, 1 if v1 > v2, 0 otherwise.\nfunc compare(v1, v2 string) int {\n\tvar (\n\t\tcurrTab  = strings.Split(v1, \".\")\n\t\totherTab = strings.Split(v2, \".\")\n\t)\n\n\tmax := len(currTab)\n\tif len(otherTab) > max {\n\t\tmax = len(otherTab)\n\t}\n\tfor i := 0; i < max; i++ {\n\t\tvar currInt, otherInt int\n\n\t\tif len(currTab) > i {\n\t\t\tcurrInt, _ = strconv.Atoi(currTab[i])\n\t\t}\n\t\tif len(otherTab) > i {\n\t\t\totherInt, _ = strconv.Atoi(otherTab[i])\n\t\t}\n\t\tif currInt > otherInt {\n\t\t\treturn 1\n\t\t}\n\t\tif otherInt > currInt {\n\t\t\treturn -1\n\t\t}\n\t}\n\treturn 0\n}\n\n// LessThan checks if a version is less than another\nfunc LessThan(v, other string) bool {\n\treturn compare(v, other) == -1\n}\n\n// LessThanOrEqualTo checks if a version is less than or equal to another\nfunc LessThanOrEqualTo(v, other string) bool {\n\treturn compare(v, other) <= 0\n}\n\n// GreaterThan checks if a version is greater than another\nfunc GreaterThan(v, other string) bool {\n\treturn compare(v, other) == 1\n}\n\n// GreaterThanOrEqualTo checks if a version is greater than or equal to another\nfunc GreaterThanOrEqualTo(v, other string) bool {\n\treturn compare(v, other) >= 0\n}\n\n// Equal checks if a version is equal to another\nfunc Equal(v, other string) bool {\n\treturn compare(v, other) == 0\n}\n"
  },
  {
    "path": "pkg/util/versions/compare_test.go",
    "content": "package versions\n\nimport (\n\t\"testing\"\n)\n\nfunc assertVersion(t *testing.T, a, b string, result int) {\n\tif r := compare(a, b); r != result {\n\t\tt.Fatalf(\"Unexpected version comparison result. Found %d, expected %d\", r, result)\n\t}\n}\n\nfunc TestCompareVersion(t *testing.T) {\n\tassertVersion(t, \"1.12\", \"1.12\", 0)\n\tassertVersion(t, \"1.0.0\", \"1\", 0)\n\tassertVersion(t, \"1\", \"1.0.0\", 0)\n\tassertVersion(t, \"1.05.00.0156\", \"1.0.221.9289\", 1)\n\tassertVersion(t, \"1\", \"1.0.1\", -1)\n\tassertVersion(t, \"1.0.1\", \"1\", 1)\n\tassertVersion(t, \"1.0.1\", \"1.0.2\", -1)\n\tassertVersion(t, \"1.0.2\", \"1.0.3\", -1)\n\tassertVersion(t, \"1.0.3\", \"1.1\", -1)\n\tassertVersion(t, \"1.1\", \"1.1.1\", -1)\n\tassertVersion(t, \"1.1.1\", \"1.1.2\", -1)\n\tassertVersion(t, \"1.1.2\", \"1.2\", -1)\n}\n"
  },
  {
    "path": "scripts/build",
    "content": "#!/bin/bash\nset -e\n\nversion_gt() {\n    test \"$(printf '%s\\n' \"$@\" | sort -V | head -n 1)\" != \"$1\";\n}\n\n\nif [ \"$KERNEL_CHECK\" != \"0\" ]; then\n    echo \"Host Kernel: $(uname -r)\"\n    echo \"BurmillaOS Kernel: $KERNEL_VERSION\"\n\n#    if [ $(uname -r) != $KERNEL_VERSION ] && ! version_gt $(uname -r) $KERNEL_VERSION; then\n#        echo \"Your host kernel must be greater than BurmillaOS KERNEL_VERSION\"\n#        exit 1\n#    fi\nfi\n\necho -------------------------./build-target\n$(dirname $0)/build-target\necho -------------------------./build-host\n$(dirname $0)/build-host\n"
  },
  {
    "path": "scripts/build-host",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\nexport OUTPUT=bin/host_ros\n\nif [[ -e bin/ros && \"$HOST_ARCH\" = \"$ARCH\" ]]; then\n    echo Creating $OUTPUT\n    cp bin/ros $OUTPUT\nelse\n    GOARCH=${HOST_ARCH} TOOLCHAIN= ./scripts/build-target\nfi\n"
  },
  {
    "path": "scripts/build-images",
    "content": "#!/bin/bash\nset -ex\n\nexport ARCH=${ARCH:-\"amd64\"}\nBASE=images\n\nsource $(dirname $0)/version\ncd $(dirname $0)/..\n\nmkdir -p dist\nrm -f dist/images\ntouch dist/images\n\nfor i in $BASE/[0-9]*; do\n    name=\"os-$(echo ${i} | cut -f2 -d-)\"\n    tag=\"${OS_REPO}/${name}:${VERSION}${SUFFIX}\"\n    echo \"build-image: Building ${tag}\"\n    if [ -x ${i}/prebuild.sh ]; then\n        ${i}/prebuild.sh\n    fi\n\n    if dapper -d --build -f ${i}/Dockerfile -- -t burmilla/${name} ${i}; then\n        docker tag burmilla/${name} ${tag}\n        echo \"${tag}\" >> dist/images\n    elif [ \"$?\" != \"42\" ]; then\n        exit 1\n    else\n        echo \"WARN: Skipping ${tag}\"\n    fi\ndone\n\necho \"build-image: DONE\"\n"
  },
  {
    "path": "scripts/build-moby",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\ndocker build -t zombie/os - < scripts/moby/Dockerfile\n\n\ncd dist\nmkdir -p moby\ncd moby\nmoby build  -output kernel+initrd -output iso-bios ../../scripts/moby/rancheros.yml\n\n\n"
  },
  {
    "path": "scripts/build-target",
    "content": "#!/bin/bash\nset -ex\n\nros=\"$1\"\n\nsource $(dirname $0)/version\n\ncd $(dirname $0)/..\n\nif [ \"${!TOOLCHAIN}\" != \"\" ]; then\n  export CC=/usr/bin/${!TOOLCHAIN}-gcc\n  export CGO_ENABLED=1\nfi\n\nOUTPUT=${OUTPUT:-bin/ros}\necho Building $OUTPUT\nBUILDDATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')\n\nCONST=\"-X github.com/burmilla/os/config.Version=${VERSION} -X github.com/burmilla/os/config.OsRepo=${OS_REPO} -X github.com/burmilla/os/config.BuildDate='${BUILDDATE}'\"\ngo build -ldflags \"$CONST -extldflags -static -s -w\" -o ${OUTPUT}\n"
  },
  {
    "path": "scripts/checksums",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n\nCHECKSUM=\"dist/checksums.txt\"\nrm -f $CHECKSUM\n\nFILELIST=\"\nburmillaos-${VERSION}.iso\nburmillaos-${VERSION}-aliyun.vhd\nburmillaos-${VERSION}-cloudstack.img\nburmillaos-${VERSION}-digitalocean.img\nburmillaos-${VERSION}-openstack.img\nburmillaos-${VERSION}-gce.tar.gz\nburmillaos-${VERSION}-raspberry-pi64.zip\nburmillaos-${VERSION}-4glte.iso\nburmillaos-${VERSION}-hyperv.iso\nburmillaos-${VERSION}-proxmoxve.iso\nburmillaos-${VERSION}-vmware.iso\n\"\n\nrm -rf dist/checksums && mkdir -p dist/checksums\npushd dist/checksums\nfor file in $FILELIST; do\n    curl -sSL -o $file https://github.com/burmilla/os/releases/download/$VERSION/$file\n    for algo in sha256 md5; do\n        echo \"$algo: $(${algo}sum $file)\" >> ../../$CHECKSUM\n    done\ndone\npopd\n\necho \"github-release upload --user burmilla --repo os --tag ${VERSION} --file $CHECKSUM --name checksums.txt\"\n#echo \"gsutil cp $CHECKSUM gs://releases.rancher.com/os/latest/checksums.txt\"\n#echo \"gsutil cp $CHECKSUM gs://releases.rancher.com/os/$VERSION/checksums.txt\"\n"
  },
  {
    "path": "scripts/ci",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nif [ \"$SKIP_BUILD\" == \"false\" ]; then\n    echo BUILD\n    ./scripts/build\nfi\necho TEST\n./scripts/test\necho VALIDATE\n./scripts/validate\n"
  },
  {
    "path": "scripts/clean",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\nrm -rf build dist bin images/*/build state\nrm -rf ./scripts/images/openstack/dist\nrm -rf ./scripts/images/vmware/dist\n\ndocker rmi $(docker images --format \"{{.Repository}}:{{.Tag}}\" | grep -E \"rancher|openstack|kexec|os\") || true\ndocker rmi $(docker images --filter dangling=true -q) || true\ngit clean -dxf\n"
  },
  {
    "path": "scripts/copy-latest.sh",
    "content": "#!/bin/bash\ngsutil -m cp -r dist/artifacts/* gs://releases.rancher.com/os/latest\n"
  },
  {
    "path": "scripts/copy-release.sh",
    "content": "#!/bin/bash\n. ./scripts/version\ngsutil -m cp -r dist/artifacts/* gs://releases.rancher.com/os/${VERSION}\n"
  },
  {
    "path": "scripts/create-installed",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/run-common\n\nif [ ! -e ${INITRD} ]; then\n    cp bin/ros ${INITRD_SRC}/usr/bin/ros\n    ./scripts/hash-initrd\n    pushd ${INITRD_SRC} >/dev/null\n    find . | cpio -H newc -o | gzip -1 > ${INITRD}\n    popd >/dev/null\nfi\n\nmkdir -p {dist,build/openstack/latest}\n\ncat > build/openstack/latest/user_data << EOF\n#!/bin/bash\nset -e\n\ntrap \"poweroff\" EXIT\n\nsleep 5\n\ntouch log\nopenvt -s -- tail -f log &\n\nmount -t 9p -o trans=virtio,version=9p2000.L config-2 /mnt\n\n# use the install tarball in the iso\nros install -d /dev/vda -f --no-reboot --append \"console=ttyS0 rancher.autologin=ttyS0\" >> /mnt/log 2>&1\n\ntouch /mnt/success\nEOF\n\nrm -f build/{success,hd.img}\nqemu-img create -f qcow2 build/hd.img 8G\nqemu-system-${QEMUARCH} -serial mon:stdio \\\n    -enable-kvm \\\n    -drive if=virtio,file=build/hd.img \\\n    -boot d -cdrom ./dist/artifacts/burmillaos.iso \\\n    -m 2048 \\\n    -smp 1 \\\n    -nographic \\\n    -display none \\\n    -fsdev local,id=conf,security_model=none,path=$(pwd)/build \\\n    -device virtio-9p-pci,fsdev=conf,mount_tag=config-2 \\\n    -device virtio-rng-pci\n\n[ -f build/success ]\n\nmkdir -p state\ncp build/hd.img state/hd.img\necho \"------------------------ RancherOS installed to hd.img.\"\n"
  },
  {
    "path": "scripts/default",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)\n\n./build\n./prepare\n./package\n"
  },
  {
    "path": "scripts/dev",
    "content": "#!/bin/bash\n# help: For development, creates iso, kernel, initrd gzip compressed\nset -e\n\ncd $(dirname $0)\n\necho ------------------------ ./build\n./build\necho ------------------------ ./prepare\n./prepare\necho ------------------------ ./package\nROOTFS=0 ./package\n"
  },
  {
    "path": "scripts/entry",
    "content": "#!/bin/bash\nset -e\n\nmkdir -p bin dist build/initrd\nif [ -e ./scripts/$1 ]; then\n    ./scripts/\"$@\"\nelse\n    \"$@\"\nfi\n\nEXIT=$?\n\nchown -R $DAPPER_UID:$DAPPER_GID .\n\nexit $EXIT\n"
  },
  {
    "path": "scripts/global.cfg",
    "content": "APPEND rancher.autologin=tty1 rancher.autologin=ttyS0 rancher.autologin=ttyS1 console=tty1 console=ttyS0 console=ttyS1 printk.devkmsg=on transparent_hugepage=madvise iommu=pt intel_iommu=off scsi_mod.use_blk_mq=1 apparmor=1 security=apparmor ${APPEND}\n"
  },
  {
    "path": "scripts/hash-initrd",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/../build/initrd\n\nmd5sum $(find -type f | sort -u ) | md5sum - | awk '{print $1}' > .id\n"
  },
  {
    "path": "scripts/help",
    "content": "#!/bin/bash -e\n\nis_not_a_valid() {\n   local target=$1\n   [ ! -x \"$target\" ] || [ ! -f \"$target\" ]\n}\n\nget_help_statement_for() {\n   local target=$1\n   grep '^# help:' $target | sed 's/# help://'\n}\n\ncd $(dirname $0)\necho \"Targets:\"\n\nfor target in *; do\n   is_not_a_valid $target && continue\n   help_statement=$(get_help_statement_for $target)\n   if [ -n \"$help_statement\" ]; then\n      echo -e \"   $target: $help_statement\"\n   fi\ndone\n\n"
  },
  {
    "path": "scripts/hosting/burmillaos.ipxe",
    "content": "#!ipxe\ndhcp\nset base-url https://github.com/burmilla/os/releases/download/<version>/\nkernel ${base-url}/vmlinuz printk.devkmsg=on rancher.debug=true rancher.state.dev=LABEL=rancher_STATE rancher.state.wait console=tty0 rancher.state.mdadm_scan console=ttyS1,115200n8 rancher.autologin=ttyS1 rancher.network.interfaces.eth*.dhcp=true rancher.cloud_init.datasources=[configdrive,ec2,gce,packet,digitalocean]\ninitrd ${base-url}/initrd\nboot\n"
  },
  {
    "path": "scripts/hosting/digitalocean/cloud-config.yml",
    "content": "#!/bin/bash\n\n# get the kernel and initrd\nURL_BASE=\"https://releases.rancher.com/os/latest\"\nVMLINUX=\"vmlinuz\"\nINITRD=\"initrd\"\n\ncd /tmp\ncurl -O -L \"${URL_BASE}/${VMLINUX}\"\ncurl -O -L \"${URL_BASE}/${INITRD}\"\n\n# setup the host ready for kexec\nPUBLIC_IPV4=$(wget -qO- http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)\n\nif [ \"$(ros config get rancher.environment.installer)\" == \"true\" ] && ros --version &>/dev/null; then\n\tcat > cloud-config.yml <<EOF\n#cloud-config\nrancher:\n  network:\n    interfaces:\n      eth0:\n        address: $(ip -4 addr show dev eth0 | awk \"/${PUBLIC_IPV4}/ {print \\$2}\")\n        gateway: $(ip -o route get 1 | awk '{print $3}')\n        dhcp: false\nssh_authorized_keys:\nEOF\n\twhile read -r KEY; do\n\t\techo \"  - ${KEY}\" >> cloud-config.yml\n\tdone < <(wget -qO- http://169.254.169.254/metadata/v1/public-keys; echo)\n\tyes | ros install -c cloud-config.yml -d /dev/vda\n\texit 0\nfi\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update && apt-get install -y kexec-tools ipcalc\n\nPUBLIC_IPV4_NETMASK=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/netmask)\nPUBLIC_IPV4_CIDR=$(ipcalc ${PUBLIC_IPV4}/${PUBLIC_IPV4_NETMASK} | awk '/^Network/ {n=split($2, i, \"/\"); print i[2]};')\nPUBLIC_IPV4_GATEWAY=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/gateway)\n\n\nkexec --initrd=${INITRD} -l ${VMLINUX} -f --command-line=\"quiet rancher.network.interfaces.eth0.address=${PUBLIC_IPV4}/${PUBLIC_IPV4_CIDR} rancher.network.interfaces.eth0.gateway=${PUBLIC_IPV4_GATEWAY} rancher.network.interfaces.eth0.dhcp=false rancher.cloud_init.datasources=[digitalocean] rancher.environment.installer=true\"\n"
  },
  {
    "path": "scripts/hosting/digitalocean/fedora-symbiote.yml",
    "content": "#!/bin/bash\n\n#\n# This can be invoked either from the commandline of a fedora 25 vm, or as user-data\n# either way, the part inside the \"if\" needs to be run by hand from the console atmA\n#\n# The most experimental way, is to use the ./scripts/hosting/digitalocean/host.sh script to modify this one for the current build\n# push the burmilla/os:sha image to hub, and then use\n#   doctl.exe compute droplet create --enable-ipv6 --enable-private-networking --image fedora-25-x64 --region sfo1 --size 2gb --ssh-keys 6956055 --ssh-keys 7170404 --user-data-file digitalocean.yml sven\n#  where:\n#$ cat digitalocean.yml\n##include\n#http://<IPaddress>:2115/digitalocean.sh\n#\n#\n\nROS_VERSION=\"v1.0.1-rc1\"\nURL_BASE=\"https://github.com/burmilla/os/releases/download/${ROS_VERSION}\"\nVMLINUX=\"vmlinuz-4.9.22-rancher\"\nINITRD=\"initrd\n\ncd /tmp\necho \"downloading ${URL_BASE}/${VMLINUX}\" > /dev/kmsg\ncurl -O -L \"${URL_BASE}/${VMLINUX}\"\necho \"downloading ${URL_BASE}/${INITRD}\" > /dev/kmsg\ncurl -O -L \"${URL_BASE}/${INITRD}\"\n\nif type ros 2>/dev/null; then\n\tif [ \"$(ros config get rancher.environment.installer)\" == \"true\" ] && ros --version &>/dev/null; then\n\t\t# This stuff isn't called automatically atm, need to ru manually\n\t\t#FIXME removing the grub dir stops `ros os upgrade` from re-installing syslinux, which seems to cause havoc\n\t\tsystem-docker run -dit --privileged --name stuff alpine top\n\t\tsystem-docker exec -it stuff mount /dev/vda1 /mnt\n\t\tsystem-docker exec -it stuff rm -rf /mnt/boot/grub /mnt/boot/*fc25* /mnt/var /mnt/usr /mnt/dev /mnt/proc /mnt/sys /mnt/tmp\n\t\tsystem-docker exec -it stuff umount /mnt\n\t\tsystem-docker rm -f stuff\n\n\n\t\tros config set rancher.debug true\n\t\tros install -f --no-reboot \\\n\t\t         -d /dev/vda -p /dev/vda1 \\\n        \t        --statedir ros -t noformat \\\n               \t --append \"rancher.state.dev=LABEL=DOROOT rancher.state.directory=ros rancher.debug=true printk.devkmsg=on notsc clocksource=kvm-clock rancher.network.interfaces.eth0.ipv4ll rancher.cloud_init.datasources=[digitalocean] rancher.autologin=tty1 rancher.autologin=ttyS0\"\n\t        exit 0\n\tfi\nfi\n\necho \"installing kexec\" > /dev/kmsg\n#apt-get update && apt-get install -y kexec-tools ipcalc\n#dnf update\ndnf install -y kexec-tools ipcalc\n\necho \"running kexec\" > /dev/kmsg\n\nkexec --initrd=${INITRD} -l ${VMLINUX} -f --command-line=\"rancher.debug=true printk.devkmsg=on notsc clocksource=kvm-clock rancher.network.interfaces.eth0.ipv4ll rancher.cloud_init.datasources=[digitalocean] rancher.autologin=tty1 rancher.autologin=ttyS0 rancher.environment.installer=true\"\n"
  },
  {
    "path": "scripts/hosting/digitalocean/host.sh",
    "content": "#!/bin/bash\n\n#\n# This script will make a shell script that can be used as a cloud-init style user data script\n# or run as root from a debian/ubuntu DigitalOcean VM to replace that distribution with\n# RancherOS\n#\n# Its intended to be used for development, but can easily be modified to be more generally\n# useful - make a Pull Request :)\n# \n# Note: this script will run caddy in your os/dist/artifacts/ directory, so don't leave it\n# running unsupervised.\n\nDIST=\"../../../dist/artifacts\"\ncommand -v caddy >/dev/null 2>&1 || { echo >&2 \"I require caddy but it's not installed, see https://github.com/mholt/caddy#quick-start . Aborting.\"; exit 1; }\n\nif [[ -e \"dist/artifacts\" ]]; then\n    cd scripts/hosting/digitalocean\nfi\n\nif [[ ! -e \"$DIST\" ]]; then\n    echo \"Need to 'make release' so that there are files to serve. Aborting.\"\n    exit 1\nfi\n\nsource ${DIST}/../../scripts/version\nVMLINUX=$(ls -1 ${DIST}/ | grep \"^vmlinuz-\" | head -n1)\nINITRD=\"initrd-${VERSION}\"\n\nIP=$(curl ipinfo.io/ip)\nPORT=2115\n\n#SOURCECONFIG=\"cloud-config.yml\"\nSOURCECONFIG=\"fedora-symbiote.yml\"\nCLOUDCONFIG=\"digitalocean.sh\"\n\ncat ${SOURCECONFIG} \\\n    | sed \"s|^URL_BASE.*$|URL_BASE=http://${IP}:${PORT}|g\" \\\n    | sed \"s|^VMLINUX.*$|VMLINUX=${VMLINUX}|g\" \\\n    | sed \"s|^INITRD.*$|INITRD=${INITRD}|g\" \\\n    > ${DIST}/${CLOUDCONFIG}\n\necho \"Hosting a cloud-config script at http://${IP}:${PORT}/${CLOUDCONFIG}\"\necho \"Usage:\"\necho\necho \"#include\"\necho \"http://${IP}:${PORT}/${CLOUDCONFIG}\"\necho\necho\n\ncd ${DIST}\ncaddy -log stdout -port ${PORT}\n"
  },
  {
    "path": "scripts/hosting/packet/packet.sh",
    "content": "#!/bin/bash\nset -ex\n\nINSTALLER_IMAGE=burmilla/os:v0.7.1\n\nros config set rancher.network.interfaces.eth1.dhcp false\nif grep eth2 /proc/net/dev; then\n    ros config set rancher.network.interfaces.eth0.dhcp false\n    ros config set rancher.network.interfaces.eth2.dhcp true\n    system-docker restart network\nfi\n\nfor ((i=0;i<30;i++)); do\n    if system-docker pull ${INSTALLER_IMAGE}; then\n        break\n    fi\n    sleep 1\ndone\n\nTINKERBELL_URL=$(cat /proc/cmdline | sed -e 's/^.*tinkerbell=//' -e 's/ .*$//')/phone-home\n\ntinkerbell_post()\n{\n    system-docker run burmilla/curl -X POST -H \"Content-Type: application/json\" -d \"{\\\"type\\\":\\\"provisioning.$1\\\",\\\"body\\\":\\\"$2\\\"}\" ${TINKERBELL_URL}\n}\n\ntinkerbell_post 104 \"Connected to magic install system\"\n\nDEV_PREFIX=/dev/sd\nif [ -e /dev/vda ]; then\n    DEV_PREFIX=/dev/vd\nfi\n\nBOOT=${DEV_PREFIX}a1\nBOOT_TYPE=83\nSWAP=${DEV_PREFIX}a5\nSWAP_TYPE=82\nOEM=${DEV_PREFIX}a6\nOEM_TYPE=83\nROOT=${DEV_PREFIX}a7\nROOT_TYPE=83\nRAID=false\n\nwait_for_dev()\n{\n    for DEV; do\n        for ((i=0;i<10;i++)); do\n            if [ ! -e $DEV ]; then\n                partprobe || true\n                sleep 1\n            else\n                break\n            fi\n        done\n    done\n}\n\nmodprobe md || true\n\ndd if=/dev/zero of=${DEV_PREFIX}a bs=1M count=1\n\nif [ -e ${DEV_PREFIX}b ]; then\n    dd if=/dev/zero of=${DEV_PREFIX}b bs=1M count=1\n    RAID=true\n    BOOT=/dev/md1\n    BOOT_TYPE=fd\n    SWAP=/dev/md5\n    SWAP_TYPE=fd\n    OEM=/dev/md6\n    OEM_TYPE=fd\n    ROOT=/dev/md7\n    ROOT_TYPE=fd\nfi\n\n\n# Partition BOOT\necho -e \"n\\np\\n1\\n\\n+2G\\nt\\n${BOOT_TYPE}\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n# Partition Extended\necho -e \"n\\ne\\n\\n\\n\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n# Partition SWAP\necho -e \"n\\nl\\n\\n+2G\\n\\nt\\n5\\n${SWAP_TYPE}\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n# Partition OEM\necho -e \"n\\nl\\n\\n+100M\\n\\nt\\n6\\n${OEM_TYPE}\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n# Partition ROOT\necho -e \"n\\nl\\n\\n\\n\\nt\\n7\\n${ROOT_TYPE}\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n# Make boot active\necho -e \"a\\n1\\nw\" | fdisk ${DEV_PREFIX}a || true\npartprobe || true\n\nwait_for_dev ${DEV_PREFIX}a1 ${DEV_PREFIX}a5 ${DEV_PREFIX}a6 ${DEV_PREFIX}a7\n\nif [ \"$RAID\" = \"true\" ]; then\n    sfdisk --dump ${DEV_PREFIX}a | sfdisk --no-reread ${DEV_PREFIX}b\n\n    wait_for_dev ${DEV_PREFIX}b1 ${DEV_PREFIX}b5 ${DEV_PREFIX}b6 ${DEV_PREFIX}b7 ${DEV_PREFIX}a1 ${DEV_PREFIX}a5 ${DEV_PREFIX}a6 ${DEV_PREFIX}a7\n\n    mdadm --create $BOOT --level=1 --metadata=1.0 --raid-devices=2 ${DEV_PREFIX}a1 ${DEV_PREFIX}b1\n    mdadm --create $SWAP --level=1 --metadata=1.2 --raid-devices=2 ${DEV_PREFIX}a5 ${DEV_PREFIX}b5\n    mdadm --create $OEM --level=1 --metadata=1.2 --raid-devices=2 ${DEV_PREFIX}a6 ${DEV_PREFIX}b6\n    mdadm --create $ROOT --level=1 --metadata=1.2 --raid-devices=2 ${DEV_PREFIX}a7 ${DEV_PREFIX}b7\nfi\n\nmkswap -L RANCHER_SWAP $SWAP\nsystem-docker run --privileged --entrypoint /bin/bash ${INSTALLER_IMAGE} -c \"mkfs.ext4 -L RANCHER_BOOT $BOOT\"\nsystem-docker run --privileged --entrypoint /bin/bash ${INSTALLER_IMAGE} -c \"mkfs.ext4 -L RANCHER_STATE $ROOT\"\nsystem-docker run --privileged --entrypoint /bin/bash ${INSTALLER_IMAGE} -c \"mkfs.ext4 -L RANCHER_OEM $OEM\"\n\ntinkerbell_post 105 \"Server partitions created\"\n\nmkdir -p /mnt/oem\nmount $(ros dev LABEL=RANCHER_OEM) /mnt/oem\ncat > /mnt/oem/oem-config.yml << EOF\n#cloud-config\nmounts:\n- [ LABEL=RANCHER_SWAP, \"\", swap, \"\" ]\nEOF\numount /mnt/oem\n\ntinkerbell_post 106 \"OEM drive configured\"\n\nMETADATA=$(system-docker run burmilla/curl -sL https://metadata.packet.net/metadata)\neval $(echo ${METADATA} | jq -r '.network.addresses[] | select(.address_family == 4 and .public) | \"ADDRESS=\\(.address)/\\(.cidr)\\nGATEWAY=\\(.gateway)\"')\neval $(echo ${METADATA} | jq -r '.network.interfaces[0] | \"MAC=\\(.mac)\"')\nNETWORK_ARGS=\"rancher.network.interfaces.bond0.address=$ADDRESS rancher.network.interfaces.bond0.gateway=$GATEWAY rancher.network.interfaces.mac:${MAC}.bond=bond0\"\n\ntinkerbell_post 107 \"Network interface configuration fetched from metadata\"\n\nCOMMON_ARGS=\"console=ttyS1,115200n8 rancher.autologin=ttyS1 rancher.cloud_init.datasources=[packet] ${NETWORK_ARGS}\"\nif [ \"$RAID\" = \"true\" ]; then\n    ros install -f -t raid -i ${INSTALLER_IMAGE} -d ${DEV_PREFIX}a -a \"rancher.state.mdadm_scan ${COMMON_ARGS}\" --no-reboot\nelse\n    ros install -f -t noformat -i ${INSTALLER_IMAGE} -d ${DEV_PREFIX}a -a \"${COMMON_ARGS}\" --no-reboot\nfi\n\ntinkerbell_post 109 \"Installation finished, rebooting server\"\nreboot\n"
  },
  {
    "path": "scripts/hosting/packet/test.expect",
    "content": "#!/usr/bin/expect -f\n\n# set Variables\n# /home/sven/.docker/machine/machines/sven-test/id_rsa\nset sshkey [lrange $argv 0 0]\n# 718feb0e-1517-4f92-a6fa-2ee089cf12e4@sos.ewr1.packet.net\nset sshurl [lrange $argv 1 1] \n\nset username [lrange $argv 2 2] \nset password [lrange $argv 3 3]\nset command \"\"\nappend command [lrange $argv 4 end]\n\n\nset timeout -1\n\nproc runcmd { username password cmd } {\n    send_user \"<< username: $username\"\n    send_user \"<< password: $password\"\n    send_user \"<< cmd: $cmd\"\n\n    set done 0;\n    while {$done == 0} {\n        expect  {\n            \"*?login:\" {\n                send -- \"$username\\r\"\n            }\n            \"*?assword:\" {\n                send -- \"$password\\r\"\n                #send -- \"\\r\"\n            }\n            \"*?:~#\" {\n                send -- \"$cmd\\r\"\n                    set done 1\n            }\n            \"*?Reached target Shutdown.\" {\n                set done 1\n            }\n        }\n    }\n}\n\n\nspawn ssh -F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none -i $sshkey $sshurl\nmatch_max 100000\nsend -- \"\\r\"\n\nset running [ runcmd $username $password $command ]\n\nexpect {\n    \"*? (yes/no)?\" {\n        send -- \"no\\r\"\n        expect \"# \"\n    }\n    \"# \" {\n    }\n    \"*?Restarting system\" {\n    }\n    \"*?kexec_core: Starting new kernel\" {\n    }\n}\n\nsend_user \"<< DONE expect\"\nsend_user \"<<\"\n"
  },
  {
    "path": "scripts/hosting/packet/test.sh",
    "content": "#!/bin/bash\n\nset -ex\n\n# https://www.packet.net/help/kb/how-to-provision-a-host-with-docker-machine/\n\n# needs both docker-machine and the docker-machine packet.net driver\n# https://github.com/packethost/docker-machine-driver-packet/releases\n\nif [ \"${PACKET_API_KEY}\" == \"\" ]; then\n    echo \"need to set the PACKET_API_KEY\"\n    exit\nfi\nif [ \"${PACKET_PROJECT_ID}\" == \"\" ]; then\n    echo \"need to set the PACKET_PROJECT_ID\"\n    exit\nfi\n\n# facilities\n#   New York Metro (EWR1) </span>\n#   Silicon Valley (SJC1) </span>\n#   Amsterdam, NL (AMS1) </span>\n#   Tokyo, JP (NRT1) </span>\nFACILITY=sjc1\n\n# plan - the server types\nPLAN=baremetal_0\n\n# randomizing the hostname makes debugging things harder atm\n#HOSTHASH=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1)\nHOST=sven-${FACILITY}-${PLAN/_/-}\n\nif ! docker-machine inspect $HOST ; then\n    docker-machine create -d packet \\\n        --packet-api-key=${PACKET_API_KEY} --packet-project-id=${PACKET_PROJECT_ID} \\\n        --packet-facility-code ${FACILITY} \\\n        --packet-plan ${PLAN} \\\n        --packet-os=ubuntu_16_04 \\\n        ${HOST}\nfi\n\nSSH=\"docker-machine ssh $HOST\"\nSCP=\"docker-machine scp\"\n\necho \"- setup..\"\n\n#Spin up an Ubuntu 16.04 Packet instance. There are two different categories: Type-0 and the other types. We'll need to test one from each category.\n#SSH into the instance and change the root password.\n\nUSER=\"root\"\nPASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)\n\necho \"echo '$USER:$PASS' | chpasswd\"\necho \"echo '$USER:$PASS' | chpasswd\" > /tmp/pass\nchmod 755 /tmp/pass\n$SCP /tmp/pass $HOST:~/pass\n$SSH ./pass\n\n#$SSH echo \"root:$HOST\" | chpasswd\n\n#Download the initrd and vmlinuz for the RC.\n$SCP ./scripts/hosting/packet/packet.sh $HOST:~/\n\n#$SCP ./dist/artifacts/initrd $HOST:~/\n#$SCP ./dist/artifacts/vmlinuz-4.9-rancher2 $HOST:~/vmlinuz\n\n$SSH wget -c https://github.com/burmilla/os/releases/download/v0.7.1/vmlinuz\n$SSH wget -c https://github.com/burmilla/os/releases/download/v0.7.1/initrd\n\n#Install the kexec-tools package.\n\n$SSH sudo apt-get update \n\n#SSH into the SOS shell for the instance. There's a button labelled \"Console\" on the page for the instance. If you click on that it'll give you an SSH command to paste into your terminal.\n\nFACILITY=$(docker-machine inspect ${HOST} | grep Facility | sed 's/.*Facility\": \"\\(.*\\)\".*/\\1/')\nDEVICEID=$(docker-machine inspect ${HOST} | grep DeviceID | sed 's/.*DeviceID\": \"\\(.*\\)\".*/\\1/')\nSSHKEYPATH=$(docker-machine inspect ${HOST} | grep SSHKeyPath | sed 's/.*SSHKeyPath\": \"\\(.*\\)\".*/\\1/')\n\nSSHSOS=\"./scripts/hosting/packet/test.expect $SSHKEYPATH $DEVICEID@sos.$FACILITY.packet.net $USER $PASS\"\n\necho \"--------------------------------------------------------------------------\"\n$SSHSOS uname -a \n\n#$SSH DEBIAN_FRONTEND=noninteractive sudo apt-get -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" install -yqq kexec-tools\n#USING the SOSSSH expect script to get past the \"Should kexec-tools handle reboots? [yes/no]\"\n$SSHSOS sudo DEBIAN_FRONTEND=noninteractive apt-get install -yqq kexec-tools\n\n\n$SSHSOS reboot\n\necho \"- kexecing\"\n\n$SSHSOS sudo kexec -f -l vmlinuz --initrd=initrd --append \"rancher.password=${PASS} tinkerbell=http://bdba494d.ngrok.io console=ttyS1,115200n8 rancher.network.interfaces.eth0.dhcp=true rancher.network.interfaces.eth2.dhcp=true\"\n\n#The server will restart and then you should be running RancherOS from memory.\n$SSHSOS reboot\n\n## need to change the user for the exepct script\nUSER=\"rancher\"\nSSHSOS=\"./scripts/hosting/packet/test.expect $SSHKEYPATH $DEVICEID@sos.$FACILITY.packet.net $USER $PASS\"\n\necho \"--------------------------------------------------------------------------\"\n$SSHSOS uname -a \n\n# need to retrieve the packet.sh, vmlinuz and initrd from the disk\n# TODO: this makes sense on type-0 - dunno about raid\n# TODO: don't use dev, use LABEL - if&when we switch to running this on RancherOS\n$SSHSOS sudo mount /dev/sda3 /mnt\n$SSHSOS cp /mnt/root/* .\nexit\n\n#Clear the disk(s).\n\n$SSHSOS sudo dd if=/dev/zero of=/dev/sda count=4 bs=1024\n\n#If you're not running a type-0, also run the following command: \nif [ \"$PLAN\" != \"baremetal_0\" ]; then\n    $SSHSOS sudo dd if=/dev/zero of=/dev/sdb count=4 bs=1024\nfi\n\n#Both of these will hang after you run them. Just let them run for a second or two and then hit ctrl+c.\n#Download and run the Packet install script.\n\n$SSHSOS bash ./packet.sh\n\n#Reboot and then RancherOS should be fully installed.\n#$SSHSOS reboot\n\n#$SSH uname -a \n"
  },
  {
    "path": "scripts/images/raspberry-pi-hypriot64/.dockerignore",
    "content": "dist\n"
  },
  {
    "path": "scripts/images/raspberry-pi-hypriot64/.gitignore",
    "content": "dist\nrootfs_arm64.tar.gz\n/Dockerfile.dapper*\n!/Dockerfile.dapper\n"
  },
  {
    "path": "scripts/images/raspberry-pi-hypriot64/README.md",
    "content": "RaspberryPi 3 Image (ARMv8 | AARCH64 | ARM64)\n=============================================\n\nBuild by running `dapper` in this folder and the build will produce `./dist/rancheros-raspberry-pi64.zip`.\n\nThis image is compatible with the Raspberry Pi 3, since it is the only ARMv8 device in the Raspberry Pi family at the moment.\n\nBuild Requirements\n==================\n\nThis build uses local loopback devices and thus requires to run as a privileged container.  So please keep the setting `ENV DAPPER_RUN_ARGS --privileged` from `Dockerfile.dapper` for now.  The build is running quite fast and has been tested on OS X with boot2docker.\n"
  },
  {
    "path": "scripts/images/raspberry-pi-hypriot64/scripts/build.sh",
    "content": "#!/bin/bash\nset -e -x\n\ncd $(dirname $0)/..\n\n# create build directory for assembling our image filesystem\nmkdir -p build/{boot,root,basefs} dist\n\ncp assets/*.tar.gz build/\n\n#---build SD card image---\n\n# size of root and boot partion (in MByte)\nIMAGE_TOTAL_SIZE=2048\nBOOT_PARTITION_START=2048\nBOOT_PARTITION_SIZE=50\n#---don't change here---\nBOOT_PARTITION_OFFSET=\"$((BOOT_PARTITION_START*512))\"\nBOOT_PARTITION_BYTES=\"$((BOOT_PARTITION_SIZE*1024*1024))\"\nBOOT_PARTITION_SECTORS=\"$((BOOT_PARTITION_SIZE*1024*2))\"\nROOT_PARTITION_START=\"$((BOOT_PARTITION_START+BOOT_PARTITION_SECTORS+1))\"\nROOT_PARTITION_OFFSET=\"$((ROOT_PARTITION_START*512))\"\n#---don't change here---\n\n# create image file with two partitions (FAT32, EXT4)\ndd if=/dev/zero of=build/run.img bs=1MiB count=$IMAGE_TOTAL_SIZE\necho -e \"o\\nn\\np\\n1\\n${BOOT_PARTITION_START}\\n+${BOOT_PARTITION_SECTORS}\\nt\\nc\\nn\\np\\n2\\n${ROOT_PARTITION_START}\\n\\nw\\n\" | fdisk build/run.img\nfdisk -l build/run.img\nls -al build/run.img\n\n# partition #1 - Type= c W95 FAT32 (LBA)\nlosetup\nPART1_DEVICE=$(losetup -f)\nlosetup -d ${PART1_DEVICE} || /bin/true\nlosetup --offset $BOOT_PARTITION_OFFSET --sizelimit $BOOT_PARTITION_BYTES ${PART1_DEVICE} build/run.img\nmkfs.vfat -n RancherOS ${PART1_DEVICE}\n\n# partition #2 - Type=83 Linux\nPART2_DEVICE=$(losetup -f)\nlosetup -d ${PART2_DEVICE} || /bin/true\nlosetup --offset $ROOT_PARTITION_OFFSET ${PART2_DEVICE} build/run.img\nmkfs.ext4 -O ^has_journal -b 4096 -L rootfs ${PART2_DEVICE}\n\n# detach loop devices\nlosetup -d ${PART1_DEVICE}\nlosetup -d ${PART2_DEVICE}\n\n# mount partitions as loopback devices\nmount -t ext4 -o loop=${PART2_DEVICE},offset=$ROOT_PARTITION_OFFSET build/run.img build/root\nrm -rf build/root/lost+found\nmkdir -p build/root/boot\nmount -t vfat -o loop=${PART1_DEVICE},offset=$BOOT_PARTITION_OFFSET build/run.img build/root/boot\nrm -rf build/root/boot/lost+found\necho \"RancherOS: boot partition\" > build/root/boot/boot.txt\necho \"RancherOS: root partition\" > build/root/root.txt\n\n# unpack and cleanup the basefs\n#- doing this on a local folder keeps our resulting image clean (no dirty blocks from a delete)\nmkdir -p build/basefs\ntar -C build/basefs -zxvf build/kernel.tar.gz\ntar -C build/basefs -zxvf build/rpi-bootloader.tar.gz\n\n# populate kernel, bootloader and RancherOS rootfs\ncp -R build/basefs/* build/root\ntar -xf assets/rootfs_arm64.tar.gz -C build/root\necho \"+dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 cgroup-enable=memory swapaccount=1 elevator=deadline rootwait console=ttyAMA0,115200 console=tty0 rancher.password=rancher rancher.autologin=ttyAMA0 rw init=/init\" > build/root/boot/cmdline.txt\n# enable serial console mode for rpi3\necho \"enable_uart=1\" > build/root/boot/config.txt\n\n## wireless support\nmkdir -p build/root/lib/firmware/brcm\npushd build/root/lib/firmware/brcm\nBRCM_URL_BASE=https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/brcm/\ncurl -sL -o brcmfmac43430-sdio.txt ${BRCM_URL_BASE}/brcmfmac43430-sdio.raspberrypi,3-model-b.txt\ncurl -sL -o brcmfmac43430-sdio.bin ${BRCM_URL_BASE}/brcmfmac43430-sdio.bin\ncurl -sL -o brcmfmac43455-sdio.bin ${BRCM_URL_BASE}/brcmfmac43455-sdio.bin\ncurl -sL -o brcmfmac43455-sdio.txt ${BRCM_URL_BASE}/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt\npopd\n\n# TODO: we need to remove these lines\n# mitigate this issue: https://github.com/rancher/os/issues/2674\npushd build/root/usr/share/ros/\nsed -i 's/io.docker.compose.rebuild: always/io.docker.compose.rebuild\\: \"false\"/g' os-config.yml\npopd\n\n# show details\ntree -a -L 4 build/root\ndf -h\n\n# unmount partitions (loopback devices will be removed automatically)\numount build/root/boot\numount build/root\n\n# package, compress and export image file\nmv build/run.img build/burmillaos-raspberry-pi64.img\nzip dist/burmillaos-raspberry-pi64.zip build/burmillaos-raspberry-pi64.img\nls -alh dist\n\n# cleanup build environment\nrm -fr build\n"
  },
  {
    "path": "scripts/inline_schema.go",
    "content": "package main\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"text/template\"\n)\n\nfunc main() {\n\tt, err := template.New(\"schema_template\").ParseFiles(\"./scripts/schema_template\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tschema, err := ioutil.ReadFile(\"./scripts/schema.json\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tinlinedFile, err := os.Create(\"config/schema.go\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = t.Execute(inlinedFile, map[string]string{\n\t\t\"schema\": string(schema),\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "scripts/installer/BaseDockerfile.amd64",
    "content": "FROM alpine\n# TODO: redo as cross platform, and without git etc :)\n\nARG VERSION\nARG KERNEL_VERSION\nENV VERSION=${VERSION}\nENV KERNEL_VERSION=${KERNEL_VERSION}\n\n# not installed atm udev, grub2, kexe-tools\n# parted: partprobe, e2fsprogs: mkfs.ext4, syslinux: extlinux&syslinux\n# e2fsprogs-extra: chattr\nRUN apk --no-cache add syslinux parted e2fsprogs e2fsprogs-extra util-linux\n\nCOPY conf /scripts/\nCOPY ./build/ros /bin/\n#RUN cd /bin && ln -s ./ros ./system-docker\n#OR softlink in the host one - this image should only be used when installing from ISO..\n# (except its useful for testing)\n# && ln -s /host/usr/bin/ros /bin/\nCOPY kexec/dist/sbin/kexec /sbin/\n\nRUN ln -s /bootiso/boot/ /dist\n\nCOPY cache-services.sh /scripts/\n\n# need to make a /scripts/set-disk-partitions so that older releases can call the installer\nRUN echo \"#!/bin/sh\" > /scripts/set-disk-partitions \\\n    && echo \"echo 'set-disk-partitions deprecated'\" >> /scripts/set-disk-partitions \\\n    && chmod 755 /scripts/set-disk-partitions\n\n# work around some really weird ros symptoms\nRUN rm -rf /sbin/poweroff /sbin/shutdown /sbin/reboot /sbin/halt /usr/sbin/poweroff /usr/sbin/shutdown /usr/sbin/reboot /usr/sbin/halt\n\nENTRYPOINT [\"/bin/ros\", \"install\"]\n\n"
  },
  {
    "path": "scripts/installer/BaseDockerfile.arm64",
    "content": "FROM arm64v8/alpine\n# TODO: redo as cross platform, and without git etc :)\n\nARG VERSION\nARG KERNEL_VERSION\nENV VERSION=${VERSION}\nENV KERNEL_VERSION=${KERNEL_VERSION}\n\n# not installed atm udev, grub2, kexe-tools\n# parted: partprobe, e2fsprogs: mkfs.ext4, syslinux: extlinux&syslinux(arm64 not support in Alpine)\n# e2fsprogs-extra: chattr\nRUN apk --no-cache add parted e2fsprogs e2fsprogs-extra util-linux\n\nCOPY conf /scripts/\nCOPY ./build/ros /bin/\n#RUN cd /bin && ln -s ./ros ./system-docker\n#OR softlink in the host one - this image should only be used when installing from ISO..\n# (except its useful for testing)\n# && ln -s /host/usr/bin/ros /bin/\nCOPY kexec/dist/sbin/kexec /sbin/\n\nRUN ln -s /bootiso/boot/ /dist\n\nCOPY cache-services.sh /scripts/\n\n# need to make a /scripts/set-disk-partitions so that older releases can call the installer\nRUN echo \"#!/bin/sh\" > /scripts/set-disk-partitions \\\n    && echo \"echo 'set-disk-partitions deprecated'\" >> /scripts/set-disk-partitions \\\n    && chmod 755 /scripts/set-disk-partitions\n\n# work around some really weird ros symptoms\nRUN rm -rf /sbin/poweroff /sbin/shutdown /sbin/reboot /sbin/halt /usr/sbin/poweroff /usr/sbin/shutdown /usr/sbin/reboot /usr/sbin/halt\n\nENTRYPOINT [\"/bin/ros\", \"install\"]\n\n"
  },
  {
    "path": "scripts/installer/Dockerfile.amd64",
    "content": "FROM burmilla/os-installer\n\n# TODO: separate out the elements below - so we can mix and match updates\nRUN rm /dist/ \\\n    && mkdir -p /dist/\n\nCOPY ./boot/ /dist/\n"
  },
  {
    "path": "scripts/installer/Dockerfile.arm64",
    "content": "FROM burmilla/os-installer\n\n# TODO: separate out the elements below - so we can mix and match updates\nRUN rm /dist/ \\\n    && mkdir -p /dist/\n\nCOPY ./boot/ /dist/\n"
  },
  {
    "path": "scripts/installer/README.md",
    "content": "\n# `burmilla/os` installer container\n\nThe container can be used directly, but there is a wrapper in RancherOS CLI, `ros install`, that handles calling things in the right order.\n\n"
  },
  {
    "path": "scripts/installer/cache-services.sh",
    "content": "#!/bin/sh\nset -e -x\n\nroot=\"/mnt/install\"\ncache=\"/var/lib/rancher/cache\"\npreload=\"/var/lib/rancher/preload/system-docker\"\n\npartition=$1\nimages=$2\n\ncache_services() {\n    mkdir -p ${root}${cache}\n    cp ${cache}/* ${root}${cache}\n}\n\ncache_images() {\n    mkdir -p ${root}${preload}\n    for i in ${images}; do\n        system-docker pull $i\n    done\n    system-docker save -o ${root}${preload}/os-include.tar ${images}\n}\n\nmkdir -p ${root}\nmount ${partition} ${root}\ncache_services\ncache_images\numount ${root}\n"
  },
  {
    "path": "scripts/installer/conf/cloud-config-local.yml",
    "content": "rancher:\n  cloud_init:\n    datasources:\n      - file:/var/lib/burmilla/conf/user_config.yml\n"
  },
  {
    "path": "scripts/installer/conf/empty.yml",
    "content": "#cloud-config\n{}\n"
  },
  {
    "path": "scripts/installer/conf/vagrant.yml",
    "content": "#cloud-config\nssh_authorized_keys:\n  - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key\n"
  },
  {
    "path": "scripts/installer/kexec/Dockerfile.dapper",
    "content": "FROM ubuntu:16.04\n# FROM arm64=aarch64/ubuntu:16.04 arm=armhf/ubuntu:16.04\n\n# get the apt-cacher proxy set\nARG APTPROXY=\n\nRUN echo \"Acquire::http { Proxy \\\"$APTPROXY\\\"; };\" >> /etc/apt/apt.conf.d/01proxy \\\n    && cat /etc/apt/apt.conf.d/01proxy \\\n    && apt-get update \\\n    && apt-get install -yq build-essential autoconf libtool gawk alien fakeroot \\\n        zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libdevmapper-dev \\\n        module-init-tools \\\n        parted lsscsi ksh curl git wget\n\nWORKDIR /source\n\n# https://www.kernel.org/pub/linux/utils/kernel/kexec/\nENV VERSION 2.0.15\nRUN wget https://www.kernel.org/pub/linux/utils/kernel/kexec/kexec-tools-$VERSION.tar.gz \\\n    && tar zxvf kexec-tools-$VERSION.tar.gz\n\nRUN zcat kexec-tools-$VERSION.tar.gz | tar xvf - \\\n  && cd kexec-tools-$VERSION \\\n  && sed 's/loff_t/off_t/g' -i vmcore-dmesg/vmcore-dmesg.c \\\n  && LDFLAGS=-static ./configure \\\n  && make \\\n  && make install\nRUN mkdir -p /source/dist \\\n  && cp -r /usr/local/* /source/dist\n\n########## Dapper Configuration #####################\n\nENV DAPPER_ENV VERSION DEV_BUILD RUNTEST APTPROXY\n#ENV DAPPER_DOCKER_SOCKET true\nENV DAPPER_SOURCE /source\nENV DAPPER_OUTPUT ./dist\n#ENV DAPPER_RUN_ARGS --privileged\n#ENV TRASH_CACHE ${DAPPER_SOURCE}/.trash-cache\n#ENV SHELL /bin/bash\n\nCMD true\n\n"
  },
  {
    "path": "scripts/isolinux.cfg",
    "content": "# Add `UI vesamenu.c32` to a new line in `global.cfg` to switch to GUI bootmenu (use `sudo ros config syslinux`)\nUI menu.c32\nTIMEOUT 30 #3s\nPROMPT 0\n\n# doesn't appear to work here?\nINCLUDE ../global.cfg\n\n# each INCLUDEd file has a `DEFAULT mylabel` in it, and the last one wins\nLABEL rancheros-previous\n  MENU LABEL Previous BurmillaOS Version\n  MENU DISABLE\nINCLUDE ../linux-previous.cfg\n\nLABEL rancheros-current\n  MENU LABEL Current BurmillaOS Version\n  MENU DISABLE\nINCLUDE ../linux-current.cfg\n\n# http://www.syslinux.org/wiki/index.php?title=Comboot/menu.c32\nLABEL Boot next BIOS option\n  MENU LABEL Boot next BIOS option\n  LOCALBOOT -1\n\nMENU TITLE BurmillaOS\nMENU BACKGROUND ../burmilla.png\n\nMENU WIDTH 80\nMENU MARGIN 10\nMENU ROWS 12\nMENU TABMSGROW 18\nMENU CMDLINEROW 18\nMENU ENDROW 24\nMENU TIMEOUTROW 20\n\n"
  },
  {
    "path": "scripts/isolinux_label.cfg",
    "content": "\r\nDEFAULT rancheros-${LABEL}\r\nLABEL rancheros-${LABEL}\r\n    SAY rancheros-${LABEL}: BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    MENU LABEL BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    KERNEL ../vmlinuz-${KERNEL_VERSION}\r\n    INITRD ../initrd-${VERSION}\r\n    # see global.cfg for kernel boot parameters\r\n\r\nLABEL rancheros-${LABEL}-autologin\r\n    SAY rancheros-${LABEL}-autologin: autologin BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    MENU LABEL Autologin on tty1 and ttyS0\r\n    MENU INDENT 2\r\n    COM32 cmd.c32\r\n    APPEND rancheros-${LABEL} panic=10 rancher.autologin=tty1 rancher.autologin=ttyS0\r\n\r\nLABEL rancheros-${LABEL}-debug\r\n    SAY rancheros-${LABEL}-debug: debug BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    MENU LABEL Debug logging\r\n    MENU INDENT 2\r\n    COM32 cmd.c32\r\n    APPEND rancheros-${LABEL} rancher.debug=true vga=ask\r\n\r\nLABEL rancheros-${LABEL}-debug-autologin\r\n    SAY rancheros-${LABEL}-debug-autolgin: debug and autologin BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    MENU LABEL Autologin on tty1 and ttyS0 plus Debug logging\r\n    MENU INDENT 2\r\n    COM32 cmd.c32\r\n    APPEND rancheros-${LABEL} rancher.autologin=tty1 rancher.autologin=ttyS0 rancher.debug=true\r\n\r\nLABEL rancheros-${LABEL}-recovery\r\n    SAY rancheros-${LABEL}-recovery: recovery console BurmillaOS ${VERSION} ${KERNEL_VERSION}\r\n    MENU LABEL Recovery console\r\n    MENU INDENT 2\r\n    COM32 cmd.c32\r\n    APPEND rancheros-${LABEL} rancher.recovery=true\r\n\r\nMENU SEPARATOR\r\n"
  },
  {
    "path": "scripts/layout",
    "content": "#!/bin/bash\nset -e\n\nsource $(dirname $0)/version\ncd $(dirname $0)/..\n\nARTIFACTS=$(pwd)/dist/artifacts\nBUILD=build\nINITRD_DIR=${BUILD}/initrd\nexport ARTIFACTS BUILD INITRD_DIR VERSION\n\n./scripts/layout-initrd\n./scripts/layout-kernel\n\ncurl -sL ${!OS_INITRD_BASE_URL} | tar xzvf - -C ${INITRD_DIR}\n\n./scripts/hash-initrd\n"
  },
  {
    "path": "scripts/layout-initrd",
    "content": "#!/bin/bash\n\nfunction cache_services() {\n    echo \"Caching service: $1\"\n    local SERVICE_YMLFILE=$1\n\n    local SERVICE_URL=${OS_SERVICES_REPO}/${REPO_VERSION}\n    local SERVICE_INDEX_URL=\"${SERVICE_URL}/index.yml\"\n    local SERVICE_YMLFILE_URL=\"${SERVICE_URL}/${SERVICE_YMLFILE}\"\n\n    local SERVICE_INDEX_URL_MD5=$(echo -n ${SERVICE_INDEX_URL}|md5sum|cut -d ' ' -f1)\n    local SERVICE_YMLFILE_URL_MD5=$(echo -n ${SERVICE_YMLFILE_URL}|md5sum|cut -d ' ' -f1)\n\n    mkdir -p ${INITRD_DIR}/usr/share/ros/services-cache/\n    wget -O ${INITRD_DIR}/usr/share/ros/services-cache/${SERVICE_INDEX_URL_MD5} ${SERVICE_INDEX_URL}\n    wget -O ${INITRD_DIR}/usr/share/ros/services-cache/${SERVICE_YMLFILE_URL_MD5} ${SERVICE_YMLFILE_URL}\n}\n\necho Create initrd layout in $INITRD_DIR\n\nrm -rf ${INITRD_DIR}\nmkdir -p ${INITRD_DIR}/usr/{etc,lib,bin,share/ros}\n\n./scripts/template\n\ncp build/images*.tar           ${INITRD_DIR}/usr/share/ros/\ncp bin/ros                     ${INITRD_DIR}/usr/bin/\nln -s usr/bin/ros              ${INITRD_DIR}/init\n# cp ${INITRD_DIR}/usr/bin/sh    ${INITRD_DIR}/usr/bin\nln -s ros                      ${INITRD_DIR}/usr/bin/init\nln -s bin                      ${INITRD_DIR}/usr/sbin\nln -s usr/sbin                 ${INITRD_DIR}/sbin\n\ncurl -SL ${!SYSTEM_DOCKER_URL} | tar --strip-components=1 -xzvf - -C ${INITRD_DIR}/usr/bin/\n# we have diabled the user-proxy so we get rid of system-docker-proxy\nrm -f ${INITRD_DIR}/usr/bin/system-docker-proxy\n# reduce size by removing debugging tool system-docker-containerd-ctr\nrm -f ${INITRD_DIR}/usr/bin/system-docker-containerd-ctr\n\ncat <<HERE > ${INITRD_DIR}/usr/share/ros/os-release\nNAME=\"BurmillaOS\"\nVERSION=${VERSION}\nID=rancheros\nID_LIKE=\nVERSION_ID=${VERSION}\nPRETTY_NAME=\"BurmillaOS ${VERSION}\"\nHOME_URL=\"https://burmillaos.org\"\nSUPPORT_URL=\"https://github.com/burmilla/os\"\nBUG_REPORT_URL=\"https://github.com/burmilla/os/issues\"\nBUILD_ID=\nHERE\n\npushd ${INITRD_DIR}/usr/etc\nln -s ../share/ros/os-release .\npopd\n\n# Support upgrades from old persistent consoles that bind mount these\ntouch ${INITRD_DIR}/usr/bin/docker-containerd\ntouch ${INITRD_DIR}/usr/bin/docker-containerd-shim\ntouch ${INITRD_DIR}/usr/bin/docker\n\n# make burmilla/os-initrd image\ncat <<HERE > ${INITRD_DIR}/../Dockerfile.initrd\nFROM scratch\nCOPY initrd/* /\nHERE\n\nname=\"os-initrd\"\ntag=\"${OS_REPO}/${name}:${VERSION}${SUFFIX}\"\npushd .\ncd ${INITRD_DIR}/..\ndocker build -t ${OS_REPO}/${name} -f Dockerfile.initrd .\ndocker tag burmilla/${name} ${tag}\npopd\n"
  },
  {
    "path": "scripts/layout-kernel",
    "content": "#!/bin/bash\nset -e\n\n# Override using a local kernel build\nif [ -e ${DAPPER_SOURCE}/assets/kernel.tar.gz ]; then\n    echo \"copying ${DAPPER_SOURCE}/assets/kernel.tar.gz ${DOWNLOADS}/kernel.tar.gz\"\n    cp ${DAPPER_SOURCE}/assets/kernel.tar.gz ${DOWNLOADS}/kernel.tar.gz\nfi\n\nif [ -e ${DOWNLOADS}/kernel.tar.gz ]; then\n    mkdir -p ${BUILD}/kernel\n    tar xf ${DOWNLOADS}/kernel.tar.gz -C ${BUILD}/kernel\n\n    for i in vmlinuz vmlinux; do\n        if [ -e ${BUILD}/kernel/boot/${i}-* ]; then\n            mkdir -p ${ARTIFACTS}\n            # frustratingly, the vmlinuz versioned filename != the tag name, so we need to do some guessing\n            # for eg, 4.9-rc8-rancher2 is called vmlinuz-4.9.0-rc8-rancher\n            echo \"Copy ${BUILD}/kernel/boot/${i}-* to ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION}\"\n            cp ${BUILD}/kernel/boot/${i}-* ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION}\n            # use an unversioned filename for `scripts/run`\n            cp ${BUILD}/kernel/boot/${i}-* ${BUILD}/kernel/vmlinuz\n            break\n        fi\n    done\n\n    # TODO: move these into a separate tar.xz and add to the syslinux initrd line\n    if [ -d ${BUILD}/kernel/lib ]; then\n        rm -rf ${INITRD_DIR}/usr/lib\n        cp -rf ${BUILD}/kernel/lib ${INITRD_DIR}/usr/\n        depmod -b ${INITRD_DIR}/usr $(basename ${INITRD_DIR}/usr/lib/modules/*)\n\n        #TODO:\n        # new: put the kernel modules into their own initrd file\n        #mkdir -p ${BUILD}/kernel-fs/usr/\n        #pushd .\n        #cp -rf ${BUILD}/kernel/lib ${BUILD}/kernel-fs/usr/\n        #depmod -b ${BUILD}/kernel-fs/usr $(basename ${BUILD}/kernel-fs/usr/lib/modules/*)\n        ## and then package it up cpio\n        #cd ${BUILD}/kernel-fs/\n        #echo Creating kernel ${ARTIFACTS}/linuxmods-${KERNEL_VERSION}\n\n        #if [ \"$COMPRESS\" == \"\" ]; then\n        #    COMPRESS=\"gzip -1\"\n        #fi\n        #find | cpio -H newc -o | ${COMPRESS} > ${ARTIFACTS}/linuxmods-${KERNEL_VERSION}\n        #popd\n        #echo Done creating kernel ${ARTIFACTS}/linuxmods-${KERNEL_VERSION}\n        ## use an unversioned filename for `scripts/run`\n        #cp ${ARTIFACTS}/linuxmods-${KERNEL_VERSION} ${BUILD}/kernel/linuxmods\n    fi\nelse\n    if [ \"$ARCH\" == \"amd64\" ]; then\n        echo \"no ${DOWNLOADS}/kernel.tar.gz found\"\n        exit 1\n    fi\nfi\n\nif [ \"$ARCH\" == \"amd64\" ]; then\n    ls -lah ${ARTIFACTS}/vmlinuz-*\n    if [ ! -e \"${ARTIFACTS}/vmlinuz-${KERNEL_VERSION}\" ]; then\n        echo \"Can't find ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION}\"\n        exit -1\n    fi\nfi\n\nif [ \"$OS_FIRMWARE\" = \"false\" ]; then\n    # the cloud images don't need firmware\n    rm -rf ${INITRD_DIR}/usr/lib/firmware\nfi\n"
  },
  {
    "path": "scripts/moby/Dockerfile",
    "content": "FROM burmilla/os\n\n# replace this with `burmilla/os-initrd`\nRUN mkdir /tmp/initrd \\\n  && cd /tmp/initrd \\\n  && cat /dist/initrd-* | gunzip | cpio -i \\\n  && rm -rf usr/lib \\\n  && rm /tmp/initrd/usr/var/lib/cni/bin/host-local /tmp/initrd/usr/var/lib/cni/bin/bridge \\\n  && mkdir -p /tmp/initrd/var/lib/cni/bin \\\n  && ln -s ../../../../usr/bin/ros /tmp/initrd/var/lib/cni/bin/host-local \\\n  && ln -s ../../../../usr/bin/ros /tmp/initrd/var/lib/cni/bin/bridge \\\n  && cp -r --update --dereference --force /tmp/initrd/* / \\\n  && cd / \\\n  && rm -rf /tmp/initrd\n\n#FROM burmilla/os-installer\n#RUN cp /bin/ros /init\n\n#FROM burmilla/os-installer\n#RUN cp /bin/ros /init\n"
  },
  {
    "path": "scripts/moby/README.md",
    "content": "# RancherOS built using LinuxKit/Moby\n\nThis is an initial non-containerd version.\n\nTo build, first run `make dev`, and then `make build-moby`.\n\nTo run in qemu, use `make run-moby`.\n\nAt the moment, `linuxkit run rancheros` crashes with a kernel panic.\n"
  },
  {
    "path": "scripts/moby/rancheros.yml",
    "content": "kernel:\n#  image: \"linuxkit/kernel:4.9.x\"\n  image: \"burmilla/os-kernel:4.9.26-rancher\"\n#  cmdline: \"debug ignore_loglevel log_buf_len=10M print_fatal_signals=1 LOGLEVEL=8 earlyprintk sched_debug initcall_debug option.debug=Y break=y console=ttyS0 console=tty0 console=tty1 page_poison=1 printk.devkmsg=on rancher.debug=true rancher.password=rancher rancher.autologin=ttyS0 rancher.autologin=tty0 rancher.autologin=tty1\"\n  cmdline: 'printk.devkmsg=on rancher.debug=true rancher.password=rancher console=ttyS0 rancher.autologin=ttyS0 console=tty0 rancher.autologin=tty0 console=tty1 rancher.autologin=tty1 rancher.state.dev=LABEL=RANCHER_STATE rancher.state.autoformat=[/dev/sda,/dev/vda] rancher.rm_usr'\ninit:\n  - zombie/os\n#  - burmilla/os-installer\n#  - burmilla/os-initrd\n#outputs:\n#  - format: kernel+initrd\n#  - format: iso-bios\n#  - format: iso-efi\n#  - format: gcp-img\n"
  },
  {
    "path": "scripts/package",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)\n\nif [ \"$ROOTFS\" != \"0\" ]; then\n    ./package-rootfs\nfi\n./package-initrd\n\nif [ \"$ARCH\" == \"amd64\" ]; then\n    ./package-installer\n    ./package-iso\nfi\n"
  },
  {
    "path": "scripts/package-initrd",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\nsource scripts/version\n\nBUILD=$(pwd)/build\nINITRD_DIR=${BUILD}/initrd\nARTIFACTS=$(pwd)/dist/artifacts\n\nmkdir -p ${ARTIFACTS}\n\nif [ ! -f ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION} ]; then\n    echo \"skipping package-initrd due to ARM build? (no kernel artifact)\"\n    exit 0\nfi\n\nif [ \"$COMPRESS\" == \"\" ]; then\n    COMPRESS=\"gzip -1\"\nfi\n\ncd ${INITRD_DIR}\n\necho Creating ${ARTIFACTS}/${INITRD}\nfind | cpio -H newc -o | ${COMPRESS} > ${ARTIFACTS}/${INITRD}\necho Done creating ${ARTIFACTS}/${INITRD}\n"
  },
  {
    "path": "scripts/package-installer",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n\nBASEDOCKERFILE=./scripts/installer/BaseDockerfile.${ARCH}\nDOCKERFILE=./scripts/installer/Dockerfile.${ARCH}\nARTIFACTS=./dist/artifacts\n\n# build kexec\npushd .\ncd scripts/installer/kexec\ndapper\npopd\n\n\n# TODO maybe extract the creation of the syslinux cfg files\nDIST=$(pwd)/dist\necho \"mkdir -p ${DIST}/boot/isolinux/\"\nmkdir -p ${DIST}/boot/isolinux/\ncat scripts/isolinux.cfg | envsubst > ${DIST}/boot/isolinux/isolinux.cfg\ncat scripts/isolinux_label.cfg | LABEL=${VERSION} envsubst > ${DIST}/boot/linux-current.cfg\n#cat scripts/isolinux_label.cfg | LABEL=debug APPEND=\"rancher.debug=true\" envsubst > ${DIST}/boot/linux-previous.cfg\nif [ \"$OS_AUTOFORMAT\" = \"true\" ]; then\n    APPEND_AUTOFORMAT=\"rancher.state.autoformat=[/dev/sda,/dev/vda] rancher.state.dev=LABEL=RANCHER_STATE rancher.state.wait=true\"\n    cat scripts/global.cfg | APPEND=\"$APPEND_AUTOFORMAT\" envsubst > ${DIST}/boot/global.cfg\nelse\n    cat scripts/global.cfg | envsubst > ${DIST}/boot/global.cfg\nfi\n\nmkdir -p ./scripts/installer/build/boot\ncp ./bin/ros ./scripts/installer/build\ntrap \"rm -rf ./scripts/installer/build\" EXIT\n\n# installer base image - can be included in iso\n# TODO: fix the fullinstaller Dockerfile to use the ${VERSION}${SUFFIX}\ndocker build \\\n    -t ${OS_REPO}/os-installer \\\n    --build-arg VERSION=${VERSION} \\\n    --build-arg KERNEL_VERSION=${KERNEL_VERSION} \\\n    -f $BASEDOCKERFILE \\\n    ./scripts/installer\ndocker save -o ${ARTIFACTS}/installer.tar ${OS_REPO}/os-installer\ncp $DOCKERFILE ${ARTIFACTS}/\n\ncp ${ARTIFACTS}/${INITRD} ./scripts/installer/build/boot\ncp ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION} ./scripts/installer/build/boot\ncp -r ${DIST}/boot/* ./scripts/installer/build/boot\ncp $DOCKERFILE ./scripts/installer/build/Dockerfile\n# Full installer image with initrd - used for pulling from network\ndocker build \\\n    -t ${OS_REPO}/os \\\n    ./scripts/installer/build\ndocker tag ${OS_REPO}/os ${OS_REPO}/os:${VERSION}${SUFFIX}\n\ndocker save -o ${ARTIFACTS}/fullinstaller.tar ${OS_REPO}/os:${VERSION}${SUFFIX}\necho ${OS_REPO}/os:${VERSION}${SUFFIX} >> dist/images\necho Built ${OS_REPO}/os:${VERSION}${SUFFIX}\n"
  },
  {
    "path": "scripts/package-iso",
    "content": "#!/bin/bash\nset -e\nset -x\n\nsource $(dirname $0)/version\ncd $(dirname $0)/..\n\nARTIFACTS=$(pwd)/dist/artifacts\nCD=${BUILD}/cd\nrm -rf ${CD}/\nISO=${ARTIFACTS}/$(echo ${DISTRIB_ID} | tr '[:upper:]' '[:lower:]').iso\n\nmkdir -p ${CD}/boot/isolinux\nmkdir -p ${CD}/rancheros\n\ncp ${ARTIFACTS}/${INITRD}                     ${CD}/boot\n\n# TODO: these move to os-kernel\npwd\nls dist/artifacts/vmlinuz-${KERNEL_VERSION}\ncp ${ARTIFACTS}/vmlinuz-${KERNEL_VERSION}     ${CD}/boot/\n#TODO cp ${ARTIFACTS}/linuxmods-${KERNEL_VERSION}   ${CD}/boot/\n\n# cfg files creation moved to package-installer\nDIST=$(pwd)/dist\ncp -r ${DIST}/boot/* ${CD}/boot/\n\ncp /usr/lib/ISOLINUX/isolinux.bin              ${CD}/boot/isolinux/\ncp /usr/lib/syslinux/modules/bios/ldlinux.c32  ${CD}/boot/isolinux/\ncp /usr/lib/syslinux/modules/bios/*.c32        ${CD}/boot/isolinux/\n# add the installer image to the iso for non-network / dev/test\ncp ${ARTIFACTS}/installer.tar                  ${CD}/rancheros/\ncp ${ARTIFACTS}/Dockerfile.${ARCH}             ${CD}/rancheros/\ngzip ${CD}/rancheros/installer.tar\ncd ${CD} && xorriso \\\n    -as mkisofs \\\n    -l -J -R -V \"${DISTRIB_ID}\" \\\n    -no-emul-boot -boot-load-size 4 -boot-info-table \\\n    -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \\\n    -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \\\n    -o $ISO ${CD}\n\ncd $(dirname $ISO)\n"
  },
  {
    "path": "scripts/package-rootfs",
    "content": "#!/bin/bash\nset -e\nset -o pipefail\n\ncd $(dirname $0)/..\n\nsource scripts/version\n\nBUILD=$(pwd)/build\nINITRD_DIR=${BUILD}/initrd\nARTIFACTS=$(pwd)/dist/artifacts\n\nmkdir -p ${ARTIFACTS}\n\ntar czf ${ARTIFACTS}/rootfs${SUFFIX}.tar.gz --exclude lib/modules --exclude lib/firmware -C ${INITRD_DIR} .\n"
  },
  {
    "path": "scripts/prepare",
    "content": "#!/bin/bash\nset -ex\n\nsource $(dirname $0)/version\n\ncd $(dirname $0)\n\nif [ ! -e ../bin/host_ros ]; then\n    ./build\nfi\n\n./template\n./build-images\n./tar-images\n./layout\n"
  },
  {
    "path": "scripts/release",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n./scripts/release-build\n\n./scripts/release-${ARCH}\n"
  },
  {
    "path": "scripts/release-4glte",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\ntouch .make-4glte\n\nsource ./scripts/version\n./scripts/release-build\n\ntouch dist/publish.sh\nchmod 755 dist/publish.sh\n\necho \"github-release upload --user burmilla --repo os --tag ${VERSION} --file dist/artifacts/burmillaos.iso --name burmillaos-${VERSION}-4glte.iso\" > dist/publish.sh\n"
  },
  {
    "path": "scripts/release-amd64",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n./scripts/release-build\n\ntouch dist/publish.sh\nchmod 755 dist/publish.sh\n\nif [ \"$OS_FIRMWARE\" = \"false\" ]; then\n    echo \"github-release upload --user burmilla --repo os --tag ${VERSION} --file ./dist/artifacts/burmillaos.iso --name burmillaos-${VERSION}-vm.iso\" >> dist/publish.sh\n    exit 0\nelse\n    echo \"github-release release --user burmilla --repo os --tag ${VERSION} --pre-release --draft\" > dist/publish.sh\n    echo \"echo Waiting 30 seconds after release creation to make sure that GitHub is ready for uploads\" >> dist/publish.sh\n    echo \"sleep 30s\" >> dist/publish.sh\n\n    echo \"github-release upload --user burmilla --repo os --tag ${VERSION} --file ./dist/artifacts/burmillaos.iso --name burmillaos-${VERSION}.iso\" >> dist/publish.sh\n\n    # Include iPXE files\n    echo \"github-release upload --user burmilla --repo os --tag ${VERSION} --file ./dist/artifacts/initrd-${VERSION} --name initrd\" >> dist/publish.sh\n    echo \"github-release upload --user burmilla --repo os --tag ${VERSION} --file ./dist/artifacts/vmlinuz-${KERNEL_VERSION} --name vmlinuz\" >> dist/publish.sh\n    echo \"github-release upload --user burmilla --repo os --tag ${VERSION} --file ./dist/artifacts/rootfs.tar.gz --name rootfs.tar.gz\" >> dist/publish.sh\n\n    cat dist/images | sed 's/^/docker push /' >> dist/publish.sh\nfi\n\necho \"--- Run dist/publish.sh\"\ncat dist/publish.sh\n\n"
  },
  {
    "path": "scripts/release-arm64",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n./scripts/release-build\n\ncat dist/images | sed 's/^/docker push /' >> dist/publish.sh\nchmod 755 dist/publish.sh\n"
  },
  {
    "path": "scripts/release-build",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\nsource ./scripts/version\nexport REPO_VERSION=$VERSION\nif [[ -n \"$DIRTY\" || -z \"$GIT_TAG\" ]]; then\n    export REPO_VERSION=master\nfi\nexport COMPRESS=\"gzip -9\"\n\n./scripts/ci\n\n# from scripts/ci\necho PREPARE\n./scripts/prepare\necho PACKAGE\n./scripts/package\n"
  },
  {
    "path": "scripts/release-rpi64",
    "content": "#!/bin/bash\nset -ex\n\ncd $(dirname $0)/..\n\nsource ./scripts/version\n\nif [ ! -f ./dist/artifacts/rootfs_arm64.tar.gz ]; then\n    echo \"Please run make first\"\n    exit 0\nfi\n\ncp ./dist/artifacts/rootfs_arm64.tar.gz ./scripts/images/raspberry-pi-hypriot64/\npushd ./scripts/images/raspberry-pi-hypriot64/\n./../../../.dapper\npopd\n\ncp ./scripts/images/raspberry-pi-hypriot64/dist/burmillaos-raspberry-pi64.zip ./dist/artifacts/\n\ntouch dist/publish.sh\nchmod 755 dist/publish.sh\n\necho \"github-release upload --user burmilla --repo os --tag ${VERSION} --file dist/artifacts/burmillaos-raspberry-pi64.zip --name burmillaos-${VERSION}-raspberry-pi64.zip\" >> dist/publish.sh\n"
  },
  {
    "path": "scripts/ros",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\nif [ ! -e \"./build/initrd/usr/share/ros/os-config.yml\" ]; then\n    ./.dapper release\nelse\n    echo \"using existing build of ros\"\n    #./.dapper build-target\nfi\n\nsource ./scripts/version\n\necho \"---------------------------------\"\necho \"ln -s /usr/bin/ros /usr/bin/cloud-init-save\"\necho \"ros config set rancher.cloud_init.datasources [packet:https://metadata.packet.net/]\"\n#echo \"ros config set rancher.cloud_init.datasources [packet:https://192.80.8.124/]\"\necho \"cloud-init-save\"\necho \"---------------------------------\"\n\ndocker run --rm -it \\\n    -v $(pwd)/build/initrd/usr/share:/usr/share \\\n    -v $(pwd)/bin/ros:/usr/bin/ros \\\n    -v /etc/ssl/certs:/etc/ssl/certs \\\n    -v /usr/share/ca-certificates:/usr/share/ca-certificates \\\n    -w  /var/lib/rancher \\\n    --entrypoint sh \\\n    burmilla/os-base:v1.0.3\n"
  },
  {
    "path": "scripts/run",
    "content": "#!/bin/bash\nset -e\n# help: build and run RancherOS, requires KVM local\n\ncd $(dirname $0)/..\n\nsource ./scripts/run-common\n\nMEMORY=2048\n\nwhile [ \"$#\" -gt 0 ]; do\n    case $1 in\n        --debug)\n            DEBUG=1\n            ;;\n        --iso)\n            BOOT_ISO=1\n            QEMU=0\n            QIND=0\n            REBUILD=0\n            ;;\n        --boothd)\n            BOOT_HD=1\n            QEMU=0\n            QIND=0\n            REBUILD=0\n            ;;\n        --resizehd)\n            shift 1\n            RESIZEHD=$1\n            ;;\n        --pxe)\n            BOOT_PXE=1\n            FORMAT=0\n            ;;\n        --do)\n            BOOT_HD=1\n            QEMU=0\n            QIND=0\n            REBUILD=0\n            CONSOLEDISPLAY=1\n            USE_OPENSTACK_IMG=\"digitalocean\"\n            ;;\n        --digitalocean)\n            BOOT_HD=1\n            QEMU=0\n            QIND=0\n            REBUILD=0\n            CONSOLEDISPLAY=1\n            USE_OPENSTACK_IMG=\"digitalocean\"\n            ;;\n        --openstack)\n            BOOT_HD=1\n            QEMU=0\n            QIND=0\n            REBUILD=0\n            CONSOLEDISPLAY=1\n            USE_OPENSTACK_IMG=\"openstack\"\n            ;;\n        --append)\n            shift 1\n            QEMU_APPEND=\"${QEMU_APPEND} $1\"\n            ;;\n        --rsyslog)\n            RSYSLOG=1\n            ;;\n        --append-init)\n            shift 1\n            APPEND_INIT=\"${APPEND_INIT} $1\"\n            ;;\n        --memory)\n            shift 1\n            MEMORY=\"$1\"\n            ;;\n        --name)\n            shift 1\n            NAME=\"$1\"\n            ;;\n        --cloud-config)\n            shift 1\n            CLOUD_CONFIG=\"$1\" || :\n            if [ ! -f ${CLOUD_CONFIG} ]; then\n                echo No such file: \"'\"${CLOUD_CONFIG}\"'\" 1>&2\n                exit 1\n            fi\n            ;;\n        --cloud-config-iso)\n            CLOUD_CONFIG_FORMAT=\"iso\"\n            ;;\n        --cloud-config-fat)\n            CLOUD_CONFIG_FORMAT=\"fat\"\n            ;;\n        --second-drive)\n            SECOND_DRIVE=1\n            ;;\n        --arch)\n            shift 1\n            ARCH=\"$1\"\n            ;;\n        --qemu)\n            QEMU=1\n            ;;\n        --qind)\n            QIND=1\n            QEMU=0\n            ;;\n        --kvm)\n            KVM=1\n            ;;\n        --no-format)\n            FORMAT=0\n            ;;\n        --no-rm-usr)\n            RM_USR=0\n            ;;\n        --no-rebuild)\n            REBUILD=0\n            ;;\n        --no-network)\n            NO_NETWORK=1\n            ;;\n        --fresh)\n            FRESH=1\n            ;;\n        --b2d)\n            # use together with --fresh to trigger boot2docker/machine auto-format\n            AUTOFORMAT=1\n            ;;\n        --console)\n        # use the bios console, not serial (lets you see syslinux)\n            CONSOLEDISPLAY=1\n            ;;\n        --netconsole)\n            NETCONSOLE=1\n            ;;\n        --gui)\n            GUICONSOLE=1\n            ;;\n        --installed)\n            ./scripts/create-installed\n            INSTALLED=1\n            ;;\n        *)\n            break\n            ;;\n    esac\n    shift 1\ndone\n\nif [ \"$QEMU\" == \"1\" ] && ! which qemu-system-${QEMUARCH}; then\n    QEMU=0\nfi\n\nif [[ ! -e ${KERNEL} || ! -e ${INITRD_SRC} ]]; then\n    echo \"Failed to find ${KERNEL} or ${INITRD_SRC}\" 1>&2\n    exit 1\nfi\n\necho \"initrd ${INITRD}\"\nif [ \"$REBUILD\" == \"1\" ] || [ ! -e ${INITRD} ]; then\n    echo \"rebuilding ${INITRD} from ${INITRD_SRC}\"\n    cp bin/ros ${INITRD_SRC}/usr/bin/ros\n    ./scripts/hash-initrd\n    pushd ${INITRD_SRC} >/dev/null\n    find . | cpio -H newc -o | gzip -1 > ${INITRD}\n    popd >/dev/null\nfi\n\nKERNEL_ARGS=\"${DEFAULT_KERNEL_ARGS} ${QEMU_APPEND}\"\nif [ \"$DEBUG\" == \"1\" ]; then\n    KERNEL_ARGS=\"${KERNEL_ARGS} rancher.debug=true\"\nfi\nif [ \"$FORMAT\" == \"1\" ]; then\n    KERNEL_ARGS=\"${KERNEL_ARGS} rancher.state.dev=LABEL=RANCHER_STATE rancher.state.autoformat=[/dev/sda,/dev/vda]\"\nfi\nif [ \"$RM_USR\" == \"1\" ]; then\n    KERNEL_ARGS=\"${KERNEL_ARGS} rancher.rm_usr\"\nfi\nif [ \"$BOOT_PXE\" == \"1\" ]; then\n    KERNEL_ARGS=\"console=tty1 rancher.autologin=tty1 ${KERNEL_ARGS}\"\n    set -ex\n    PIXIECORE=$(which pixiecore)\n    sudo -E $PIXIECORE boot \\\n               \"${KERNEL}\" \\\n               \"${INITRD}\" \\\n               --cmdline=\"${KERNEL_ARGS}\"\n    return 0\nfi\nif [ \"$RSYSLOG\" == \"1\" ]; then\n    defaultDev=$(ip route | grep default | cut -f 5 -d \" \")\n    devIP=$(ip a show dev $defaultDev | grep \"inet \" | cut -d \" \" -f 6 | cut -d / -f 1)\n    KERNEL_ARGS=\"${KERNEL_ARGS} loglevel=8 netconsole=+9999@10.0.2.14/,514@${devIP}/\"\nfi\n# ELIDE_COMMANDLINE - MUST BE LAST\nif [ \"$APPEND_INIT\" != \"\" ]; then\n    KERNEL_ARGS=\"${KERNEL_ARGS} -- ${APPEND_INIT}\"\nfi\n\nif [ \"$KVM\" == \"\" ] && [ -c /dev/kvm ] && [ -r /dev/kvm ] && [ -w /dev/kvm ]; then\n    KVM=1\nfi\nset -x\nif [ \"$QEMU\" == \"1\" ] || [ \"$BOOT_ISO\" == \"1\" ] || [ \"$BOOT_HD\" == \"1\" ]; then\n    HD=${BASE}/state/hd.img\n    HD2=${BASE}/state/hd2.img\n    [ \"$FRESH\" == \"1\" ] && rm -f ${HD} ${HD2} >/dev/null 2>&1 || :\n\n    if [ ! -e ${HD} ]; then\n        mkdir -p $(dirname ${HD})\n        if [ \"$USE_OPENSTACK_IMG\" != \"\" ]; then\n           if [ ! -e \"dist/artifacts/burmillaos-${USE_OPENSTACK_IMG}.img\" ]; then\n               echo \"please build the open stack image first (run make release).\"\n               exit 1\n           fi\n           cp dist/artifacts/burmillaos-${USE_OPENSTACK_IMG}.img $HD\n           qemu-img resize ${HD} 70GB\n        else\n            if [ ¨$INSTALLED¨ == ¨1¨ ]; then\n                ./scripts/create-installed\n            else\n                if [ \"$AUTOFORMAT\" == \"1\" ]; then\n                    echo \"boot2docker, please format-me\" | cat - /dev/zero | head -c 5242880 > format-flag.txt # 5M\n                    qemu-img convert -f raw format-flag.txt -O qcow2 ${HD}\n                    qemu-img resize ${HD} +10GB\n                else\n                    qemu-img create -f qcow2 -o size=10G ${HD}\n                fi\n            fi\n        fi\n    else\n        if [ \"$RESIZEHD\" != \"\" ]; then\n            qemu-img resize ${HD} ${RESIZEHD}\n        fi\n    fi\n\n    if [ \"$SECOND_DRIVE\" == \"1\" ]; then\n        if [ \"$FRESH\" == \"1\" ]; then\n            qemu-img create -f qcow2 -o size=10G ${HD2}\n        fi\n        SECOND_DRIVE_ENABLE=$(eval \"${hd[\"$ARCH\"]} ${HD2}\")\n    fi\nfi\n\nif [ \"$QIND\" != \"1\" ]; then\n    CPU=${cpu[\"$ARCH\"]}\n    if [ \"$KVM\" == \"1\" ] && [ \"$ARCH\" == \"$HOST_ARCH\" ]; then\n        KVM_ENABLE=\"-enable-kvm\"\n        CPU=\"-cpu host\"\n    fi\n\n    if [[ \"${CLOUD_CONFIG}\" == *\".iso\" ]]; then\n        CLOUD_CONFIG_DISK=\"-cdrom ${CLOUD_CONFIG}\"\n    else\n        CCROOT=${BUILD}/cloud-config\n        rm -rf ${CCROOT}\n        mkdir -p ${CCROOT}\n\n        USER_DATA=${CCROOT}/openstack/latest/user_data\n        mkdir -p $(dirname ${USER_DATA})\n        rm -f ${USER_DATA} || :\n        if [ -n \"$CLOUD_CONFIG\" ]; then\n            cat ${CLOUD_CONFIG} > ${USER_DATA}\n        else\n            echo \"#cloud-config\" > ${USER_DATA}\n            echo \"ssh_authorized_keys:\" >> ${USER_DATA}\n            echo \"- $(<${BASE}/assets/rancher.key.pub)\" >> ${USER_DATA}\n        fi\n        case $CLOUD_CONFIG_FORMAT in\n            iso)\n                mkisofs -R -V config-2 -o ${BASE}/state/configdrive.iso ${CCROOT}\n                CLOUD_CONFIG_DISK=\"-cdrom ${BASE}/state/configdrive.iso\"\n            ;;\n            fat)\n                truncate --size 2M ${BASE}/state/configdrive.img\n                mkfs.vfat -n config-2 ${BASE}/state/configdrive.img\n                mcopy -osi ${BASE}/state/configdrive.img ${CCROOT}/* ::\n                CLOUD_CONFIG_DISK=\"-hdb ${BASE}/state/configdrive.img\"\n            ;;\n            *)\n                CLOUD_CONFIG_DISK=\"-fsdev local,security_model=passthrough,readonly,id=fsdev0,path=${CCROOT} \\\n                    -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=config-2\"\n            ;;\n        esac\n    fi\n\n    HOME=${HOME:-/}\nfi\n\nif [ \"$GUICONSOLE\" == \"\" ]; then\n    # default serial console\n    DISPLAY_OPTS=\"-nographic -serial mon:stdio -display none\"\n    if [ \"$CONSOLEDISPLAY\" == \"1\" ]; then\n        DISPLAY_OPTS=\"-curses\"\n    fi\n    if [ \"$NETCONSOLE\" == \"1\" ]; then\n        # put ttyS1 on port 4444\n        DISPLAY_OPTS=\"${DISPLAY_OPTS} -serial tcp::4444,server\"\n        KERNEL_ARGS=\"rancher.console=ttyS1 rancher.autologin=ttyS1 ${KERNEL_ARGS}\"\n    fi\nfi\n\nif [ \"${NO_NETWORK}\" == \"1\" ]; then\n    NETWORK=\"-net none\"\nelse\n    NETWORK=\"${network[\"$ARCH\"]}\"\nfi\n\nif [ \"$QEMU\" == \"1\" ]; then\n    if [ \"$INSTALLED\" == \"1\" ]; then\n        # kernel args only works when using -kernel\n        KERNEL_ARGS=\"\"\n    else\n        INSTALLED_ARGS=\"-kernel ${KERNEL} -initrd ${INITRD}\"\n    fi\n    set -x\n    exec qemu-system-${QEMUARCH} \\\n            ${DISPLAY_OPTS} \\\n            -rtc base=utc,clock=host \\\n            ${INSTALLED_ARGS} \\\n            -append \"${KERNEL_ARGS}\" \\\n            ${KVM_ENABLE} \\\n            ${CPU} \\\n            ${machine[\"$ARCH\"]} \\\n            -m $MEMORY \\\n            ${NETWORK} \\\n            $(eval \"${hd[\"$ARCH\"]} ${HD}\") \\\n            ${SECOND_DRIVE_ENABLE} \\\n            -smp 1 \\\n            -device virtio-rng-pci \\\n            ${CLOUD_CONFIG_DISK} \\\n            -fsdev local,security_model=none,id=fsdev1,path=${HOME} \\\n            -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=home \\\n            ${QEMU_ARGS} \\\n            \"${@}\"\n\nelif [ \"$BOOT_ISO\" == \"1\" ] ||\n            [ \"$BOOT_HD\" == \"1\" ]; then\n    if [ \"$BOOT_ISO\" == \"1\" ]; then\n        ISO_OPTS=\"-boot c -cdrom ./dist/artifacts/burmillaos.iso \\\n            -fsdev local,security_model=none,id=fsdev1,path=${HOME} \\\n            -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=home \"\n            echo \"----- $ISO_OPTS\"\n    fi\n    set -x\n    exec qemu-system-${QEMUARCH} \\\n            ${DISPLAY_OPTS} \\\n            ${CLOUD_CONFIG_DISK} \\\n            -rtc base=utc,clock=host \\\n            ${KVM_ENABLE} \\\n            ${CPU} \\\n            ${machine[\"$ARCH\"]} \\\n            -m $MEMORY \\\n            ${NETWORK} \\\n            $(eval \"${hd[\"$ARCH\"]} ${HD}\") \\\n            ${SECOND_DRIVE_ENABLE} \\\n            -smp 1 \\\n            -device virtio-rng-pci \\\n            ${ISO_OPTS} \\\n            \"${@}\"\nelif [ \"$QIND\" == \"1\" ]; then\n\n    NAME=${NAME:-ros-qind}\n\n    if [ \"$FRESH\" == \"1\" ]; then\n        docker rm -fv ${NAME} >/dev/null 2>&1 || :\n    fi\n    if ! docker inspect ${NAME} >/dev/null 2>&1; then\n        if [ \"$KVM\" == \"1\" ]; then\n            KVM_ENABLE=\"--device=/dev/kvm:/dev/kvm\"\n        fi\n\n        mkdir -p ./tmp\n        TMP=$(mktemp -d ./tmp/ros-qind-XXXXXX)\n        mkdir -p ${TMP}/stuff\n        trap \"rm -rf ${TMP}\" EXIT\n        ln ${CLOUD_CONFIG} ${KERNEL} ${INITRD} ./assets/rancher.key ./assets/rancher.key.pub ${TMP}/stuff/\n\n        KERNEL_FILE=$(basename ${KERNEL})\n        INITRD_FILE=$(basename ${INITRD})\n\n        if [ -n \"$CLOUD_CONFIG\" ]; then\n            CLOUD_CONFIG_ENABLE=\"--cloud-config /stuff/$(basename ${CLOUD_CONFIG})\"\n        else\n            SSH_PUB_ENABLE=\"--ssh-pub /stuff/rancher.key.pub\"\n        fi\n\n        set -x\n        docker create --name=${NAME} -it ${KVM_ENABLE} \\\n                    burmilla/qind \\\n                    --hostname \"rancher-dev\" \\\n                    ${CLOUD_CONFIG_ENABLE} \\\n                    ${SSH_PUB_ENABLE} \\\n                    -m 1G -kernel /stuff/${KERNEL_FILE} -initrd /stuff/${INITRD_FILE} -append \"${KERNEL_ARGS}\" \\\n                    \"${@}\"\n\n        docker cp ${TMP}/stuff ${NAME}:/stuff\n        rm -rf ${TMP}\n    fi\n    exec docker start -ai ${NAME}\n\nelse\n    exit 42\nfi\n"
  },
  {
    "path": "scripts/run-common",
    "content": "#!/bin/bash\nset -e\n\nHOST_ARCH=${HOST_ARCH:-amd64}\nARCH=${ARCH:-amd64}\n\ndeclare -A qemuarch=( [\"amd64\"]=\"x86_64\" [\"arm\"]=\"arm\" [\"arm64\"]=\"aarch64\" )\ndeclare -A ttycons=( [\"amd64\"]=\"ttyS0\" [\"arm\"]=\"ttyAMA0\" [\"arm64\"]=\"ttyAMA0\" )\ndeclare -A machine=( [\"amd64\"]=\"\" [\"arm\"]=\"-M virt\" [\"arm64\"]=\"-M virt\" )\ndeclare -A cpu=( [\"amd64\"]=\"\" [\"arm\"]=\"-cpu cortex-a8\" [\"arm64\"]=\"-cpu cortex-a57\" )\ndeclare -A network=(\n    [\"amd64\"]=\"-net nic,vlan=0,model=virtio -net user,vlan=0,hostfwd=tcp::2222-:22,hostname=rancher-dev\"\n    [\"arm\"]=\"-netdev user,id=unet,hostfwd=tcp::2222-:22,hostname=rancher-dev -device virtio-net-device,netdev=unet\"\n)\nnetwork[\"arm64\"]=${network[\"arm\"]}\n\nhd_amd64() {\n    echo \"-drive if=virtio,file=$1\"\n}\nhd_arm() {\n    echo \"-drive if=none,id=hd0,file=$1 -device virtio-blk-device,drive=hd0\"\n}\ndeclare -A hd=( [\"amd64\"]=\"hd_amd64\" [\"arm\"]=\"hd_arm\" [\"arm64\"]=\"hd_arm\" )\n\ncd_amd64() {\n    echo \"-hdc $1\"\n}\ncd_arm() {\n    echo \"-drive if=none,id=cd0,file=$1 -device virtio-blk-device,drive=cd0\"\n}\ndeclare -A cd=( [\"amd64\"]=\"cd_amd64\" [\"arm\"]=\"cd_arm\" [\"arm64\"]=\"cd_arm\" )\n\nBUILD=build\nBASE=$(pwd)\nUNAME=$(uname)\n\nKERNEL=${BASE}/build/kernel/vmlinuz\nINITRD_SRC=${BASE}/build/initrd\nINITRD=${BASE}/build/initrd.tmp\n#LINUXMOD=${BASE}/build/kernel/linuxmods\n\n\nQEMU=1\nFORMAT=1\nRM_USR=1\nREBUILD=1\n\nQEMUARCH=${qemuarch[\"${ARCH}\"]}\nTTYCONS=${ttycons[\"${ARCH}\"]}\n\nif [ \"$ENGINE_REGISTRY_MIRROR\" != \"\" ]; then\n    REGISTRY_MIRROR=\"rancher.bootstrap_docker.registry_mirror=${ENGINE_REGISTRY_MIRROR} rancher.system_docker.registry_mirror=${ENGINE_REGISTRY_MIRROR} rancher.docker.registry_mirror=${ENGINE_REGISTRY_MIRROR}\"\nfi\n\nDEFAULT_KERNEL_ARGS=\"printk.devkmsg=on rancher.password=rancher console=tty1 rancher.autologin=tty1 console=${TTYCONS} rancher.autologin=${TTYCONS} ${REGISTRY_MIRROR} \"\n"
  },
  {
    "path": "scripts/run-install",
    "content": "#!/bin/bash\n\n\n# see https://forums.rancher.com/t/proposal-to-install-on-qemu/1236\n\nset -x -e\n\ncd $(dirname $0)/..\nsource ./scripts/version\nBASE=$(pwd)\n\nSTATE=/tmp\nDISK=${STATE}/burmillaos.img\nCONFIG=${STATE}/cloud-config.yml\nexport LOOPBACK=$(losetup -f)\nPARTITION=$(echo \"${LOOPBACK}p1\" | sed 's/dev/dev\\/mapper/')\nDISPLAY_OPTS=\"-curses\"\n# default\n#DISPLAY_OPTS=\"-nographic -serial stdio -display none\"\n\nfunction clean_up {\n    sudo umount mount || true\n    sudo kpartx -d ${DISK} || true\n    sudo losetup -d ${LOOPBACK} || true\n    sudo rm ${DISK} || true\n}\ntrap \"clean_up; exit\" SIGHUP SIGINT SIGTERM EXIT\n\n\necho \"writing to ${CONFIG} in ${STATE}\"\necho \"#cloud-config\" > ${CONFIG}\necho \"ssh_authorized_keys:\" >> ${CONFIG}\necho \"- $(<${BASE}/assets/rancher.key.pub)\" >> ${CONFIG}\n\nqemu-img create ${DISK} 1G\nsudo losetup ${LOOPBACK} ${DISK}\n\necho \"n\np\n1\n\n\na\nw\" | sudo fdisk ${LOOPBACK} || true\n\nsudo kpartx -a ${DISK}\n\ndocker run --privileged -it --rm \\\n    -v /dev/mapper:/dev/mapper \\\n    -v ${STATE}:/cluster \\\n    burmilla/os:${VERSION} \\\n    --isoinstallerloaded=1 \\\n    --force \\\n    --no-reboot \\\n    --debug \\\n    -c /cluster/cloud-config.yml \\\n    -t generic \\\n    -d ${LOOPBACK} \\\n    -p ${PARTITION} \\\n    --append \"rancher.autologin=tty1\"\n    #-f /cluster/images.tar.xz:var/lib/system-docker/preload/images.tar.xz\n\n\nsync\n\nqemu-system-x86_64 -enable-kvm \\\n    ${DISPLAY_OPTS} \\\n    -m 1024 \\\n    -net nic,model=virtio \\\n    -net user,hostfwd=tcp::2222-:22 \\\n    -drive if=virtio,file=${DISK},format=raw\n"
  },
  {
    "path": "scripts/run-moby",
    "content": "#!/bin/bash\n\ncd $(dirname $0)/../dist/moby\n\nif [ \"1\" == \"2\" ]; then\n  linuxkit run -mem 2048 rancheros\nelse\n  qemu-system-x86_64 \\\n      -nographic \\\n      -kernel ./burmillaos-kernel \\\n      -initrd ./burmillaos-initrd.img \\\n      -m 2048 \\\n      -device virtio-rng-pci \\\n      -smp 1 \\\n      -enable-kvm \\\n      -machine q35,accel=kvm:tcg \\\n      -net nic,vlan=0,model=virtio \\\n      -net user,vlan=0,hostfwd=tcp::3333-:22,hostname=rancher-moby \\\n      -append 'printk.devkmsg=on rancher.debug=true rancher.password=rancher console=ttyS0 rancher.autologin=ttyS0 console=tty0 rancher.autologin=tty0 console=tty1 rancher.autologin=tty1 rancher.state.dev=LABEL=RANCHER_STATE rancher.state.autoformat=[/dev/sda,/dev/vda] rancher.rm_usr' \nfi\n"
  },
  {
    "path": "scripts/schema.json",
    "content": "{\n  \"type\": \"object\",\n  \"additionalProperties\": false,\n\n  \"properties\": {\n    \"ssh_authorized_keys\": {\"$ref\": \"#/definitions/list_of_strings\"},\n    \"write_files\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/file_config\"}\n    },\n    \"hostname\": {\"type\": \"string\"},\n    \"mounts\": {\"type\": \"array\"},\n    \"rancher\": {\"$ref\": \"#/definitions/rancher_config\"},\n    \"runcmd\": {\"type\": \"array\"},\n    \"bootcmd\": {\"type\": \"array\"}\n  },\n\n  \"definitions\": {\n    \"rancher_config\": {\n      \"id\": \"#/definitions/rancher_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"console\": {\"type\": \"string\"},\n        \"environment\": {\"type\": \"object\"},\n        \"cloud_init_services\": {\"type\": \"object\"},\n        \"services\": {\"type\": \"object\"},\n        \"bootstrap\": {\"type\": \"object\"},\n        \"autoformat\": {\"type\": \"object\"},\n        \"bootstrap_docker\": {\"$ref\": \"#/definitions/docker_config\"},\n        \"cloud_init\": {\"$ref\": \"#/definitions/cloud_init_config\"},\n        \"debug\": {\"type\": \"boolean\"},\n        \"rm_usr\": {\"type\": \"boolean\"},\n        \"no_sharedroot\": {\"type\": \"boolean\"},\n        \"log\": {\"type\": \"boolean\"},\n        \"force_console_rebuild\": {\"type\": \"boolean\"},\n        \"recovery\": {\"type\": \"boolean\"},\n        \"disable\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"services_include\": {\"type\": \"object\"},\n        \"modules\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"network\": {\"$ref\": \"#/definitions/network_config\"},\n        \"default_network\": {\"type\": \"object\"},\n        \"repositories\": {\"type\": \"object\"},\n        \"ssh\": {\"$ref\": \"#/definitions/ssh_config\"},\n        \"state\": {\"$ref\": \"#/definitions/state_config\"},\n        \"system_docker\": {\"$ref\": \"#/definitions/docker_config\"},\n        \"upgrade\": {\"$ref\": \"#/definitions/upgrade_config\"},\n        \"docker\": {\"$ref\": \"#/definitions/docker_config\"},\n        \"registry_auths\": {\"type\": \"object\"},\n        \"defaults\": {\"$ref\": \"#/definitions/defaults_config\"},\n        \"resize_device\": {\"type\": \"string\"},\n        \"sysctl\": {\"type\": \"object\"},\n        \"restart_services\": {\"type\": \"array\"},\n\t\"hypervisor_service\": {\"type\": \"boolean\"},\n\t\"shutdown_timeout\": {\"type\": \"integer\"},\n\t\"preload_wait\": {\"type\": \"boolean\"}\n      }\n    },\n\n    \"file_config\": {\n      \"id\": \"#/definitions/file_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"encoding\": {\"type\": \"string\"},\n        \"container\": {\"type\": \"string\"},\n        \"content\": {\"type\": \"string\"},\n        \"owner\": {\"type\": \"string\"},\n        \"path\": {\"type\": \"string\"},\n        \"permissions\": {\"type\": \"string\"}\n      }\n    },\n\n    \"network_config\": {\n      \"id\": \"#/definitions/network_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"pre_cmds\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"dns\": {\"type\": \"object\"},\n        \"interfaces\": {\"type\": \"object\"},\n        \"post_cmds\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"http_proxy\": {\"type\": \"string\"},\n        \"https_proxy\": {\"type\": \"string\"},\n        \"no_proxy\": {\"type\": \"string\"}\n      }\n    },\n\n    \"upgrade_config\": {\n      \"id\": \"#/definitions/upgrade_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"url\": {\"type\": \"string\"},\n        \"image\": {\"type\": \"string\"},\n        \"rollback\": {\"type\": \"string\"}\n      }\n    },\n\n    \"docker_config\": {\n      \"id\": \"#/definitions/docker_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"engine\": {\"type\": \"string\"},\n        \"tls\": {\"type\": \"boolean\"},\n        \"tls_args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"extra_args\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"server_cert\": {\"type\": \"string\"},\n        \"server_key\": {\"type\": \"string\"},\n        \"ca_cert\": {\"type\": \"string\"},\n        \"ca_key\": {\"type\": \"string\"},\n        \"environment\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"storage_context\": {\"type\": \"string\"},\n        \"exec\": {\"type\": [\"boolean\", \"null\"]},\n        \"bridge\": {\"type\": \"string\"},\n        \"config_file\": {\"type\": \"string\"},\n        \"containerd\": {\"type\": \"string\"},\n        \"debug\": {\"type\": [\"boolean\", \"null\"]},\n        \"exec_root\": {\"type\": \"string\"},\n        \"group\": {\"type\": \"string\"},\n        \"graph\": {\"type\": \"string\"},\n        \"host\": {\"type\": \"array\"},\n        \"live_restore\": {\"type\": [\"boolean\", \"null\"]},\n        \"log_driver\": {\"type\": \"string\"},\n        \"log_opts\": {\"type\": \"object\"},\n        \"pid_file\": {\"type\": \"string\"},\n        \"registry_mirror\": {\"type\": \"string\"},\n        \"restart\": {\"type\": [\"boolean\", \"null\"]},\n        \"storage_driver\": {\"type\": \"string\"},\n        \"userland_proxy\": {\"type\": [\"boolean\", \"null\"]},\n        \"userns_enabled\": {\"type\": [\"boolean\", \"null\"]},\n        \"insecure_registry\": {\"$ref\": \"#/definitions/list_of_strings\"}\n      }\n    },\n\n    \"ssh_config\": {\n      \"id\": \"#/definitions/ssh_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"keys\": {\"type\": \"object\"},\n        \"daemon\": {\"type\": \"boolean\"}\n      }\n    },\n\n    \"state_config\": {\n      \"id\": \"#/definitions/state_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"directory\": {\"type\": \"string\"},\n        \"fstype\": {\"type\": \"string\"},\n        \"dev\": {\"type\": \"string\"},\n        \"wait\": {\"type\": \"boolean\"},\n        \"required\": {\"type\": \"boolean\"},\n        \"autoformat\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"mdadm_scan\": {\"type\": \"boolean\"},\n        \"cryptsetup\": {\"type\": \"boolean\"},\n        \"lvm_scan\": {\"type\": \"boolean\"},\n        \"script\": {\"type\": \"string\"},\n        \"oem_fstype\": {\"type\": \"string\"},\n        \"oem_dev\": {\"type\": \"string\"}\n      }\n    },\n\n    \"cloud_init_config\": {\n      \"id\": \"#/definitions/cloud_init_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"datasources\": {\"$ref\": \"#/definitions/list_of_strings\"}\n      }\n    },\n\n    \"defaults_config\": {\n      \"id\": \"#/definitions/defaults_config\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n\n      \"properties\": {\n        \"hostname\": {\"type\": \"string\"},\n        \"docker\": {\"type\": \"object\"},\n        \"network\": {\"$ref\": \"#/definitions/network_config\"}\n      }\n    },\n\n    \"list_of_strings\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true\n    }\n  }\n}\n\n"
  },
  {
    "path": "scripts/schema_template",
    "content": "package config\n\nvar schema = `{{.schema}}`\n"
  },
  {
    "path": "scripts/shell",
    "content": "#!/bin/bash\n# help: Launch shell in build environment\n\nexec bash\n"
  },
  {
    "path": "scripts/ssh",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\nchmod 0600 ./assets/rancher.key\n\nQEMU=1\nUNAME=$(uname)\nINTERACTIVE=\"-it\"\n\nwhile [ \"$#\" -gt 0 ]; do\n    case $1 in\n        --name)\n            shift 1\n            NAME=\"$1\"\n            ;;\n        --notty)\n            INTERACTIVE=\"\"\n            ;;\n        --qemu)\n            QEMU=1\n            ;;\n        --qind)\n            QIND=1\n            QEMU=0\n            ;;\n        --key)\n            shift 1\n            KEY=\"$1\"\n            ;;\n        *)\n            break\n            ;;\n    esac\n    shift 1\ndone\n\nif [ \"$QEMU\" == \"1\" ]; then\n    exec ssh -p 2222 -F ./assets/scripts_ssh_config -i ${KEY:-./assets/rancher.key} rancher@localhost \"$@\"\nelif [ \"$QIND\" == \"1\" ]; then\n    NAME=${NAME:-ros-qind}\n    if [ -n \"$KEY\" ]; then\n        docker inspect ${NAME} >/dev/null 2>&1 || exit 1\n        docker cp ${KEY} ${NAME}:/stuff/$(basename ${KEY})\n        KEY_FILE=/stuff/$(basename ${KEY})\n    fi\n    exec docker exec ${INTERACTIVE} ${NAME} /ssh.sh -i ${KEY_FILE:-/stuff/rancher.key} rancher@localhost \"$@\"\nelse\n    exit 42\nfi\n"
  },
  {
    "path": "scripts/tar-images",
    "content": "#!/bin/bash\nset -ex\n\nINIT_DEP=\"burmilla/os-bootstrap\"\nSHARED_DEP=\"burmilla/os-base\"\nINIT_IMAGES_DST=\"build/images-init.tar\"\nSYSTEM_IMAGES_DST=\"build/images-system.tar\"\nUSER_IMAGES_DST=\"build/images-user.tar\"\n\ncd $(dirname $0)/..\n\nIMAGES=$(bin/host_ros c images -i build/initrd/usr/share/ros/os-config.yml)\nINIT_IMAGES=\"\"\nSYSTEM_IMAGES=\"\"\nUSER_IMAGES=\"\"\n\nfor i in ${APPEND_SYSTEM_IMAGES};do\n    IMAGES=\"${IMAGES} ${i}\"\ndone\n\nfor i in ${IMAGES}; do\n    # Reduce ISO file size by not caching Docker engine\n    if [[ ${i} == \"burmilla/os-docker:\"* ]]; then\n        continue\n    fi\n\n    echo \"tar-image: pull($i)\"\n    if ! docker inspect $i >/dev/null 2>&1; then\n        docker pull ${i}\n    fi\n\n    if [ \"${i%%:*}\" != \"$INIT_DEP\" ] ; then\n        SYSTEM_IMAGES=\"$SYSTEM_IMAGES $i\"\n    fi\n\n    if [ \"${i%%:*}\" = \"$INIT_DEP\" ] || [ \"${i%%:*}\" = \"$SHARED_DEP\" ] ; then\n        INIT_IMAGES=\"$INIT_IMAGES $i\"\n    fi\ndone\n\nfor i in ${APPEND_USER_IMAGES}; do\n    if ! docker inspect $i >/dev/null 2>&1; then\n        docker pull ${i}\n    fi\n    USER_IMAGES=\"${USER_IMAGES} ${i}\"\ndone\n\necho \"tar-image: SYSTEM_IMAGES=$SYSTEM_IMAGES\"\necho \"tar-image: INIT_IMAGES=$INIT_IMAGES\"\necho \"tar-image: USER_IMAGES=$USER_IMAGES\"\n\n# system-docker can not load images which compressed by xz with a compression level of 9\n# decompression consumes more memory if using level 9\n# the default compression level for xz is 6\nARCHIVE_CMD=\"xz -4 -e\"\n\ndocker save ${INIT_IMAGES} | ${ARCHIVE_CMD} > ${INIT_IMAGES_DST}\ndocker save ${SYSTEM_IMAGES} | ${ARCHIVE_CMD} > ${SYSTEM_IMAGES_DST}\nif [ ! -z \"$USER_IMAGES\" ]; then\n    docker save ${USER_IMAGES} | ${ARCHIVE_CMD} > ${USER_IMAGES_DST}\nfi\necho \"tar-images: DONE\"\n"
  },
  {
    "path": "scripts/template",
    "content": "#!/bin/bash\nset -e\n\nsource $(dirname $0)/version\n\ncd $(dirname $0)/..\n\nOUTPUT=build/initrd/usr/share/ros\nmkdir -p $OUTPUT\n./bin/host_ros c generate < os-config.tpl.yml > $OUTPUT/os-config.yml\n"
  },
  {
    "path": "scripts/test",
    "content": "#!/bin/bash\n# help: Run go unit tests\nset -ex\n\ncd $(dirname $0)/..\n\necho Running tests\n\nPACKAGES=\". $(find -name '*.go' | xargs -I{} dirname {} |  cut -f2 -d/ | sort -u | grep -Ev '(^\\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')\"\n\nif [ \"$ARCH\" = \"amd64\" ]; then\n    RACE=\"-race\"\nfi\ngo test $RACE -v -cover -tags=test ${PACKAGES}\n"
  },
  {
    "path": "scripts/tools/collect_rancheros_info.sh",
    "content": "#!/bin/sh\n\n# How to use:\n#\n# 1. Login to your rancheros and switch to root\n#    $ sudo su - root\n# 2. Collecting rancheros information\n#    # curl https://raw.githubusercontent.com/burmilla/os/master/scripts/tools/collect_rancheros_info.sh | sh\n\nset -e\n# /var/log directory\nlog_src_dir=/var/log\n# Rancher config file directory\nconf_file_src_dir=/var/lib/rancher/conf\n# Os-config directory\nos_config_dir=/usr/share/ros/os-config.yml\n# Export directory\ndest_dir=/tmp/ros\n# Exported log directory\ndest_log_dir=$dest_dir/roslogs\n# Exported config directory\ndest_conf_dir=$dest_dir/rosconf\nDATE=`date +%Y_%m_%d_%H`\nARCHIVE=$DATE.tar\n\n# Create destination directory\nfor i in $dest_conf_dir $dest_log_dir; do\n  if [ ! -d $i ]; then\n    mkdir -p  $i\n  fi\ndone\n\n# Hidden ssh-rsa\nhiddenSshRsa(){\n    sed -i 's/ssh-rsa.*$/ssh-rsa .../g' $1\n}\n\n# Export /var/log\ncp -arf $log_src_dir $dest_log_dir\n# Export rancheros config\nros c export -o $dest_conf_dir/ros-config-export.conf\nros -v > $dest_conf_dir/ros-version\nuname -r > $dest_conf_dir/kernel-version\nsystem-docker info > $dest_conf_dir/system-docker-info\ndocker info > $dest_conf_dir/docker-info\ncat /proc/mounts > $dest_conf_dir/proc-mounts\ncat /proc/1/mounts > $dest_conf_dir/proc-1-mounts\ncat /proc/cmdline > $dest_conf_dir/cmdline\nip a > $dest_conf_dir/ipall\nip route > $dest_conf_dir/iproutes\ncat /etc/resolv.conf > $dest_conf_dir/resolv\ndmesg > $dest_conf_dir/dmesg.log\n\ncd $conf_file_src_dir && cp -rf `ls  | grep -E -v \"^(pem)$\"` $dest_conf_dir\ncp -arf $os_config_dir $dest_conf_dir\n\nhiddenSshRsa $dest_conf_dir/ros-config-export.conf\nif [ -f  $dest_conf_dir/metadata ]; then\n    hiddenSshRsa $dest_conf_dir/metadata\nfi\n\ntar -c -f /tmp/rancheros_export_$ARCHIVE -C $dest_dir  . >/dev/null 2>&1\n\necho \"*********************************************************\"\necho \"The RancherOS config and log are successfully exported.\"\necho \"Please check the /tmp/rancheros_export_$ARCHIVE.\"\necho \"*********************************************************\"\n"
  },
  {
    "path": "scripts/tools/flush_crt_iso.sh",
    "content": "#!/bin/bash\n\n# How to use:\n#   make shell-bind\n#   cd scripts/tools/\n#   wget https://link/burmillaos-xxx.iso\n#   wget http://link/custom.crt\n#\n#   ./flush_crt_iso.sh --iso burmillaos-vmware-autoformat.iso --cert custom.crt\n#   # or\n#   ./flush_crt_iso.sh --initrd initrd-xxxx --cert custom.crt\n#\n#   exit\n#   ls ./build/\n#\n\nset -ex\n\nBASE_DIR=/tmp\nORIGIN_DIR=/tmp/origin\nNEW_DIR=/tmp/new\nWORK_DIR=/tmp/work\n\nmkdir -p ${ORIGIN_DIR} ${NEW_DIR} ${WORK_DIR} ${DAPPER_SOURCE}/build\n\nwhile [ \"$#\" -gt 0 ]; do\n    case $1 in\n        --initrd)\n            shift 1\n            INITRD_FILE=$(readlink -f $1)\n            ;;\n        --iso)\n            shift 1\n            ISO_FILE=$(readlink -f $1)\n            ;;\n        --cert)\n            shift 1\n            CERT_FILE=$(readlink -f $1)\n            ;;\n        *)\n            break\n            ;;\n    esac\n    shift 1\ndone\n\nfunction rebuild_initrd() {\n    local initrd_name=$1\n    local output_dir=$2\n\n    # update and rebuild the initrd\n    pushd ${WORK_DIR}\n    mv initrd-* ${initrd_name}.gz\n    gzip -d ${initrd_name}.gz\n    cpio -i -F ${initrd_name}\n    rm -f ${initrd_name}\n\n    cat ${CERT_FILE} >> ${WORK_DIR}/usr/etc/ssl/certs/ca-certificates.crt\n\n    find | cpio -H newc -o | gzip -9 > ${output_dir}/${initrd_name}\n    popd\n}\n\n\nif [ ! -z ${INITRD_FILE} ]; then\n    cp ${INITRD_FILE} ${WORK_DIR}/\n    rebuild_initrd $(basename ${INITRD_FILE}) ${DAPPER_SOURCE}/build/\n    exit 0\nfi\n\n# copy the iso content\nmount -t iso9660 -o loop ${ISO_FILE} ${ORIGIN_DIR}\ncp -rf ${ORIGIN_DIR}/* ${NEW_DIR}\n\n# copy the initrd file\nINITRD_NAME=$(basename ${ORIGIN_DIR}/boot/initrd-*)\ncp ${ORIGIN_DIR}/boot/initrd-* ${WORK_DIR}/\n\nrebuild_initrd ${INITRD_NAME} ${NEW_DIR}/boot\n\npushd ${NEW_DIR}\nxorriso \\\n    -as mkisofs \\\n    -l -J -R -V \"${DISTRIB_ID}\" \\\n    -no-emul-boot -boot-load-size 4 -boot-info-table \\\n    -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \\\n    -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \\\n    -o $(basename ${ISO_FILE}) .\npopd\n\n# copy out\numount ${ORIGIN_DIR}\ncp ${NEW_DIR}/$(basename ${ISO_FILE}) ${DAPPER_SOURCE}/build/\n"
  },
  {
    "path": "scripts/tools/flush_crt_nbd.sh",
    "content": "#!/bin/bash\n\n# How to use:\n#   make shell-bind\n#   cd scripts/tools/\n#   wget https://link/burmillaos-xxx.img\n#   wget http://link/custom.crt\n#\n#   ./flush_crt_nbd.sh --img burmillaos-openstack.img --cert custom.crt\n#   # or\n#   ./flush_crt_nbd.sh --initrd initrd-xxxx --cert custom.crt\n#\n#   exit\n#   ls ./build/\n#\n\nset -ex\n\nBASE_DIR=/tmp\nORIGIN_DIR=/tmp/origin\nWORK_DIR=/tmp/work\n\nmkdir -p ${ORIGIN_DIR} ${WORK_DIR} ${DAPPER_SOURCE}/build\n\nwhile [ \"$#\" -gt 0 ]; do\n    case $1 in\n        --initrd)\n            shift 1\n            INITRD_FILE=$(readlink -f $1)\n            ;;\n        --img)\n            shift 1\n            IMG_FILE=$(readlink -f $1)\n            ;;\n        --cert)\n            shift 1\n            CERT_FILE=$(readlink -f $1)\n            ;;\n        *)\n            break\n            ;;\n    esac\n    shift 1\ndone\n\nfunction rebuild_initrd() {\n    local initrd_name=$1\n    local output_dir=$2\n\n    # update and rebuild the initrd\n    pushd ${WORK_DIR}\n    mv initrd-* ${initrd_name}.gz\n    gzip -d ${initrd_name}.gz\n    cpio -i -F ${initrd_name}\n    rm -f ${initrd_name}\n    cat ${CERT_FILE} >> ${WORK_DIR}/usr/etc/ssl/certs/ca-certificates.crt\n    find | cpio -H newc -o | gzip -9 > ${output_dir}/${initrd_name}\n    popd\n}\n\n\nif [ ! -z ${INITRD_FILE} ]; then\n    cp ${INITRD_FILE} ${WORK_DIR}/\n    rebuild_initrd $(basename ${INITRD_FILE}) ${DAPPER_SOURCE}/build/\n    exit 0\nfi\n\n# copy the iso content\ncp -a ${IMG_FILE} ${IMG_FILE}_new\nqemu-nbd -c /dev/nbd0 --partition=1 ${IMG_FILE}_new\nmount /dev/nbd0 ${ORIGIN_DIR}\n\n# copy the initrd file\nINITRD_NAME=$(basename ${ORIGIN_DIR}/boot/initrd-*)\ncp ${ORIGIN_DIR}/boot/initrd-* ${WORK_DIR}/\n\nrebuild_initrd ${INITRD_NAME} ${ORIGIN_DIR}/boot\n\n# copy out\numount ${ORIGIN_DIR}\nqemu-nbd -d /dev/nbd0\nmv ${IMG_FILE}_new ${DAPPER_SOURCE}/build/$(basename ${IMG_FILE})\n\n# cleanup\nrm -rf ${WORK_DIR}/\n"
  },
  {
    "path": "scripts/validate",
    "content": "#!/bin/bash\nset -e\n\ncd $(dirname $0)/..\n\necho Running validation\n\nPACKAGES=\". $(find -name '*.go' | xargs -I{} dirname {} |  cut -f2 -d/ | sort -u | grep -Ev '(^\\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')\"\n\necho Running: go vet\ngo vet ${PACKAGES}\ntest -z \"$failed\"\necho Running: go fmt\ntest -z \"$(go fmt ${PACKAGES} | tee /dev/stderr)\"\n"
  },
  {
    "path": "scripts/version",
    "content": "#!/bin/bash\n\nif [ -n \"$(git status --porcelain --untracked-files=no)\" ]; then\n    DIRTY=\"-dirty\"\nfi\n\nCOMMIT=$(git rev-parse --short HEAD)\nGIT_TAG=$(git tag -l --contains HEAD | head -n 1)\n\nif [ -z \"$VERSION\" ]; then\n    if [[ -z \"$DIRTY\" && -n \"$GIT_TAG\" ]]; then\n        VERSION=$GIT_TAG\n    else\n        VERSION=\"${COMMIT}${DIRTY}\"\n    fi\nfi\n\nINITRD=initrd-${VERSION}\nexport VERSION COMMIT INITRD GIT_TAG DIRTY\n\n# Suffix\nexport SUFFIX=\"\"\nif [ -n \"${ARCH}\" ] && [ \"${ARCH}\" != \"amd64\" ]; then\n    # TODO: why is this not exported?\n    SUFFIX=\"_${ARCH}\"\nfi\n\necho \" Building ${VERSION} from ${COMMIT} on ${ARCH}\"\n"
  },
  {
    "path": "trash.conf",
    "content": "github.com/Microsoft/go-winio v0.1.0\ngithub.com/sirupsen/logrus v1.8.1\ngithub.com/cloudfoundry-incubator/candiedyaml 457a86017e98f33631ffe83db8e66be960dfc517 https://github.com/burmilla/candiedyaml\ngithub.com/codegangsta/cli d2b9ba9c38eb353ba3c6df3f57072348e19cc5c7 https://github.com/burmilla/cli-1\ngithub.com/coreos/yaml 6b16a5714269b2f70720a45406b1babd947a17ef\ngithub.com/davecgh/go-spew 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d\ngithub.com/docker/containerd c5695fa78c8cd383e8ea8f9bd4a0920ebc165bf1 https://github.com/burmilla/containerd.git\ngithub.com/docker/distribution 467fc068d88aa6610691b7f1a677271a3fac4aac \ngithub.com/docker/docker 1447a2463bc3ee639b9091fb52a15aaa7e407b5a https://github.com/burmilla/docker.git\ngithub.com/docker/engine-api v0.3.3\ngithub.com/docker/go-connections v0.2.0\ngithub.com/docker/go-units 651fc226e7441360384da338d0fd37f2440ffbe3\ngithub.com/docker/libcompose 386b4a098b536736c2858f430f4079c0504366f3 https://github.com/burmilla/libcompose.git\ngithub.com/docker/libnetwork v0.5.6\ngithub.com/docker/machine 4a8e93ac9bc2ced1c3bc4a43c03fdaa1c2749205\ngithub.com/flynn/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff\ngithub.com/gorilla/context 14f550f51a \ngithub.com/gorilla/mux e444e69cbd \ngithub.com/j-keck/arping 4f4d2c8983a18e2c9c63a3f339bc9a998c4557bc\ngithub.com/tredoe/term e551c64f56c0ac0469b4db1b70918e05bfd3ab20\ngithub.com/opencontainers/runc edc34c4a8c1e261b5ce926ff557ecde1aff19ce3 https://github.com/burmilla/runc.git\ngithub.com/packethost/packngo v0.1.0\ngithub.com/pkg/errors d62207b3dc916c342cd6a7180fa861d898cf42ee\ngithub.com/pmezard/go-difflib d8ed2627bdf02c080bf22230dbb337003b7aba2d\ngithub.com/ryanuber/go-glob 0067a9abd927e50aed5190662702f81231413ae0\ngithub.com/sigma/vmw-guestinfo master\ngithub.com/vmware/vmw-guestinfo master\ngithub.com/sigma/vmw-ovflib master\ngithub.com/sigma/bdoor master\ngithub.com/stretchr/testify a1f97990ddc16022ec7610326dd9bce31332c116\ngithub.com/vbatts/tar-split v0.9.11\ngithub.com/vishvananda/netlink b76f71f1d33745ac0833fff4277481599a8ee73f https://github.com/burmilla/netlink\ngithub.com/vishvananda/netns 54f0e4339ce73702a0607f49922aaa1e749b418d\ngithub.com/xeipuuv/gojsonpointer 6fe8760cad3569743d51ddbb243b26f8456742dc\ngithub.com/xeipuuv/gojsonreference e02fc20de94c78484cd5ffb007f8af96be030a45\ngithub.com/xeipuuv/gojsonschema 0c8571ac0ce161a5feb57375a9cdf148c98c0f70\ngithub.com/SvenDowideit/cpuid dfdb6dba69f48dd44c5cd831950be648f71162ca\ngolang.org/x/crypto 2f3083f6163ef51179ad42ed523a18c9a1141467\ngolang.org/x/net aea8142032473bb41e874c31eb771c364b790fb4 https://github.com/golang/net.git # release-branch.go1.15\ngolang.org/x/sys bc7a7d42d5c30f4d0fe808715c002826ce2c624e https://github.com/golang/sys.git # release-branch.go1.15\ngithub.com/fatih/structs dc3312cb1a4513a366c4c9e622ad55c32df12ed3\ngithub.com/pin/tftp v2.1.0\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Microsoft\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\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/README.md",
    "content": "# go-winio\n\nThis repository contains utilities for efficiently performing Win32 IO operations in \nGo. Currently, this is focused on accessing named pipes and other file handles, and\nfor using named pipes as a net transport.\n\nThis code relies on IO completion ports to avoid blocking IO on system threads, allowing Go \nto reuse the thread to schedule another goroutine. This limits support to Windows Vista and \nnewer operating systems. This is similar to the implementation of network sockets in Go's net\npackage.\n\nPlease see the LICENSE file for licensing information.\n\nThanks to natefinch for the inspiration for this library. See https://github.com/natefinch/npipe \nfor another named pipe implementation.\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/backup.go",
    "content": "package winio\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"runtime\"\n\t\"syscall\"\n\t\"unicode/utf16\"\n)\n\n//sys backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupRead\n//sys backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupWrite\n\nconst (\n\tBackupData = uint32(iota + 1)\n\tBackupEaData\n\tBackupSecurity\n\tBackupAlternateData\n\tBackupLink\n\tBackupPropertyData\n\tBackupObjectId\n\tBackupReparseData\n\tBackupSparseBlock\n\tBackupTxfsData\n\n\tStreamSparseAttributes = uint32(8)\n)\n\n// BackupHeader represents a backup stream of a file.\ntype BackupHeader struct {\n\tId         uint32 // The backup stream ID\n\tAttributes uint32 // Stream attributes\n\tSize       int64  // The size of the stream in bytes\n\tName       string // The name of the stream (for BackupAlternateData only).\n\tOffset     int64  // The offset of the stream in the file (for BackupSparseBlock only).\n}\n\ntype win32StreamId struct {\n\tStreamId   uint32\n\tAttributes uint32\n\tSize       uint64\n\tNameSize   uint32\n}\n\n// BackupStreamReader reads from a stream produced by the BackupRead Win32 API and produces a series\n// of BackupHeader values.\ntype BackupStreamReader struct {\n\tr         io.Reader\n\tbytesLeft int64\n}\n\n// NewBackupStreamReader produces a BackupStreamReader from any io.Reader.\nfunc NewBackupStreamReader(r io.Reader) *BackupStreamReader {\n\treturn &BackupStreamReader{r, 0}\n}\n\n// Next returns the next backup stream and prepares for calls to Write(). It skips the remainder of the current stream if\n// it was not completely read.\nfunc (r *BackupStreamReader) Next() (*BackupHeader, error) {\n\tif r.bytesLeft > 0 {\n\t\tif _, err := io.Copy(ioutil.Discard, r); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tvar wsi win32StreamId\n\tif err := binary.Read(r.r, binary.LittleEndian, &wsi); err != nil {\n\t\treturn nil, err\n\t}\n\thdr := &BackupHeader{\n\t\tId:         wsi.StreamId,\n\t\tAttributes: wsi.Attributes,\n\t\tSize:       int64(wsi.Size),\n\t}\n\tif wsi.NameSize != 0 {\n\t\tname := make([]uint16, int(wsi.NameSize/2))\n\t\tif err := binary.Read(r.r, binary.LittleEndian, name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thdr.Name = syscall.UTF16ToString(name)\n\t}\n\tif wsi.StreamId == BackupSparseBlock {\n\t\tif err := binary.Read(r.r, binary.LittleEndian, &hdr.Offset); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\thdr.Size -= 8\n\t}\n\tr.bytesLeft = hdr.Size\n\treturn hdr, nil\n}\n\n// Read reads from the current backup stream.\nfunc (r *BackupStreamReader) Read(b []byte) (int, error) {\n\tif r.bytesLeft == 0 {\n\t\treturn 0, io.EOF\n\t}\n\tif int64(len(b)) > r.bytesLeft {\n\t\tb = b[:r.bytesLeft]\n\t}\n\tn, err := r.r.Read(b)\n\tr.bytesLeft -= int64(n)\n\tif err == io.EOF {\n\t\terr = io.ErrUnexpectedEOF\n\t} else if r.bytesLeft == 0 && err == nil {\n\t\terr = io.EOF\n\t}\n\treturn n, err\n}\n\n// BackupStreamWriter writes a stream compatible with the BackupWrite Win32 API.\ntype BackupStreamWriter struct {\n\tw         io.Writer\n\tbytesLeft int64\n}\n\n// NewBackupStreamWriter produces a BackupStreamWriter on top of an io.Writer.\nfunc NewBackupStreamWriter(w io.Writer) *BackupStreamWriter {\n\treturn &BackupStreamWriter{w, 0}\n}\n\n// WriteHeader writes the next backup stream header and prepares for calls to Write().\nfunc (w *BackupStreamWriter) WriteHeader(hdr *BackupHeader) error {\n\tif w.bytesLeft != 0 {\n\t\treturn fmt.Errorf(\"missing %d bytes\", w.bytesLeft)\n\t}\n\tname := utf16.Encode([]rune(hdr.Name))\n\twsi := win32StreamId{\n\t\tStreamId:   hdr.Id,\n\t\tAttributes: hdr.Attributes,\n\t\tSize:       uint64(hdr.Size),\n\t\tNameSize:   uint32(len(name) * 2),\n\t}\n\tif hdr.Id == BackupSparseBlock {\n\t\t// Include space for the int64 block offset\n\t\twsi.Size += 8\n\t}\n\tif err := binary.Write(w.w, binary.LittleEndian, &wsi); err != nil {\n\t\treturn err\n\t}\n\tif len(name) != 0 {\n\t\tif err := binary.Write(w.w, binary.LittleEndian, name); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif hdr.Id == BackupSparseBlock {\n\t\tif err := binary.Write(w.w, binary.LittleEndian, hdr.Offset); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tw.bytesLeft = hdr.Size\n\treturn nil\n}\n\n// Write writes to the current backup stream.\nfunc (w *BackupStreamWriter) Write(b []byte) (int, error) {\n\tif w.bytesLeft < int64(len(b)) {\n\t\treturn 0, fmt.Errorf(\"too many bytes by %d\", int64(len(b))-w.bytesLeft)\n\t}\n\tn, err := w.w.Write(b)\n\tw.bytesLeft -= int64(n)\n\treturn n, err\n}\n\n// BackupFileReader provides an io.ReadCloser interface on top of the BackupRead Win32 API.\ntype BackupFileReader struct {\n\tf               *os.File\n\tincludeSecurity bool\n\tctx             uintptr\n}\n\n// NewBackupFileReader returns a new BackupFileReader from a file handle. If includeSecurity is true,\n// Read will attempt to read the security descriptor of the file.\nfunc NewBackupFileReader(f *os.File, includeSecurity bool) *BackupFileReader {\n\tr := &BackupFileReader{f, includeSecurity, 0}\n\truntime.SetFinalizer(r, func(r *BackupFileReader) { r.Close() })\n\treturn r\n}\n\n// Read reads a backup stream from the file by calling the Win32 API BackupRead().\nfunc (r *BackupFileReader) Read(b []byte) (int, error) {\n\tvar bytesRead uint32\n\terr := backupRead(syscall.Handle(r.f.Fd()), b, &bytesRead, false, r.includeSecurity, &r.ctx)\n\tif err != nil {\n\t\treturn 0, &os.PathError{\"BackupRead\", r.f.Name(), err}\n\t}\n\tif bytesRead == 0 {\n\t\treturn 0, io.EOF\n\t}\n\treturn int(bytesRead), nil\n}\n\n// Close frees Win32 resources associated with the BackupFileReader. It does not close\n// the underlying file.\nfunc (r *BackupFileReader) Close() error {\n\tif r.ctx != 0 {\n\t\tbackupRead(syscall.Handle(r.f.Fd()), nil, nil, true, false, &r.ctx)\n\t\tr.ctx = 0\n\t}\n\treturn nil\n}\n\n// BackupFileWriter provides an io.WriteCloser interface on top of the BackupWrite Win32 API.\ntype BackupFileWriter struct {\n\tf               *os.File\n\tincludeSecurity bool\n\tctx             uintptr\n}\n\n// NewBackupFileWrtier returns a new BackupFileWriter from a file handle. If includeSecurity is true,\n// Write() will attempt to restore the security descriptor from the stream.\nfunc NewBackupFileWriter(f *os.File, includeSecurity bool) *BackupFileWriter {\n\tw := &BackupFileWriter{f, includeSecurity, 0}\n\truntime.SetFinalizer(w, func(w *BackupFileWriter) { w.Close() })\n\treturn w\n}\n\n// Write restores a portion of the file using the provided backup stream.\nfunc (w *BackupFileWriter) Write(b []byte) (int, error) {\n\tvar bytesWritten uint32\n\terr := backupWrite(syscall.Handle(w.f.Fd()), b, &bytesWritten, false, w.includeSecurity, &w.ctx)\n\tif err != nil {\n\t\treturn 0, &os.PathError{\"BackupWrite\", w.f.Name(), err}\n\t}\n\tif int(bytesWritten) != len(b) {\n\t\treturn int(bytesWritten), errors.New(\"not all bytes could be written\")\n\t}\n\treturn len(b), nil\n}\n\n// Close frees Win32 resources associated with the BackupFileWriter. It does not\n// close the underlying file.\nfunc (w *BackupFileWriter) Close() error {\n\tif w.ctx != 0 {\n\t\tbackupWrite(syscall.Handle(w.f.Fd()), nil, nil, true, false, &w.ctx)\n\t\tw.ctx = 0\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/file.go",
    "content": "package winio\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n)\n\n//sys cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) = CancelIoEx\n//sys createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) = CreateIoCompletionPort\n//sys getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) = GetQueuedCompletionStatus\n//sys setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) = SetFileCompletionNotificationModes\n//sys timeBeginPeriod(period uint32) (n int32) = winmm.timeBeginPeriod\n\nconst (\n\tcFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1\n\tcFILE_SKIP_SET_EVENT_ON_HANDLE        = 2\n)\n\nvar (\n\tErrFileClosed = errors.New(\"file has already been closed\")\n\tErrTimeout    = &timeoutError{}\n)\n\ntype timeoutError struct{}\n\nfunc (e *timeoutError) Error() string   { return \"i/o timeout\" }\nfunc (e *timeoutError) Timeout() bool   { return true }\nfunc (e *timeoutError) Temporary() bool { return true }\n\nvar ioInitOnce sync.Once\nvar ioCompletionPort syscall.Handle\n\n// ioResult contains the result of an asynchronous IO operation\ntype ioResult struct {\n\tbytes uint32\n\terr   error\n}\n\n// ioOperation represents an outstanding asynchronous Win32 IO\ntype ioOperation struct {\n\to  syscall.Overlapped\n\tch chan ioResult\n}\n\nfunc initIo() {\n\th, err := createIoCompletionPort(syscall.InvalidHandle, 0, 0, 0xffffffff)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tioCompletionPort = h\n\tgo ioCompletionProcessor(h)\n}\n\n// win32File implements Reader, Writer, and Closer on a Win32 handle without blocking in a syscall.\n// It takes ownership of this handle and will close it if it is garbage collected.\ntype win32File struct {\n\thandle        syscall.Handle\n\twg            sync.WaitGroup\n\tclosing       bool\n\treadDeadline  time.Time\n\twriteDeadline time.Time\n}\n\n// makeWin32File makes a new win32File from an existing file handle\nfunc makeWin32File(h syscall.Handle) (*win32File, error) {\n\tf := &win32File{handle: h}\n\tioInitOnce.Do(initIo)\n\t_, err := createIoCompletionPort(h, ioCompletionPort, 0, 0xffffffff)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = setFileCompletionNotificationModes(h, cFILE_SKIP_COMPLETION_PORT_ON_SUCCESS|cFILE_SKIP_SET_EVENT_ON_HANDLE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\truntime.SetFinalizer(f, (*win32File).closeHandle)\n\treturn f, nil\n}\n\nfunc MakeOpenFile(h syscall.Handle) (io.ReadWriteCloser, error) {\n\treturn makeWin32File(h)\n}\n\n// closeHandle closes the resources associated with a Win32 handle\nfunc (f *win32File) closeHandle() {\n\tif !f.closing {\n\t\t// cancel all IO and wait for it to complete\n\t\tf.closing = true\n\t\tcancelIoEx(f.handle, nil)\n\t\tf.wg.Wait()\n\t\t// at this point, no new IO can start\n\t\tsyscall.Close(f.handle)\n\t\tf.handle = 0\n\t}\n}\n\n// Close closes a win32File.\nfunc (f *win32File) Close() error {\n\tf.closeHandle()\n\truntime.SetFinalizer(f, nil)\n\treturn nil\n}\n\n// prepareIo prepares for a new IO operation\nfunc (f *win32File) prepareIo() (*ioOperation, error) {\n\tf.wg.Add(1)\n\tif f.closing {\n\t\treturn nil, ErrFileClosed\n\t}\n\tc := &ioOperation{}\n\tc.ch = make(chan ioResult)\n\treturn c, nil\n}\n\n// ioCompletionProcessor processes completed async IOs forever\nfunc ioCompletionProcessor(h syscall.Handle) {\n\t// Set the timer resolution to 1. This fixes a performance regression in golang 1.6.\n\ttimeBeginPeriod(1)\n\tfor {\n\t\tvar bytes uint32\n\t\tvar key uintptr\n\t\tvar op *ioOperation\n\t\terr := getQueuedCompletionStatus(h, &bytes, &key, &op, syscall.INFINITE)\n\t\tif op == nil {\n\t\t\tpanic(err)\n\t\t}\n\t\top.ch <- ioResult{bytes, err}\n\t}\n}\n\n// asyncIo processes the return value from ReadFile or WriteFile, blocking until\n// the operation has actually completed.\nfunc (f *win32File) asyncIo(c *ioOperation, deadline time.Time, bytes uint32, err error) (int, error) {\n\tif err != syscall.ERROR_IO_PENDING {\n\t\tf.wg.Done()\n\t\treturn int(bytes), err\n\t} else {\n\t\tvar r ioResult\n\t\twait := true\n\t\ttimedout := false\n\t\tif f.closing {\n\t\t\tcancelIoEx(f.handle, &c.o)\n\t\t} else if !deadline.IsZero() {\n\t\t\tnow := time.Now()\n\t\t\tif !deadline.After(now) {\n\t\t\t\ttimedout = true\n\t\t\t} else {\n\t\t\t\ttimeout := time.After(deadline.Sub(now))\n\t\t\t\tselect {\n\t\t\t\tcase r = <-c.ch:\n\t\t\t\t\twait = false\n\t\t\t\tcase <-timeout:\n\t\t\t\t\ttimedout = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif timedout {\n\t\t\tcancelIoEx(f.handle, &c.o)\n\t\t}\n\t\tif wait {\n\t\t\tr = <-c.ch\n\t\t}\n\t\terr = r.err\n\t\tif err == syscall.ERROR_OPERATION_ABORTED {\n\t\t\tif f.closing {\n\t\t\t\terr = ErrFileClosed\n\t\t\t} else if timedout {\n\t\t\t\terr = ErrTimeout\n\t\t\t}\n\t\t}\n\t\tf.wg.Done()\n\t\treturn int(r.bytes), err\n\t}\n}\n\n// Read reads from a file handle.\nfunc (f *win32File) Read(b []byte) (int, error) {\n\tc, err := f.prepareIo()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tvar bytes uint32\n\terr = syscall.ReadFile(f.handle, b, &bytes, &c.o)\n\tn, err := f.asyncIo(c, f.readDeadline, bytes, err)\n\n\t// Handle EOF conditions.\n\tif err == nil && n == 0 && len(b) != 0 {\n\t\treturn 0, io.EOF\n\t} else if err == syscall.ERROR_BROKEN_PIPE {\n\t\treturn 0, io.EOF\n\t} else {\n\t\treturn n, err\n\t}\n}\n\n// Write writes to a file handle.\nfunc (f *win32File) Write(b []byte) (int, error) {\n\tc, err := f.prepareIo()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tvar bytes uint32\n\terr = syscall.WriteFile(f.handle, b, &bytes, &c.o)\n\treturn f.asyncIo(c, f.writeDeadline, bytes, err)\n}\n\nfunc (f *win32File) SetReadDeadline(t time.Time) error {\n\tf.readDeadline = t\n\treturn nil\n}\n\nfunc (f *win32File) SetWriteDeadline(t time.Time) error {\n\tf.writeDeadline = t\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/fileinfo.go",
    "content": "package winio\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = GetFileInformationByHandleEx\n//sys setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = SetFileInformationByHandle\n\ntype FileBasicInfo struct {\n\tCreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime\n\tFileAttributes                                          uintptr // includes padding\n}\n\nfunc GetFileBasicInfo(f *os.File) (*FileBasicInfo, error) {\n\tbi := &FileBasicInfo{}\n\tif err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), 0, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil {\n\t\treturn nil, &os.PathError{\"GetFileInformationByHandleEx\", f.Name(), err}\n\t}\n\treturn bi, nil\n}\n\nfunc SetFileBasicInfo(f *os.File, bi *FileBasicInfo) error {\n\tif err := setFileInformationByHandle(syscall.Handle(f.Fd()), 0, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil {\n\t\treturn &os.PathError{\"SetFileInformationByHandle\", f.Name(), err}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/pipe.go",
    "content": "package winio\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\n//sys connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) = ConnectNamedPipe\n//sys createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error)  [failretval==syscall.InvalidHandle] = CreateNamedPipeW\n//sys createFile(name string, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateFileW\n//sys waitNamedPipe(name string, timeout uint32) (err error) = WaitNamedPipeW\n//sys getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) = GetNamedPipeInfo\n//sys getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW\n\ntype securityAttributes struct {\n\tLength             uint32\n\tSecurityDescriptor *byte\n\tInheritHandle      uint32\n}\n\nconst (\n\tcERROR_PIPE_BUSY      = syscall.Errno(231)\n\tcERROR_PIPE_CONNECTED = syscall.Errno(535)\n\tcERROR_SEM_TIMEOUT    = syscall.Errno(121)\n\n\tcPIPE_ACCESS_DUPLEX            = 0x3\n\tcFILE_FLAG_FIRST_PIPE_INSTANCE = 0x80000\n\tcSECURITY_SQOS_PRESENT         = 0x100000\n\tcSECURITY_ANONYMOUS            = 0\n\n\tcPIPE_REJECT_REMOTE_CLIENTS = 0x8\n\n\tcPIPE_UNLIMITED_INSTANCES = 255\n\n\tcNMPWAIT_USE_DEFAULT_WAIT = 0\n\tcNMPWAIT_NOWAIT           = 1\n\n\tcPIPE_TYPE_MESSAGE = 4\n\n\tcPIPE_READMODE_MESSAGE = 2\n)\n\nvar (\n\t// ErrPipeListenerClosed is returned for pipe operations on listeners that have been closed.\n\t// This error should match net.errClosing since docker takes a dependency on its text.\n\tErrPipeListenerClosed = errors.New(\"use of closed network connection\")\n\n\terrPipeWriteClosed = errors.New(\"pipe has been closed for write\")\n)\n\ntype win32Pipe struct {\n\t*win32File\n\tpath string\n}\n\ntype win32MessageBytePipe struct {\n\twin32Pipe\n\twriteClosed bool\n\treadEOF     bool\n}\n\ntype pipeAddress string\n\nfunc (f *win32Pipe) LocalAddr() net.Addr {\n\treturn pipeAddress(f.path)\n}\n\nfunc (f *win32Pipe) RemoteAddr() net.Addr {\n\treturn pipeAddress(f.path)\n}\n\nfunc (f *win32Pipe) SetDeadline(t time.Time) error {\n\tf.SetReadDeadline(t)\n\tf.SetWriteDeadline(t)\n\treturn nil\n}\n\n// CloseWrite closes the write side of a message pipe in byte mode.\nfunc (f *win32MessageBytePipe) CloseWrite() error {\n\tif f.writeClosed {\n\t\treturn errPipeWriteClosed\n\t}\n\t_, err := f.win32File.Write(nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tf.writeClosed = true\n\treturn nil\n}\n\n// Write writes bytes to a message pipe in byte mode. Zero-byte writes are ignored, since\n// they are used to implement CloseWrite().\nfunc (f *win32MessageBytePipe) Write(b []byte) (int, error) {\n\tif f.writeClosed {\n\t\treturn 0, errPipeWriteClosed\n\t}\n\tif len(b) == 0 {\n\t\treturn 0, nil\n\t}\n\treturn f.win32File.Write(b)\n}\n\n// Read reads bytes from a message pipe in byte mode. A read of a zero-byte message on a message\n// mode pipe will return io.EOF, as will all subsequent reads.\nfunc (f *win32MessageBytePipe) Read(b []byte) (int, error) {\n\tif f.readEOF {\n\t\treturn 0, io.EOF\n\t}\n\tn, err := f.win32File.Read(b)\n\tif err == io.EOF {\n\t\t// If this was the result of a zero-byte read, then\n\t\t// it is possible that the read was due to a zero-size\n\t\t// message. Since we are simulating CloseWrite with a\n\t\t// zero-byte message, ensure that all future Read() calls\n\t\t// also return EOF.\n\t\tf.readEOF = true\n\t}\n\treturn n, err\n}\n\nfunc (s pipeAddress) Network() string {\n\treturn \"pipe\"\n}\n\nfunc (s pipeAddress) String() string {\n\treturn string(s)\n}\n\n// DialPipe connects to a named pipe by path, timing out if the connection\n// takes longer than the specified duration. If timeout is nil, then the timeout\n// is the default timeout established by the pipe server.\nfunc DialPipe(path string, timeout *time.Duration) (net.Conn, error) {\n\tvar absTimeout time.Time\n\tif timeout != nil {\n\t\tabsTimeout = time.Now().Add(*timeout)\n\t}\n\tvar err error\n\tvar h syscall.Handle\n\tfor {\n\t\th, err = createFile(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_OVERLAPPED|cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0)\n\t\tif err != cERROR_PIPE_BUSY {\n\t\t\tbreak\n\t\t}\n\t\tnow := time.Now()\n\t\tvar ms uint32\n\t\tif absTimeout.IsZero() {\n\t\t\tms = cNMPWAIT_USE_DEFAULT_WAIT\n\t\t} else if now.After(absTimeout) {\n\t\t\tms = cNMPWAIT_NOWAIT\n\t\t} else {\n\t\t\tms = uint32(absTimeout.Sub(now).Nanoseconds() / 1000 / 1000)\n\t\t}\n\t\terr = waitNamedPipe(path, ms)\n\t\tif err != nil {\n\t\t\tif err == cERROR_SEM_TIMEOUT {\n\t\t\t\treturn nil, ErrTimeout\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: path, Err: err}\n\t}\n\n\tvar flags uint32\n\terr = getNamedPipeInfo(h, &flags, nil, nil, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar state uint32\n\terr = getNamedPipeHandleState(h, &state, nil, nil, nil, nil, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif state&cPIPE_READMODE_MESSAGE != 0 {\n\t\treturn nil, &os.PathError{Op: \"open\", Path: path, Err: errors.New(\"message readmode pipes not supported\")}\n\t}\n\n\tf, err := makeWin32File(h)\n\tif err != nil {\n\t\tsyscall.Close(h)\n\t\treturn nil, err\n\t}\n\n\t// If the pipe is in message mode, return a message byte pipe, which\n\t// supports CloseWrite().\n\tif flags&cPIPE_TYPE_MESSAGE != 0 {\n\t\treturn &win32MessageBytePipe{\n\t\t\twin32Pipe: win32Pipe{win32File: f, path: path},\n\t\t}, nil\n\t}\n\treturn &win32Pipe{win32File: f, path: path}, nil\n}\n\ntype acceptResponse struct {\n\tf   *win32File\n\terr error\n}\n\ntype win32PipeListener struct {\n\tfirstHandle        syscall.Handle\n\tpath               string\n\tsecurityDescriptor []byte\n\tconfig             PipeConfig\n\tacceptCh           chan (chan acceptResponse)\n\tcloseCh            chan int\n\tdoneCh             chan int\n}\n\nfunc makeServerPipeHandle(path string, securityDescriptor []byte, c *PipeConfig, first bool) (syscall.Handle, error) {\n\tvar flags uint32 = cPIPE_ACCESS_DUPLEX | syscall.FILE_FLAG_OVERLAPPED\n\tif first {\n\t\tflags |= cFILE_FLAG_FIRST_PIPE_INSTANCE\n\t}\n\n\tvar mode uint32 = cPIPE_REJECT_REMOTE_CLIENTS\n\tif c.MessageMode {\n\t\tmode |= cPIPE_TYPE_MESSAGE\n\t}\n\n\tvar sa securityAttributes\n\tsa.Length = uint32(unsafe.Sizeof(sa))\n\tif securityDescriptor != nil {\n\t\tsa.SecurityDescriptor = &securityDescriptor[0]\n\t}\n\th, err := createNamedPipe(path, flags, mode, cPIPE_UNLIMITED_INSTANCES, uint32(c.OutputBufferSize), uint32(c.InputBufferSize), 0, &sa)\n\tif err != nil {\n\t\treturn 0, &os.PathError{Op: \"open\", Path: path, Err: err}\n\t}\n\treturn h, nil\n}\n\nfunc (l *win32PipeListener) makeServerPipe() (*win32File, error) {\n\th, err := makeServerPipeHandle(l.path, l.securityDescriptor, &l.config, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tf, err := makeWin32File(h)\n\tif err != nil {\n\t\tsyscall.Close(h)\n\t\treturn nil, err\n\t}\n\treturn f, nil\n}\n\nfunc (l *win32PipeListener) listenerRoutine() {\n\tclosed := false\n\tfor !closed {\n\t\tselect {\n\t\tcase <-l.closeCh:\n\t\t\tclosed = true\n\t\tcase responseCh := <-l.acceptCh:\n\t\t\tp, err := l.makeServerPipe()\n\t\t\tif err == nil {\n\t\t\t\t// Wait for the client to connect.\n\t\t\t\tch := make(chan error)\n\t\t\t\tgo func() {\n\t\t\t\t\tch <- connectPipe(p)\n\t\t\t\t}()\n\t\t\t\tselect {\n\t\t\t\tcase err = <-ch:\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tp.Close()\n\t\t\t\t\t\tp = nil\n\t\t\t\t\t}\n\t\t\t\tcase <-l.closeCh:\n\t\t\t\t\t// Abort the connect request by closing the handle.\n\t\t\t\t\tp.Close()\n\t\t\t\t\tp = nil\n\t\t\t\t\terr = <-ch\n\t\t\t\t\tif err == nil || err == ErrFileClosed {\n\t\t\t\t\t\terr = ErrPipeListenerClosed\n\t\t\t\t\t}\n\t\t\t\t\tclosed = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tresponseCh <- acceptResponse{p, err}\n\t\t}\n\t}\n\tsyscall.Close(l.firstHandle)\n\tl.firstHandle = 0\n\t// Notify Close() and Accept() callers that the handle has been closed.\n\tclose(l.doneCh)\n}\n\n// PipeConfig contain configuration for the pipe listener.\ntype PipeConfig struct {\n\t// SecurityDescriptor contains a Windows security descriptor in SDDL format.\n\tSecurityDescriptor string\n\n\t// MessageMode determines whether the pipe is in byte or message mode. In either\n\t// case the pipe is read in byte mode by default. The only practical difference in\n\t// this implementation is that CloseWrite() is only supported for message mode pipes;\n\t// CloseWrite() is implemented as a zero-byte write, but zero-byte writes are only\n\t// transferred to the reader (and returned as io.EOF in this implementation)\n\t// when the pipe is in message mode.\n\tMessageMode bool\n\n\t// InputBufferSize specifies the size the input buffer, in bytes.\n\tInputBufferSize int32\n\n\t// OutputBufferSize specifies the size the input buffer, in bytes.\n\tOutputBufferSize int32\n}\n\n// ListenPipe creates a listener on a Windows named pipe path, e.g. \\\\.\\pipe\\mypipe.\n// The pipe must not already exist.\nfunc ListenPipe(path string, c *PipeConfig) (net.Listener, error) {\n\tvar (\n\t\tsd  []byte\n\t\terr error\n\t)\n\tif c == nil {\n\t\tc = &PipeConfig{}\n\t}\n\tif c.SecurityDescriptor != \"\" {\n\t\tsd, err = SddlToSecurityDescriptor(c.SecurityDescriptor)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\th, err := makeServerPipeHandle(path, sd, c, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Immediately open and then close a client handle so that the named pipe is\n\t// created but not currently accepting connections.\n\th2, err := createFile(path, 0, 0, nil, syscall.OPEN_EXISTING, cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0)\n\tif err != nil {\n\t\tsyscall.Close(h)\n\t\treturn nil, err\n\t}\n\tsyscall.Close(h2)\n\tl := &win32PipeListener{\n\t\tfirstHandle:        h,\n\t\tpath:               path,\n\t\tsecurityDescriptor: sd,\n\t\tconfig:             *c,\n\t\tacceptCh:           make(chan (chan acceptResponse)),\n\t\tcloseCh:            make(chan int),\n\t\tdoneCh:             make(chan int),\n\t}\n\tgo l.listenerRoutine()\n\treturn l, nil\n}\n\nfunc connectPipe(p *win32File) error {\n\tc, err := p.prepareIo()\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = connectNamedPipe(p.handle, &c.o)\n\t_, err = p.asyncIo(c, time.Time{}, 0, err)\n\tif err != nil && err != cERROR_PIPE_CONNECTED {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (l *win32PipeListener) Accept() (net.Conn, error) {\n\tch := make(chan acceptResponse)\n\tselect {\n\tcase l.acceptCh <- ch:\n\t\tresponse := <-ch\n\t\terr := response.err\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif l.config.MessageMode {\n\t\t\treturn &win32MessageBytePipe{\n\t\t\t\twin32Pipe: win32Pipe{win32File: response.f, path: l.path},\n\t\t\t}, nil\n\t\t}\n\t\treturn &win32Pipe{win32File: response.f, path: l.path}, nil\n\tcase <-l.doneCh:\n\t\treturn nil, ErrPipeListenerClosed\n\t}\n}\n\nfunc (l *win32PipeListener) Close() error {\n\tselect {\n\tcase l.closeCh <- 1:\n\t\t<-l.doneCh\n\tcase <-l.doneCh:\n\t}\n\treturn nil\n}\n\nfunc (l *win32PipeListener) Addr() net.Addr {\n\treturn pipeAddress(l.path)\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/privilege.go",
    "content": "package winio\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"syscall\"\n\t\"unicode/utf16\"\n)\n\n//sys adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) [true] = advapi32.AdjustTokenPrivileges\n//sys impersonateSelf(level uint32) (err error) = advapi32.ImpersonateSelf\n//sys revertToSelf() (err error) = advapi32.RevertToSelf\n//sys openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) = advapi32.OpenThreadToken\n//sys getCurrentThread() (h syscall.Handle) = GetCurrentThread\n//sys lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) = advapi32.LookupPrivilegeValueW\n//sys lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) = advapi32.LookupPrivilegeNameW\n//sys lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) = advapi32.LookupPrivilegeDisplayNameW\n\nconst (\n\tSE_PRIVILEGE_ENABLED = 2\n\n\tERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300\n\n\tSeBackupPrivilege  = \"SeBackupPrivilege\"\n\tSeRestorePrivilege = \"SeRestorePrivilege\"\n)\n\nconst (\n\tsecurityAnonymous = iota\n\tsecurityIdentification\n\tsecurityImpersonation\n\tsecurityDelegation\n)\n\ntype PrivilegeError struct {\n\tprivileges []uint64\n}\n\nfunc (e *PrivilegeError) Error() string {\n\ts := \"\"\n\tif len(e.privileges) > 1 {\n\t\ts = \"Could not enable privileges \"\n\t} else {\n\t\ts = \"Could not enable privilege \"\n\t}\n\tfor i, p := range e.privileges {\n\t\tif i != 0 {\n\t\t\ts += \", \"\n\t\t}\n\t\ts += `\"`\n\t\ts += getPrivilegeName(p)\n\t\ts += `\"`\n\t}\n\treturn s\n}\n\nfunc RunWithPrivilege(name string, fn func() error) error {\n\treturn RunWithPrivileges([]string{name}, fn)\n}\n\nfunc RunWithPrivileges(names []string, fn func() error) error {\n\tvar privileges []uint64\n\tfor _, name := range names {\n\t\tp := uint64(0)\n\t\terr := lookupPrivilegeValue(\"\", name, &p)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivileges = append(privileges, p)\n\t}\n\truntime.LockOSThread()\n\tdefer runtime.UnlockOSThread()\n\ttoken, err := newThreadToken()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer releaseThreadToken(token)\n\terr = adjustPrivileges(token, privileges)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn fn()\n}\n\nfunc adjustPrivileges(token syscall.Handle, privileges []uint64) error {\n\tvar b bytes.Buffer\n\tbinary.Write(&b, binary.LittleEndian, uint32(len(privileges)))\n\tfor _, p := range privileges {\n\t\tbinary.Write(&b, binary.LittleEndian, p)\n\t\tbinary.Write(&b, binary.LittleEndian, uint32(SE_PRIVILEGE_ENABLED))\n\t}\n\tprevState := make([]byte, b.Len())\n\treqSize := uint32(0)\n\tsuccess, err := adjustTokenPrivileges(token, false, &b.Bytes()[0], uint32(len(prevState)), &prevState[0], &reqSize)\n\tif !success {\n\t\treturn err\n\t}\n\tif err == ERROR_NOT_ALL_ASSIGNED {\n\t\treturn &PrivilegeError{privileges}\n\t}\n\treturn nil\n}\n\nfunc getPrivilegeName(luid uint64) string {\n\tvar nameBuffer [256]uint16\n\tbufSize := uint32(len(nameBuffer))\n\terr := lookupPrivilegeName(\"\", &luid, &nameBuffer[0], &bufSize)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"<unknown privilege %d>\", luid)\n\t}\n\n\tvar displayNameBuffer [256]uint16\n\tdisplayBufSize := uint32(len(displayNameBuffer))\n\tvar langId uint32\n\terr = lookupPrivilegeDisplayName(\"\", &nameBuffer[0], &displayNameBuffer[0], &displayBufSize, &langId)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"<unknown privilege %s>\", utf16.Decode(nameBuffer[:bufSize]))\n\t}\n\n\treturn string(utf16.Decode(displayNameBuffer[:displayBufSize]))\n}\n\nfunc newThreadToken() (syscall.Handle, error) {\n\terr := impersonateSelf(securityImpersonation)\n\tif err != nil {\n\t\tpanic(err)\n\t\treturn 0, err\n\t}\n\n\tvar token syscall.Handle\n\terr = openThreadToken(getCurrentThread(), syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, false, &token)\n\tif err != nil {\n\t\trerr := revertToSelf()\n\t\tif rerr != nil {\n\t\t\tpanic(rerr)\n\t\t}\n\t\treturn 0, err\n\t}\n\treturn token, nil\n}\n\nfunc releaseThreadToken(h syscall.Handle) {\n\terr := revertToSelf()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tsyscall.Close(h)\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/reparse.go",
    "content": "package winio\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\nconst (\n\treparseTagMountPoint = 0xA0000003\n\treparseTagSymlink    = 0xA000000C\n)\n\ntype reparseDataBuffer struct {\n\tReparseTag           uint32\n\tReparseDataLength    uint16\n\tReserved             uint16\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n}\n\n// ReparsePoint describes a Win32 symlink or mount point.\ntype ReparsePoint struct {\n\tTarget       string\n\tIsMountPoint bool\n}\n\n// UnsupportedReparsePointError is returned when trying to decode a non-symlink or\n// mount point reparse point.\ntype UnsupportedReparsePointError struct {\n\tTag uint32\n}\n\nfunc (e *UnsupportedReparsePointError) Error() string {\n\treturn fmt.Sprintf(\"unsupported reparse point %x\", e.Tag)\n}\n\n// DecodeReparsePoint decodes a Win32 REPARSE_DATA_BUFFER structure containing either a symlink\n// or a mount point.\nfunc DecodeReparsePoint(b []byte) (*ReparsePoint, error) {\n\tisMountPoint := false\n\ttag := binary.LittleEndian.Uint32(b[0:4])\n\tswitch tag {\n\tcase reparseTagMountPoint:\n\t\tisMountPoint = true\n\tcase reparseTagSymlink:\n\tdefault:\n\t\treturn nil, &UnsupportedReparsePointError{tag}\n\t}\n\tnameOffset := 16 + binary.LittleEndian.Uint16(b[12:14])\n\tif !isMountPoint {\n\t\tnameOffset += 4\n\t}\n\tnameLength := binary.LittleEndian.Uint16(b[14:16])\n\tname := make([]uint16, nameLength/2)\n\terr := binary.Read(bytes.NewReader(b[nameOffset:nameOffset+nameLength]), binary.LittleEndian, &name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ReparsePoint{string(utf16.Decode(name)), isMountPoint}, nil\n}\n\nfunc isDriveLetter(c byte) bool {\n\treturn (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')\n}\n\n// EncodeReparsePoint encodes a Win32 REPARSE_DATA_BUFFER structure describing a symlink or\n// mount point.\nfunc EncodeReparsePoint(rp *ReparsePoint) []byte {\n\t// Generate an NT path and determine if this is a relative path.\n\tvar ntTarget string\n\trelative := false\n\tif strings.HasPrefix(rp.Target, `\\\\?\\`) {\n\t\tntTarget = rp.Target\n\t} else if strings.HasPrefix(rp.Target, `\\\\`) {\n\t\tntTarget = `\\??\\UNC\\` + rp.Target[2:]\n\t} else if len(rp.Target) >= 2 && isDriveLetter(rp.Target[0]) && rp.Target[1] == ':' {\n\t\tntTarget = `\\??\\` + rp.Target\n\t} else {\n\t\tntTarget = rp.Target\n\t\trelative = true\n\t}\n\n\t// The paths must be NUL-terminated even though they are counted strings.\n\ttarget16 := utf16.Encode([]rune(rp.Target + \"\\x00\"))\n\tntTarget16 := utf16.Encode([]rune(ntTarget + \"\\x00\"))\n\n\tsize := int(unsafe.Sizeof(reparseDataBuffer{})) - 8\n\tsize += len(ntTarget16)*2 + len(target16)*2\n\n\ttag := uint32(reparseTagMountPoint)\n\tif !rp.IsMountPoint {\n\t\ttag = reparseTagSymlink\n\t\tsize += 4 // Add room for symlink flags\n\t}\n\n\tdata := reparseDataBuffer{\n\t\tReparseTag:           tag,\n\t\tReparseDataLength:    uint16(size),\n\t\tSubstituteNameOffset: 0,\n\t\tSubstituteNameLength: uint16((len(ntTarget16) - 1) * 2),\n\t\tPrintNameOffset:      uint16(len(ntTarget16) * 2),\n\t\tPrintNameLength:      uint16((len(target16) - 1) * 2),\n\t}\n\n\tvar b bytes.Buffer\n\tbinary.Write(&b, binary.LittleEndian, &data)\n\tif !rp.IsMountPoint {\n\t\tflags := uint32(0)\n\t\tif relative {\n\t\t\tflags |= 1\n\t\t}\n\t\tbinary.Write(&b, binary.LittleEndian, flags)\n\t}\n\n\tbinary.Write(&b, binary.LittleEndian, ntTarget16)\n\tbinary.Write(&b, binary.LittleEndian, target16)\n\treturn b.Bytes()\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/sd.go",
    "content": "package winio\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) = advapi32.LookupAccountNameW\n//sys convertSidToStringSid(sid *byte, str **uint16) (err error) = advapi32.ConvertSidToStringSidW\n//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW\n//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW\n//sys localFree(mem uintptr) = LocalFree\n//sys getSecurityDescriptorLength(sd uintptr) (len uint32) = advapi32.GetSecurityDescriptorLength\n\nconst (\n\tcERROR_NONE_MAPPED = syscall.Errno(1332)\n)\n\ntype AccountLookupError struct {\n\tName string\n\tErr  error\n}\n\nfunc (e *AccountLookupError) Error() string {\n\tif e.Name == \"\" {\n\t\treturn \"lookup account: empty account name specified\"\n\t}\n\tvar s string\n\tswitch e.Err {\n\tcase cERROR_NONE_MAPPED:\n\t\ts = \"not found\"\n\tdefault:\n\t\ts = e.Err.Error()\n\t}\n\treturn \"lookup account \" + e.Name + \": \" + s\n}\n\ntype SddlConversionError struct {\n\tSddl string\n\tErr  error\n}\n\nfunc (e *SddlConversionError) Error() string {\n\treturn \"convert \" + e.Sddl + \": \" + e.Err.Error()\n}\n\n// LookupSidByName looks up the SID of an account by name\nfunc LookupSidByName(name string) (sid string, err error) {\n\tif name == \"\" {\n\t\treturn \"\", &AccountLookupError{name, cERROR_NONE_MAPPED}\n\t}\n\n\tvar sidSize, sidNameUse, refDomainSize uint32\n\terr = lookupAccountName(nil, name, nil, &sidSize, nil, &refDomainSize, &sidNameUse)\n\tif err != nil && err != syscall.ERROR_INSUFFICIENT_BUFFER {\n\t\treturn \"\", &AccountLookupError{name, err}\n\t}\n\tsidBuffer := make([]byte, sidSize)\n\trefDomainBuffer := make([]uint16, refDomainSize)\n\terr = lookupAccountName(nil, name, &sidBuffer[0], &sidSize, &refDomainBuffer[0], &refDomainSize, &sidNameUse)\n\tif err != nil {\n\t\treturn \"\", &AccountLookupError{name, err}\n\t}\n\tvar strBuffer *uint16\n\terr = convertSidToStringSid(&sidBuffer[0], &strBuffer)\n\tif err != nil {\n\t\treturn \"\", &AccountLookupError{name, err}\n\t}\n\tsid = syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(strBuffer))[:])\n\tlocalFree(uintptr(unsafe.Pointer(strBuffer)))\n\treturn sid, nil\n}\n\nfunc SddlToSecurityDescriptor(sddl string) ([]byte, error) {\n\tvar sdBuffer uintptr\n\terr := convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &sdBuffer, nil)\n\tif err != nil {\n\t\treturn nil, &SddlConversionError{sddl, err}\n\t}\n\tdefer localFree(sdBuffer)\n\tsd := make([]byte, getSecurityDescriptorLength(sdBuffer))\n\tcopy(sd, (*[0xffff]byte)(unsafe.Pointer(sdBuffer))[:len(sd)])\n\treturn sd, nil\n}\n\nfunc SecurityDescriptorToSddl(sd []byte) (string, error) {\n\tvar sddl *uint16\n\t// The returned string length seems to including an aribtrary number of terminating NULs.\n\t// Don't use it.\n\terr := convertSecurityDescriptorToStringSecurityDescriptor(&sd[0], 1, 0xff, &sddl, nil)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer localFree(uintptr(unsafe.Pointer(sddl)))\n\treturn syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(sddl))[:]), nil\n}\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/syscall.go",
    "content": "package winio\n\n//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go\n"
  },
  {
    "path": "vendor/github.com/Microsoft/go-winio/zsyscall.go",
    "content": "// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT\n\npackage winio\n\nimport \"unsafe\"\nimport \"syscall\"\n\nvar _ unsafe.Pointer\n\nvar (\n\tmodkernel32 = syscall.NewLazyDLL(\"kernel32.dll\")\n\tmodwinmm    = syscall.NewLazyDLL(\"winmm.dll\")\n\tmodadvapi32 = syscall.NewLazyDLL(\"advapi32.dll\")\n\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tproctimeBeginPeriod                                      = modwinmm.NewProc(\"timeBeginPeriod\")\n\tprocConnectNamedPipe                                     = modkernel32.NewProc(\"ConnectNamedPipe\")\n\tprocCreateNamedPipeW                                     = modkernel32.NewProc(\"CreateNamedPipeW\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocWaitNamedPipeW                                       = modkernel32.NewProc(\"WaitNamedPipeW\")\n\tprocGetNamedPipeInfo                                     = modkernel32.NewProc(\"GetNamedPipeInfo\")\n\tprocGetNamedPipeHandleStateW                             = modkernel32.NewProc(\"GetNamedPipeHandleStateW\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocSetFileInformationByHandle                           = modkernel32.NewProc(\"SetFileInformationByHandle\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocGetCurrentThread                                     = modkernel32.NewProc(\"GetCurrentThread\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocLookupPrivilegeNameW                                 = modadvapi32.NewProc(\"LookupPrivilegeNameW\")\n\tprocLookupPrivilegeDisplayNameW                          = modadvapi32.NewProc(\"LookupPrivilegeDisplayNameW\")\n\tprocBackupRead                                           = modkernel32.NewProc(\"BackupRead\")\n\tprocBackupWrite                                          = modkernel32.NewProc(\"BackupWrite\")\n)\n\nfunc cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 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 createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(file), uintptr(port), uintptr(key), uintptr(threadCount), 0, 0)\n\tnewport = syscall.Handle(r0)\n\tif newport == 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 getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 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 setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 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 timeBeginPeriod(period uint32) (n int32) {\n\tr0, _, _ := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0)\n\tn = int32(r0)\n\treturn\n}\n\nfunc connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 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 createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _createNamedPipe(_p0, flags, pipeMode, maxInstances, outSize, inSize, defaultTimeout, sa)\n}\n\nfunc _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *securityAttributes) (handle syscall.Handle, err error) {\n\tr0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0)\n\thandle = syscall.Handle(r0)\n\tif handle == syscall.InvalidHandle {\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 createFile(name string, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _createFile(_p0, access, mode, sa, createmode, attrs, templatefile)\n}\n\nfunc _createFile(name *uint16, access uint32, mode uint32, sa *securityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) {\n\tr0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)\n\thandle = syscall.Handle(r0)\n\tif handle == syscall.InvalidHandle {\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 waitNamedPipe(name string, timeout uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _waitNamedPipe(_p0, timeout)\n}\n\nfunc _waitNamedPipe(name *uint16, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 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 getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 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 getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 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 lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(accountName)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _lookupAccountName(systemName, _p0, sid, sidSize, refDomain, refDomainSize, sidNameUse)\n}\n\nfunc _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 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 convertSidToStringSid(sid *byte, str **uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 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 convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, 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 *uintptr, size *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 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 convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 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 localFree(mem uintptr) {\n\tsyscall.Syscall(procLocalFree.Addr(), 1, uintptr(mem), 0, 0)\n\treturn\n}\n\nfunc getSecurityDescriptorLength(sd uintptr) (len uint32) {\n\tr0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(sd), 0, 0)\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 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 setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 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 adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) {\n\tvar _p0 uint32\n\tif releaseAll {\n\t\t_p0 = 1\n\t} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize)))\n\tsuccess = r0 != 0\n\tif true {\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 impersonateSelf(level uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 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 revertToSelf() (err error) {\n\tr1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 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 openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) {\n\tvar _p0 uint32\n\tif openAsSelf {\n\t\t_p0 = 1\n\t} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 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 getCurrentThread() (h syscall.Handle) {\n\tr0, _, _ := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0)\n\th = syscall.Handle(r0)\n\treturn\n}\n\nfunc lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(systemName)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *uint16\n\t_p1, err = syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _lookupPrivilegeValue(_p0, _p1, luid)\n}\n\nfunc _lookupPrivilegeValue(systemName *uint16, name *uint16, luid *uint64) (err error) {\n\tr1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))\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 lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(systemName)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _lookupPrivilegeName(_p0, luid, buffer, size)\n}\n\nfunc _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 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 lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(systemName)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _lookupPrivilegeDisplayName(_p0, name, buffer, size, languageId)\n}\n\nfunc _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 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 backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 uint32\n\tif abort {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tvar _p2 uint32\n\tif processSecurity {\n\t\t_p2 = 1\n\t} else {\n\t\t_p2 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 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 backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 uint32\n\tif abort {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tvar _p2 uint32\n\tif processSecurity {\n\t\t_p2 = 1\n\t} else {\n\t\t_p2 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 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"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.3\n  - 1.4\n  - 1.5\n  - 1.6\n  - tip\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Klaus Post\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\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/README.md",
    "content": "# cpuid\nPackage cpuid provides information about the CPU running the current program.\n\nCPU features are detected on startup, and kept for fast access through the life of the application.\nCurrently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use.\n\nYou can access the CPU information by accessing the shared CPU variable of the cpuid library.\n\nPackage home: https://github.com/klauspost/cpuid\n\n[![GoDoc][1]][2] [![Build Status][3]][4]\n\n[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg\n[2]: https://godoc.org/github.com/klauspost/cpuid\n[3]: https://travis-ci.org/klauspost/cpuid.svg\n[4]: https://travis-ci.org/klauspost/cpuid\n\n# features\n## CPU Instructions\n*  **CMOV** (i686 CMOV)\n*  **NX** (NX (No-Execute) bit)\n*  **AMD3DNOW** (AMD 3DNOW)\n*  **AMD3DNOWEXT** (AMD 3DNowExt)\n*  **MMX** (standard MMX)\n*  **MMXEXT** (SSE integer functions or AMD MMX ext)\n*  **SSE** (SSE functions)\n*  **SSE2** (P4 SSE functions)\n*  **SSE3** (Prescott SSE3 functions)\n*  **SSSE3** (Conroe SSSE3 functions)\n*  **SSE4** (Penryn SSE4.1 functions)\n*  **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions)\n*  **SSE42** (Nehalem SSE4.2 functions)\n*  **AVX** (AVX functions)\n*  **AVX2** (AVX2 functions)\n*  **FMA3** (Intel FMA 3)\n*  **FMA4** (Bulldozer FMA4 functions)\n*  **XOP** (Bulldozer XOP functions)\n*  **F16C** (Half-precision floating-point conversion)\n*  **BMI1** (Bit Manipulation Instruction Set 1)\n*  **BMI2** (Bit Manipulation Instruction Set 2)\n*  **TBM** (AMD Trailing Bit Manipulation)\n*  **LZCNT** (LZCNT instruction)\n*  **POPCNT** (POPCNT instruction)\n*  **AESNI** (Advanced Encryption Standard New Instructions)\n*  **CLMUL** (Carry-less Multiplication)\n*  **HTT** (Hyperthreading (enabled))\n*  **HLE** (Hardware Lock Elision)\n*  **RTM** (Restricted Transactional Memory)\n*  **RDRAND** (RDRAND instruction is available)\n*  **RDSEED** (RDSEED instruction is available)\n*  **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions))\n*  **SHA** (Intel SHA Extensions)\n*  **AVX512F** (AVX-512 Foundation)\n*  **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions)\n*  **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions)\n*  **AVX512PF** (AVX-512 Prefetch Instructions)\n*  **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions)\n*  **AVX512CD** (AVX-512 Conflict Detection Instructions)\n*  **AVX512BW** (AVX-512 Byte and Word Instructions)\n*  **AVX512VL** (AVX-512 Vector Length Extensions)\n*  **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions)\n*  **MPX** (Intel MPX (Memory Protection Extensions))\n*  **ERMS** (Enhanced REP MOVSB/STOSB)\n*  **RDTSCP** (RDTSCP Instruction)\n*  **CX16** (CMPXCHG16B Instruction)\n*  **SGX** (Software Guard Extensions, with activation details)\n\n## Performance\n*  **RDTSCP()** Returns current cycle count. Can be used for benchmarking.\n*  **SSE2SLOW** (SSE2 is supported, but usually not faster)\n*  **SSE3SLOW** (SSE3 is supported, but usually not faster)\n*  **ATOM** (Atom processor, some SSSE3 instructions are slower)\n*  **Cache line** (Probable size of a cache line).\n*  **L1, L2, L3 Cache size** on newer Intel/AMD CPUs.\n\n## Cpu Vendor/VM\n* **Intel**\n* **AMD**\n* **VIA**\n* **Transmeta**\n* **NSC**\n* **KVM**  (Kernel-based Virtual Machine)\n* **MSVM** (Microsoft Hyper-V or Windows Virtual PC)\n* **VMware**\n* **XenHVM**\n\n# installing\n\n```go get github.com/klauspost/cpuid```\n\n# example\n\n```Go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"github.com/klauspost/cpuid\"\n)\n\nfunc main() {\n\t// Print basic CPU information:\n\tfmt.Println(\"Name:\", cpuid.CPU.BrandName)\n\tfmt.Println(\"PhysicalCores:\", cpuid.CPU.PhysicalCores)\n\tfmt.Println(\"ThreadsPerCore:\", cpuid.CPU.ThreadsPerCore)\n\tfmt.Println(\"LogicalCores:\", cpuid.CPU.LogicalCores)\n\tfmt.Println(\"Family\", cpuid.CPU.Family, \"Model:\", cpuid.CPU.Model)\n\tfmt.Println(\"Features:\", cpuid.CPU.Features)\n\tfmt.Println(\"Cacheline bytes:\", cpuid.CPU.CacheLine)\n\tfmt.Println(\"L1 Data Cache:\", cpuid.CPU.Cache.L1D, \"bytes\")\n\tfmt.Println(\"L1 Instruction Cache:\", cpuid.CPU.Cache.L1D, \"bytes\")\n\tfmt.Println(\"L2 Cache:\", cpuid.CPU.Cache.L2, \"bytes\")\n\tfmt.Println(\"L3 Cache:\", cpuid.CPU.Cache.L3, \"bytes\")\n\n\t// Test if we have a specific feature:\n\tif cpuid.CPU.SSE() {\n\t\tfmt.Println(\"We have Streaming SIMD Extensions\")\n\t}\n}\n```\n\nSample output:\n```\n>go run main.go\nName: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz\nPhysicalCores: 2\nThreadsPerCore: 2\nLogicalCores: 4\nFamily 6 Model: 42\nFeatures: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL\nCacheline bytes: 64\nWe have Streaming SIMD Extensions\n```\n\n# private package\n\nIn the \"private\" folder you can find an autogenerated version of the library you can include in your own packages.\n\nFor this purpose all exports are removed, and functions and constants are lowercased.\n\nThis is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages.\n\n# license\n\nThis code is published under an MIT license. See LICENSE file for more information.\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/cpuid.go",
    "content": "// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.\n\n// Package cpuid provides information about the CPU running the current program.\n//\n// CPU features are detected on startup, and kept for fast access through the life of the application.\n// Currently x86 / x64 (AMD64) is supported.\n//\n// You can access the CPU information by accessing the shared CPU variable of the cpuid library.\n//\n// Package home: https://github.com/klauspost/cpuid\npackage cpuid\n\nimport (\n\t\"strings\"\n)\n\n// Vendor is a representation of a CPU vendor.\ntype Vendor int\n\nconst (\n\tOther Vendor = iota\n\tIntel\n\tAMD\n\tVIA\n\tTransmeta\n\tNSC\n\tKVM  // Kernel-based Virtual Machine\n\tMSVM // Microsoft Hyper-V or Windows Virtual PC\n\tVMware\n\tXenHVM\n)\n\nconst (\n\tCMOV        = 1 << iota // i686 CMOV\n\tNX                      // NX (No-Execute) bit\n\tAMD3DNOW                // AMD 3DNOW\n\tAMD3DNOWEXT             // AMD 3DNowExt\n\tMMX                     // standard MMX\n\tMMXEXT                  // SSE integer functions or AMD MMX ext\n\tSSE                     // SSE functions\n\tSSE2                    // P4 SSE functions\n\tSSE3                    // Prescott SSE3 functions\n\tSSSE3                   // Conroe SSSE3 functions\n\tSSE4                    // Penryn SSE4.1 functions\n\tSSE4A                   // AMD Barcelona microarchitecture SSE4a instructions\n\tSSE42                   // Nehalem SSE4.2 functions\n\tAVX                     // AVX functions\n\tAVX2                    // AVX2 functions\n\tFMA3                    // Intel FMA 3\n\tFMA4                    // Bulldozer FMA4 functions\n\tXOP                     // Bulldozer XOP functions\n\tF16C                    // Half-precision floating-point conversion\n\tBMI1                    // Bit Manipulation Instruction Set 1\n\tBMI2                    // Bit Manipulation Instruction Set 2\n\tTBM                     // AMD Trailing Bit Manipulation\n\tLZCNT                   // LZCNT instruction\n\tPOPCNT                  // POPCNT instruction\n\tAESNI                   // Advanced Encryption Standard New Instructions\n\tCLMUL                   // Carry-less Multiplication\n\tHTT                     // Hyperthreading (enabled)\n\tHLE                     // Hardware Lock Elision\n\tRTM                     // Restricted Transactional Memory\n\tRDRAND                  // RDRAND instruction is available\n\tRDSEED                  // RDSEED instruction is available\n\tADX                     // Intel ADX (Multi-Precision Add-Carry Instruction Extensions)\n\tSHA                     // Intel SHA Extensions\n\tAVX512F                 // AVX-512 Foundation\n\tAVX512DQ                // AVX-512 Doubleword and Quadword Instructions\n\tAVX512IFMA              // AVX-512 Integer Fused Multiply-Add Instructions\n\tAVX512PF                // AVX-512 Prefetch Instructions\n\tAVX512ER                // AVX-512 Exponential and Reciprocal Instructions\n\tAVX512CD                // AVX-512 Conflict Detection Instructions\n\tAVX512BW                // AVX-512 Byte and Word Instructions\n\tAVX512VL                // AVX-512 Vector Length Extensions\n\tAVX512VBMI              // AVX-512 Vector Bit Manipulation Instructions\n\tMPX                     // Intel MPX (Memory Protection Extensions)\n\tERMS                    // Enhanced REP MOVSB/STOSB\n\tRDTSCP                  // RDTSCP Instruction\n\tCX16                    // CMPXCHG16B Instruction\n\tSGX                     // Software Guard Extensions\n\n\t// Performance indicators\n\tSSE2SLOW // SSE2 is supported, but usually not faster\n\tSSE3SLOW // SSE3 is supported, but usually not faster\n\tATOM     // Atom processor, some SSSE3 instructions are slower\n)\n\nvar flagNames = map[Flags]string{\n\tCMOV:        \"CMOV\",        // i686 CMOV\n\tNX:          \"NX\",          // NX (No-Execute) bit\n\tAMD3DNOW:    \"AMD3DNOW\",    // AMD 3DNOW\n\tAMD3DNOWEXT: \"AMD3DNOWEXT\", // AMD 3DNowExt\n\tMMX:         \"MMX\",         // Standard MMX\n\tMMXEXT:      \"MMXEXT\",      // SSE integer functions or AMD MMX ext\n\tSSE:         \"SSE\",         // SSE functions\n\tSSE2:        \"SSE2\",        // P4 SSE2 functions\n\tSSE3:        \"SSE3\",        // Prescott SSE3 functions\n\tSSSE3:       \"SSSE3\",       // Conroe SSSE3 functions\n\tSSE4:        \"SSE4.1\",      // Penryn SSE4.1 functions\n\tSSE4A:       \"SSE4A\",       // AMD Barcelona microarchitecture SSE4a instructions\n\tSSE42:       \"SSE4.2\",      // Nehalem SSE4.2 functions\n\tAVX:         \"AVX\",         // AVX functions\n\tAVX2:        \"AVX2\",        // AVX functions\n\tFMA3:        \"FMA3\",        // Intel FMA 3\n\tFMA4:        \"FMA4\",        // Bulldozer FMA4 functions\n\tXOP:         \"XOP\",         // Bulldozer XOP functions\n\tF16C:        \"F16C\",        // Half-precision floating-point conversion\n\tBMI1:        \"BMI1\",        // Bit Manipulation Instruction Set 1\n\tBMI2:        \"BMI2\",        // Bit Manipulation Instruction Set 2\n\tTBM:         \"TBM\",         // AMD Trailing Bit Manipulation\n\tLZCNT:       \"LZCNT\",       // LZCNT instruction\n\tPOPCNT:      \"POPCNT\",      // POPCNT instruction\n\tAESNI:       \"AESNI\",       // Advanced Encryption Standard New Instructions\n\tCLMUL:       \"CLMUL\",       // Carry-less Multiplication\n\tHTT:         \"HTT\",         // Hyperthreading (enabled)\n\tHLE:         \"HLE\",         // Hardware Lock Elision\n\tRTM:         \"RTM\",         // Restricted Transactional Memory\n\tRDRAND:      \"RDRAND\",      // RDRAND instruction is available\n\tRDSEED:      \"RDSEED\",      // RDSEED instruction is available\n\tADX:         \"ADX\",         // Intel ADX (Multi-Precision Add-Carry Instruction Extensions)\n\tSHA:         \"SHA\",         // Intel SHA Extensions\n\tAVX512F:     \"AVX512F\",     // AVX-512 Foundation\n\tAVX512DQ:    \"AVX512DQ\",    // AVX-512 Doubleword and Quadword Instructions\n\tAVX512IFMA:  \"AVX512IFMA\",  // AVX-512 Integer Fused Multiply-Add Instructions\n\tAVX512PF:    \"AVX512PF\",    // AVX-512 Prefetch Instructions\n\tAVX512ER:    \"AVX512ER\",    // AVX-512 Exponential and Reciprocal Instructions\n\tAVX512CD:    \"AVX512CD\",    // AVX-512 Conflict Detection Instructions\n\tAVX512BW:    \"AVX512BW\",    // AVX-512 Byte and Word Instructions\n\tAVX512VL:    \"AVX512VL\",    // AVX-512 Vector Length Extensions\n\tAVX512VBMI:  \"AVX512VBMI\",  // AVX-512 Vector Bit Manipulation Instructions\n\tMPX:         \"MPX\",         // Intel MPX (Memory Protection Extensions)\n\tERMS:        \"ERMS\",        // Enhanced REP MOVSB/STOSB\n\tRDTSCP:      \"RDTSCP\",      // RDTSCP Instruction\n\tCX16:        \"CX16\",        // CMPXCHG16B Instruction\n\tSGX:         \"SGX\",         // Software Guard Extensions\n\n\t// Performance indicators\n\tSSE2SLOW: \"SSE2SLOW\", // SSE2 supported, but usually not faster\n\tSSE3SLOW: \"SSE3SLOW\", // SSE3 supported, but usually not faster\n\tATOM:     \"ATOM\",     // Atom processor, some SSSE3 instructions are slower\n\n}\n\n// CPUInfo contains information about the detected system CPU.\ntype CPUInfo struct {\n\tBrandName      string // Brand name reported by the CPU\n\tVendorID       Vendor // Comparable CPU vendor ID\n\tHypervisorName string // Hyperrvisor Vendor\n\tFeatures       Flags  // Features of the CPU\n\tPhysicalCores  int    // Number of physical processor cores in your CPU. Will be 0 if undetectable.\n\tThreadsPerCore int    // Number of threads per physical core. Will be 1 if undetectable.\n\tLogicalCores   int    // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable.\n\tFamily         int    // CPU family number\n\tModel          int    // CPU model number\n\tCacheLine      int    // Cache line size in bytes. Will be 0 if undetectable.\n\tCache          struct {\n\t\tL1I int // L1 Instruction Cache (per core or shared). Will be -1 if undetected\n\t\tL1D int // L1 Data Cache (per core or shared). Will be -1 if undetected\n\t\tL2  int // L2 Cache (per core or shared). Will be -1 if undetected\n\t\tL3  int // L3 Instruction Cache (per core or shared). Will be -1 if undetected\n\t}\n\tSGX       SGXSupport\n\tmaxFunc   uint32\n\tmaxExFunc uint32\n}\n\nvar cpuid func(op uint32) (eax, ebx, ecx, edx uint32)\nvar cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32)\nvar xgetbv func(index uint32) (eax, edx uint32)\nvar rdtscpAsm func() (eax, ebx, ecx, edx uint32)\n\n// CPU contains information about the CPU as detected on startup,\n// or when Detect last was called.\n//\n// Use this as the primary entry point to you data,\n// this way queries are\nvar CPU CPUInfo\n\nfunc init() {\n\tinitCPU()\n\tDetect()\n}\n\n// Detect will re-detect current CPU info.\n// This will replace the content of the exported CPU variable.\n//\n// Unless you expect the CPU to change while you are running your program\n// you should not need to call this function.\n// If you call this, you must ensure that no other goroutine is accessing the\n// exported CPU variable.\nfunc Detect() {\n\tCPU.maxFunc = maxFunctionID()\n\tCPU.maxExFunc = maxExtendedFunction()\n\tCPU.BrandName = brandName()\n\tCPU.CacheLine = cacheLine()\n\tCPU.Family, CPU.Model = familyModel()\n\tCPU.Features = support()\n\tCPU.SGX = sgx(CPU.Features&SGX != 0)\n\tCPU.ThreadsPerCore = threadsPerCore()\n\tCPU.LogicalCores = logicalCores()\n\tCPU.PhysicalCores = physicalCores()\n\tCPU.VendorID = vendorID()\n\tCPU.HypervisorName = hypervisorVendorName()\n\tCPU.cacheSize()\n}\n\n// Generated here: http://play.golang.org/p/BxFH2Gdc0G\n\n// Cmov indicates support of CMOV instructions\nfunc (c CPUInfo) Cmov() bool {\n\treturn c.Features&CMOV != 0\n}\n\n// Amd3dnow indicates support of AMD 3DNOW! instructions\nfunc (c CPUInfo) Amd3dnow() bool {\n\treturn c.Features&AMD3DNOW != 0\n}\n\n// Amd3dnowExt indicates support of AMD 3DNOW! Extended instructions\nfunc (c CPUInfo) Amd3dnowExt() bool {\n\treturn c.Features&AMD3DNOWEXT != 0\n}\n\n// MMX indicates support of MMX instructions\nfunc (c CPUInfo) MMX() bool {\n\treturn c.Features&MMX != 0\n}\n\n// MMXExt indicates support of MMXEXT instructions\n// (SSE integer functions or AMD MMX ext)\nfunc (c CPUInfo) MMXExt() bool {\n\treturn c.Features&MMXEXT != 0\n}\n\n// SSE indicates support of SSE instructions\nfunc (c CPUInfo) SSE() bool {\n\treturn c.Features&SSE != 0\n}\n\n// SSE2 indicates support of SSE 2 instructions\nfunc (c CPUInfo) SSE2() bool {\n\treturn c.Features&SSE2 != 0\n}\n\n// SSE3 indicates support of SSE 3 instructions\nfunc (c CPUInfo) SSE3() bool {\n\treturn c.Features&SSE3 != 0\n}\n\n// SSSE3 indicates support of SSSE 3 instructions\nfunc (c CPUInfo) SSSE3() bool {\n\treturn c.Features&SSSE3 != 0\n}\n\n// SSE4 indicates support of SSE 4 (also called SSE 4.1) instructions\nfunc (c CPUInfo) SSE4() bool {\n\treturn c.Features&SSE4 != 0\n}\n\n// SSE42 indicates support of SSE4.2 instructions\nfunc (c CPUInfo) SSE42() bool {\n\treturn c.Features&SSE42 != 0\n}\n\n// AVX indicates support of AVX instructions\n// and operating system support of AVX instructions\nfunc (c CPUInfo) AVX() bool {\n\treturn c.Features&AVX != 0\n}\n\n// AVX2 indicates support of AVX2 instructions\nfunc (c CPUInfo) AVX2() bool {\n\treturn c.Features&AVX2 != 0\n}\n\n// FMA3 indicates support of FMA3 instructions\nfunc (c CPUInfo) FMA3() bool {\n\treturn c.Features&FMA3 != 0\n}\n\n// FMA4 indicates support of FMA4 instructions\nfunc (c CPUInfo) FMA4() bool {\n\treturn c.Features&FMA4 != 0\n}\n\n// XOP indicates support of XOP instructions\nfunc (c CPUInfo) XOP() bool {\n\treturn c.Features&XOP != 0\n}\n\n// F16C indicates support of F16C instructions\nfunc (c CPUInfo) F16C() bool {\n\treturn c.Features&F16C != 0\n}\n\n// BMI1 indicates support of BMI1 instructions\nfunc (c CPUInfo) BMI1() bool {\n\treturn c.Features&BMI1 != 0\n}\n\n// BMI2 indicates support of BMI2 instructions\nfunc (c CPUInfo) BMI2() bool {\n\treturn c.Features&BMI2 != 0\n}\n\n// TBM indicates support of TBM instructions\n// (AMD Trailing Bit Manipulation)\nfunc (c CPUInfo) TBM() bool {\n\treturn c.Features&TBM != 0\n}\n\n// Lzcnt indicates support of LZCNT instruction\nfunc (c CPUInfo) Lzcnt() bool {\n\treturn c.Features&LZCNT != 0\n}\n\n// Popcnt indicates support of POPCNT instruction\nfunc (c CPUInfo) Popcnt() bool {\n\treturn c.Features&POPCNT != 0\n}\n\n// HTT indicates the processor has Hyperthreading enabled\nfunc (c CPUInfo) HTT() bool {\n\treturn c.Features&HTT != 0\n}\n\n// SSE2Slow indicates that SSE2 may be slow on this processor\nfunc (c CPUInfo) SSE2Slow() bool {\n\treturn c.Features&SSE2SLOW != 0\n}\n\n// SSE3Slow indicates that SSE3 may be slow on this processor\nfunc (c CPUInfo) SSE3Slow() bool {\n\treturn c.Features&SSE3SLOW != 0\n}\n\n// AesNi indicates support of AES-NI instructions\n// (Advanced Encryption Standard New Instructions)\nfunc (c CPUInfo) AesNi() bool {\n\treturn c.Features&AESNI != 0\n}\n\n// Clmul indicates support of CLMUL instructions\n// (Carry-less Multiplication)\nfunc (c CPUInfo) Clmul() bool {\n\treturn c.Features&CLMUL != 0\n}\n\n// NX indicates support of NX (No-Execute) bit\nfunc (c CPUInfo) NX() bool {\n\treturn c.Features&NX != 0\n}\n\n// SSE4A indicates support of AMD Barcelona microarchitecture SSE4a instructions\nfunc (c CPUInfo) SSE4A() bool {\n\treturn c.Features&SSE4A != 0\n}\n\n// HLE indicates support of Hardware Lock Elision\nfunc (c CPUInfo) HLE() bool {\n\treturn c.Features&HLE != 0\n}\n\n// RTM indicates support of Restricted Transactional Memory\nfunc (c CPUInfo) RTM() bool {\n\treturn c.Features&RTM != 0\n}\n\n// Rdrand indicates support of RDRAND instruction is available\nfunc (c CPUInfo) Rdrand() bool {\n\treturn c.Features&RDRAND != 0\n}\n\n// Rdseed indicates support of RDSEED instruction is available\nfunc (c CPUInfo) Rdseed() bool {\n\treturn c.Features&RDSEED != 0\n}\n\n// ADX indicates support of Intel ADX (Multi-Precision Add-Carry Instruction Extensions)\nfunc (c CPUInfo) ADX() bool {\n\treturn c.Features&ADX != 0\n}\n\n// SHA indicates support of Intel SHA Extensions\nfunc (c CPUInfo) SHA() bool {\n\treturn c.Features&SHA != 0\n}\n\n// AVX512F indicates support of AVX-512 Foundation\nfunc (c CPUInfo) AVX512F() bool {\n\treturn c.Features&AVX512F != 0\n}\n\n// AVX512DQ indicates support of AVX-512 Doubleword and Quadword Instructions\nfunc (c CPUInfo) AVX512DQ() bool {\n\treturn c.Features&AVX512DQ != 0\n}\n\n// AVX512IFMA indicates support of AVX-512 Integer Fused Multiply-Add Instructions\nfunc (c CPUInfo) AVX512IFMA() bool {\n\treturn c.Features&AVX512IFMA != 0\n}\n\n// AVX512PF indicates support of AVX-512 Prefetch Instructions\nfunc (c CPUInfo) AVX512PF() bool {\n\treturn c.Features&AVX512PF != 0\n}\n\n// AVX512ER indicates support of AVX-512 Exponential and Reciprocal Instructions\nfunc (c CPUInfo) AVX512ER() bool {\n\treturn c.Features&AVX512ER != 0\n}\n\n// AVX512CD indicates support of AVX-512 Conflict Detection Instructions\nfunc (c CPUInfo) AVX512CD() bool {\n\treturn c.Features&AVX512CD != 0\n}\n\n// AVX512BW indicates support of AVX-512 Byte and Word Instructions\nfunc (c CPUInfo) AVX512BW() bool {\n\treturn c.Features&AVX512BW != 0\n}\n\n// AVX512VL indicates support of AVX-512 Vector Length Extensions\nfunc (c CPUInfo) AVX512VL() bool {\n\treturn c.Features&AVX512VL != 0\n}\n\n// AVX512VBMI indicates support of AVX-512 Vector Bit Manipulation Instructions\nfunc (c CPUInfo) AVX512VBMI() bool {\n\treturn c.Features&AVX512VBMI != 0\n}\n\n// MPX indicates support of Intel MPX (Memory Protection Extensions)\nfunc (c CPUInfo) MPX() bool {\n\treturn c.Features&MPX != 0\n}\n\n// ERMS indicates support of Enhanced REP MOVSB/STOSB\nfunc (c CPUInfo) ERMS() bool {\n\treturn c.Features&ERMS != 0\n}\n\nfunc (c CPUInfo) RDTSCP() bool {\n\treturn c.Features&RDTSCP != 0\n}\n\nfunc (c CPUInfo) CX16() bool {\n\treturn c.Features&CX16 != 0\n}\n\n// Atom indicates an Atom processor\nfunc (c CPUInfo) Atom() bool {\n\treturn c.Features&ATOM != 0\n}\n\n// Intel returns true if vendor is recognized as Intel\nfunc (c CPUInfo) Intel() bool {\n\treturn c.VendorID == Intel\n}\n\n// AMD returns true if vendor is recognized as AMD\nfunc (c CPUInfo) AMD() bool {\n\treturn c.VendorID == AMD\n}\n\n// Transmeta returns true if vendor is recognized as Transmeta\nfunc (c CPUInfo) Transmeta() bool {\n\treturn c.VendorID == Transmeta\n}\n\n// NSC returns true if vendor is recognized as National Semiconductor\nfunc (c CPUInfo) NSC() bool {\n\treturn c.VendorID == NSC\n}\n\n// VIA returns true if vendor is recognized as VIA\nfunc (c CPUInfo) VIA() bool {\n\treturn c.VendorID == VIA\n}\n\n// RTCounter returns the 64-bit time-stamp counter\n// Uses the RDTSCP instruction. The value 0 is returned\n// if the CPU does not support the instruction.\nfunc (c CPUInfo) RTCounter() uint64 {\n\tif !c.RDTSCP() {\n\t\treturn 0\n\t}\n\ta, _, _, d := rdtscpAsm()\n\treturn uint64(a) | (uint64(d) << 32)\n}\n\n// Ia32TscAux returns the IA32_TSC_AUX part of the RDTSCP.\n// This variable is OS dependent, but on Linux contains information\n// about the current cpu/core the code is running on.\n// If the RDTSCP instruction isn't supported on the CPU, the value 0 is returned.\nfunc (c CPUInfo) Ia32TscAux() uint32 {\n\tif !c.RDTSCP() {\n\t\treturn 0\n\t}\n\t_, _, ecx, _ := rdtscpAsm()\n\treturn ecx\n}\n\n// LogicalCPU will return the Logical CPU the code is currently executing on.\n// This is likely to change when the OS re-schedules the running thread\n// to another CPU.\n// If the current core cannot be detected, -1 will be returned.\nfunc (c CPUInfo) LogicalCPU() int {\n\tif c.maxFunc < 1 {\n\t\treturn -1\n\t}\n\t_, ebx, _, _ := cpuid(1)\n\treturn int(ebx >> 24)\n}\n\n// VM Will return true if the cpu id indicates we are in\n// a virtual machine. This is only a hint, and will very likely\n// have many false negatives.\nfunc (c CPUInfo) VM() bool {\n\tswitch c.VendorID {\n\tcase MSVM, KVM, VMware, XenHVM:\n\t\treturn true\n\t}\n\treturn false\n}\n\n// Flags contains detected cpu features and caracteristics\ntype Flags uint64\n\n// String returns a string representation of the detected\n// CPU features.\nfunc (f Flags) String() string {\n\treturn strings.Join(f.Strings(), \",\")\n}\n\n// Strings returns and array of the detected features.\nfunc (f Flags) Strings() []string {\n\ts := support()\n\tr := make([]string, 0, 20)\n\tfor i := uint(0); i < 64; i++ {\n\t\tkey := Flags(1 << i)\n\t\tval := flagNames[key]\n\t\tif s&key != 0 {\n\t\t\tr = append(r, val)\n\t\t}\n\t}\n\treturn r\n}\n\nfunc maxExtendedFunction() uint32 {\n\teax, _, _, _ := cpuid(0x80000000)\n\treturn eax\n}\n\nfunc maxFunctionID() uint32 {\n\ta, _, _, _ := cpuid(0)\n\treturn a\n}\n\nfunc isHypervisorActive() bool {\n\t_, _, i, _ := cpuid(0x1)\n\treturn i&(1<<31) != 0\n}\n\nfunc getHypervisorCpuid(ax uint32) string {\n\t_, b, c, d := cpuid(ax)\n\tname := strings.TrimRight(string(valAsString(b, c, d)), \"\\000\")\n\treturn name\n}\n\n// see https://people.redhat.com/~rjones/virt-what/ for how full coverage is done\n// Vbox etc will need (optional - only do if root) dmi access\nfunc hypervisorName() string {\n\tif !isHypervisorActive() {\n\t\treturn \"\"\n\t}\n\t// KVM has been caught to move its real signature to this leaf, and put something completely different in the\n\t// standard location. So this leaf must be checked first.\n\t// Sven removed it - in one test system, this leaf returns garbage :(\n\t//if hv := getHypervisorCpuid(0x40000100); hv != \"\" {\n\t//\treturn hv\n\t//}\n\n\treturn getHypervisorCpuid(0x40000000)\n}\n\n// https://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID\nvar hvmap = map[string]string{\n\t\"bhyve bhyve \": \"bhyve\",\n\t\"KVMKVMKVM\":    \"kvm\",\n\t\"Microsoft Hv\": \"hyperv\",\n\t\"VMwareVMware\": \"vmware\",\n\t\"XenVMMXenVMM\": \"xenhvm\",\n}\n\nfunc hypervisorVendorName() string {\n\tname := hypervisorName()\n\tif n, ok := hvmap[name]; ok {\n\t\treturn n\n\t}\n\treturn name\n}\n\nfunc brandName() string {\n\tif maxExtendedFunction() >= 0x80000004 {\n\t\tv := make([]uint32, 0, 48)\n\t\tfor i := uint32(0); i < 3; i++ {\n\t\t\ta, b, c, d := cpuid(0x80000002 + i)\n\t\t\tv = append(v, a, b, c, d)\n\t\t}\n\t\treturn strings.Trim(string(valAsString(v...)), \" \")\n\t}\n\treturn \"unknown\"\n}\n\nfunc threadsPerCore() int {\n\tmfi := maxFunctionID()\n\tif mfi < 0x4 || vendorID() != Intel {\n\t\treturn 1\n\t}\n\n\tif mfi < 0xb {\n\t\t_, b, _, d := cpuid(1)\n\t\tif (d & (1 << 28)) != 0 {\n\t\t\t// v will contain logical core count\n\t\t\tv := (b >> 16) & 255\n\t\t\tif v > 1 {\n\t\t\t\ta4, _, _, _ := cpuid(4)\n\t\t\t\t// physical cores\n\t\t\t\tv2 := (a4 >> 26) + 1\n\t\t\t\tif v2 > 0 {\n\t\t\t\t\treturn int(v) / int(v2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 1\n\t}\n\t_, b, _, _ := cpuidex(0xb, 0)\n\tif b&0xffff == 0 {\n\t\treturn 1\n\t}\n\treturn int(b & 0xffff)\n}\n\nfunc logicalCores() int {\n\tmfi := maxFunctionID()\n\tswitch vendorID() {\n\tcase Intel:\n\t\t// Use this on old Intel processors\n\t\tif mfi < 0xb {\n\t\t\tif mfi < 1 {\n\t\t\t\treturn 0\n\t\t\t}\n\t\t\t// CPUID.1:EBX[23:16] represents the maximum number of addressable IDs (initial APIC ID)\n\t\t\t// that can be assigned to logical processors in a physical package.\n\t\t\t// The value may not be the same as the number of logical processors that are present in the hardware of a physical package.\n\t\t\t_, ebx, _, _ := cpuid(1)\n\t\t\tlogical := (ebx >> 16) & 0xff\n\t\t\treturn int(logical)\n\t\t}\n\t\t_, b, _, _ := cpuidex(0xb, 1)\n\t\treturn int(b & 0xffff)\n\tcase AMD:\n\t\t_, b, _, _ := cpuid(1)\n\t\treturn int((b >> 16) & 0xff)\n\tdefault:\n\t\treturn 0\n\t}\n}\n\nfunc familyModel() (int, int) {\n\tif maxFunctionID() < 0x1 {\n\t\treturn 0, 0\n\t}\n\teax, _, _, _ := cpuid(1)\n\tfamily := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff)\n\tmodel := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0)\n\treturn int(family), int(model)\n}\n\nfunc physicalCores() int {\n\tswitch vendorID() {\n\tcase Intel:\n\t\treturn logicalCores() / threadsPerCore()\n\tcase AMD:\n\t\tif maxExtendedFunction() >= 0x80000008 {\n\t\t\t_, _, c, _ := cpuid(0x80000008)\n\t\t\treturn int(c&0xff) + 1\n\t\t}\n\t}\n\treturn 0\n}\n\n// Except from http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID\nvar vendorMapping = map[string]Vendor{\n\t\"AMDisbetter!\": AMD,\n\t\"AuthenticAMD\": AMD,\n\t\"CentaurHauls\": VIA,\n\t\"GenuineIntel\": Intel,\n\t\"TransmetaCPU\": Transmeta,\n\t\"GenuineTMx86\": Transmeta,\n\t\"Geode by NSC\": NSC,\n\t\"VIA VIA VIA \": VIA,\n\t\"KVMKVMKVMKVM\": KVM,\n\t\"Microsoft Hv\": MSVM,\n\t\"VMwareVMware\": VMware,\n\t\"XenVMMXenVMM\": XenHVM,\n}\n\nfunc vendorID() Vendor {\n\t_, b, c, d := cpuid(0)\n\tv := valAsString(b, d, c)\n\tvend, ok := vendorMapping[string(v)]\n\tif !ok {\n\t\treturn Other\n\t}\n\treturn vend\n}\n\nfunc cacheLine() int {\n\tif maxFunctionID() < 0x1 {\n\t\treturn 0\n\t}\n\n\t_, ebx, _, _ := cpuid(1)\n\tcache := (ebx & 0xff00) >> 5 // cflush size\n\tif cache == 0 && maxExtendedFunction() >= 0x80000006 {\n\t\t_, _, ecx, _ := cpuid(0x80000006)\n\t\tcache = ecx & 0xff // cacheline size\n\t}\n\t// TODO: Read from Cache and TLB Information\n\treturn int(cache)\n}\n\nfunc (c *CPUInfo) cacheSize() {\n\tc.Cache.L1D = -1\n\tc.Cache.L1I = -1\n\tc.Cache.L2 = -1\n\tc.Cache.L3 = -1\n\tvendor := vendorID()\n\tswitch vendor {\n\tcase Intel:\n\t\tif maxFunctionID() < 4 {\n\t\t\treturn\n\t\t}\n\t\tfor i := uint32(0); ; i++ {\n\t\t\teax, ebx, ecx, _ := cpuidex(4, i)\n\t\t\tcacheType := eax & 15\n\t\t\tif cacheType == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcacheLevel := (eax >> 5) & 7\n\t\t\tcoherency := int(ebx&0xfff) + 1\n\t\t\tpartitions := int((ebx>>12)&0x3ff) + 1\n\t\t\tassociativity := int((ebx>>22)&0x3ff) + 1\n\t\t\tsets := int(ecx) + 1\n\t\t\tsize := associativity * partitions * coherency * sets\n\t\t\tswitch cacheLevel {\n\t\t\tcase 1:\n\t\t\t\tif cacheType == 1 {\n\t\t\t\t\t// 1 = Data Cache\n\t\t\t\t\tc.Cache.L1D = size\n\t\t\t\t} else if cacheType == 2 {\n\t\t\t\t\t// 2 = Instruction Cache\n\t\t\t\t\tc.Cache.L1I = size\n\t\t\t\t} else {\n\t\t\t\t\tif c.Cache.L1D < 0 {\n\t\t\t\t\t\tc.Cache.L1I = size\n\t\t\t\t\t}\n\t\t\t\t\tif c.Cache.L1I < 0 {\n\t\t\t\t\t\tc.Cache.L1I = size\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tc.Cache.L2 = size\n\t\t\tcase 3:\n\t\t\t\tc.Cache.L3 = size\n\t\t\t}\n\t\t}\n\tcase AMD:\n\t\t// Untested.\n\t\tif maxExtendedFunction() < 0x80000005 {\n\t\t\treturn\n\t\t}\n\t\t_, _, ecx, edx := cpuid(0x80000005)\n\t\tc.Cache.L1D = int(((ecx >> 24) & 0xFF) * 1024)\n\t\tc.Cache.L1I = int(((edx >> 24) & 0xFF) * 1024)\n\n\t\tif maxExtendedFunction() < 0x80000006 {\n\t\t\treturn\n\t\t}\n\t\t_, _, ecx, _ = cpuid(0x80000006)\n\t\tc.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024)\n\t}\n\n\treturn\n}\n\ntype SGXSupport struct {\n\tAvailable           bool\n\tSGX1Supported       bool\n\tSGX2Supported       bool\n\tMaxEnclaveSizeNot64 int64\n\tMaxEnclaveSize64    int64\n}\n\nfunc sgx(available bool) (rval SGXSupport) {\n\trval.Available = available\n\n\tif !available {\n\t\treturn\n\t}\n\n\ta, _, _, d := cpuidex(0x12, 0)\n\trval.SGX1Supported = a&0x01 != 0\n\trval.SGX2Supported = a&0x02 != 0\n\trval.MaxEnclaveSizeNot64 = 1 << (d & 0xFF)     // pow 2\n\trval.MaxEnclaveSize64 = 1 << ((d >> 8) & 0xFF) // pow 2\n\n\treturn\n}\n\nfunc support() Flags {\n\tmfi := maxFunctionID()\n\tvend := vendorID()\n\tif mfi < 0x1 {\n\t\treturn 0\n\t}\n\trval := uint64(0)\n\t_, _, c, d := cpuid(1)\n\tif (d & (1 << 15)) != 0 {\n\t\trval |= CMOV\n\t}\n\tif (d & (1 << 23)) != 0 {\n\t\trval |= MMX\n\t}\n\tif (d & (1 << 25)) != 0 {\n\t\trval |= MMXEXT\n\t}\n\tif (d & (1 << 25)) != 0 {\n\t\trval |= SSE\n\t}\n\tif (d & (1 << 26)) != 0 {\n\t\trval |= SSE2\n\t}\n\tif (c & 1) != 0 {\n\t\trval |= SSE3\n\t}\n\tif (c & 0x00000200) != 0 {\n\t\trval |= SSSE3\n\t}\n\tif (c & 0x00080000) != 0 {\n\t\trval |= SSE4\n\t}\n\tif (c & 0x00100000) != 0 {\n\t\trval |= SSE42\n\t}\n\tif (c & (1 << 25)) != 0 {\n\t\trval |= AESNI\n\t}\n\tif (c & (1 << 1)) != 0 {\n\t\trval |= CLMUL\n\t}\n\tif c&(1<<23) != 0 {\n\t\trval |= POPCNT\n\t}\n\tif c&(1<<30) != 0 {\n\t\trval |= RDRAND\n\t}\n\tif c&(1<<29) != 0 {\n\t\trval |= F16C\n\t}\n\tif c&(1<<13) != 0 {\n\t\trval |= CX16\n\t}\n\tif vend == Intel && (d&(1<<28)) != 0 && mfi >= 4 {\n\t\tif threadsPerCore() > 1 {\n\t\t\trval |= HTT\n\t\t}\n\t}\n\n\t// Check XGETBV, OXSAVE and AVX bits\n\tif c&(1<<26) != 0 && c&(1<<27) != 0 && c&(1<<28) != 0 {\n\t\t// Check for OS support\n\t\teax, _ := xgetbv(0)\n\t\tif (eax & 0x6) == 0x6 {\n\t\t\trval |= AVX\n\t\t\tif (c & 0x00001000) != 0 {\n\t\t\t\trval |= FMA3\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check AVX2, AVX2 requires OS support, but BMI1/2 don't.\n\tif mfi >= 7 {\n\t\t_, ebx, ecx, _ := cpuidex(7, 0)\n\t\tif (rval&AVX) != 0 && (ebx&0x00000020) != 0 {\n\t\t\trval |= AVX2\n\t\t}\n\t\tif (ebx & 0x00000008) != 0 {\n\t\t\trval |= BMI1\n\t\t\tif (ebx & 0x00000100) != 0 {\n\t\t\t\trval |= BMI2\n\t\t\t}\n\t\t}\n\t\tif ebx&(1<<2) != 0 {\n\t\t\trval |= SGX\n\t\t}\n\t\tif ebx&(1<<4) != 0 {\n\t\t\trval |= HLE\n\t\t}\n\t\tif ebx&(1<<9) != 0 {\n\t\t\trval |= ERMS\n\t\t}\n\t\tif ebx&(1<<11) != 0 {\n\t\t\trval |= RTM\n\t\t}\n\t\tif ebx&(1<<14) != 0 {\n\t\t\trval |= MPX\n\t\t}\n\t\tif ebx&(1<<18) != 0 {\n\t\t\trval |= RDSEED\n\t\t}\n\t\tif ebx&(1<<19) != 0 {\n\t\t\trval |= ADX\n\t\t}\n\t\tif ebx&(1<<29) != 0 {\n\t\t\trval |= SHA\n\t\t}\n\n\t\t// Only detect AVX-512 features if XGETBV is supported\n\t\tif c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) {\n\t\t\t// Check for OS support\n\t\t\teax, _ := xgetbv(0)\n\n\t\t\t// Verify that XCR0[7:5] = ‘111b’ (OPMASK state, upper 256-bit of ZMM0-ZMM15 and\n\t\t\t// ZMM16-ZMM31 state are enabled by OS)\n\t\t\t/// and that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS).\n\t\t\tif (eax>>5)&7 == 7 && (eax>>1)&3 == 3 {\n\t\t\t\tif ebx&(1<<16) != 0 {\n\t\t\t\t\trval |= AVX512F\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<17) != 0 {\n\t\t\t\t\trval |= AVX512DQ\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<21) != 0 {\n\t\t\t\t\trval |= AVX512IFMA\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<26) != 0 {\n\t\t\t\t\trval |= AVX512PF\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<27) != 0 {\n\t\t\t\t\trval |= AVX512ER\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<28) != 0 {\n\t\t\t\t\trval |= AVX512CD\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<30) != 0 {\n\t\t\t\t\trval |= AVX512BW\n\t\t\t\t}\n\t\t\t\tif ebx&(1<<31) != 0 {\n\t\t\t\t\trval |= AVX512VL\n\t\t\t\t}\n\t\t\t\t// ecx\n\t\t\t\tif ecx&(1<<1) != 0 {\n\t\t\t\t\trval |= AVX512VBMI\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif maxExtendedFunction() >= 0x80000001 {\n\t\t_, _, c, d := cpuid(0x80000001)\n\t\tif (c & (1 << 5)) != 0 {\n\t\t\trval |= LZCNT\n\t\t\trval |= POPCNT\n\t\t}\n\t\tif (d & (1 << 31)) != 0 {\n\t\t\trval |= AMD3DNOW\n\t\t}\n\t\tif (d & (1 << 30)) != 0 {\n\t\t\trval |= AMD3DNOWEXT\n\t\t}\n\t\tif (d & (1 << 23)) != 0 {\n\t\t\trval |= MMX\n\t\t}\n\t\tif (d & (1 << 22)) != 0 {\n\t\t\trval |= MMXEXT\n\t\t}\n\t\tif (c & (1 << 6)) != 0 {\n\t\t\trval |= SSE4A\n\t\t}\n\t\tif d&(1<<20) != 0 {\n\t\t\trval |= NX\n\t\t}\n\t\tif d&(1<<27) != 0 {\n\t\t\trval |= RDTSCP\n\t\t}\n\n\t\t/* Allow for selectively disabling SSE2 functions on AMD processors\n\t\t   with SSE2 support but not SSE4a. This includes Athlon64, some\n\t\t   Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster\n\t\t   than SSE2 often enough to utilize this special-case flag.\n\t\t   AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case\n\t\t   so that SSE2 is used unless explicitly disabled by checking\n\t\t   AV_CPU_FLAG_SSE2SLOW. */\n\t\tif vendorID() != Intel &&\n\t\t\trval&SSE2 != 0 && (c&0x00000040) == 0 {\n\t\t\trval |= SSE2SLOW\n\t\t}\n\n\t\t/* XOP and FMA4 use the AVX instruction coding scheme, so they can't be\n\t\t * used unless the OS has AVX support. */\n\t\tif (rval & AVX) != 0 {\n\t\t\tif (c & 0x00000800) != 0 {\n\t\t\t\trval |= XOP\n\t\t\t}\n\t\t\tif (c & 0x00010000) != 0 {\n\t\t\t\trval |= FMA4\n\t\t\t}\n\t\t}\n\n\t\tif vendorID() == Intel {\n\t\t\tfamily, model := familyModel()\n\t\t\tif family == 6 && (model == 9 || model == 13 || model == 14) {\n\t\t\t\t/* 6/9 (pentium-m \"banias\"), 6/13 (pentium-m \"dothan\"), and\n\t\t\t\t * 6/14 (core1 \"yonah\") theoretically support sse2, but it's\n\t\t\t\t * usually slower than mmx. */\n\t\t\t\tif (rval & SSE2) != 0 {\n\t\t\t\t\trval |= SSE2SLOW\n\t\t\t\t}\n\t\t\t\tif (rval & SSE3) != 0 {\n\t\t\t\t\trval |= SSE3SLOW\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* The Atom processor has SSSE3 support, which is useful in many cases,\n\t\t\t * but sometimes the SSSE3 version is slower than the SSE2 equivalent\n\t\t\t * on the Atom, but is generally faster on other processors supporting\n\t\t\t * SSSE3. This flag allows for selectively disabling certain SSSE3\n\t\t\t * functions on the Atom. */\n\t\t\tif family == 6 && model == 28 {\n\t\t\t\trval |= ATOM\n\t\t\t}\n\t\t}\n\t}\n\treturn Flags(rval)\n}\n\nfunc valAsString(values ...uint32) []byte {\n\tr := make([]byte, 4*len(values))\n\tfor i, v := range values {\n\t\tdst := r[i*4:]\n\t\tdst[0] = byte(v & 0xff)\n\t\tdst[1] = byte((v >> 8) & 0xff)\n\t\tdst[2] = byte((v >> 16) & 0xff)\n\t\tdst[3] = byte((v >> 24) & 0xff)\n\t\tswitch {\n\t\tcase dst[0] == 0:\n\t\t\treturn r[:i*4]\n\t\tcase dst[1] == 0:\n\t\t\treturn r[:i*4+1]\n\t\tcase dst[2] == 0:\n\t\t\treturn r[:i*4+2]\n\t\tcase dst[3] == 0:\n\t\t\treturn r[:i*4+3]\n\t\t}\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/cpuid_386.s",
    "content": "// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.\n\n// +build 386,!gccgo\n\n// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·asmCpuid(SB), 7, $0\n\tXORL CX, CX\n\tMOVL op+0(FP), AX\n\tCPUID\n\tMOVL AX, eax+4(FP)\n\tMOVL BX, ebx+8(FP)\n\tMOVL CX, ecx+12(FP)\n\tMOVL DX, edx+16(FP)\n\tRET\n\n// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·asmCpuidex(SB), 7, $0\n\tMOVL op+0(FP), AX\n\tMOVL op2+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n\n// func xgetbv(index uint32) (eax, edx uint32)\nTEXT ·asmXgetbv(SB), 7, $0\n\tMOVL index+0(FP), CX\n\tBYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV\n\tMOVL AX, eax+4(FP)\n\tMOVL DX, edx+8(FP)\n\tRET\n\n// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32)\nTEXT ·asmRdtscpAsm(SB), 7, $0\n\tBYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP\n\tMOVL AX, eax+0(FP)\n\tMOVL BX, ebx+4(FP)\n\tMOVL CX, ecx+8(FP)\n\tMOVL DX, edx+12(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/cpuid_amd64.s",
    "content": "// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.\n\n//+build amd64,!gccgo\n\n// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·asmCpuid(SB), 7, $0\n\tXORQ CX, CX\n\tMOVL op+0(FP), AX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n\n// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·asmCpuidex(SB), 7, $0\n\tMOVL op+0(FP), AX\n\tMOVL op2+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n\n// func asmXgetbv(index uint32) (eax, edx uint32)\nTEXT ·asmXgetbv(SB), 7, $0\n\tMOVL index+0(FP), CX\n\tBYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV\n\tMOVL AX, eax+8(FP)\n\tMOVL DX, edx+12(FP)\n\tRET\n\n// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32)\nTEXT ·asmRdtscpAsm(SB), 7, $0\n\tBYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP\n\tMOVL AX, eax+0(FP)\n\tMOVL BX, ebx+4(FP)\n\tMOVL CX, ecx+8(FP)\n\tMOVL DX, edx+12(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/detect_intel.go",
    "content": "// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.\n\n// +build 386,!gccgo amd64,!gccgo\n\npackage cpuid\n\nfunc asmCpuid(op uint32) (eax, ebx, ecx, edx uint32)\nfunc asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32)\nfunc asmXgetbv(index uint32) (eax, edx uint32)\nfunc asmRdtscpAsm() (eax, ebx, ecx, edx uint32)\n\nfunc initCPU() {\n\tcpuid = asmCpuid\n\tcpuidex = asmCpuidex\n\txgetbv = asmXgetbv\n\trdtscpAsm = asmRdtscpAsm\n}\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/detect_ref.go",
    "content": "// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file.\n\n// +build !amd64,!386 gccgo\n\npackage cpuid\n\nfunc initCPU() {\n\tcpuid = func(op uint32) (eax, ebx, ecx, edx uint32) {\n\t\treturn 0, 0, 0, 0\n\t}\n\n\tcpuidex = func(op, op2 uint32) (eax, ebx, ecx, edx uint32) {\n\t\treturn 0, 0, 0, 0\n\t}\n\n\txgetbv = func(index uint32) (eax, edx uint32) {\n\t\treturn 0, 0\n\t}\n\n\trdtscpAsm = func() (eax, ebx, ecx, edx uint32) {\n\t\treturn 0, 0, 0, 0\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/generate.go",
    "content": "package cpuid\n\n//go:generate go run private-gen.go\n"
  },
  {
    "path": "vendor/github.com/SvenDowideit/cpuid/private-gen.go",
    "content": "// +build ignore\n\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/printer\"\n\t\"go/token\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"reflect\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\nvar inFiles = []string{\"cpuid.go\", \"cpuid_test.go\"}\nvar copyFiles = []string{\"cpuid_amd64.s\", \"cpuid_386.s\", \"detect_ref.go\", \"detect_intel.go\"}\nvar fileSet = token.NewFileSet()\nvar reWrites = []rewrite{\n\tinitRewrite(\"CPUInfo -> cpuInfo\"),\n\tinitRewrite(\"Vendor -> vendor\"),\n\tinitRewrite(\"Flags -> flags\"),\n\tinitRewrite(\"Detect -> detect\"),\n\tinitRewrite(\"CPU -> cpu\"),\n}\nvar excludeNames = map[string]bool{\"string\": true, \"join\": true, \"trim\": true,\n\t// cpuid_test.go\n\t\"t\": true, \"println\": true, \"logf\": true, \"log\": true, \"fatalf\": true, \"fatal\": true,\n}\n\nvar excludePrefixes = []string{\"test\", \"benchmark\"}\n\nfunc main() {\n\tPackage := \"private\"\n\tparserMode := parser.ParseComments\n\texported := make(map[string]rewrite)\n\tfor _, file := range inFiles {\n\t\tin, err := os.Open(file)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"opening input\", err)\n\t\t}\n\n\t\tsrc, err := ioutil.ReadAll(in)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"reading input\", err)\n\t\t}\n\n\t\tastfile, err := parser.ParseFile(fileSet, file, src, parserMode)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"parsing input\", err)\n\t\t}\n\n\t\tfor _, rw := range reWrites {\n\t\t\tastfile = rw(astfile)\n\t\t}\n\n\t\t// Inspect the AST and print all identifiers and literals.\n\t\tvar startDecl token.Pos\n\t\tvar endDecl token.Pos\n\t\tast.Inspect(astfile, func(n ast.Node) bool {\n\t\t\tvar s string\n\t\t\tswitch x := n.(type) {\n\t\t\tcase *ast.Ident:\n\t\t\t\tif x.IsExported() {\n\t\t\t\t\tt := strings.ToLower(x.Name)\n\t\t\t\t\tfor _, pre := range excludePrefixes {\n\t\t\t\t\t\tif strings.HasPrefix(t, pre) {\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif excludeNames[t] != true {\n\t\t\t\t\t\t//if x.Pos() > startDecl && x.Pos() < endDecl {\n\t\t\t\t\t\texported[x.Name] = initRewrite(x.Name + \" -> \" + t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase *ast.GenDecl:\n\t\t\t\tif x.Tok == token.CONST && x.Lparen > 0 {\n\t\t\t\t\tstartDecl = x.Lparen\n\t\t\t\t\tendDecl = x.Rparen\n\t\t\t\t\t// fmt.Printf(\"Decl:%s -> %s\\n\", fileSet.Position(startDecl), fileSet.Position(endDecl))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif s != \"\" {\n\t\t\t\tfmt.Printf(\"%s:\\t%s\\n\", fileSet.Position(n.Pos()), s)\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\n\t\tfor _, rw := range exported {\n\t\t\tastfile = rw(astfile)\n\t\t}\n\n\t\tvar buf bytes.Buffer\n\n\t\tprinter.Fprint(&buf, fileSet, astfile)\n\n\t\t// Remove package documentation and insert information\n\t\ts := buf.String()\n\t\tind := strings.Index(buf.String(), \"\\npackage cpuid\")\n\t\ts = s[ind:]\n\t\ts = \"// Generated, DO NOT EDIT,\\n\" +\n\t\t\t\"// but copy it to your own project and rename the package.\\n\" +\n\t\t\t\"// See more at http://github.com/klauspost/cpuid\\n\" +\n\t\t\ts\n\n\t\toutputName := Package + string(os.PathSeparator) + file\n\n\t\terr = ioutil.WriteFile(outputName, []byte(s), 0644)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"writing output: %s\", err)\n\t\t}\n\t\tlog.Println(\"Generated\", outputName)\n\t}\n\n\tfor _, file := range copyFiles {\n\t\tdst := \"\"\n\t\tif strings.HasPrefix(file, \"cpuid\") {\n\t\t\tdst = Package + string(os.PathSeparator) + file\n\t\t} else {\n\t\t\tdst = Package + string(os.PathSeparator) + \"cpuid_\" + file\n\t\t}\n\t\terr := copyFile(file, dst)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"copying file: %s\", err)\n\t\t}\n\t\tlog.Println(\"Copied\", dst)\n\t}\n}\n\n// CopyFile copies a file from src to dst. If src and dst files exist, and are\n// the same, then return success. Copy the file contents from src to dst.\nfunc copyFile(src, dst string) (err error) {\n\tsfi, err := os.Stat(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tif !sfi.Mode().IsRegular() {\n\t\t// cannot copy non-regular files (e.g., directories,\n\t\t// symlinks, devices, etc.)\n\t\treturn fmt.Errorf(\"CopyFile: non-regular source file %s (%q)\", sfi.Name(), sfi.Mode().String())\n\t}\n\tdfi, err := os.Stat(dst)\n\tif err != nil {\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn\n\t\t}\n\t} else {\n\t\tif !(dfi.Mode().IsRegular()) {\n\t\t\treturn fmt.Errorf(\"CopyFile: non-regular destination file %s (%q)\", dfi.Name(), dfi.Mode().String())\n\t\t}\n\t\tif os.SameFile(sfi, dfi) {\n\t\t\treturn\n\t\t}\n\t}\n\terr = copyFileContents(src, dst)\n\treturn\n}\n\n// copyFileContents copies the contents of the file named src to the file named\n// by dst. The file will be created if it does not already exist. If the\n// destination file exists, all it's contents will be replaced by the contents\n// of the source file.\nfunc copyFileContents(src, dst string) (err error) {\n\tin, err := os.Open(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer in.Close()\n\tout, err := os.Create(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer func() {\n\t\tcerr := out.Close()\n\t\tif err == nil {\n\t\t\terr = cerr\n\t\t}\n\t}()\n\tif _, err = io.Copy(out, in); err != nil {\n\t\treturn\n\t}\n\terr = out.Sync()\n\treturn\n}\n\ntype rewrite func(*ast.File) *ast.File\n\n// Mostly copied from gofmt\nfunc initRewrite(rewriteRule string) rewrite {\n\tf := strings.Split(rewriteRule, \"->\")\n\tif len(f) != 2 {\n\t\tfmt.Fprintf(os.Stderr, \"rewrite rule must be of the form 'pattern -> replacement'\\n\")\n\t\tos.Exit(2)\n\t}\n\tpattern := parseExpr(f[0], \"pattern\")\n\treplace := parseExpr(f[1], \"replacement\")\n\treturn func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) }\n}\n\n// parseExpr parses s as an expression.\n// It might make sense to expand this to allow statement patterns,\n// but there are problems with preserving formatting and also\n// with what a wildcard for a statement looks like.\nfunc parseExpr(s, what string) ast.Expr {\n\tx, err := parser.ParseExpr(s)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"parsing %s %s at %s\\n\", what, s, err)\n\t\tos.Exit(2)\n\t}\n\treturn x\n}\n\n// Keep this function for debugging.\n/*\nfunc dump(msg string, val reflect.Value) {\n\tfmt.Printf(\"%s:\\n\", msg)\n\tast.Print(fileSet, val.Interface())\n\tfmt.Println()\n}\n*/\n\n// rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file.\nfunc rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File {\n\tcmap := ast.NewCommentMap(fileSet, p, p.Comments)\n\tm := make(map[string]reflect.Value)\n\tpat := reflect.ValueOf(pattern)\n\trepl := reflect.ValueOf(replace)\n\n\tvar rewriteVal func(val reflect.Value) reflect.Value\n\trewriteVal = func(val reflect.Value) reflect.Value {\n\t\t// don't bother if val is invalid to start with\n\t\tif !val.IsValid() {\n\t\t\treturn reflect.Value{}\n\t\t}\n\t\tfor k := range m {\n\t\t\tdelete(m, k)\n\t\t}\n\t\tval = apply(rewriteVal, val)\n\t\tif match(m, pat, val) {\n\t\t\tval = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos()))\n\t\t}\n\t\treturn val\n\t}\n\n\tr := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File)\n\tr.Comments = cmap.Filter(r).Comments() // recreate comments list\n\treturn r\n}\n\n// set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y.\nfunc set(x, y reflect.Value) {\n\t// don't bother if x cannot be set or y is invalid\n\tif !x.CanSet() || !y.IsValid() {\n\t\treturn\n\t}\n\tdefer func() {\n\t\tif x := recover(); x != nil {\n\t\t\tif s, ok := x.(string); ok &&\n\t\t\t\t(strings.Contains(s, \"type mismatch\") || strings.Contains(s, \"not assignable\")) {\n\t\t\t\t// x cannot be set to y - ignore this rewrite\n\t\t\t\treturn\n\t\t\t}\n\t\t\tpanic(x)\n\t\t}\n\t}()\n\tx.Set(y)\n}\n\n// Values/types for special cases.\nvar (\n\tobjectPtrNil = reflect.ValueOf((*ast.Object)(nil))\n\tscopePtrNil  = reflect.ValueOf((*ast.Scope)(nil))\n\n\tidentType     = reflect.TypeOf((*ast.Ident)(nil))\n\tobjectPtrType = reflect.TypeOf((*ast.Object)(nil))\n\tpositionType  = reflect.TypeOf(token.NoPos)\n\tcallExprType  = reflect.TypeOf((*ast.CallExpr)(nil))\n\tscopePtrType  = reflect.TypeOf((*ast.Scope)(nil))\n)\n\n// apply replaces each AST field x in val with f(x), returning val.\n// To avoid extra conversions, f operates on the reflect.Value form.\nfunc apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value {\n\tif !val.IsValid() {\n\t\treturn reflect.Value{}\n\t}\n\n\t// *ast.Objects introduce cycles and are likely incorrect after\n\t// rewrite; don't follow them but replace with nil instead\n\tif val.Type() == objectPtrType {\n\t\treturn objectPtrNil\n\t}\n\n\t// similarly for scopes: they are likely incorrect after a rewrite;\n\t// replace them with nil\n\tif val.Type() == scopePtrType {\n\t\treturn scopePtrNil\n\t}\n\n\tswitch v := reflect.Indirect(val); v.Kind() {\n\tcase reflect.Slice:\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\te := v.Index(i)\n\t\t\tset(e, f(e))\n\t\t}\n\tcase reflect.Struct:\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\te := v.Field(i)\n\t\t\tset(e, f(e))\n\t\t}\n\tcase reflect.Interface:\n\t\te := v.Elem()\n\t\tset(v, f(e))\n\t}\n\treturn val\n}\n\nfunc isWildcard(s string) bool {\n\trune, size := utf8.DecodeRuneInString(s)\n\treturn size == len(s) && unicode.IsLower(rune)\n}\n\n// match returns true if pattern matches val,\n// recording wildcard submatches in m.\n// If m == nil, match checks whether pattern == val.\nfunc match(m map[string]reflect.Value, pattern, val reflect.Value) bool {\n\t// Wildcard matches any expression.  If it appears multiple\n\t// times in the pattern, it must match the same expression\n\t// each time.\n\tif m != nil && pattern.IsValid() && pattern.Type() == identType {\n\t\tname := pattern.Interface().(*ast.Ident).Name\n\t\tif isWildcard(name) && val.IsValid() {\n\t\t\t// wildcards only match valid (non-nil) expressions.\n\t\t\tif _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() {\n\t\t\t\tif old, ok := m[name]; ok {\n\t\t\t\t\treturn match(nil, old, val)\n\t\t\t\t}\n\t\t\t\tm[name] = val\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\t// Otherwise, pattern and val must match recursively.\n\tif !pattern.IsValid() || !val.IsValid() {\n\t\treturn !pattern.IsValid() && !val.IsValid()\n\t}\n\tif pattern.Type() != val.Type() {\n\t\treturn false\n\t}\n\n\t// Special cases.\n\tswitch pattern.Type() {\n\tcase identType:\n\t\t// For identifiers, only the names need to match\n\t\t// (and none of the other *ast.Object information).\n\t\t// This is a common case, handle it all here instead\n\t\t// of recursing down any further via reflection.\n\t\tp := pattern.Interface().(*ast.Ident)\n\t\tv := val.Interface().(*ast.Ident)\n\t\treturn p == nil && v == nil || p != nil && v != nil && p.Name == v.Name\n\tcase objectPtrType, positionType:\n\t\t// object pointers and token positions always match\n\t\treturn true\n\tcase callExprType:\n\t\t// For calls, the Ellipsis fields (token.Position) must\n\t\t// match since that is how f(x) and f(x...) are different.\n\t\t// Check them here but fall through for the remaining fields.\n\t\tp := pattern.Interface().(*ast.CallExpr)\n\t\tv := val.Interface().(*ast.CallExpr)\n\t\tif p.Ellipsis.IsValid() != v.Ellipsis.IsValid() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tp := reflect.Indirect(pattern)\n\tv := reflect.Indirect(val)\n\tif !p.IsValid() || !v.IsValid() {\n\t\treturn !p.IsValid() && !v.IsValid()\n\t}\n\n\tswitch p.Kind() {\n\tcase reflect.Slice:\n\t\tif p.Len() != v.Len() {\n\t\t\treturn false\n\t\t}\n\t\tfor i := 0; i < p.Len(); i++ {\n\t\t\tif !match(m, p.Index(i), v.Index(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\n\tcase reflect.Struct:\n\t\tfor i := 0; i < p.NumField(); i++ {\n\t\t\tif !match(m, p.Field(i), v.Field(i)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\n\tcase reflect.Interface:\n\t\treturn match(m, p.Elem(), v.Elem())\n\t}\n\n\t// Handle token integers, etc.\n\treturn p.Interface() == v.Interface()\n}\n\n// subst returns a copy of pattern with values from m substituted in place\n// of wildcards and pos used as the position of tokens from the pattern.\n// if m == nil, subst returns a copy of pattern and doesn't change the line\n// number information.\nfunc subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value {\n\tif !pattern.IsValid() {\n\t\treturn reflect.Value{}\n\t}\n\n\t// Wildcard gets replaced with map value.\n\tif m != nil && pattern.Type() == identType {\n\t\tname := pattern.Interface().(*ast.Ident).Name\n\t\tif isWildcard(name) {\n\t\t\tif old, ok := m[name]; ok {\n\t\t\t\treturn subst(nil, old, reflect.Value{})\n\t\t\t}\n\t\t}\n\t}\n\n\tif pos.IsValid() && pattern.Type() == positionType {\n\t\t// use new position only if old position was valid in the first place\n\t\tif old := pattern.Interface().(token.Pos); !old.IsValid() {\n\t\t\treturn pattern\n\t\t}\n\t\treturn pos\n\t}\n\n\t// Otherwise copy.\n\tswitch p := pattern; p.Kind() {\n\tcase reflect.Slice:\n\t\tv := reflect.MakeSlice(p.Type(), p.Len(), p.Len())\n\t\tfor i := 0; i < p.Len(); i++ {\n\t\t\tv.Index(i).Set(subst(m, p.Index(i), pos))\n\t\t}\n\t\treturn v\n\n\tcase reflect.Struct:\n\t\tv := reflect.New(p.Type()).Elem()\n\t\tfor i := 0; i < p.NumField(); i++ {\n\t\t\tv.Field(i).Set(subst(m, p.Field(i), pos))\n\t\t}\n\t\treturn v\n\n\tcase reflect.Ptr:\n\t\tv := reflect.New(p.Type()).Elem()\n\t\tif elem := p.Elem(); elem.IsValid() {\n\t\t\tv.Set(subst(m, elem, pos).Addr())\n\t\t}\n\t\treturn v\n\n\tcase reflect.Interface:\n\t\tv := reflect.New(p.Type()).Elem()\n\t\tif elem := p.Elem(); elem.IsValid() {\n\t\t\tv.Set(subst(m, elem, pos))\n\t\t}\n\t\treturn v\n\t}\n\n\treturn pattern\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/.gitignore",
    "content": "*.coverprofile\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.4.1\n\ninstall:\n  - go get -t -v ./...\n  - go install github.com/onsi/ginkgo/ginkgo\n\nscript:\n  - export PATH=$HOME/gopath/bin:$PATH\n  - ginkgo -r -failOnPending -randomizeAllSpecs -race\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/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/cloudfoundry-incubator/candiedyaml/README.md",
    "content": "[![Build Status](https://travis-ci.org/cloudfoundry-incubator/candiedyaml.svg)](https://travis-ci.org/cloudfoundry-incubator/candiedyaml)\n\ncandiedyaml\n===========\n\nYAML for Go\n\nA YAML 1.1 parser with support for YAML 1.2 features\n\nUsage\n-----\n\n```go\npackage myApp\n\nimport (\n  \"github.com/cloudfoundry-incubator/candiedyaml\"\n  \"fmt\"\n  \"os\"\n)\n\nfunc main() {\n  file, err := os.Open(\"path/to/some/file.yml\")\n  if err != nil {\n    println(\"File does not exist:\", err.Error())\n    os.Exit(1)\n  }\n  defer file.Close()\n\n  document := new(interface{})\n  decoder := candiedyaml.NewDecoder(file)\n  err = decoder.Decode(document)\n  \n  if err != nil {\n    println(\"Failed to decode document:\", err.Error())\n  }\n  \n  println(\"parsed yml into interface:\", fmt.Sprintf(\"%#v\", document))\n  \n  fileToWrite, err := os.Create(\"path/to/some/new/file.yml\")\n  if err != nil {\n    println(\"Failed to open file for writing:\", err.Error())\n    os.Exit(1)\n  }\n  defer fileToWrite.Close()\n\n  encoder := candiedyaml.NewEncoder(fileToWrite)\n  err = encoder.Encode(document)\n\n  if err != nil {\n    println(\"Failed to encode document:\", err.Error())\n    os.Exit(1)\n  }\n  \n  return\n}\n```\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/api.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"io\"\n)\n\n/*\n * Create a new parser object.\n */\n\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\n\treturn true\n}\n\n/*\n * Destroy a parser object.\n */\nfunc yaml_parser_delete(parser *yaml_parser_t) {\n\t*parser = yaml_parser_t{}\n}\n\n/*\n * String read handler.\n */\n\nfunc yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (int, error) {\n\tif parser.input_pos == len(parser.input) {\n\t\treturn 0, io.EOF\n\t}\n\n\tn := copy(buffer, parser.input[parser.input_pos:])\n\tparser.input_pos += n\n\treturn n, nil\n}\n\n/*\n * File read handler.\n */\n\nfunc yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (int, error) {\n\treturn parser.input_reader.Read(buffer)\n}\n\n/*\n * Set a string input.\n */\n\nfunc yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"input already set\")\n\t}\n\n\tparser.read_handler = yaml_string_read_handler\n\n\tparser.input = input\n\tparser.input_pos = 0\n}\n\n/*\n * Set a reader input\n */\nfunc yaml_parser_set_input_reader(parser *yaml_parser_t, reader io.Reader) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"input already set\")\n\t}\n\n\tparser.read_handler = yaml_file_read_handler\n\tparser.input_reader = reader\n}\n\n/*\n * Set a generic input.\n */\n\nfunc yaml_parser_set_input(parser *yaml_parser_t, handler yaml_read_handler_t) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"input already set\")\n\t}\n\n\tparser.read_handler = handler\n}\n\n/*\n * Set the source encoding.\n */\n\nfunc yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {\n\tif parser.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"encoding already set\")\n\t}\n\n\tparser.encoding = encoding\n}\n\n/*\n * Create a new emitter object.\n */\n\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}\n}\n\nfunc yaml_emitter_delete(emitter *yaml_emitter_t) {\n\t*emitter = yaml_emitter_t{}\n}\n\n/*\n * String write handler.\n */\n\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/*\n * File write handler.\n */\n\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/*\n * Set a string output.\n */\n\nfunc yaml_emitter_set_output_string(emitter *yaml_emitter_t, buffer *[]byte) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"output already set\")\n\t}\n\n\temitter.write_handler = yaml_string_write_handler\n\temitter.output_buffer = buffer\n}\n\n/*\n * Set a file output.\n */\n\nfunc yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"output already set\")\n\t}\n\n\temitter.write_handler = yaml_writer_write_handler\n\temitter.output_writer = w\n}\n\n/*\n * Set a generic output handler.\n */\n\nfunc yaml_emitter_set_output(emitter *yaml_emitter_t, handler yaml_write_handler_t) {\n\tif emitter.write_handler != nil {\n\t\tpanic(\"output already set\")\n\t}\n\n\temitter.write_handler = handler\n}\n\n/*\n * Set the output encoding.\n */\n\nfunc yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {\n\tif emitter.encoding != yaml_ANY_ENCODING {\n\t\tpanic(\"encoding already set\")\n\t}\n\n\temitter.encoding = encoding\n}\n\n/*\n * Set the canonical output style.\n */\n\nfunc yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {\n\temitter.canonical = canonical\n}\n\n/*\n * Set the indentation increment.\n */\n\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/*\n * Set the preferred line width.\n */\n\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/*\n * Set if unescaped non-ASCII characters are allowed.\n */\n\nfunc yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {\n\temitter.unicode = unicode\n}\n\n/*\n * Set the preferred line break character.\n */\n\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.\n */\n\nfunc yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_STREAM_START_EVENT,\n\t\tencoding:   encoding,\n\t}\n}\n\n/*\n * Create STREAM-END.\n */\n\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_STREAM_END_EVENT,\n\t}\n}\n\n/*\n * Create DOCUMENT-START.\n */\n\nfunc yaml_document_start_event_initialize(event *yaml_event_t,\n\tversion_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t,\n\timplicit bool) {\n\t*event = yaml_event_t{\n\t\tevent_type:        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/*\n * Create DOCUMENT-END.\n */\n\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_DOCUMENT_END_EVENT,\n\t\timplicit:   implicit,\n\t}\n}\n\n/*\n * Create ALIAS.\n */\n\nfunc yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_ALIAS_EVENT,\n\t\tanchor:     anchor,\n\t}\n}\n\n/*\n * Create SCALAR.\n */\n\nfunc yaml_scalar_event_initialize(event *yaml_event_t,\n\tanchor []byte, tag []byte,\n\tvalue []byte,\n\tplain_implicit bool, quoted_implicit bool,\n\tstyle yaml_scalar_style_t) {\n\n\t*event = yaml_event_t{\n\t\tevent_type:      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}\n\n/*\n * Create SEQUENCE-START.\n */\n\nfunc yaml_sequence_start_event_initialize(event *yaml_event_t,\n\tanchor []byte, tag []byte, implicit bool, style yaml_sequence_style_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: 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}\n\n/*\n * Create SEQUENCE-END.\n */\n\nfunc yaml_sequence_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_SEQUENCE_END_EVENT,\n\t}\n}\n\n/*\n * Create MAPPING-START.\n */\n\nfunc yaml_mapping_start_event_initialize(event *yaml_event_t,\n\tanchor []byte, tag []byte, implicit bool, style yaml_mapping_style_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: 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/*\n * Create MAPPING-END.\n */\n\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_MAPPING_END_EVENT,\n\t}\n}\n\n/*\n * Destroy an event object.\n */\n\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// func yaml_document_initialize(document *yaml_document_t,\n//          version_directive *yaml_version_directive_t,\n// \t\t tag_directives []yaml_tag_directive_t,\n//          start_implicit,  end_implicit bool) bool {\n//\n//\n// {\n//     struct {\n//         YAML_error_type_t error;\n//     } context;\n//     struct {\n//         yaml_node_t *start;\n//         yaml_node_t *end;\n//         yaml_node_t *top;\n//     } nodes = { NULL, NULL, NULL };\n//     yaml_version_directive_t *version_directive_copy = NULL;\n//     struct {\n//         yaml_tag_directive_t *start;\n//         yaml_tag_directive_t *end;\n//         yaml_tag_directive_t *top;\n//     } tag_directives_copy = { NULL, NULL, NULL };\n//     yaml_tag_directive_t value = { NULL, NULL };\n//     YAML_mark_t mark = { 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//         yaml_tag_directive_t *tag_directive;\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//         yaml_tag_directive_t value = 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//         YAML_error_type_t error;\n//     } context;\n//     yaml_tag_directive_t *tag_directive;\n//\n//     context.error = yaml_NO_ERROR;  /* Eliminate a compliler warning. */\n//\n//     assert(document);   /* Non-NULL document object is expected. */\n//\n//     while (!STACK_EMPTY(&context, document.nodes)) {\n//         yaml_node_t node = 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, int index)\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//         yaml_char_t *tag, yaml_char_t *value, int length,\n//         yaml_scalar_style_t style)\n// {\n//     struct {\n//         YAML_error_type_t error;\n//     } context;\n//     YAML_mark_t mark = { 0, 0, 0 };\n//     yaml_char_t *tag_copy = NULL;\n//     yaml_char_t *value_copy = NULL;\n//     yaml_node_t node;\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//         yaml_char_t *tag, yaml_sequence_style_t style)\n// {\n//     struct {\n//         YAML_error_type_t error;\n//     } context;\n//     YAML_mark_t mark = { 0, 0, 0 };\n//     yaml_char_t *tag_copy = NULL;\n//     struct {\n//         yaml_node_item_t *start;\n//         yaml_node_item_t *end;\n//         yaml_node_item_t *top;\n//     } items = { NULL, NULL, NULL };\n//     yaml_node_t node;\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//         yaml_char_t *tag, yaml_mapping_style_t style)\n// {\n//     struct {\n//         YAML_error_type_t error;\n//     } context;\n//     YAML_mark_t mark = { 0, 0, 0 };\n//     yaml_char_t *tag_copy = NULL;\n//     struct {\n//         yaml_node_pair_t *start;\n//         yaml_node_pair_t *end;\n//         yaml_node_pair_t *top;\n//     } pairs = { NULL, NULL, NULL };\n//     yaml_node_t node;\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//         int sequence, int item)\n// {\n//     struct {\n//         YAML_error_type_t error;\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//         int mapping, int key, int value)\n// {\n//     struct {\n//         YAML_error_type_t error;\n//     } context;\n//\n//     yaml_node_pair_t pair;\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"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/decode.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Unmarshaler interface {\n\tUnmarshalYAML(tag string, value interface{}) error\n}\n\n// A Number represents a JSON number literal.\ntype Number string\n\n// String returns the literal text of the number.\nfunc (n Number) String() string { return string(n) }\n\n// Float64 returns the number as a float64.\nfunc (n Number) Float64() (float64, error) {\n\treturn strconv.ParseFloat(string(n), 64)\n}\n\n// Int64 returns the number as an int64.\nfunc (n Number) Int64() (int64, error) {\n\treturn strconv.ParseInt(string(n), 10, 64)\n}\n\ntype Decoder struct {\n\tparser        yaml_parser_t\n\tevent         yaml_event_t\n\treplay_events []yaml_event_t\n\tuseNumber     bool\n\n\tanchors          map[string][]yaml_event_t\n\ttracking_anchors [][]yaml_event_t\n}\n\ntype ParserError struct {\n\tErrorType   YAML_error_type_t\n\tContext     string\n\tContextMark YAML_mark_t\n\tProblem     string\n\tProblemMark YAML_mark_t\n}\n\nfunc (e *ParserError) Error() string {\n\treturn fmt.Sprintf(\"yaml: [%s] %s at line %d, column %d\", e.Context, e.Problem, e.ProblemMark.line+1, e.ProblemMark.column+1)\n}\n\ntype UnexpectedEventError struct {\n\tValue     string\n\tEventType yaml_event_type_t\n\tAt        YAML_mark_t\n}\n\nfunc (e *UnexpectedEventError) Error() string {\n\treturn fmt.Sprintf(\"yaml: Unexpect event [%d]: '%s' at line %d, column %d\", e.EventType, e.Value, e.At.line+1, e.At.column+1)\n}\n\nfunc recovery(err *error) {\n\tif r := recover(); r != nil {\n\t\tif _, ok := r.(runtime.Error); ok {\n\t\t\tpanic(r)\n\t\t}\n\n\t\tvar tmpError error\n\t\tswitch r := r.(type) {\n\t\tcase error:\n\t\t\ttmpError = r\n\t\tcase string:\n\t\t\ttmpError = errors.New(r)\n\t\tdefault:\n\t\t\ttmpError = errors.New(\"Unknown panic: \" + reflect.ValueOf(r).String())\n\t\t}\n\n\t\t*err = tmpError\n\t}\n}\n\nfunc Unmarshal(data []byte, v interface{}) error {\n\td := NewDecoder(bytes.NewBuffer(data))\n\treturn d.Decode(v)\n}\n\nfunc NewDecoder(r io.Reader) *Decoder {\n\td := &Decoder{\n\t\tanchors:          make(map[string][]yaml_event_t),\n\t\ttracking_anchors: make([][]yaml_event_t, 1),\n\t}\n\tyaml_parser_initialize(&d.parser)\n\tyaml_parser_set_input_reader(&d.parser, r)\n\treturn d\n}\n\nfunc (d *Decoder) Decode(v interface{}) (err error) {\n\tdefer recovery(&err)\n\n\trv := reflect.ValueOf(v)\n\tif rv.Kind() != reflect.Ptr || rv.IsNil() {\n\t\treturn fmt.Errorf(\"Expected a pointer or nil but was a %s at %s\", rv.String(), d.event.start_mark)\n\t}\n\n\tif d.event.event_type == yaml_NO_EVENT {\n\t\td.nextEvent()\n\n\t\tif d.event.event_type != yaml_STREAM_START_EVENT {\n\t\t\treturn errors.New(\"Invalid stream\")\n\t\t}\n\n\t\td.nextEvent()\n\t}\n\n\td.document(rv)\n\treturn nil\n}\n\nfunc (d *Decoder) UseNumber() { d.useNumber = true }\n\nfunc (d *Decoder) error(err error) {\n\tpanic(err)\n}\n\nfunc (d *Decoder) nextEvent() {\n\tif d.event.event_type == yaml_STREAM_END_EVENT {\n\t\td.error(errors.New(\"The stream is closed\"))\n\t}\n\n\tif d.replay_events != nil {\n\t\td.event = d.replay_events[0]\n\t\tif len(d.replay_events) == 1 {\n\t\t\td.replay_events = nil\n\t\t} else {\n\t\t\td.replay_events = d.replay_events[1:]\n\t\t}\n\t} else {\n\t\tif !yaml_parser_parse(&d.parser, &d.event) {\n\t\t\tyaml_event_delete(&d.event)\n\n\t\t\td.error(&ParserError{\n\t\t\t\tErrorType:   d.parser.error,\n\t\t\t\tContext:     d.parser.context,\n\t\t\t\tContextMark: d.parser.context_mark,\n\t\t\t\tProblem:     d.parser.problem,\n\t\t\t\tProblemMark: d.parser.problem_mark,\n\t\t\t})\n\t\t}\n\t}\n\n\tlast := len(d.tracking_anchors)\n\t// skip aliases when tracking an anchor\n\tif last > 0 && d.event.event_type != yaml_ALIAS_EVENT {\n\t\td.tracking_anchors[last-1] = append(d.tracking_anchors[last-1], d.event)\n\t}\n}\n\nfunc (d *Decoder) document(rv reflect.Value) {\n\tif d.event.event_type != yaml_DOCUMENT_START_EVENT {\n\t\td.error(fmt.Errorf(\"Expected document start at %s\", d.event.start_mark))\n\t}\n\n\td.nextEvent()\n\td.parse(rv)\n\n\tif d.event.event_type != yaml_DOCUMENT_END_EVENT {\n\t\td.error(fmt.Errorf(\"Expected document end at %s\", d.event.start_mark))\n\t}\n\n\td.nextEvent()\n}\n\nfunc (d *Decoder) parse(rv reflect.Value) {\n\tif !rv.IsValid() {\n\t\t// skip ahead since we cannot store\n\t\td.valueInterface()\n\t\treturn\n\t}\n\n\tanchor := string(d.event.anchor)\n\tswitch d.event.event_type {\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\td.begin_anchor(anchor)\n\t\td.sequence(rv)\n\t\td.end_anchor(anchor)\n\tcase yaml_MAPPING_START_EVENT:\n\t\td.begin_anchor(anchor)\n\t\td.mapping(rv)\n\t\td.end_anchor(anchor)\n\tcase yaml_SCALAR_EVENT:\n\t\td.begin_anchor(anchor)\n\t\td.scalar(rv)\n\t\td.end_anchor(anchor)\n\tcase yaml_ALIAS_EVENT:\n\t\td.alias(rv)\n\tcase yaml_DOCUMENT_END_EVENT:\n\tdefault:\n\t\td.error(&UnexpectedEventError{\n\t\t\tValue:     string(d.event.value),\n\t\t\tEventType: d.event.event_type,\n\t\t\tAt:        d.event.start_mark,\n\t\t})\n\t}\n}\n\nfunc (d *Decoder) begin_anchor(anchor string) {\n\tif anchor != \"\" {\n\t\tevents := []yaml_event_t{d.event}\n\t\td.tracking_anchors = append(d.tracking_anchors, events)\n\t}\n}\n\nfunc (d *Decoder) end_anchor(anchor string) {\n\tif anchor != \"\" {\n\t\tevents := d.tracking_anchors[len(d.tracking_anchors)-1]\n\t\td.tracking_anchors = d.tracking_anchors[0 : len(d.tracking_anchors)-1]\n\t\t// remove the anchor, replaying events shouldn't have anchors\n\t\tevents[0].anchor = nil\n\t\t// we went one too many, remove the extra event\n\t\tevents = events[:len(events)-1]\n\t\t// if nested, append to all the other anchors\n\t\tfor i, e := range d.tracking_anchors {\n\t\t\td.tracking_anchors[i] = append(e, events...)\n\t\t}\n\t\td.anchors[anchor] = events\n\t}\n}\n\nfunc (d *Decoder) indirect(v reflect.Value, decodingNull bool) (Unmarshaler, reflect.Value) {\n\t// If v is a named type and is addressable,\n\t// start with its address, so that if the type has pointer methods,\n\t// we find them.\n\tif v.Kind() != reflect.Ptr && v.Type().Name() != \"\" && v.CanAddr() {\n\t\tv = v.Addr()\n\t}\n\tfor {\n\t\t// Load value from interface, but only if the result will be\n\t\t// usefully addressable.\n\t\tif v.Kind() == reflect.Interface && !v.IsNil() {\n\t\t\te := v.Elem()\n\t\t\tif e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {\n\t\t\t\tv = e\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif v.Kind() != reflect.Ptr {\n\t\t\tbreak\n\t\t}\n\n\t\tif v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() {\n\t\t\tbreak\n\t\t}\n\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\n\t\tif v.Type().NumMethod() > 0 {\n\t\t\tif u, ok := v.Interface().(Unmarshaler); ok {\n\t\t\t\tvar temp interface{}\n\t\t\t\treturn u, reflect.ValueOf(&temp)\n\t\t\t}\n\t\t}\n\n\t\tv = v.Elem()\n\t}\n\n\treturn nil, v\n}\n\nfunc (d *Decoder) sequence(v reflect.Value) {\n\tif d.event.event_type != yaml_SEQUENCE_START_EVENT {\n\t\td.error(fmt.Errorf(\"Expected sequence start at %s\", d.event.start_mark))\n\t}\n\n\tu, pv := d.indirect(v, false)\n\tif u != nil {\n\t\tdefer func() {\n\t\t\tif err := u.UnmarshalYAML(yaml_SEQ_TAG, pv.Interface()); err != nil {\n\t\t\t\td.error(err)\n\t\t\t}\n\t\t}()\n\t\t_, pv = d.indirect(pv, false)\n\t}\n\n\tv = pv\n\n\t// Check type of target.\n\tswitch v.Kind() {\n\tcase reflect.Interface:\n\t\tif v.NumMethod() == 0 {\n\t\t\t// Decoding into nil interface?  Switch to non-reflect code.\n\t\t\tv.Set(reflect.ValueOf(d.sequenceInterface()))\n\t\t\treturn\n\t\t}\n\t\t// Otherwise it's invalid.\n\t\tfallthrough\n\tdefault:\n\t\td.error(fmt.Errorf(\"Expected an array, slice or interface{} but was a %s at %s\", v, d.event.start_mark))\n\tcase reflect.Array:\n\tcase reflect.Slice:\n\t\tbreak\n\t}\n\n\td.nextEvent()\n\n\ti := 0\ndone:\n\tfor {\n\t\tswitch d.event.event_type {\n\t\tcase yaml_SEQUENCE_END_EVENT, yaml_DOCUMENT_END_EVENT:\n\t\t\tbreak done\n\t\t}\n\n\t\t// Get element of array, growing if necessary.\n\t\tif v.Kind() == reflect.Slice {\n\t\t\t// Grow slice if necessary\n\t\t\tif i >= v.Cap() {\n\t\t\t\tnewcap := v.Cap() + v.Cap()/2\n\t\t\t\tif newcap < 4 {\n\t\t\t\t\tnewcap = 4\n\t\t\t\t}\n\t\t\t\tnewv := reflect.MakeSlice(v.Type(), v.Len(), newcap)\n\t\t\t\treflect.Copy(newv, v)\n\t\t\t\tv.Set(newv)\n\t\t\t}\n\t\t\tif i >= v.Len() {\n\t\t\t\tv.SetLen(i + 1)\n\t\t\t}\n\t\t}\n\n\t\tif i < v.Len() {\n\t\t\t// Decode into element.\n\t\t\td.parse(v.Index(i))\n\t\t} else {\n\t\t\t// Ran out of fixed array: skip.\n\t\t\td.parse(reflect.Value{})\n\t\t}\n\t\ti++\n\t}\n\n\tif i < v.Len() {\n\t\tif v.Kind() == reflect.Array {\n\t\t\t// Array.  Zero the rest.\n\t\t\tz := reflect.Zero(v.Type().Elem())\n\t\t\tfor ; i < v.Len(); i++ {\n\t\t\t\tv.Index(i).Set(z)\n\t\t\t}\n\t\t} else {\n\t\t\tv.SetLen(i)\n\t\t}\n\t}\n\tif i == 0 && v.Kind() == reflect.Slice {\n\t\tv.Set(reflect.MakeSlice(v.Type(), 0, 0))\n\t}\n\n\tif d.event.event_type != yaml_DOCUMENT_END_EVENT {\n\t\td.nextEvent()\n\t}\n}\n\nfunc (d *Decoder) mapping(v reflect.Value) {\n\tu, pv := d.indirect(v, false)\n\tif u != nil {\n\t\tdefer func() {\n\t\t\tif err := u.UnmarshalYAML(yaml_MAP_TAG, pv.Interface()); err != nil {\n\t\t\t\td.error(err)\n\t\t\t}\n\t\t}()\n\t\t_, pv = d.indirect(pv, false)\n\t}\n\tv = pv\n\n\t// Decoding into nil interface?  Switch to non-reflect code.\n\tif v.Kind() == reflect.Interface && v.NumMethod() == 0 {\n\t\tv.Set(reflect.ValueOf(d.mappingInterface()))\n\t\treturn\n\t}\n\n\t// Check type of target: struct or map[X]Y\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\td.mappingStruct(v)\n\t\treturn\n\tcase reflect.Map:\n\tdefault:\n\t\td.error(fmt.Errorf(\"Expected a struct or map but was a %s at %s \", v, d.event.start_mark))\n\t}\n\n\tmapt := v.Type()\n\tif v.IsNil() {\n\t\tv.Set(reflect.MakeMap(mapt))\n\t}\n\n\td.nextEvent()\n\n\tkeyt := mapt.Key()\n\tmapElemt := mapt.Elem()\n\n\tvar mapElem reflect.Value\ndone:\n\tfor {\n\t\tswitch d.event.event_type {\n\t\tcase yaml_MAPPING_END_EVENT:\n\t\t\tbreak done\n\t\tcase yaml_DOCUMENT_END_EVENT:\n\t\t\treturn\n\t\t}\n\n\t\tkey := reflect.New(keyt)\n\t\td.parse(key.Elem())\n\n\t\tif !mapElem.IsValid() {\n\t\t\tmapElem = reflect.New(mapElemt).Elem()\n\t\t} else {\n\t\t\tmapElem.Set(reflect.Zero(mapElemt))\n\t\t}\n\n\t\td.parse(mapElem)\n\n\t\tv.SetMapIndex(key.Elem(), mapElem)\n\t}\n\n\td.nextEvent()\n}\n\nfunc (d *Decoder) mappingStruct(v reflect.Value) {\n\n\tstructt := v.Type()\n\tfields := cachedTypeFields(structt)\n\n\td.nextEvent()\n\ndone:\n\tfor {\n\t\tswitch d.event.event_type {\n\t\tcase yaml_MAPPING_END_EVENT:\n\t\t\tbreak done\n\t\tcase yaml_DOCUMENT_END_EVENT:\n\t\t\treturn\n\t\t}\n\n\t\tkey := \"\"\n\t\td.parse(reflect.ValueOf(&key))\n\n\t\t// Figure out field corresponding to key.\n\t\tvar subv reflect.Value\n\n\t\tvar f *field\n\t\tfor i := range fields {\n\t\t\tff := &fields[i]\n\t\t\tif ff.name == key {\n\t\t\t\tf = ff\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif f == nil && strings.EqualFold(ff.name, key) {\n\t\t\t\tf = ff\n\t\t\t}\n\t\t}\n\n\t\tif f != nil {\n\t\t\tsubv = v\n\t\t\tfor _, i := range f.index {\n\t\t\t\tif subv.Kind() == reflect.Ptr {\n\t\t\t\t\tif subv.IsNil() {\n\t\t\t\t\t\tsubv.Set(reflect.New(subv.Type().Elem()))\n\t\t\t\t\t}\n\t\t\t\t\tsubv = subv.Elem()\n\t\t\t\t}\n\t\t\t\tsubv = subv.Field(i)\n\t\t\t}\n\t\t}\n\t\td.parse(subv)\n\t}\n\n\td.nextEvent()\n}\n\nfunc (d *Decoder) scalar(v reflect.Value) {\n\tval := string(d.event.value)\n\twantptr := null_values[val]\n\n\tu, pv := d.indirect(v, wantptr)\n\n\tvar tag string\n\tif u != nil {\n\t\tdefer func() {\n\t\t\tif err := u.UnmarshalYAML(tag, pv.Interface()); err != nil {\n\t\t\t\td.error(err)\n\t\t\t}\n\t\t}()\n\n\t\t_, pv = d.indirect(pv, wantptr)\n\t}\n\tv = pv\n\n\tvar err error\n\ttag, err = resolve(d.event, v, d.useNumber)\n\tif err != nil {\n\t\td.error(err)\n\t}\n\n\td.nextEvent()\n}\n\nfunc (d *Decoder) alias(rv reflect.Value) {\n\tval, ok := d.anchors[string(d.event.anchor)]\n\tif !ok {\n\t\td.error(fmt.Errorf(\"missing anchor: '%s' at %s\", d.event.anchor, d.event.start_mark))\n\t}\n\n\td.replay_events = val\n\td.nextEvent()\n\td.parse(rv)\n}\n\nfunc (d *Decoder) valueInterface() interface{} {\n\tvar v interface{}\n\n\tanchor := string(d.event.anchor)\n\tswitch d.event.event_type {\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\td.begin_anchor(anchor)\n\t\tv = d.sequenceInterface()\n\tcase yaml_MAPPING_START_EVENT:\n\t\td.begin_anchor(anchor)\n\t\tv = d.mappingInterface()\n\tcase yaml_SCALAR_EVENT:\n\t\td.begin_anchor(anchor)\n\t\tv = d.scalarInterface()\n\tcase yaml_ALIAS_EVENT:\n\t\trv := reflect.ValueOf(&v)\n\t\td.alias(rv)\n\t\treturn v\n\tcase yaml_DOCUMENT_END_EVENT:\n\t\td.error(&UnexpectedEventError{\n\t\t\tValue:     string(d.event.value),\n\t\t\tEventType: d.event.event_type,\n\t\t\tAt:        d.event.start_mark,\n\t\t})\n\n\t}\n\td.end_anchor(anchor)\n\n\treturn v\n}\n\nfunc (d *Decoder) scalarInterface() interface{} {\n\t_, v := resolveInterface(d.event, d.useNumber)\n\n\td.nextEvent()\n\treturn v\n}\n\n// arrayInterface is like array but returns []interface{}.\nfunc (d *Decoder) sequenceInterface() []interface{} {\n\tvar v = make([]interface{}, 0)\n\n\td.nextEvent()\n\ndone:\n\tfor {\n\t\tswitch d.event.event_type {\n\t\tcase yaml_SEQUENCE_END_EVENT, yaml_DOCUMENT_END_EVENT:\n\t\t\tbreak done\n\t\t}\n\n\t\tv = append(v, d.valueInterface())\n\t}\n\n\tif d.event.event_type != yaml_DOCUMENT_END_EVENT {\n\t\td.nextEvent()\n\t}\n\n\treturn v\n}\n\n// objectInterface is like object but returns map[string]interface{}.\nfunc (d *Decoder) mappingInterface() map[interface{}]interface{} {\n\tm := make(map[interface{}]interface{})\n\n\td.nextEvent()\n\ndone:\n\tfor {\n\t\tswitch d.event.event_type {\n\t\tcase yaml_MAPPING_END_EVENT, yaml_DOCUMENT_END_EVENT:\n\t\t\tbreak done\n\t\t}\n\n\t\tkey := d.valueInterface()\n\n\t\t// Read value.\n\t\tm[key] = d.valueInterface()\n\t}\n\n\tif d.event.event_type != yaml_DOCUMENT_END_EVENT {\n\t\td.nextEvent()\n\t}\n\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/emitter.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\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/*\n * Flush the buffer if needed.\n */\n\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/*\n * Put a character to the output buffer.\n */\nfunc put(emitter *yaml_emitter_t, value byte) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\n\temitter.buffer[emitter.buffer_pos] = value\n\temitter.buffer_pos++\n\temitter.column++\n\treturn true\n}\n\n/*\n * Put a line break to the output buffer.\n */\n\nfunc put_break(emitter *yaml_emitter_t) bool {\n\tif !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++\n\tcase yaml_LN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos++\n\tcase yaml_CRLN_BREAK:\n\t\temitter.buffer[emitter.buffer_pos] = '\\r'\n\t\temitter.buffer[emitter.buffer_pos] = '\\n'\n\t\temitter.buffer_pos += 2\n\tdefault:\n\t\treturn false\n\t}\n\temitter.column = 0\n\temitter.line++\n\treturn true\n}\n\n/*\n * Copy a character from a string into buffer.\n */\nfunc write(emitter *yaml_emitter_t, src []byte, src_pos *int) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\tcopy_bytes(emitter.buffer, &emitter.buffer_pos, src, src_pos)\n\temitter.column++\n\treturn true\n}\n\n/*\n * Copy a line break character from a string into buffer.\n */\n\nfunc write_break(emitter *yaml_emitter_t, src []byte, src_pos *int) bool {\n\tif src[*src_pos] == '\\n' {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t\t*src_pos++\n\t} else {\n\t\tif !write(emitter, src, src_pos) {\n\t\t\treturn false\n\t\t}\n\t\temitter.column = 0\n\t\temitter.line++\n\t}\n\n\treturn true\n}\n\n/*\n * Set an emitter error and return 0.\n */\n\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/*\n * Emit an event.\n */\n\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/*\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 */\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\n\taccumulate := 0\n\tswitch emitter.events[emitter.events_head].event_type {\n\tcase yaml_DOCUMENT_START_EVENT:\n\t\taccumulate = 1\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\taccumulate = 2\n\tcase yaml_MAPPING_START_EVENT:\n\t\taccumulate = 3\n\tdefault:\n\t\treturn false\n\t}\n\n\tif len(emitter.events)-emitter.events_head > accumulate {\n\t\treturn false\n\t}\n\n\tlevel := 0\n\tfor i := emitter.events_head; i < len(emitter.events); i++ {\n\t\tswitch emitter.events[i].event_type {\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\n\t\tif level == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n/*\n * Append a directive to the directives stack.\n */\n\nfunc yaml_emitter_append_tag_directive(emitter *yaml_emitter_t,\n\tvalue *yaml_tag_directive_t, allow_duplicates bool) bool {\n\n\tfor i := range emitter.tag_directives {\n\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, \"duplicat %TAG directive\")\n\t\t}\n\t}\n\n\ttag_copy := yaml_tag_directive_t{\n\t\thandle: value.handle,\n\t\tprefix: value.prefix,\n\t}\n\n\temitter.tag_directives = append(emitter.tag_directives, tag_copy)\n\n\treturn true\n}\n\n/*\n * Increase the indentation level.\n */\n\nfunc yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow bool, indentless bool) bool {\n\n\temitter.indents = append(emitter.indents, emitter.indent)\n\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\temitter.indent += emitter.best_indent\n\t}\n\n\treturn true\n}\n\n/*\n * State dispatcher.\n */\n\nfunc yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tswitch emitter.state {\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)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, 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,\n\t\t\t\"expected nothing after STREAM-END\")\n\n\t}\n\n\tpanic(\"invalid state\")\n}\n\n/*\n * Expect STREAM-START.\n */\n\nfunc yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tif event.event_type != yaml_STREAM_START_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"expected STREAM-START\")\n\t}\n\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\temitter.encoding = event.encoding\n\n\t\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\t\temitter.encoding = yaml_UTF8_ENCODING\n\t\t}\n\t}\n\n\tif emitter.best_indent < 2 || emitter.best_indent > 9 {\n\t\temitter.best_indent = 2\n\t}\n\n\tif emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {\n\t\temitter.best_width = 512\n\t}\n\n\tif emitter.best_width < 0 {\n\t\temitter.best_width = 1<<31 - 1\n\t}\n\n\tif emitter.line_break == yaml_ANY_BREAK {\n\t\temitter.line_break = yaml_LN_BREAK\n\t}\n\n\temitter.indent = -1\n\n\temitter.line = 0\n\temitter.column = 0\n\temitter.whitespace = true\n\temitter.indention = true\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\n\temitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE\n\n\treturn true\n}\n\n/*\n * Expect DOCUMENT-START or STREAM-END.\n */\n\nfunc yaml_emitter_emit_document_start(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, first bool) bool {\n\n\tif event.event_type == yaml_DOCUMENT_START_EVENT {\n\t\tif event.version_directive != nil {\n\t\t\tif !yaml_emitter_analyze_version_directive(emitter,\n\t\t\t\t*event.version_directive) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tfor i := range event.tag_directives {\n\t\t\ttag_directive := &event.tag_directives[i]\n\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 := range default_tag_directives {\n\t\t\tif !yaml_emitter_append_tag_directive(emitter, &default_tag_directives[i], 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 (event.version_directive != nil || len(event.tag_directives) > 0) &&\n\t\t\temitter.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\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\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\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 := range event.tag_directives {\n\t\t\t\ttag_directive := &event.tag_directives[i]\n\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\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\n\t\t\tif emitter.canonical {\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\temitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE\n\n\t\treturn true\n\t} else if event.event_type == 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\n\t\tif !yaml_emitter_flush(emitter) {\n\t\t\treturn false\n\t\t}\n\n\t\temitter.state = yaml_EMIT_END_STATE\n\n\t\treturn true\n\t}\n\n\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\"expected DOCUMENT-START or STREAM-END\")\n}\n\n/*\n * Expect the root node.\n */\n\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\treturn yaml_emitter_emit_node(emitter, event, true, false, false, false)\n}\n\n/*\n * Expect DOCUMENT-END.\n */\n\nfunc yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\n\tif event.event_type != yaml_DOCUMENT_END_EVENT {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"expected DOCUMENT-END\")\n\t}\n\n\tif !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\tif !event.implicit {\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\n\temitter.state = yaml_EMIT_DOCUMENT_START_STATE\n\temitter.tag_directives = emitter.tag_directives[:0]\n\treturn true\n}\n\n/*\n *\n * Expect a flow item node.\n */\n\nfunc yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first 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.event_type == yaml_SEQUENCE_END_EVENT {\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_indicator(emitter, []byte(\",\"), false, 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_write_indicator(emitter, []byte(\"]\"), false, false, false) {\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 {\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 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\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n/*\n * Expect a flow key node.\n */\n\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, first bool) bool {\n\n\tif first {\n\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.event_type == yaml_MAPPING_END_EVENT {\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\n\t\tif emitter.canonical && !first {\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\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\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 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\",\"), false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\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} else {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"?\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\n\t\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n\t}\n}\n\n/*\n * Expect a flow value node.\n */\n\nfunc yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, simple bool) bool {\n\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\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n/*\n * Expect a block item node.\n */\n\nfunc yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, first bool) bool {\n\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false,\n\t\t\t(emitter.mapping_context && !emitter.indention)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif event.event_type == yaml_SEQUENCE_END_EVENT {\n\n\t\temitter.indent = emitter.indents[len(emitter.indents)-1]\n\t\temitter.indents = emitter.indents[:len(emitter.indents)-1]\n\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 !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\n\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n/*\n * Expect a block key node.\n */\n\nfunc yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, first bool) bool {\n\n\tif first {\n\t\tif !yaml_emitter_increase_indent(emitter, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif event.event_type == 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\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 !yaml_emitter_write_indent(emitter) {\n\t\treturn false\n\t}\n\n\tif yaml_emitter_check_simple_key(emitter) {\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)\n\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, true)\n\t} else {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"?\"), true, false, true) {\n\t\t\treturn false\n\t\t}\n\t\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)\n\n\t\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n\t}\n}\n\n/*\n * Expect a block value node.\n */\n\nfunc yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t,\n\tevent *yaml_event_t, simple bool) bool {\n\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\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\n}\n\n/*\n * Expect a node.\n */\n\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\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.event_type {\n\tcase yaml_ALIAS_EVENT:\n\t\treturn yaml_emitter_emit_alias(emitter, event)\n\n\tcase yaml_SCALAR_EVENT:\n\t\treturn yaml_emitter_emit_scalar(emitter, event)\n\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\treturn yaml_emitter_emit_sequence_start(emitter, event)\n\n\tcase yaml_MAPPING_START_EVENT:\n\t\treturn yaml_emitter_emit_mapping_start(emitter, event)\n\n\tdefault:\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS\")\n\t}\n\n\treturn false\n}\n\n/*\n * Expect ALIAS.\n */\n\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\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\treturn true\n}\n\n/*\n * Expect SCALAR.\n */\n\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\n\temitter.state = emitter.states[len(emitter.states)-1]\n\temitter.states = emitter.states[:len(emitter.states)-1]\n\n\treturn true\n}\n\n/*\n * Expect SEQUENCE-START.\n */\n\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\n\tif emitter.flow_level > 0 || emitter.canonical ||\n\t\tevent.style == yaml_style_t(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\n\treturn true\n}\n\n/*\n * Expect MAPPING-START.\n */\n\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\n\tif emitter.flow_level > 0 || emitter.canonical ||\n\t\tevent.style == yaml_style_t(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\n\treturn true\n}\n\n/*\n * Check if the document content is an empty scalar.\n */\n\nfunc yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {\n\treturn false\n}\n\n/*\n * Check if the next events represent an empty sequence.\n */\n\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\n\treturn (emitter.events[emitter.events_head].event_type == yaml_SEQUENCE_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].event_type == yaml_SEQUENCE_END_EVENT)\n}\n\n/*\n * Check if the next events represent an empty mapping.\n */\n\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\n\treturn (emitter.events[emitter.events_head].event_type == yaml_MAPPING_START_EVENT &&\n\t\temitter.events[emitter.events_head+1].event_type == yaml_MAPPING_END_EVENT)\n}\n\n/*\n * Check if the next node can be expressed as a simple key.\n */\n\nfunc yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {\n\tlength := 0\n\n\tswitch emitter.events[emitter.events_head].event_type {\n\tcase yaml_ALIAS_EVENT:\n\t\tlength += len(emitter.anchor_data.anchor)\n\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\n\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif !yaml_emitter_check_empty_sequence(emitter) {\n\t\t\treturn false\n\t\t}\n\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\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif !yaml_emitter_check_empty_mapping(emitter) {\n\t\t\treturn false\n\t\t}\n\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\n\tdefault:\n\t\treturn false\n\t}\n\n\tif length > 128 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/*\n * Determine an acceptable scalar style.\n */\n\nfunc yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {\n\tno_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0\n\n\tif no_tag && !event.implicit && !event.quoted_implicit {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"neither tag nor implicit flags are specified\")\n\t}\n\n\tstyle := yaml_scalar_style_t(event.style)\n\n\tif style == yaml_ANY_SCALAR_STYLE {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\n\tif emitter.canonical {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t}\n\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\t(emitter.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 &&\n\t\t\t(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\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\n\tif style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {\n\t\tif !emitter.scalar_data.block_allowed ||\n\t\t\temitter.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 &&\n\t\tstyle != yaml_PLAIN_SCALAR_STYLE {\n\t\temitter.tag_data.handle = []byte(\"!\")\n\t}\n\n\temitter.scalar_data.style = style\n\n\treturn true\n}\n\n/*\n * Write an achor.\n */\n\nfunc yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {\n\tif emitter.anchor_data.anchor == nil {\n\t\treturn true\n\t}\n\n\tindicator := \"*\"\n\tif !emitter.anchor_data.alias {\n\t\tindicator = \"&\"\n\t}\n\tif !yaml_emitter_write_indicator(emitter, []byte(indicator), true, false, false) {\n\t\treturn false\n\t}\n\n\treturn yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)\n}\n\n/*\n * Write a tag.\n */\n\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\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\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\n\t\t}\n\t} else {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\"!<\"), true, false, false) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {\n\t\t\treturn false\n\t\t}\n\n\t\tif !yaml_emitter_write_indicator(emitter, []byte(\">\"), false, false, false) {\n\t\t\treturn false\n\t\t}\n\n\t}\n\n\treturn true\n}\n\n/*\n * Write a scalar.\n */\n\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,\n\t\t\temitter.scalar_data.value,\n\t\t\t!emitter.simple_key_context)\n\n\tcase yaml_SINGLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_single_quoted_scalar(emitter,\n\t\t\temitter.scalar_data.value,\n\t\t\t!emitter.simple_key_context)\n\n\tcase yaml_DOUBLE_QUOTED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_double_quoted_scalar(emitter,\n\t\t\temitter.scalar_data.value,\n\t\t\t!emitter.simple_key_context)\n\n\tcase yaml_LITERAL_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_literal_scalar(emitter,\n\t\t\temitter.scalar_data.value)\n\n\tcase yaml_FOLDED_SCALAR_STYLE:\n\t\treturn yaml_emitter_write_folded_scalar(emitter,\n\t\t\temitter.scalar_data.value)\n\n\tdefault:\n\t\tpanic(\"unknown scalar\")\n\t}\n\n\treturn false\n}\n\n/*\n * Check if a %YAML directive is valid.\n */\n\nfunc yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t,\n\tversion_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,\n\t\t\t\"incompatible %YAML directive\")\n\t}\n\n\treturn true\n}\n\n/*\n * Check if a %TAG directive is valid.\n */\n\nfunc yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t,\n\ttag_directive *yaml_tag_directive_t) bool {\n\thandle := tag_directive.handle\n\tprefix := tag_directive.prefix\n\n\tif len(handle) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"tag handle must not be empty\")\n\t}\n\n\tif handle[0] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"tag handle must start with '!'\")\n\t}\n\n\tif handle[len(handle)-1] != '!' {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"tag handle must end with '!'\")\n\t}\n\n\tfor i := 1; i < len(handle)-1; width(handle[i]) {\n\t\tif !is_alpha(handle[i]) {\n\t\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\t\"tag handle must contain alphanumerical characters only\")\n\t\t}\n\t}\n\n\tif len(prefix) == 0 {\n\t\treturn yaml_emitter_set_emitter_error(emitter,\n\t\t\t\"tag prefix must not be empty\")\n\t}\n\n\treturn true\n}\n\n/*\n * Check if an anchor is valid.\n */\n\nfunc yaml_emitter_analyze_anchor(emitter *yaml_emitter_t,\n\tanchor []byte, alias bool) bool {\n\tif len(anchor) == 0 {\n\t\terrmsg := \"alias value must not be empty\"\n\t\tif !alias {\n\t\t\terrmsg = \"anchor value must not be empty\"\n\t\t}\n\t\treturn yaml_emitter_set_emitter_error(emitter, errmsg)\n\t}\n\n\tfor i := 0; i < len(anchor); i += width(anchor[i]) {\n\t\tif !is_alpha(anchor[i]) {\n\t\t\terrmsg := \"alias value must contain alphanumerical characters only\"\n\t\t\tif !alias {\n\t\t\t\terrmsg = \"anchor value must contain alphanumerical characters only\"\n\t\t\t}\n\t\t\treturn yaml_emitter_set_emitter_error(emitter, errmsg)\n\t\t}\n\t}\n\n\temitter.anchor_data.anchor = anchor\n\temitter.anchor_data.alias = alias\n\n\treturn true\n}\n\n/*\n * Check if a tag is valid.\n */\n\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,\n\t\t\t\"tag value must not be empty\")\n\t}\n\n\tfor i := range emitter.tag_directives {\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\n\temitter.tag_data.suffix = tag\n\n\treturn true\n}\n\n/*\n * Check if a scalar is valid.\n */\n\nfunc yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\tblock_indicators := false\n\tflow_indicators := false\n\tline_breaks := false\n\tspecial_characters := false\n\n\tleading_space := false\n\tleading_break := false\n\ttrailing_space := false\n\ttrailing_break := false\n\tbreak_space := false\n\tspace_break := false\n\n\tpreceeded_by_whitespace := false\n\tfollowed_by_whitespace := false\n\tprevious_space := false\n\tprevious_break := false\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\n\t\treturn true\n\t}\n\n\tif len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') ||\n\t\t(value[0] == '.' && value[1] == '.' && value[2] == '.')) {\n\t\tblock_indicators = true\n\t\tflow_indicators = true\n\t}\n\n\tpreceeded_by_whitespace = true\n\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_blankz_at(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 preceeded_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 !is_printable_at(value, i) || (!is_ascii(value[i]) && !emitter.unicode) {\n\t\t\tspecial_characters = true\n\t\t}\n\n\t\tif is_break_at(value, i) {\n\t\t\tline_breaks = true\n\t\t}\n\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+w == 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_at(value, i) {\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\tpreceeded_by_whitespace = is_blankz_at(value, i)\n\t}\n\n\temitter.scalar_data.multiline = line_breaks\n\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\n\tif trailing_space {\n\t\temitter.scalar_data.block_allowed = false\n\t}\n\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\n\tif space_break || 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\temitter.scalar_data.block_allowed = false\n\t}\n\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\n\tif flow_indicators {\n\t\temitter.scalar_data.flow_plain_allowed = false\n\t}\n\n\tif block_indicators {\n\t\temitter.scalar_data.block_plain_allowed = false\n\t}\n\n\treturn true\n}\n\n/*\n * Check if the event data is valid.\n */\n\nfunc yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {\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\tswitch event.event_type {\n\tcase yaml_ALIAS_EVENT:\n\t\tif !yaml_emitter_analyze_anchor(emitter,\n\t\t\tevent.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,\n\t\t\t\tevent.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical ||\n\t\t\t(!event.implicit &&\n\t\t\t\t!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\tcase yaml_SEQUENCE_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter,\n\t\t\t\tevent.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical ||\n\t\t\t!event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter,\n\t\t\t\tevent.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\tcase yaml_MAPPING_START_EVENT:\n\t\tif len(event.anchor) > 0 {\n\t\t\tif !yaml_emitter_analyze_anchor(emitter,\n\t\t\t\tevent.anchor, false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tif len(event.tag) > 0 && (emitter.canonical ||\n\t\t\t!event.implicit) {\n\t\t\tif !yaml_emitter_analyze_tag(emitter,\n\t\t\t\tevent.tag) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t}\n\treturn true\n}\n\n/*\n * Write the BOM character.\n */\n\nfunc yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {\n\tif !flush(emitter) {\n\t\treturn false\n\t}\n\n\tpos := emitter.buffer_pos\n\temitter.buffer[pos] = '\\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\n\tif !emitter.indention || emitter.column > indent ||\n\t\t(emitter.column == indent && !emitter.whitespace) {\n\t\tif !put_break(emitter) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.whitespace = true\n\temitter.indention = true\n\n\treturn true\n}\n\nfunc yaml_emitter_write_indicator(emitter *yaml_emitter_t,\n\tindicator []byte, need_whitespace bool,\n\tis_whitespace bool, 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\n\tind_pos := 0\n\tfor ind_pos < len(indicator) {\n\t\tif !write(emitter, indicator, &ind_pos) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.whitespace = is_whitespace\n\temitter.indention = (emitter.indention && is_indention)\n\temitter.open_ended = false\n\n\treturn true\n}\n\nfunc yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {\n\tpos := 0\n\tfor pos < len(value) {\n\t\tif !write(emitter, value, &pos) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\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\n\tpos := 0\n\tfor pos < len(value) {\n\t\tif !write(emitter, value, &pos) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\n\treturn true\n}\n\nfunc yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte,\n\tneed_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\n\tfor i := 0; i < len(value); {\n\t\twrite_it := false\n\t\tswitch value[i] {\n\t\tcase ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_',\n\t\t\t'.', '!', '~', '*', '\\'', '(', ')', '[', ']':\n\t\t\twrite_it = true\n\t\tdefault:\n\t\t\twrite_it = is_alpha(value[i])\n\t\t}\n\t\tif write_it {\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 j := 0; j < w; j++ {\n\t\t\t\tval := value[i]\n\t\t\t\ti++\n\n\t\t\t\tif !put(emitter, '%') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tc := val >> 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 = val & 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\n\t\t\t}\n\t\t}\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\n\treturn true\n}\n\nfunc yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte,\n\tallow_breaks bool) bool {\n\tspaces := false\n\tbreaks := false\n\n\tif !emitter.whitespace {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tfor i := 0; i < len(value); {\n\t\tif is_space(value[i]) {\n\t\t\tif allow_breaks && !spaces &&\n\t\t\t\temitter.column > emitter.best_width &&\n\t\t\t\t!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_at(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\temitter.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\temitter.whitespace = false\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,\n\tallow_breaks bool) bool {\n\tspaces := false\n\tbreaks := false\n\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_space(value[i]) {\n\t\t\tif allow_breaks && !spaces &&\n\t\t\t\temitter.column > emitter.best_width &&\n\t\t\t\ti > 0 && i < len(value)-1 &&\n\t\t\t\t!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_at(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\temitter.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\n\tif !yaml_emitter_write_indicator(emitter, []byte(\"'\"), false, false, false) {\n\t\treturn false\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\n\treturn true\n}\n\nfunc yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte,\n\tallow_breaks bool) bool {\n\n\tspaces := false\n\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_at(value, i) || (!emitter.unicode && !is_ascii(value[i])) ||\n\t\t\tis_bom_at(value, i) || is_break_at(value, i) ||\n\t\t\tvalue[i] == '\"' || value[i] == '\\\\' {\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\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\tswitch v {\n\t\t\tcase 0x00:\n\t\t\t\tif !put(emitter, '0') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x07:\n\t\t\t\tif !put(emitter, 'a') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x08:\n\t\t\t\tif !put(emitter, 'b') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x09:\n\t\t\t\tif !put(emitter, 't') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x0A:\n\t\t\t\tif !put(emitter, 'n') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x0B:\n\t\t\t\tif !put(emitter, 'v') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x0C:\n\t\t\t\tif !put(emitter, 'f') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x0D:\n\t\t\t\tif !put(emitter, 'r') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x1B:\n\t\t\t\tif !put(emitter, 'e') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x22:\n\t\t\t\tif !put(emitter, '\"') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x5C:\n\t\t\t\tif !put(emitter, '\\\\') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tcase 0x85:\n\t\t\t\tif !put(emitter, 'N') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0xA0:\n\t\t\t\tif !put(emitter, '_') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x2028:\n\t\t\t\tif !put(emitter, 'L') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\tcase 0x2029:\n\t\t\t\tif !put(emitter, 'P') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif v <= 0xFF {\n\t\t\t\t\tif !put(emitter, 'x') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tw = 2\n\t\t\t\t} else if v <= 0xFFFF {\n\t\t\t\t\tif !put(emitter, 'u') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tw = 4\n\t\t\t\t} else {\n\t\t\t\t\tif !put(emitter, 'U') {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\tw = 8\n\t\t\t\t}\n\t\t\t\tfor k := (w - 1) * 4; k >= 0; k -= 4 {\n\t\t\t\t\tdigit := byte((v >> uint(k)) & 0x0F)\n\t\t\t\t\tc := digit + '0'\n\t\t\t\t\tif c > 9 {\n\t\t\t\t\t\tc = digit + 'A' - 10\n\t\t\t\t\t}\n\t\t\t\t\tif !put(emitter, c) {\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\tspaces = false\n\t\t} else if is_space(value[i]) {\n\t\t\tif allow_breaks && !spaces &&\n\t\t\t\temitter.column > emitter.best_width &&\n\t\t\t\ti > 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 {\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 {\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\n\tif !yaml_emitter_write_indicator(emitter, []byte(\"\\\"\"), false, false, false) {\n\t\treturn false\n\t}\n\n\temitter.whitespace = false\n\temitter.indention = false\n\n\treturn true\n}\n\nfunc yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {\n\n\tif is_space(value[0]) || is_break_at(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\n\t\tif !is_break_at(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\tfor value[i]&0xC0 == 0x80 {\n\t\t\t\ti--\n\t\t\t}\n\n\t\t\tif is_break_at(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\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\n\treturn true\n}\n\nfunc yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {\n\n\tbreaks := true\n\n\tif !yaml_emitter_write_indicator(emitter, []byte(\"|\"), true, false, false) {\n\t\treturn false\n\t}\n\n\tif !yaml_emitter_write_block_scalar_hints(emitter, value) {\n\t\treturn false\n\t}\n\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\n\temitter.indention = true\n\temitter.whitespace = true\n\n\tfor i := 0; i < len(value); {\n\t\tif is_break_at(value, i) {\n\t\t\tif !write_break(emitter, value, &i) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\temitter.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\tbreaks := true\n\tleading_spaces := true\n\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 !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.indention = true\n\temitter.whitespace = true\n\n\tfor i := 0; i < len(value); {\n\t\tif is_break_at(value, i) {\n\t\t\tif !breaks && !leading_spaces && value[i] == '\\n' {\n\t\t\t\tk := i\n\t\t\t\tfor is_break_at(value, k) {\n\t\t\t\t\tk += width(value[k])\n\t\t\t\t}\n\t\t\t\tif !is_blankz_at(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\temitter.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]) &&\n\t\t\t\temitter.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\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/encode.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"time\"\n)\n\nvar (\n\ttimeTimeType  = reflect.TypeOf(time.Time{})\n\tmarshalerType = reflect.TypeOf(new(Marshaler)).Elem()\n\tnumberType    = reflect.TypeOf(Number(\"\"))\n\tnonPrintable  = regexp.MustCompile(\"[^\\t\\n\\r\\u0020-\\u007E\\u0085\\u00A0-\\uD7FF\\uE000-\\uFFFD]\")\n\tmultiline     = regexp.MustCompile(\"\\n|\\u0085|\\u2028|\\u2029\")\n\n\tshortTags = map[string]string{\n\t\tyaml_NULL_TAG:      \"!!null\",\n\t\tyaml_BOOL_TAG:      \"!!bool\",\n\t\tyaml_STR_TAG:       \"!!str\",\n\t\tyaml_INT_TAG:       \"!!int\",\n\t\tyaml_FLOAT_TAG:     \"!!float\",\n\t\tyaml_TIMESTAMP_TAG: \"!!timestamp\",\n\t\tyaml_SEQ_TAG:       \"!!seq\",\n\t\tyaml_MAP_TAG:       \"!!map\",\n\t\tyaml_BINARY_TAG:    \"!!binary\",\n\t}\n)\n\ntype Marshaler interface {\n\tMarshalYAML() (tag string, value interface{}, err error)\n}\n\n// An Encoder writes JSON objects to an output stream.\ntype Encoder struct {\n\tw       io.Writer\n\temitter yaml_emitter_t\n\tevent   yaml_event_t\n\tflow    bool\n\terr     error\n\n\tIgnoreOmitEmpty bool\n}\n\nfunc Marshal(v interface{}) ([]byte, error) {\n\tb := bytes.Buffer{}\n\te := NewEncoder(&b)\n\terr := e.Encode(v)\n\treturn b.Bytes(), err\n}\n\n// NewEncoder returns a new encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\te := &Encoder{w: w}\n\tyaml_emitter_initialize(&e.emitter)\n\tyaml_emitter_set_output_writer(&e.emitter, e.w)\n\tyaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)\n\te.emit()\n\tyaml_document_start_event_initialize(&e.event, nil, nil, true)\n\te.emit()\n\n\treturn e\n}\n\nfunc (e *Encoder) Encode(v interface{}) (err error) {\n\tdefer recovery(&err)\n\n\tif e.err != nil {\n\t\treturn e.err\n\t}\n\n\te.marshal(\"\", reflect.ValueOf(v), true)\n\n\tyaml_document_end_event_initialize(&e.event, true)\n\te.emit()\n\te.emitter.open_ended = false\n\tyaml_stream_end_event_initialize(&e.event)\n\te.emit()\n\n\treturn nil\n}\n\nfunc (e *Encoder) emit() {\n\tif !yaml_emitter_emit(&e.emitter, &e.event) {\n\t\tpanic(\"bad emit\")\n\t}\n}\n\nfunc (e *Encoder) marshal(tag string, v reflect.Value, allowAddr bool) {\n\tvt := v.Type()\n\n\tif vt.Implements(marshalerType) {\n\t\te.emitMarshaler(tag, v)\n\t\treturn\n\t}\n\n\tif vt.Kind() != reflect.Ptr && allowAddr {\n\t\tif reflect.PtrTo(vt).Implements(marshalerType) {\n\t\t\te.emitAddrMarshaler(tag, v)\n\t\t\treturn\n\t\t}\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Interface:\n\t\tif v.IsNil() {\n\t\t\te.emitNil()\n\t\t} else {\n\t\t\te.marshal(tag, v.Elem(), allowAddr)\n\t\t}\n\tcase reflect.Map:\n\t\te.emitMap(tag, v)\n\tcase reflect.Ptr:\n\t\tif v.IsNil() {\n\t\t\te.emitNil()\n\t\t} else {\n\t\t\te.marshal(tag, v.Elem(), true)\n\t\t}\n\tcase reflect.Struct:\n\t\te.emitStruct(tag, v)\n\tcase reflect.Slice:\n\t\te.emitSlice(tag, v)\n\tcase reflect.String:\n\t\te.emitString(tag, v)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\te.emitInt(tag, v)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\te.emitUint(tag, v)\n\tcase reflect.Float32, reflect.Float64:\n\t\te.emitFloat(tag, v)\n\tcase reflect.Bool:\n\t\te.emitBool(tag, v)\n\tdefault:\n\t\tpanic(\"Can't marshal type yet: \" + v.Type().String())\n\t}\n}\n\nfunc (e *Encoder) emitMap(tag string, v reflect.Value) {\n\te.mapping(tag, func() {\n\t\tvar keys stringValues = v.MapKeys()\n\t\tsort.Sort(keys)\n\t\tfor _, k := range keys {\n\t\t\te.marshal(\"\", k, true)\n\t\t\te.marshal(\"\", v.MapIndex(k), true)\n\t\t}\n\t})\n}\n\nfunc (e *Encoder) emitStruct(tag string, v reflect.Value) {\n\tif v.Type() == timeTimeType {\n\t\te.emitTime(tag, v)\n\t\treturn\n\t}\n\n\tfields := cachedTypeFields(v.Type())\n\n\te.mapping(tag, func() {\n\t\tfor _, f := range fields {\n\t\t\tfv := fieldByIndex(v, f.index)\n\t\t\tif !fv.IsValid() || f.omitEmpty && isEmptyValue(fv) && !e.IgnoreOmitEmpty {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\te.marshal(\"\", reflect.ValueOf(f.name), true)\n\t\t\te.flow = f.flow\n\t\t\te.marshal(\"\", fv, true)\n\t\t}\n\t})\n}\n\nfunc (e *Encoder) emitTime(tag string, v reflect.Value) {\n\tt := v.Interface().(time.Time)\n\tbytes, _ := t.MarshalText()\n\te.emitScalar(string(bytes), \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc isEmptyValue(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Array, reflect.Map, reflect.Slice, reflect.String:\n\t\treturn v.Len() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Interface, reflect.Ptr:\n\t\treturn v.IsNil()\n\t}\n\treturn false\n}\n\nfunc (e *Encoder) mapping(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\n\tf()\n\n\tyaml_mapping_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *Encoder) emitSlice(tag string, v reflect.Value) {\n\tif v.Type() == byteSliceType {\n\t\te.emitBase64(tag, v)\n\t\treturn\n\t}\n\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\tyaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)\n\te.emit()\n\n\tn := v.Len()\n\tfor i := 0; i < n; i++ {\n\t\te.marshal(\"\", v.Index(i), true)\n\t}\n\n\tyaml_sequence_end_event_initialize(&e.event)\n\te.emit()\n}\n\nfunc (e *Encoder) emitBase64(tag string, v reflect.Value) {\n\tif v.IsNil() {\n\t\te.emitNil()\n\t\treturn\n\t}\n\n\ts := v.Bytes()\n\n\tdst := make([]byte, base64.StdEncoding.EncodedLen(len(s)))\n\n\tbase64.StdEncoding.Encode(dst, s)\n\te.emitScalar(string(dst), \"\", yaml_BINARY_TAG, yaml_DOUBLE_QUOTED_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitString(tag string, v reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := v.String()\n\n\tif nonPrintable.MatchString(s) {\n\t\te.emitBase64(tag, v)\n\t\treturn\n\t}\n\n\tif v.Type() == numberType {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t} else {\n\t\tevent := yaml_event_t{\n\t\t\timplicit: true,\n\t\t\tvalue:    []byte(s),\n\t\t}\n\n\t\trtag, _ := resolveInterface(event, false)\n\t\tif tag == \"\" && rtag != yaml_STR_TAG {\n\t\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t\t} else if multiline.MatchString(s) {\n\t\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t\t} else {\n\t\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t\t}\n\t}\n\n\te.emitScalar(s, \"\", tag, style)\n}\n\nfunc (e *Encoder) emitBool(tag string, v reflect.Value) {\n\ts := strconv.FormatBool(v.Bool())\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitInt(tag string, v reflect.Value) {\n\ts := strconv.FormatInt(v.Int(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitUint(tag string, v reflect.Value) {\n\ts := strconv.FormatUint(v.Uint(), 10)\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitFloat(tag string, v reflect.Value) {\n\tf := v.Float()\n\n\tvar s string\n\tswitch {\n\tcase math.IsNaN(f):\n\t\ts = \".nan\"\n\tcase math.IsInf(f, 1):\n\t\ts = \"+.inf\"\n\tcase math.IsInf(f, -1):\n\t\ts = \"-.inf\"\n\tdefault:\n\t\ts = strconv.FormatFloat(f, 'g', -1, v.Type().Bits())\n\t}\n\n\te.emitScalar(s, \"\", tag, yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitNil() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *Encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {\n\timplicit := tag == \"\"\n\tif !implicit {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\n\tstag := shortTags[tag]\n\tif stag == \"\" {\n\t\tstag = tag\n\t}\n\n\tyaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(stag), []byte(value), implicit, implicit, style)\n\te.emit()\n}\n\nfunc (e *Encoder) emitMarshaler(tag string, v reflect.Value) {\n\tif v.Kind() == reflect.Ptr && v.IsNil() {\n\t\te.emitNil()\n\t\treturn\n\t}\n\n\tm := v.Interface().(Marshaler)\n\tif m == nil {\n\t\te.emitNil()\n\t\treturn\n\t}\n\tt, val, err := m.MarshalYAML()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tif val == nil {\n\t\te.emitNil()\n\t\treturn\n\t}\n\n\te.marshal(t, reflect.ValueOf(val), false)\n}\n\nfunc (e *Encoder) emitAddrMarshaler(tag string, v reflect.Value) {\n\tif !v.CanAddr() {\n\t\te.marshal(tag, v, false)\n\t\treturn\n\t}\n\n\tva := v.Addr()\n\tif va.IsNil() {\n\t\te.emitNil()\n\t\treturn\n\t}\n\n\tm := v.Interface().(Marshaler)\n\tt, val, err := m.MarshalYAML()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tif val == nil {\n\t\te.emitNil()\n\t\treturn\n\t}\n\n\te.marshal(t, reflect.ValueOf(val), false)\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/libyaml-LICENSE",
    "content": "Copyright (c) 2006 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"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/parser.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\n)\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\n/*\n * Peek the next token in the token queue.\n */\nfunc peek_token(parser *yaml_parser_t) *yaml_token_t {\n\tif parser.token_available || yaml_parser_fetch_more_tokens(parser) {\n\t\treturn &parser.tokens[parser.tokens_head]\n\t}\n\treturn nil\n}\n\n/*\n * Remove the next token from the queue (must be called after peek_token).\n */\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].token_type == yaml_STREAM_END_TOKEN\n\tparser.tokens_head++\n}\n\n/*\n * Get the next event.\n */\n\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\n\tif parser.stream_end_produced || parser.error != yaml_NO_ERROR ||\n\t\tparser.state == yaml_PARSE_END_STATE {\n\t\treturn true\n\t}\n\n\t/* Generate the next event. */\n\n\treturn yaml_parser_state_machine(parser, event)\n}\n\n/*\n * Set parser error.\n */\n\nfunc yaml_parser_set_parser_error(parser *yaml_parser_t,\n\tproblem string, problem_mark YAML_mark_t) bool {\n\tparser.error = yaml_PARSER_ERROR\n\tparser.problem = problem\n\tparser.problem_mark = problem_mark\n\n\treturn false\n}\n\nfunc yaml_parser_set_parser_error_context(parser *yaml_parser_t,\n\tcontext string, context_mark YAML_mark_t,\n\tproblem 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\n\treturn false\n}\n\n/*\n * State dispatcher.\n */\n\nfunc yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {\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\t}\n\n\tpanic(\"invalid parser state\")\n}\n\n/*\n * Parse the production:\n * stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END\n *              ************\n */\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\n\tif token.token_type != yaml_STREAM_START_TOKEN {\n\t\treturn yaml_parser_set_parser_error(parser,\n\t\t\t\"did not find expected <stream-start>\", token.start_mark)\n\t}\n\n\tparser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t*event = yaml_event_t{\n\t\tevent_type: 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\n\treturn true\n}\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 *                          *************************\n */\n\nfunc yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t,\n\timplicit 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\n\tif !implicit {\n\t\tfor token.token_type == 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\t/* Parse an implicit document. */\n\n\tif implicit && token.token_type != yaml_VERSION_DIRECTIVE_TOKEN &&\n\t\ttoken.token_type != yaml_TAG_DIRECTIVE_TOKEN &&\n\t\ttoken.token_type != yaml_DOCUMENT_START_TOKEN &&\n\t\ttoken.token_type != yaml_STREAM_END_TOKEN {\n\t\tif !yaml_parser_process_directives(parser, nil, nil) {\n\t\t\treturn false\n\t\t}\n\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_BLOCK_NODE_STATE\n\n\t\t*event = yaml_event_t{\n\t\t\tevent_type: yaml_DOCUMENT_START_EVENT,\n\t\t\timplicit:   true,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.end_mark,\n\t\t}\n\t} else if token.token_type != 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\n\t\tstart_mark := token.start_mark\n\t\tif !yaml_parser_process_directives(parser, &version_directive,\n\t\t\t&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.token_type != 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\n\t\tparser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)\n\t\tparser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE\n\n\t\tend_mark := token.end_mark\n\n\t\t*event = yaml_event_t{\n\t\t\tevent_type:        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\t} else {\n\t\t/* Parse the stream end. */\n\t\tparser.state = yaml_PARSE_END_STATE\n\n\t\t*event = yaml_event_t{\n\t\t\tevent_type: 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\treturn true\n}\n\n/*\n * Parse the productions:\n * explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*\n *                                                    ***********\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.token_type == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.token_type == yaml_TAG_DIRECTIVE_TOKEN ||\n\t\ttoken.token_type == yaml_DOCUMENT_START_TOKEN ||\n\t\ttoken.token_type == yaml_DOCUMENT_END_TOKEN ||\n\t\ttoken.token_type == 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} else {\n\t\treturn yaml_parser_parse_node(parser, event, true, false)\n\t}\n}\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 *                                                                *************\n */\n\nfunc yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {\n\timplicit := true\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tstart_mark, end_mark := token.start_mark, token.start_mark\n\n\tif token.token_type == 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\tevent_type: yaml_DOCUMENT_END_EVENT,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t\timplicit:   implicit,\n\t}\n\n\treturn true\n}\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 *                                            ******\n */\n\nfunc yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t,\n\tblock bool, indentless_sequence bool) bool {\n\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.token_type == yaml_ALIAS_TOKEN {\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\tevent_type: 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\tskip_token(parser)\n\t\treturn true\n\t} else {\n\t\tstart_mark, end_mark := token.start_mark, token.start_mark\n\n\t\tvar tag_handle []byte\n\t\tvar tag_suffix, anchor []byte\n\t\tvar tag_mark YAML_mark_t\n\t\tif token.token_type == yaml_ANCHOR_TOKEN {\n\t\t\tanchor = token.value\n\t\t\tstart_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\tif token.token_type == yaml_TAG_TOKEN {\n\t\t\t\ttag_handle = token.value\n\t\t\t\ttag_suffix = token.suffix\n\t\t\t\ttag_mark = token.start_mark\n\t\t\t\tend_mark = token.end_mark\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}\n\t\t} else if token.token_type == yaml_TAG_TOKEN {\n\t\t\ttag_handle = token.value\n\t\t\ttag_suffix = token.suffix\n\t\t\tstart_mark, tag_mark = token.start_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\tif token.token_type == yaml_ANCHOR_TOKEN {\n\t\t\t\tanchor = token.value\n\t\t\t\tend_mark = token.end_mark\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\n\t\t\t}\n\t\t}\n\n\t\tvar tag []byte\n\t\tif tag_handle != nil {\n\t\t\tif len(tag_handle) == 0 {\n\t\t\t\ttag = tag_suffix\n\t\t\t\ttag_handle = nil\n\t\t\t\ttag_suffix = nil\n\t\t\t} else {\n\t\t\t\tfor i := range parser.tag_directives {\n\t\t\t\t\ttag_directive := &parser.tag_directives[i]\n\t\t\t\t\tif bytes.Equal(tag_directive.handle, tag_handle) {\n\t\t\t\t\t\ttag = append([]byte(nil), tag_directive.prefix...)\n\t\t\t\t\t\ttag = append(tag, tag_suffix...)\n\t\t\t\t\t\ttag_handle = nil\n\t\t\t\t\t\ttag_suffix = nil\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif len(tag) == 0 {\n\t\t\t\t\tyaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\t\"while parsing a node\", start_mark,\n\t\t\t\t\t\t\"found undefined tag handle\", tag_mark)\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\timplicit := len(tag) == 0\n\t\tif indentless_sequence && token.token_type == yaml_BLOCK_ENTRY_TOKEN {\n\t\t\tend_mark = token.end_mark\n\t\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\n\t\t\t*event = yaml_event_t{\n\t\t\t\tevent_type: yaml_SEQUENCE_START_EVENT,\n\t\t\t\tstart_mark: start_mark,\n\t\t\t\tend_mark:   end_mark,\n\t\t\t\tanchor:     anchor,\n\t\t\t\ttag:        tag,\n\t\t\t\timplicit:   implicit,\n\t\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t\t}\n\n\t\t\treturn true\n\t\t} else {\n\t\t\tif token.token_type == yaml_SCALAR_TOKEN {\n\t\t\t\tplain_implicit := false\n\t\t\t\tquoted_implicit := false\n\t\t\t\tend_mark = token.end_mark\n\t\t\t\tif (token.style == yaml_PLAIN_SCALAR_STYLE && len(tag) == 0) ||\n\t\t\t\t\t(len(tag) == 1 && tag[0] == '!') {\n\t\t\t\t\tplain_implicit = true\n\t\t\t\t} else if len(tag) == 0 {\n\t\t\t\t\tquoted_implicit = true\n\t\t\t\t}\n\n\t\t\t\tparser.state = parser.states[len(parser.states)-1]\n\t\t\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type:      yaml_SCALAR_EVENT,\n\t\t\t\t\tstart_mark:      start_mark,\n\t\t\t\t\tend_mark:        end_mark,\n\t\t\t\t\tanchor:          anchor,\n\t\t\t\t\ttag:             tag,\n\t\t\t\t\tvalue:           token.value,\n\t\t\t\t\timplicit:        plain_implicit,\n\t\t\t\t\tquoted_implicit: quoted_implicit,\n\t\t\t\t\tstyle:           yaml_style_t(token.style),\n\t\t\t\t}\n\n\t\t\t\tskip_token(parser)\n\t\t\t\treturn true\n\t\t\t} else if token.token_type == yaml_FLOW_SEQUENCE_START_TOKEN {\n\t\t\t\tend_mark = token.end_mark\n\t\t\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type: yaml_SEQUENCE_START_EVENT,\n\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\tend_mark:   end_mark,\n\t\t\t\t\tanchor:     anchor,\n\t\t\t\t\ttag:        tag,\n\t\t\t\t\timplicit:   implicit,\n\t\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t} else if token.token_type == yaml_FLOW_MAPPING_START_TOKEN {\n\t\t\t\tend_mark = token.end_mark\n\t\t\t\tparser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type: yaml_MAPPING_START_EVENT,\n\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\tend_mark:   end_mark,\n\t\t\t\t\tanchor:     anchor,\n\t\t\t\t\ttag:        tag,\n\t\t\t\t\timplicit:   implicit,\n\t\t\t\t\tstyle:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t} else if block && token.token_type == yaml_BLOCK_SEQUENCE_START_TOKEN {\n\t\t\t\tend_mark = token.end_mark\n\t\t\t\tparser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type: yaml_SEQUENCE_START_EVENT,\n\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\tend_mark:   end_mark,\n\t\t\t\t\tanchor:     anchor,\n\t\t\t\t\ttag:        tag,\n\t\t\t\t\timplicit:   implicit,\n\t\t\t\t\tstyle:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t} else if block && token.token_type == yaml_BLOCK_MAPPING_START_TOKEN {\n\t\t\t\tend_mark = token.end_mark\n\t\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type: yaml_MAPPING_START_EVENT,\n\t\t\t\t\tstart_mark: start_mark,\n\t\t\t\t\tend_mark:   end_mark,\n\t\t\t\t\tanchor:     anchor,\n\t\t\t\t\ttag:        tag,\n\t\t\t\t\timplicit:   implicit,\n\t\t\t\t\tstyle:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} else if len(anchor) > 0 || len(tag) > 0 {\n\n\t\t\t\tparser.state = parser.states[len(parser.states)-1]\n\t\t\t\tparser.states = parser.states[:len(parser.states)-1]\n\n\t\t\t\t*event = yaml_event_t{\n\t\t\t\t\tevent_type:      yaml_SCALAR_EVENT,\n\t\t\t\t\tstart_mark:      start_mark,\n\t\t\t\t\tend_mark:        end_mark,\n\t\t\t\t\tanchor:          anchor,\n\t\t\t\t\ttag:             tag,\n\t\t\t\t\timplicit:        implicit,\n\t\t\t\t\tquoted_implicit: false,\n\t\t\t\t\tstyle:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\tmsg := \"while parsing a block node\"\n\t\t\t\tif !block {\n\t\t\t\t\tmsg = \"while parsing a flow node\"\n\t\t\t\t}\n\t\t\t\tyaml_parser_set_parser_error_context(parser, msg, start_mark,\n\t\t\t\t\t\"did not find expected node content\", token.start_mark)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\n/*\n * Parse the productions:\n * block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END\n *                    ********************  *********** *             *********\n */\n\nfunc yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t,\n\tevent *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.token_type == yaml_BLOCK_ENTRY_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.token_type != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.token_type != 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} else if token.token_type == 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\tevent_type: 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} else {\n\t\tmark := parser.marks[len(parser.marks)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\"while parsing a block collection\", mark,\n\t\t\t\"did not find expected '-' indicator\", token.start_mark)\n\t}\n}\n\n/*\n * Parse the productions:\n * indentless_sequence  ::= (BLOCK-ENTRY block_node?)+\n *                           *********** *\n */\n\nfunc yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t,\n\tevent *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.token_type == yaml_BLOCK_ENTRY_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.token_type != yaml_BLOCK_ENTRY_TOKEN &&\n\t\t\ttoken.token_type != yaml_KEY_TOKEN &&\n\t\t\ttoken.token_type != yaml_VALUE_TOKEN &&\n\t\t\ttoken.token_type != 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} else {\n\t\t\tparser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else {\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\tevent_type: yaml_SEQUENCE_END_EVENT,\n\t\t\tstart_mark: token.start_mark,\n\t\t\tend_mark:   token.start_mark,\n\t\t}\n\t\treturn true\n\t}\n}\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 */\n\nfunc yaml_parser_parse_block_mapping_key(parser *yaml_parser_t,\n\tevent *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.token_type == 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.token_type != yaml_KEY_TOKEN &&\n\t\t\ttoken.token_type != yaml_VALUE_TOKEN &&\n\t\t\ttoken.token_type != 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.token_type == 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\tevent_type: 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\tskip_token(parser)\n\t\treturn true\n\t} else {\n\t\tmark := parser.marks[len(parser.marks)-1]\n\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\"while parsing a block mapping\", mark,\n\t\t\t\"did not find expected key\", token.start_mark)\n\t}\n}\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 */\n\nfunc yaml_parser_parse_block_mapping_value(parser *yaml_parser_t,\n\tevent *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.token_type == 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.token_type != yaml_KEY_TOKEN &&\n\t\t\ttoken.token_type != yaml_VALUE_TOKEN &&\n\t\t\ttoken.token_type != 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} else {\n\t\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t\t}\n\t} else {\n\t\tparser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n\t}\n}\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 */\n\nfunc yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t,\n\tevent *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.token_type != yaml_FLOW_SEQUENCE_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.token_type == 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\tmark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow sequence\", 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.token_type == 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\tevent_type: 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\n\t\t\tskip_token(parser)\n\t\t\treturn true\n\t\t} else if token.token_type != 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\tevent_type: yaml_SEQUENCE_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\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 */\n\nfunc yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t,\n\tevent *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.token_type != yaml_VALUE_TOKEN &&\n\t\ttoken.token_type != yaml_FLOW_ENTRY_TOKEN &&\n\t\ttoken.token_type != 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} else {\n\t\tmark := token.end_mark\n\t\tskip_token(parser)\n\t\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event, mark)\n\t}\n}\n\n/*\n * Parse the productions:\n * flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n *                                                      ***** *\n */\n\nfunc yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t,\n\tevent *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif token.token_type == 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.token_type != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\ttoken.token_type != 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/*\n * Parse the productions:\n * flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n *                                                                      *\n */\n\nfunc yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t,\n\tevent *yaml_event_t) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tparser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.start_mark,\n\t}\n\n\treturn true\n}\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 */\n\nfunc yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t,\n\tevent *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.token_type != yaml_FLOW_MAPPING_END_TOKEN {\n\t\tif !first {\n\t\t\tif token.token_type == 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\tmark := parser.marks[len(parser.marks)-1]\n\t\t\t\tparser.marks = parser.marks[:len(parser.marks)-1]\n\n\t\t\t\treturn yaml_parser_set_parser_error_context(parser,\n\t\t\t\t\t\"while parsing a flow mapping\", 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.token_type == 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.token_type != yaml_VALUE_TOKEN &&\n\t\t\t\ttoken.token_type != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\t\ttoken.token_type != 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,\n\t\t\t\t\ttoken.start_mark)\n\t\t\t}\n\t\t} else if token.token_type != 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\tevent_type: yaml_MAPPING_END_EVENT,\n\t\tstart_mark: token.start_mark,\n\t\tend_mark:   token.end_mark,\n\t}\n\n\tskip_token(parser)\n\treturn true\n}\n\n/*\n * Parse the productions:\n * flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?\n *                                   *                  ***** *\n */\n\nfunc yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t,\n\tevent *yaml_event_t, empty bool) bool {\n\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tif empty {\n\t\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t\treturn yaml_parser_process_empty_scalar(parser, event,\n\t\t\ttoken.start_mark)\n\t}\n\n\tif token.token_type == 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.token_type != yaml_FLOW_ENTRY_TOKEN &&\n\t\t\ttoken.token_type != 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\n\tparser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE\n\treturn yaml_parser_process_empty_scalar(parser, event, token.start_mark)\n}\n\n/*\n * Generate an empty scalar event.\n */\n\nfunc yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t,\n\tmark YAML_mark_t) bool {\n\t*event = yaml_event_t{\n\t\tevent_type: yaml_SCALAR_EVENT,\n\t\tstart_mark: mark,\n\t\tend_mark:   mark,\n\t\tvalue:      nil,\n\t\timplicit:   true,\n\t\tstyle:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),\n\t}\n\n\treturn true\n}\n\n/*\n * Parse directives.\n */\n\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\ttoken := peek_token(parser)\n\tif token == nil {\n\t\treturn false\n\t}\n\n\tvar version_directive *yaml_version_directive_t\n\tvar tag_directives []yaml_tag_directive_t\n\n\tfor token.token_type == yaml_VERSION_DIRECTIVE_TOKEN ||\n\t\ttoken.token_type == yaml_TAG_DIRECTIVE_TOKEN {\n\t\tif token.token_type == 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 ||\n\t\t\t\ttoken.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.token_type == 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\n\t\t\tif !yaml_parser_append_tag_directive(parser, value, false,\n\t\t\t\ttoken.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\n\treturn true\n}\n\n/*\n * Append a tag directive to the directives stack.\n */\n\nfunc yaml_parser_append_tag_directive(parser *yaml_parser_t,\n\tvalue yaml_tag_directive_t, allow_duplicates bool, mark YAML_mark_t) bool {\n\tfor i := range parser.tag_directives {\n\t\ttag := &parser.tag_directives[i]\n\t\tif bytes.Equal(value.handle, tag.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\tparser.tag_directives = append(parser.tag_directives, value)\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/reader.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"io\"\n)\n\n/*\n * Set the reader error and return 0.\n */\n\nfunc yaml_parser_set_reader_error(parser *yaml_parser_t, problem string,\n\toffset 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\n\treturn false\n}\n\n/*\n * Byte order marks.\n */\nconst (\n\tBOM_UTF8    = \"\\xef\\xbb\\xbf\"\n\tBOM_UTF16LE = \"\\xff\\xfe\"\n\tBOM_UTF16BE = \"\\xfe\\xff\"\n)\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.\n */\n\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 &&\n\t\tlen(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\traw := parser.raw_buffer\n\tpos := parser.raw_buffer_pos\n\tremaining := len(raw) - pos\n\tif remaining >= 2 &&\n\t\traw[pos] == BOM_UTF16LE[0] && raw[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 remaining >= 2 &&\n\t\traw[pos] == BOM_UTF16BE[0] && raw[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 remaining >= 3 &&\n\t\traw[pos] == BOM_UTF8[0] && raw[pos+1] == BOM_UTF8[1] && raw[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\n\treturn true\n}\n\n/*\n * Update the raw buffer.\n */\n\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\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,\n\t\tparser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])\n\tparser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]\n\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(),\n\t\t\tparser.offset, -1)\n\t}\n\n\treturn true\n}\n\n/*\n * Ensure that the buffer contains at least `length` characters.\n * Return 1 on success, 0 on failure.\n *\n * The length is supposed to be significantly less that the buffer size.\n */\n\nfunc yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {\n\t/* Read handler must be set. */\n\tif parser.read_handler == nil {\n\t\tpanic(\"read handler must be set\")\n\t}\n\n\t/* If the EOF flag is set and the raw buffer is empty, do nothing. */\n\n\tif parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {\n\t\treturn true\n\t}\n\n\t/* Return if the buffer contains enough characters. */\n\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\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_end := len(parser.buffer)\n\tif 0 < parser.buffer_pos &&\n\t\tparser.buffer_pos < buffer_end {\n\t\tcopy(parser.buffer, parser.buffer[parser.buffer_pos:])\n\t\tbuffer_end -= parser.buffer_pos\n\t\tparser.buffer_pos = 0\n\t} else if parser.buffer_pos == buffer_end {\n\t\tbuffer_end = 0\n\t\tparser.buffer_pos = 0\n\t}\n\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\t\t/* Fill the raw buffer if necessary. */\n\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_end]\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\t\tfor parser.raw_buffer_pos != len(parser.raw_buffer) {\n\t\t\tvar value rune\n\t\t\tvar w int\n\n\t\t\traw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos\n\t\t\tincomplete := false\n\n\t\t\t/* Decode the next character. */\n\n\t\t\tswitch parser.encoding {\n\t\t\tcase yaml_UTF8_ENCODING:\n\n\t\t\t\t/*\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\t\t\t\t */\n\n\t\t\t\t/* Determine the length of the UTF-8 sequence. */\n\n\t\t\t\toctet := parser.raw_buffer[parser.raw_buffer_pos]\n\t\t\t\tw = width(octet)\n\n\t\t\t\t/* Check if the leading octet is valid. */\n\n\t\t\t\tif w == 0 {\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\n\t\t\t\tif w > 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\tincomplete = true\n\t\t\t\t\tbreak\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\n\t\t\t\tfor k := 1; k < w; 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\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\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 w == 1:\n\t\t\t\tcase w == 2 && value >= 0x80:\n\t\t\t\tcase w == 3 && value >= 0x800:\n\t\t\t\tcase w == 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\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\t\t\tcase yaml_UTF16LE_ENCODING,\n\t\t\t\tyaml_UTF16BE_ENCODING:\n\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\thigh, low = 1, 0\n\t\t\t\t}\n\n\t\t\t\t/*\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\t\t\t\t */\n\n\t\t\t\t/* Check for incomplete UTF-16 character. */\n\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\tincomplete = true\n\t\t\t\t\tbreak\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\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\n\t\t\t\tif (value & 0xFC00) == 0xD800 {\n\n\t\t\t\t\tw = 4\n\n\t\t\t\t\t/* Check for incomplete surrogate pair. */\n\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\tincomplete = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Get the next character. */\n\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\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\n\t\t\t\t\tvalue = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)\n\t\t\t\t} else {\n\t\t\t\t\tw = 2\n\t\t\t\t}\n\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tpanic(\"Impossible\") /* Impossible. */\n\t\t\t}\n\n\t\t\t/* Check if the raw buffer contains enough bytes to form a character. */\n\n\t\t\tif incomplete {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t/*\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\t */\n\n\t\t\tif !(value == 0x09 || value == 0x0A || value == 0x0D ||\n\t\t\t\t(value >= 0x20 && value <= 0x7E) ||\n\t\t\t\t(value == 0x85) || (value >= 0xA0 && value <= 0xD7FF) ||\n\t\t\t\t(value >= 0xE000 && value <= 0xFFFD) ||\n\t\t\t\t(value >= 0x10000 && value <= 0x10FFFF)) {\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\n\t\t\tparser.raw_buffer_pos += w\n\t\t\tparser.offset += w\n\n\t\t\t/* Finally put the character into the buffer. */\n\n\t\t\t/* 0000 0000-0000 007F . 0xxxxxxx */\n\t\t\tif value <= 0x7F {\n\t\t\t\tparser.buffer[buffer_end] = byte(value)\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_end] = byte(0xC0 + (value >> 6))\n\t\t\t\tparser.buffer[buffer_end+1] = byte(0x80 + (value & 0x3F))\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_end] = byte(0xE0 + (value >> 12))\n\t\t\t\tparser.buffer[buffer_end+1] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_end+2] = byte(0x80 + (value & 0x3F))\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_end] = byte(0xF0 + (value >> 18))\n\t\t\t\tparser.buffer[buffer_end+1] = byte(0x80 + ((value >> 12) & 0x3F))\n\t\t\t\tparser.buffer[buffer_end+2] = byte(0x80 + ((value >> 6) & 0x3F))\n\t\t\t\tparser.buffer[buffer_end+3] = byte(0x80 + (value & 0x3F))\n\t\t\t}\n\n\t\t\tbuffer_end += w\n\t\t\tparser.unread++\n\t\t}\n\n\t\t/* On EOF, put NUL into the buffer and return. */\n\n\t\tif parser.eof {\n\t\t\tparser.buffer[buffer_end] = 0\n\t\t\tbuffer_end++\n\t\t\tparser.buffer = parser.buffer[:buffer_end]\n\t\t\tparser.unread++\n\t\t\treturn true\n\t\t}\n\n\t}\n\n\tparser.buffer = parser.buffer[:buffer_end]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/resolver.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar byteSliceType = reflect.TypeOf([]byte(nil))\n\nvar binary_tags = [][]byte{[]byte(\"!binary\"), []byte(yaml_BINARY_TAG)}\nvar bool_values map[string]bool\nvar null_values map[string]bool\n\nvar signs = []byte{'-', '+'}\nvar nulls = []byte{'~', 'n', 'N'}\nvar bools = []byte{'t', 'T', 'f', 'F', 'y', 'Y', 'n', 'N', 'o', 'O'}\n\nvar timestamp_regexp *regexp.Regexp\nvar ymd_regexp *regexp.Regexp\n\nfunc init() {\n\tbool_values = make(map[string]bool)\n\tbool_values[\"y\"] = true\n\tbool_values[\"yes\"] = true\n\tbool_values[\"n\"] = false\n\tbool_values[\"no\"] = false\n\tbool_values[\"true\"] = true\n\tbool_values[\"false\"] = false\n\tbool_values[\"on\"] = true\n\tbool_values[\"off\"] = false\n\n\tnull_values = make(map[string]bool)\n\tnull_values[\"~\"] = true\n\tnull_values[\"null\"] = true\n\tnull_values[\"Null\"] = true\n\tnull_values[\"NULL\"] = true\n\n\ttimestamp_regexp = regexp.MustCompile(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\t]*(?:Z|([-+][0-9][0-9]?)(?::([0-9][0-9])?)?))?)?$\")\n\tymd_regexp = regexp.MustCompile(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)$\")\n}\n\nfunc resolve(event yaml_event_t, v reflect.Value, useNumber bool) (string, error) {\n\tval := string(event.value)\n\n\tif null_values[val] {\n\t\tv.Set(reflect.Zero(v.Type()))\n\t\treturn yaml_NULL_TAG, nil\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.String:\n\t\tif useNumber && v.Type() == numberType {\n\t\t\ttag, i := resolveInterface(event, useNumber)\n\t\t\tif n, ok := i.(Number); ok {\n\t\t\t\tv.Set(reflect.ValueOf(n))\n\t\t\t\treturn tag, nil\n\t\t\t}\n\t\t\treturn \"\", fmt.Errorf(\"Not a number: '%s' at %s\", event.value, event.start_mark)\n\t\t}\n\n\t\treturn resolve_string(val, v, event)\n\tcase reflect.Bool:\n\t\treturn resolve_bool(val, v, event)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn resolve_int(val, v, useNumber, event)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn resolve_uint(val, v, useNumber, event)\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn resolve_float(val, v, useNumber, event)\n\tcase reflect.Interface:\n\t\t_, i := resolveInterface(event, useNumber)\n\t\tif i != nil {\n\t\t\tv.Set(reflect.ValueOf(i))\n\t\t} else {\n\t\t\tv.Set(reflect.Zero(v.Type()))\n\t\t}\n\n\tcase reflect.Struct:\n\t\treturn resolve_time(val, v, event)\n\tcase reflect.Slice:\n\t\tif v.Type() != byteSliceType {\n\t\t\treturn \"\", fmt.Errorf(\"Cannot resolve %s into %s at %s\", val, v.String(), event.start_mark)\n\t\t}\n\t\tb, err := decode_binary(event.value, event)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tv.Set(reflect.ValueOf(b))\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"Unknown resolution for '%s' using %s at %s\", val, v.String(), event.start_mark)\n\t}\n\n\treturn yaml_STR_TAG, nil\n}\n\nfunc hasBinaryTag(event yaml_event_t) bool {\n\tfor _, tag := range binary_tags {\n\t\tif bytes.Equal(event.tag, tag) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc decode_binary(value []byte, event yaml_event_t) ([]byte, error) {\n\tb := make([]byte, base64.StdEncoding.DecodedLen(len(value)))\n\tn, err := base64.StdEncoding.Decode(b, value)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Invalid base64 text: '%s' at %s\", string(b), event.start_mark)\n\t}\n\treturn b[:n], nil\n}\n\nfunc resolve_string(val string, v reflect.Value, event yaml_event_t) (string, error) {\n\tif len(event.tag) > 0 {\n\t\tif hasBinaryTag(event) {\n\t\t\tb, err := decode_binary(event.value, event)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tval = string(b)\n\t\t}\n\t}\n\tv.SetString(val)\n\treturn yaml_STR_TAG, nil\n}\n\nfunc resolve_bool(val string, v reflect.Value, event yaml_event_t) (string, error) {\n\tb, found := bool_values[strings.ToLower(val)]\n\tif !found {\n\t\treturn \"\", fmt.Errorf(\"Invalid boolean: '%s' at %s\", val, event.start_mark)\n\t}\n\n\tv.SetBool(b)\n\treturn yaml_BOOL_TAG, nil\n}\n\nfunc resolve_int(val string, v reflect.Value, useNumber bool, event yaml_event_t) (string, error) {\n\toriginal := val\n\tval = strings.Replace(val, \"_\", \"\", -1)\n\tvar value uint64\n\n\tisNumberValue := v.Type() == numberType\n\n\tsign := int64(1)\n\tif val[0] == '-' {\n\t\tsign = -1\n\t\tval = val[1:]\n\t} else if val[0] == '+' {\n\t\tval = val[1:]\n\t}\n\n\tbase := 0\n\tif val == \"0\" {\n\t\tif isNumberValue {\n\t\t\tv.SetString(\"0\")\n\t\t} else {\n\t\t\tv.Set(reflect.Zero(v.Type()))\n\t\t}\n\n\t\treturn yaml_INT_TAG, nil\n\t}\n\n\tif strings.HasPrefix(val, \"0o\") {\n\t\tbase = 8\n\t\tval = val[2:]\n\t}\n\n\tvalue, err := strconv.ParseUint(val, base, 64)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"Invalid integer: '%s' at %s\", original, event.start_mark)\n\t}\n\n\tvar val64 int64\n\tif value <= math.MaxInt64 {\n\t\tval64 = int64(value)\n\t\tif sign == -1 {\n\t\t\tval64 = -val64\n\t\t}\n\t} else if sign == -1 && value == uint64(math.MaxInt64)+1 {\n\t\tval64 = math.MinInt64\n\t} else {\n\t\treturn \"\", fmt.Errorf(\"Invalid integer: '%s' at %s\", original, event.start_mark)\n\t}\n\n\tif isNumberValue {\n\t\tv.SetString(strconv.FormatInt(val64, 10))\n\t} else {\n\t\tif v.OverflowInt(val64) {\n\t\t\treturn \"\", fmt.Errorf(\"Invalid integer: '%s' at %s\", original, event.start_mark)\n\t\t}\n\t\tv.SetInt(val64)\n\t}\n\n\treturn yaml_INT_TAG, nil\n}\n\nfunc resolve_uint(val string, v reflect.Value, useNumber bool, event yaml_event_t) (string, error) {\n\toriginal := val\n\tval = strings.Replace(val, \"_\", \"\", -1)\n\tvar value uint64\n\n\tisNumberValue := v.Type() == numberType\n\n\tif val[0] == '-' {\n\t\treturn \"\", fmt.Errorf(\"Unsigned int with negative value: '%s' at %s\", original, event.start_mark)\n\t}\n\n\tif val[0] == '+' {\n\t\tval = val[1:]\n\t}\n\n\tbase := 0\n\tif val == \"0\" {\n\t\tif isNumberValue {\n\t\t\tv.SetString(\"0\")\n\t\t} else {\n\t\t\tv.Set(reflect.Zero(v.Type()))\n\t\t}\n\n\t\treturn yaml_INT_TAG, nil\n\t}\n\n\tif strings.HasPrefix(val, \"0o\") {\n\t\tbase = 8\n\t\tval = val[2:]\n\t}\n\n\tvalue, err := strconv.ParseUint(val, base, 64)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"Invalid unsigned integer: '%s' at %s\", val, event.start_mark)\n\t}\n\n\tif isNumberValue {\n\t\tv.SetString(strconv.FormatUint(value, 10))\n\t} else {\n\t\tif v.OverflowUint(value) {\n\t\t\treturn \"\", fmt.Errorf(\"Invalid unsigned integer: '%s' at %s\", val, event.start_mark)\n\t\t}\n\n\t\tv.SetUint(value)\n\t}\n\n\treturn yaml_INT_TAG, nil\n}\n\nfunc resolve_float(val string, v reflect.Value, useNumber bool, event yaml_event_t) (string, error) {\n\tval = strings.Replace(val, \"_\", \"\", -1)\n\tvar value float64\n\n\tisNumberValue := v.Type() == numberType\n\ttypeBits := 64\n\tif !isNumberValue {\n\t\ttypeBits = v.Type().Bits()\n\t}\n\n\tsign := 1\n\tif val[0] == '-' {\n\t\tsign = -1\n\t\tval = val[1:]\n\t} else if val[0] == '+' {\n\t\tval = val[1:]\n\t}\n\n\tvalLower := strings.ToLower(val)\n\tif valLower == \".inf\" {\n\t\tvalue = math.Inf(sign)\n\t} else if valLower == \".nan\" {\n\t\tvalue = math.NaN()\n\t} else {\n\t\tvar err error\n\t\tvalue, err = strconv.ParseFloat(val, typeBits)\n\t\tvalue *= float64(sign)\n\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"Invalid float: '%s' at %s\", val, event.start_mark)\n\t\t}\n\t}\n\n\tif isNumberValue {\n\t\tv.SetString(strconv.FormatFloat(value, 'g', -1, typeBits))\n\t} else {\n\t\tif v.OverflowFloat(value) {\n\t\t\treturn \"\", fmt.Errorf(\"Invalid float: '%s' at %s\", val, event.start_mark)\n\t\t}\n\n\t\tv.SetFloat(value)\n\t}\n\n\treturn yaml_FLOAT_TAG, nil\n}\n\nfunc resolve_time(val string, v reflect.Value, event yaml_event_t) (string, error) {\n\tvar parsedTime time.Time\n\tmatches := ymd_regexp.FindStringSubmatch(val)\n\tif len(matches) > 0 {\n\t\tyear, _ := strconv.Atoi(matches[1])\n\t\tmonth, _ := strconv.Atoi(matches[2])\n\t\tday, _ := strconv.Atoi(matches[3])\n\t\tparsedTime = time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)\n\t} else {\n\t\tmatches = timestamp_regexp.FindStringSubmatch(val)\n\t\tif len(matches) == 0 {\n\t\t\treturn \"\", fmt.Errorf(\"Invalid timestamp: '%s' at %s\", val, event.start_mark)\n\t\t}\n\n\t\tyear, _ := strconv.Atoi(matches[1])\n\t\tmonth, _ := strconv.Atoi(matches[2])\n\t\tday, _ := strconv.Atoi(matches[3])\n\t\thour, _ := strconv.Atoi(matches[4])\n\t\tmin, _ := strconv.Atoi(matches[5])\n\t\tsec, _ := strconv.Atoi(matches[6])\n\n\t\tnsec := 0\n\t\tif matches[7] != \"\" {\n\t\t\tmillis, _ := strconv.Atoi(matches[7])\n\t\t\tnsec = int(time.Duration(millis) * time.Millisecond)\n\t\t}\n\n\t\tloc := time.UTC\n\t\tif matches[8] != \"\" {\n\t\t\tsign := matches[8][0]\n\t\t\thr, _ := strconv.Atoi(matches[8][1:])\n\t\t\tmin := 0\n\t\t\tif matches[9] != \"\" {\n\t\t\t\tmin, _ = strconv.Atoi(matches[9])\n\t\t\t}\n\n\t\t\tzoneOffset := (hr*60 + min) * 60\n\t\t\tif sign == '-' {\n\t\t\t\tzoneOffset = -zoneOffset\n\t\t\t}\n\n\t\t\tloc = time.FixedZone(\"\", zoneOffset)\n\t\t}\n\t\tparsedTime = time.Date(year, time.Month(month), day, hour, min, sec, nsec, loc)\n\t}\n\n\tv.Set(reflect.ValueOf(parsedTime))\n\treturn \"\", nil\n}\n\nfunc resolveInterface(event yaml_event_t, useNumber bool) (string, interface{}) {\n\tval := string(event.value)\n\tif len(event.tag) == 0 && !event.implicit {\n\t\treturn \"\", val\n\t}\n\n\tif len(val) == 0 {\n\t\treturn yaml_NULL_TAG, nil\n\t}\n\n\tvar result interface{}\n\n\tsign := false\n\tc := val[0]\n\tswitch {\n\tcase bytes.IndexByte(signs, c) != -1:\n\t\tsign = true\n\t\tfallthrough\n\tcase c >= '0' && c <= '9':\n\t\ti := int64(0)\n\t\tresult = &i\n\t\tif useNumber {\n\t\t\tvar n Number\n\t\t\tresult = &n\n\t\t}\n\n\t\tv := reflect.ValueOf(result).Elem()\n\t\tif _, err := resolve_int(val, v, useNumber, event); err == nil {\n\t\t\treturn yaml_INT_TAG, v.Interface()\n\t\t}\n\n\t\tf := float64(0)\n\t\tresult = &f\n\t\tif useNumber {\n\t\t\tvar n Number\n\t\t\tresult = &n\n\t\t}\n\n\t\tv = reflect.ValueOf(result).Elem()\n\t\tif _, err := resolve_float(val, v, useNumber, event); err == nil {\n\t\t\treturn yaml_FLOAT_TAG, v.Interface()\n\t\t}\n\n\t\tif !sign {\n\t\t\tt := time.Time{}\n\t\t\tif _, err := resolve_time(val, reflect.ValueOf(&t).Elem(), event); err == nil {\n\t\t\t\treturn \"\", t\n\t\t\t}\n\t\t}\n\tcase bytes.IndexByte(nulls, c) != -1:\n\t\tif null_values[val] {\n\t\t\treturn yaml_NULL_TAG, nil\n\t\t}\n\t\tb := false\n\t\tif _, err := resolve_bool(val, reflect.ValueOf(&b).Elem(), event); err == nil {\n\t\t\treturn yaml_BOOL_TAG, b\n\t\t}\n\tcase c == '.':\n\t\tf := float64(0)\n\t\tresult = &f\n\t\tif useNumber {\n\t\t\tvar n Number\n\t\t\tresult = &n\n\t\t}\n\n\t\tv := reflect.ValueOf(result).Elem()\n\t\tif _, err := resolve_float(val, v, useNumber, event); err == nil {\n\t\t\treturn yaml_FLOAT_TAG, v.Interface()\n\t\t}\n\tcase bytes.IndexByte(bools, c) != -1:\n\t\tb := false\n\t\tif _, err := resolve_bool(val, reflect.ValueOf(&b).Elem(), event); err == nil {\n\t\t\treturn yaml_BOOL_TAG, b\n\t\t}\n\t}\n\n\tif hasBinaryTag(event) {\n\t\tbytes, err := decode_binary(event.value, event)\n\t\tif err == nil {\n\t\t\treturn yaml_BINARY_TAG, bytes\n\t\t}\n\t}\n\n\treturn yaml_STR_TAG, val\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/run_parser.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc Run_parser(cmd string, args []string) {\n\tfor i := 0; i < len(args); i++ {\n\t\tfmt.Printf(\"[%d] Scanning '%s'\", i, args[i])\n\t\tfile, err := os.Open(args[i])\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"Invalid file '%s': %s\", args[i], err.Error()))\n\t\t}\n\n\t\tparser := yaml_parser_t{}\n\t\tyaml_parser_initialize(&parser)\n\t\tyaml_parser_set_input_reader(&parser, file)\n\n\t\tfailed := false\n\t\ttoken := yaml_token_t{}\n\t\tcount := 0\n\t\tfor {\n\t\t\tif !yaml_parser_scan(&parser, &token) {\n\t\t\t\tfailed = true\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif token.token_type == yaml_STREAM_END_TOKEN {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcount++\n\t\t}\n\n\t\tfile.Close()\n\n\t\tmsg := \"SUCCESS\"\n\t\tif failed {\n\t\t\tmsg = \"FAILED\"\n\t\t\tif parser.error != yaml_NO_ERROR {\n\t\t\t\tm := parser.problem_mark\n\t\t\t\tfmt.Printf(\"ERROR: (%s) %s @ line: %d  col: %d\\n\",\n\t\t\t\t\tparser.context, parser.problem, m.line, m.column)\n\t\t\t}\n\t\t}\n\t\tfmt.Printf(\"%s (%d tokens)\\n\", msg, count)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/scanner.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"bytes\"\n)\n\n/*\n * Introduction\n * ************\n *\n * The following notes assume that you are familiar with the YAML specification\n * (http://yaml.org/spec/cvs/current.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/*\n * Ensure that the buffer contains the required number of characters.\n * Return 1 on success, 0 on failure (reader error or memory error).\n */\nfunc cache(parser *yaml_parser_t, length int) bool {\n\tif parser.unread >= length {\n\t\treturn true\n\t}\n\n\treturn yaml_parser_update_buffer(parser, length)\n}\n\n/*\n * Advance the buffer pointer.\n */\nfunc skip(parser *yaml_parser_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_at(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} else if is_break_at(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}\n}\n\n/*\n * Copy a character to a string buffer and advance pointers.\n */\n\nfunc read(parser *yaml_parser_t, s []byte) []byte {\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/*\n * Copy a line break character to a string buffer and advance pointers.\n */\nfunc read_line(parser *yaml_parser_t, s []byte) []byte {\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\tif 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\t} else if 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\t} else if 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\t} else if buf[pos] == '\\xE2' && buf[pos+1] == '\\x80' &&\n\t\t(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\t} else {\n\t\treturn s\n\t}\n\n\tparser.mark.index++\n\tparser.mark.column = 0\n\tparser.mark.line++\n\tparser.unread--\n\treturn s\n}\n\n/*\n * Get the next token.\n */\n\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{}\n\n\t/* No tokens after STREAM-END or error. */\n\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\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\n\t*token = parser.tokens[parser.tokens_head]\n\tparser.tokens_head++\n\tparser.token_available = false\n\tparser.tokens_parsed++\n\n\tif token.token_type == yaml_STREAM_END_TOKEN {\n\t\tparser.stream_end_produced = true\n\t}\n\n\treturn true\n}\n\n/*\n * Set the scanner error and return 0.\n */\n\nfunc yaml_parser_set_scanner_error(parser *yaml_parser_t, context string,\n\tcontext_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\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 directive\"\n\tif directive {\n\t\tcontext = \"while parsing a tag\"\n\t}\n\treturn yaml_parser_set_scanner_error(parser, context, context_mark, \"did not find URI escaped octet\")\n}\n\n/*\n * Ensure that the tokens queue contains at least one token which can be\n * returned to the Parser.\n */\n\nfunc yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {\n\t/* While we need more tokens to fetch, do it. */\n\n\tfor {\n\t\t/*\n\t\t * Check if we really need to fetch more tokens.\n\t\t */\n\n\t\tneed_more_tokens := false\n\n\t\tif parser.tokens_head == len(parser.tokens) {\n\t\t\t/* Queue is empty. */\n\n\t\t\tneed_more_tokens = true\n\t\t} else {\n\n\t\t\t/* Check if any potential simple key may occupy the head position. */\n\n\t\t\tif !yaml_parser_stale_simple_keys(parser) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfor i := range parser.simple_keys {\n\t\t\t\tsimple_key := &parser.simple_keys[i]\n\n\t\t\t\tif simple_key.possible &&\n\t\t\t\t\tsimple_key.token_number == parser.tokens_parsed {\n\t\t\t\t\tneed_more_tokens = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(parser.simple_keys) > 0 {\n\n\t\t}\n\t\t/* We are finished. */\n\n\t\tif !need_more_tokens {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Fetch the next token. */\n\n\t\tif !yaml_parser_fetch_next_token(parser) {\n\t\t\treturn false\n\t\t}\n\n\t}\n\n\tparser.token_available = true\n\n\treturn true\n}\n\n/*\n * The dispatcher for token fetchers.\n */\n\nfunc yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {\n\t/* Ensure that the buffer is initialized. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\t/* Check if we just started scanning.  Fetch STREAM-START then. */\n\n\tif !parser.stream_start_produced {\n\t\treturn yaml_parser_fetch_stream_start(parser)\n\t}\n\n\t/* Eat whitespaces and comments until we reach the next token. */\n\n\tif !yaml_parser_scan_to_next_token(parser) {\n\t\treturn false\n\t}\n\n\t/* Remove obsolete potential simple keys. */\n\n\tif !yaml_parser_stale_simple_keys(parser) {\n\t\treturn false\n\t}\n\n\t/* Check the indentation level against the current column. */\n\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column) {\n\t\treturn false\n\t}\n\n\t/*\n\t * Ensure that the buffer contains at least 4 characters.  4 is the length\n\t * of the longest indicators ('--- ' and '... ').\n\t */\n\n\tif !cache(parser, 4) {\n\t\treturn false\n\t}\n\n\t/* Is it the end of the stream? */\n\tbuf := parser.buffer\n\tpos := parser.buffer_pos\n\n\tif is_z(buf[pos]) {\n\t\treturn yaml_parser_fetch_stream_end(parser)\n\t}\n\n\t/* Is it a directive? */\n\n\tif parser.mark.column == 0 && buf[pos] == '%' {\n\t\treturn yaml_parser_fetch_directive(parser)\n\t}\n\n\t/* Is it the document start indicator? */\n\n\tif parser.mark.column == 0 &&\n\t\tbuf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' &&\n\t\tis_blankz_at(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser,\n\t\t\tyaml_DOCUMENT_START_TOKEN)\n\t}\n\n\t/* Is it the document end indicator? */\n\n\tif parser.mark.column == 0 &&\n\t\tbuf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' &&\n\t\tis_blankz_at(buf, pos+3) {\n\t\treturn yaml_parser_fetch_document_indicator(parser,\n\t\t\tyaml_DOCUMENT_END_TOKEN)\n\t}\n\n\t/* Is it the flow sequence start indicator? */\n\n\tif buf[pos] == '[' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser,\n\t\t\tyaml_FLOW_SEQUENCE_START_TOKEN)\n\t}\n\n\t/* Is it the flow mapping start indicator? */\n\n\tif buf[pos] == '{' {\n\t\treturn yaml_parser_fetch_flow_collection_start(parser,\n\t\t\tyaml_FLOW_MAPPING_START_TOKEN)\n\t}\n\n\t/* Is it the flow sequence end indicator? */\n\n\tif buf[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\n\tif buf[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\n\tif buf[pos] == ',' {\n\t\treturn yaml_parser_fetch_flow_entry(parser)\n\t}\n\n\t/* Is it the block entry indicator? */\n\tif buf[pos] == '-' && is_blankz_at(buf, pos+1) {\n\t\treturn yaml_parser_fetch_block_entry(parser)\n\t}\n\n\t/* Is it the key indicator? */\n\tif buf[pos] == '?' &&\n\t\t(parser.flow_level > 0 || is_blankz_at(buf, pos+1)) {\n\t\treturn yaml_parser_fetch_key(parser)\n\t}\n\n\t/* Is it the value indicator? */\n\tif buf[pos] == ':' &&\n\t\t(parser.flow_level > 0 || is_blankz_at(buf, pos+1)) {\n\t\treturn yaml_parser_fetch_value(parser)\n\t}\n\n\t/* Is it an alias? */\n\tif buf[pos] == '*' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)\n\t}\n\n\t/* Is it an anchor? */\n\n\tif buf[pos] == '&' {\n\t\treturn yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)\n\t}\n\n\t/* Is it a tag? */\n\n\tif buf[pos] == '!' {\n\t\treturn yaml_parser_fetch_tag(parser)\n\t}\n\n\t/* Is it a literal scalar? */\n\tif buf[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 buf[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\n\tif buf[pos] == '\\'' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, true)\n\t}\n\n\t/* Is it a double-quoted scalar? */\n\tif buf[pos] == '\"' {\n\t\treturn yaml_parser_fetch_flow_scalar(parser, false)\n\t}\n\n\t/*\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 */\n\n\tb := buf[pos]\n\tif !(is_blankz_at(buf, pos) || b == '-' ||\n\t\tb == '?' || b == ':' ||\n\t\tb == ',' || b == '[' ||\n\t\tb == ']' || b == '{' ||\n\t\tb == '}' || b == '#' ||\n\t\tb == '&' || b == '*' ||\n\t\tb == '!' || b == '|' ||\n\t\tb == '>' || b == '\\'' ||\n\t\tb == '\"' || b == '%' ||\n\t\tb == '@' || b == '`') ||\n\t\t(b == '-' && !is_blank(buf[pos+1])) ||\n\t\t(parser.flow_level == 0 &&\n\t\t\t(buf[pos] == '?' || buf[pos] == ':') &&\n\t\t\t!is_blank(buf[pos+1])) {\n\t\treturn yaml_parser_fetch_plain_scalar(parser)\n\t}\n\n\t/*\n\t * If we don't determine the token type so far, it is an error.\n\t */\n\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\n/*\n * Check the list of potential simple keys and remove the positions that\n * cannot contain simple keys anymore.\n */\n\nfunc yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {\n\t/* Check for a potential simple key for each flow level. */\n\n\tfor i := range parser.simple_keys {\n\t\t/*\n\t\t * The specification requires that a simple key\n\t\t *\n\t\t *  - is limited to a single line,\n\t\t *  - is shorter than 1024 characters.\n\t\t */\n\n\t\tsimple_key := &parser.simple_keys[i]\n\t\tif simple_key.possible &&\n\t\t\t(simple_key.mark.line < parser.mark.line ||\n\t\t\t\tsimple_key.mark.index+1024 < parser.mark.index) {\n\n\t\t\t/* Check if the potential simple key to be removed is required. */\n\n\t\t\tif simple_key.required {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\t\"could not find expected ':'\")\n\t\t\t}\n\n\t\t\tsimple_key.possible = false\n\t\t}\n\t}\n\n\treturn true\n}\n\n/*\n * Check if a simple key may start at the current position and add it if\n * needed.\n */\n\nfunc yaml_parser_save_simple_key(parser *yaml_parser_t) bool {\n\t/*\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\t */\n\n\trequired := (parser.flow_level == 0 &&\n\t\tparser.indent == parser.mark.column)\n\n\t/*\n\t * A simple key is required only when it is the first token in the current\n\t * line.  Therefore it is always allowed.  But we add a check anyway.\n\t */\n\tif required && !parser.simple_key_allowed {\n\t\tpanic(\"impossible\") /* Impossible. */\n\t}\n\n\t/*\n\t * If the current position may start a simple key, save it.\n\t */\n\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}\n\t\tsimple_key.mark = parser.mark\n\n\t\tif !yaml_parser_remove_simple_key(parser) {\n\t\t\treturn false\n\t\t}\n\n\t\tparser.simple_keys[len(parser.simple_keys)-1] = simple_key\n\t}\n\n\treturn true\n}\n\n/*\n * Remove a potential simple key at the current flow level.\n */\n\nfunc yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {\n\tsimple_key := &parser.simple_keys[len(parser.simple_keys)-1]\n\n\tif simple_key.possible {\n\t\t/* If the key is required, it is an error. */\n\n\t\tif simple_key.required {\n\t\t\treturn 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}\n\n\t/* Remove the key from the stack. */\n\n\tsimple_key.possible = false\n\n\treturn true\n}\n\n/*\n * Increase the flow level and resize the simple key list if needed.\n */\n\nfunc yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {\n\t/* Reset the simple key on the next level. */\n\n\tparser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})\n\n\t/* Increase the flow level. */\n\n\tparser.flow_level++\n\n\treturn true\n}\n\n/*\n * Decrease the flow level.\n */\n\nfunc yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {\n\tif parser.flow_level > 0 {\n\t\tparser.flow_level--\n\t\tparser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1]\n\t}\n\n\treturn true\n}\n\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.\n *\n */\n\nfunc yaml_parser_roll_indent(parser *yaml_parser_t, column int,\n\tnumber int, token_type yaml_token_type_t, mark YAML_mark_t) bool {\n\t/* In the flow context, do nothing. */\n\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\tif parser.indent == -1 || parser.indent < column {\n\t\t/*\n\t\t * Push the current indentation level to the stack and set the new\n\t\t * indentation level.\n\t\t */\n\n\t\tparser.indents = append(parser.indents, parser.indent)\n\t\tparser.indent = column\n\n\t\t/* Create a token and insert it into the queue. */\n\t\ttoken := yaml_token_t{\n\t\t\ttoken_type: token_type,\n\t\t\tstart_mark: mark,\n\t\t\tend_mark:   mark,\n\t\t}\n\n\t\t// number == -1 -> enqueue otherwise insert\n\t\tif number > -1 {\n\t\t\tnumber -= parser.tokens_parsed\n\t\t}\n\t\tinsert_token(parser, number, &token)\n\t}\n\n\treturn true\n}\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.\n */\n\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {\n\t/* In the flow context, do nothing. */\n\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t/*\n\t * column is unsigned and parser->indent is signed, so if\n\t * parser->indent is less than zero the conditional in the while\n\t * loop below is incorrect.  Guard against that.\n\t */\n\n\tif parser.indent < 0 {\n\t\treturn true\n\t}\n\n\t/* Loop through the indentation levels in the stack. */\n\n\tfor parser.indent > column {\n\t\t/* Create a token and append it to the queue. */\n\t\ttoken := yaml_token_t{\n\t\t\ttoken_type: yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: parser.mark,\n\t\t\tend_mark:   parser.mark,\n\t\t}\n\t\tinsert_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\n\t}\n\n\treturn true\n}\n\n/*\n * Pop indentation levels from the indents stack until the current\n * level resets to -1.  For each indentation level, append the\n * BLOCK-END token.\n */\n\nfunc yaml_parser_reset_indent(parser *yaml_parser_t) bool {\n\t/* In the flow context, do nothing. */\n\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t/* Loop through the indentation levels in the stack. */\n\n\tfor parser.indent > -1 {\n\t\t/* Create a token and append it to the queue. */\n\n\t\ttoken := yaml_token_t{\n\t\t\ttoken_type: yaml_BLOCK_END_TOKEN,\n\t\t\tstart_mark: parser.mark,\n\t\t\tend_mark:   parser.mark,\n\t\t}\n\t\tinsert_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\n\treturn true\n}\n\n/*\n * Initialize the scanner and produce the STREAM-START token.\n */\n\nfunc yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {\n\t/* Set the initial indentation. */\n\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\t/* A simple key is allowed at the beginning of the stream. */\n\n\tparser.simple_key_allowed = true\n\n\t/* We have started. */\n\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\ttoken_type: yaml_STREAM_START_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t\tencoding:   parser.encoding,\n\t}\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the STREAM-END token and shut down the scanner.\n */\n\nfunc yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {\n\t/* Force new line. */\n\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\n\tif !yaml_parser_reset_indent(parser) {\n\t\treturn false\n\t}\n\n\t/* Reset simple keys. */\n\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\ttoken_type: yaml_STREAM_END_TOKEN,\n\t\tstart_mark: parser.mark,\n\t\tend_mark:   parser.mark,\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.\n */\n\nfunc yaml_parser_fetch_directive(parser *yaml_parser_t) bool {\n\t/* Reset the indentation level. */\n\n\tif !yaml_parser_reset_indent(parser) {\n\t\treturn false\n\t}\n\n\t/* Reset simple keys. */\n\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\tvar token yaml_token_t\n\tif !yaml_parser_scan_directive(parser, &token) {\n\t\treturn false\n\t}\n\n\t/* Append the token to the queue. */\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the DOCUMENT-START or DOCUMENT-END token.\n */\n\nfunc yaml_parser_fetch_document_indicator(parser *yaml_parser_t,\n\ttoken_type yaml_token_type_t) bool {\n\n\t/* Reset the indentation level. */\n\n\tif !yaml_parser_reset_indent(parser) {\n\t\treturn false\n\t}\n\n\t/* Reset simple keys. */\n\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\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\n\ttoken := yaml_token_t{\n\t\ttoken_type: token_type,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\t/* Append the token to the queue. */\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.\n */\n\nfunc yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t,\n\ttoken_type yaml_token_type_t) bool {\n\n\t/* The indicators '[' and '{' may start a simple key. */\n\n\tif !yaml_parser_save_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t/* Increase the flow level. */\n\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\n\tparser.simple_key_allowed = true\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-START of FLOW-MAPPING-START token. */\n\n\ttoken := yaml_token_t{\n\t\ttoken_type: token_type,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\t/* Append the token to the queue. */\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.\n */\n\nfunc yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t,\n\ttoken_type yaml_token_type_t) bool {\n\n\t/* Reset any potential simple key on the current flow level. */\n\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t/* Decrease the flow level. */\n\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\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\n\ttoken := yaml_token_t{\n\t\ttoken_type: token_type,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\t/* Append the token to the queue. */\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the FLOW-ENTRY token.\n */\n\nfunc yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {\n\n\t/* Reset any potential simple keys on the current flow level. */\n\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t/* Simple keys are allowed after ','. */\n\n\tparser.simple_key_allowed = true\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-ENTRY token and append it to the queue. */\n\n\ttoken := yaml_token_t{\n\t\ttoken_type: yaml_FLOW_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the BLOCK-ENTRY token.\n */\n\nfunc yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {\n\n\t/* Check if the scanner is in the block context. */\n\n\tif parser.flow_level == 0 {\n\t\t/* Check if we are allowed to start a new entry. */\n\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\n\t\t/* Add the BLOCK-SEQUENCE-START token if needed. */\n\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1,\n\t\t\tyaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {\n\t\t\treturn false\n\t\t}\n\t} else {\n\t\t/*\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\t */\n\t}\n\n\t/* Reset any potential simple keys on the current flow level. */\n\n\tif !yaml_parser_remove_simple_key(parser) {\n\t\treturn false\n\t}\n\n\t/* Simple keys are allowed after '-'. */\n\n\tparser.simple_key_allowed = true\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 BLOCK-ENTRY token and append it to the queue. */\n\n\ttoken := yaml_token_t{\n\t\ttoken_type: yaml_BLOCK_ENTRY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the KEY token.\n */\n\nfunc yaml_parser_fetch_key(parser *yaml_parser_t) bool {\n\t/* In the block context, additional checks are required. */\n\n\tif parser.flow_level == 0 {\n\t\t/* Check if we are allowed to start a new key (not nessesary simple). */\n\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\n\t\t/* Add the BLOCK-MAPPING-START token if needed. */\n\n\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1,\n\t\t\tyaml_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\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\n\tparser.simple_key_allowed = (parser.flow_level == 0)\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 KEY token and append it to the queue. */\n\n\ttoken := yaml_token_t{\n\t\ttoken_type: yaml_KEY_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the VALUE token.\n */\n\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\n\tif simple_key.possible {\n\n\t\t/* Create the KEY token and insert it into the queue. */\n\n\t\ttoken := yaml_token_t{\n\t\t\ttoken_type: yaml_KEY_TOKEN,\n\t\t\tstart_mark: simple_key.mark,\n\t\t\tend_mark:   simple_key.mark,\n\t\t}\n\n\t\tinsert_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\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\n\t\tsimple_key.possible = false\n\n\t\t/* A simple key cannot follow another simple key. */\n\n\t\tparser.simple_key_allowed = false\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\n\t\tif parser.flow_level == 0 {\n\t\t\t/* Check if we are allowed to start a complex value. */\n\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\n\t\t\tif !yaml_parser_roll_indent(parser, parser.mark.column, -1,\n\t\t\t\tyaml_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\n\t\tparser.simple_key_allowed = (parser.flow_level == 0)\n\t}\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 VALUE token and append it to the queue. */\n\n\ttoken := yaml_token_t{\n\t\ttoken_type: yaml_VALUE_TOKEN,\n\t\tstart_mark: start_mark,\n\t\tend_mark:   end_mark,\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the ALIAS or ANCHOR token.\n */\n\nfunc yaml_parser_fetch_anchor(parser *yaml_parser_t, token_type yaml_token_type_t) bool {\n\n\t/* An anchor or an alias could be a simple key. */\n\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\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, token_type) {\n\t\treturn false\n\t}\n\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the TAG token.\n */\n\nfunc yaml_parser_fetch_tag(parser *yaml_parser_t) bool {\n\t/* A tag could be a simple key. */\n\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\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\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.\n */\n\nfunc yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {\n\t/* Remove any potential simple keys. */\n\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\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\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.\n */\n\nfunc yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {\n\n\t/* A plain scalar could be a simple key. */\n\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\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\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Produce the SCALAR(...,plain) token.\n */\n\nfunc yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {\n\t/* A plain scalar could be a simple key. */\n\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\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\n\tinsert_token(parser, -1, &token)\n\n\treturn true\n}\n\n/*\n * Eat whitespaces and comments until the next token is found.\n */\n\nfunc yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {\n\t/* Until the next token is not found. */\n\n\tfor {\n\t\t/* Allow the BOM mark to start a line. */\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tif parser.mark.column == 0 && is_bom_at(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t}\n\n\t\t/*\n\t\t * Eat whitespaces.\n\t\t *\n\t\t * Tabs are allowed:\n\t\t *\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\t */\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor parser.buffer[parser.buffer_pos] == ' ' ||\n\t\t\t((parser.flow_level > 0 || !parser.simple_key_allowed) &&\n\t\t\t\tparser.buffer[parser.buffer_pos] == '\\t') {\n\t\t\tskip(parser)\n\t\t\tif !cache(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t/* Eat a comment until a line break. */\n\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tfor !is_breakz_at(parser.buffer, parser.buffer_pos) {\n\t\t\t\tskip(parser)\n\t\t\t\tif !cache(parser, 1) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* If it is a line break, eat it. */\n\n\t\tif is_break_at(parser.buffer, parser.buffer_pos) {\n\t\t\tif !cache(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\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\t/* We have found a token. */\n\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn true\n}\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 */\n\nfunc yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {\n\t/* Eat '%'. */\n\n\tstart_mark := parser.mark\n\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\tvar major, minor int\n\tif bytes.Equal(name, []byte(\"YAML\")) {\n\t\t/* Scan the VERSION directive value. */\n\n\t\tif !yaml_parser_scan_version_directive_value(parser, start_mark,\n\t\t\t&major, &minor) {\n\t\t\treturn false\n\t\t}\n\n\t\tend_mark := parser.mark\n\n\t\t/* Create a VERSION-DIRECTIVE token. */\n\n\t\t*token = yaml_token_t{\n\t\t\ttoken_type: 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\t} else if bytes.Equal(name, []byte(\"TAG\")) {\n\t\t/* Is it a TAG directive? */\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,\n\t\t\t&handle, &prefix) {\n\t\t\treturn false\n\t\t}\n\n\t\tend_mark := parser.mark\n\n\t\t/* Create a TAG-DIRECTIVE token. */\n\n\t\t*token = yaml_token_t{\n\t\t\ttoken_type: 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\t} else {\n\t\t/* Unknown directive. */\n\t\tyaml_parser_set_scanner_error(parser, \"while scanning a directive\",\n\t\t\tstart_mark, \"found uknown directive name\")\n\t\treturn false\n\t}\n\n\t/* Eat the rest of the line including any comments. */\n\n\tif !cache(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 !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz_at(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif !cache(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\n\tif !is_breakz_at(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\n\tif is_break_at(parser.buffer, parser.buffer_pos) {\n\t\tif !cache(parser, 2) {\n\t\t\treturn false\n\t\t}\n\t\tskip_line(parser)\n\t}\n\n\treturn true\n}\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 */\n\nfunc yaml_parser_scan_directive_name(parser *yaml_parser_t,\n\tstart_mark YAML_mark_t, name *[]byte) bool {\n\n\t/* Consume the directive name. */\n\n\tif !cache(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 !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Check if the name is empty. */\n\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\n\tif !is_blankz_at(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\n\t*name = s\n\n\treturn true\n}\n\n/*\n * Scan the value of VERSION-DIRECTIVE.\n *\n * Scope:\n *      %YAML   1.1     # a comment \\n\n *           ^^^^^^\n */\n\nfunc yaml_parser_scan_version_directive_value(parser *yaml_parser_t,\n\tstart_mark YAML_mark_t, major *int, minor *int) bool {\n\t/* Eat whitespaces. */\n\n\tif !cache(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 !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Consume the major version number. */\n\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, major) {\n\t\treturn false\n\t}\n\n\t/* Eat '.'. */\n\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\n\tif !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nconst MAX_NUMBER_LENGTH = 9\n\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 *                ^\n */\n\nfunc yaml_parser_scan_version_directive_number(parser *yaml_parser_t,\n\tstart_mark YAML_mark_t, number *int) bool {\n\n\t/* Repeat while the next character is digit. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\tvalue := 0\n\tlength := 0\n\tfor is_digit(parser.buffer[parser.buffer_pos]) {\n\t\t/* Check if the number is too long. */\n\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\n\t\tvalue = value*10 + as_digit(parser.buffer[parser.buffer_pos])\n\n\t\tskip(parser)\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Check if the number was present. */\n\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\n\t*number = value\n\n\treturn true\n}\n\n/*\n * Scan the value of a TAG-DIRECTIVE token.\n *\n * Scope:\n *      %TAG    !yaml!  tag:yaml.org,2002:  \\n\n *          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n */\n\nfunc yaml_parser_scan_tag_directive_value(parser *yaml_parser_t,\n\tstart_mark YAML_mark_t, handle, prefix *[]byte) bool {\n\n\t/* Eat whitespaces. */\n\n\tif !cache(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 !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Scan a handle. */\n\tvar handle_value []byte\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\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\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\n\tfor is_blank(parser.buffer[parser.buffer_pos]) {\n\t\tskip(parser)\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Scan a prefix. */\n\tvar prefix_value []byte\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\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\tif !is_blankz_at(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\n\treturn true\n}\n\nfunc yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t,\n\ttoken_type yaml_token_type_t) bool {\n\n\t/* Eat the indicator character. */\n\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\n\t/* Consume the value. */\n\n\tif !cache(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 !cache(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\tb := parser.buffer[parser.buffer_pos]\n\tif len(s) == 0 || !(is_blankz_at(parser.buffer, parser.buffer_pos) || b == '?' ||\n\t\tb == ':' || b == ',' ||\n\t\tb == ']' || b == '}' ||\n\t\tb == '%' || b == '@' ||\n\t\tb == '`') {\n\t\tcontext := \"while scanning an anchor\"\n\t\tif token_type != yaml_ANCHOR_TOKEN {\n\t\t\tcontext = \"while scanning an alias\"\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\ttoken_type: token_type,\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\tstart_mark := parser.mark\n\n\t/* Check if the tag is in the canonical form. */\n\n\tif !cache(parser, 2) {\n\t\treturn false\n\t}\n\n\tvar handle []byte\n\tvar suffix []byte\n\tif parser.buffer[parser.buffer_pos+1] == '<' {\n\t\t/* Set the handle to '' */\n\n\t\t/* Eat '!<' */\n\n\t\tskip(parser)\n\t\tskip(parser)\n\n\t\t/* Consume the tag value. */\n\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\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 if is_blank(parser.buffer[parser.buffer_pos+1]) {\n\t\t// NON-SPECIFIED\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\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\n\t\tif handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {\n\t\t\t/* Scan the suffix now. */\n\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\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\n\t\t\thandle = []byte{'!'}\n\n\t\t\t/*\n\t\t\t * A special case: the '!' tag.  Set the handle to '' and the\n\t\t\t * suffix to '!'.\n\t\t\t */\n\n\t\t\tif len(suffix) == 0 {\n\t\t\t\thandle, suffix = suffix, handle\n\t\t\t}\n\n\t\t}\n\t}\n\n\t/* Check the character which ends the tag. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\tif !is_blankz_at(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\n\t*token = yaml_token_t{\n\t\ttoken_type: 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\n\treturn true\n}\n\n/*\n * Scan a tag handle.\n */\n\nfunc yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool,\n\tstart_mark YAML_mark_t, handle *[]byte) bool {\n\n\t/* Check the initial '!' character. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\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\t/* Copy the '!' character. */\n\tvar s []byte\n\ts = read(parser, s)\n\n\t/* Copy all subsequent alphabetical and numerical characters. */\n\n\tif !cache(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 !cache(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\n\tif parser.buffer[parser.buffer_pos] == '!' {\n\t\ts = read(parser, s)\n\t} else {\n\t\t/*\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\n\t\t * URI.\n\t\t */\n\n\t\tif directive && !(s[0] == '!' && len(s) == 1) {\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\n\treturn true\n}\n\n/*\n * Scan a tag.\n */\n\nfunc yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool,\n\thead []byte, start_mark YAML_mark_t, uri *[]byte) bool {\n\n\tvar s []byte\n\t/*\n\t * Copy the head if needed.\n\t *\n\t * Note that we don't copy the leading '!' character.\n\t */\n\tif len(head) > 1 {\n\t\ts = append(s, head[1:]...)\n\t}\n\n\t/* Scan the tag. */\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\t/*\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 */\n\n\tb := parser.buffer[parser.buffer_pos]\n\tfor is_alpha(b) || b == ';' ||\n\t\tb == '/' || b == '?' ||\n\t\tb == ':' || b == '@' ||\n\t\tb == '&' || b == '=' ||\n\t\tb == '+' || b == '$' ||\n\t\tb == ',' || b == '.' ||\n\t\tb == '!' || b == '~' ||\n\t\tb == '*' || b == '\\'' ||\n\t\tb == '(' || b == ')' ||\n\t\tb == '[' || b == ']' ||\n\t\tb == '%' {\n\t\t/* Check if it is a URI-escape sequence. */\n\n\t\tif b == '%' {\n\t\t\tif !yaml_parser_scan_uri_escapes(parser,\n\t\t\t\tdirective, 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\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t\tb = parser.buffer[parser.buffer_pos]\n\t}\n\n\t/* Check if the tag is non-empty. */\n\n\tif len(s) == 0 {\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\n\t*uri = s\n\n\treturn true\n}\n\n/*\n * Decode an URI-escape sequence corresponding to a single UTF-8 character.\n */\n\nfunc yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool,\n\tstart_mark YAML_mark_t, s *[]byte) bool {\n\n\t/* Decode the required number of characters. */\n\tw := 10\n\tfor w > 0 {\n\n\t\t/* Check for a URI-escaped octet. */\n\n\t\tif !cache(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) +\n\t\t\tas_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\n\t\tif w == 10 {\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\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\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\n\treturn true\n}\n\n/*\n * Scan a block scalar.\n */\n\nfunc yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t,\n\tliteral bool) bool {\n\n\t/* Eat the indicator '|' or '>'. */\n\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\n\t/* Scan the additional block scalar indicators. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\t/* Check for a chomping indicator. */\n\tchomping := 0\n\tincrement := 0\n\tif parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {\n\t\t/* Set the chomping method and eat the indicator. */\n\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\n\t\tskip(parser)\n\n\t\t/* Check for an indentation indicator. */\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tif is_digit(parser.buffer[parser.buffer_pos]) {\n\t\t\t/* Check that the indentation is greater than 0. */\n\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\n\t\t\tincrement = as_digit(parser.buffer[parser.buffer_pos])\n\n\t\t\tskip(parser)\n\t\t}\n\t} else if is_digit(parser.buffer[parser.buffer_pos]) {\n\n\t\t/* Do the same as above, but in the opposite order. */\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\n\t\tincrement = as_digit(parser.buffer[parser.buffer_pos])\n\n\t\tskip(parser)\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\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\n\t\t\tskip(parser)\n\t\t}\n\t}\n\n\t/* Eat whitespaces and comments to the end of the line. */\n\n\tif !cache(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 !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\tfor !is_breakz_at(parser.buffer, parser.buffer_pos) {\n\t\t\tskip(parser)\n\t\t\tif !cache(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\n\tif !is_breakz_at(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\n\tif is_break_at(parser.buffer, parser.buffer_pos) {\n\t\tif !cache(parser, 2) {\n\t\t\treturn false\n\t\t}\n\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\tindent := 0\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 trailing_breaks []byte\n\tif !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks,\n\t\tstart_mark, &end_mark) {\n\t\treturn false\n\t}\n\n\t/* Scan the block scalar content. */\n\n\tif !cache(parser, 1) {\n\t\treturn false\n\t}\n\n\tvar s []byte\n\tvar leading_break []byte\n\tleading_blank := false\n\ttrailing_blank := false\n\tfor parser.mark.column == indent && !is_z(parser.buffer[parser.buffer_pos]) {\n\n\t\t/*\n\t\t * We are at the beginning of a non-empty line.\n\t\t */\n\n\t\t/* Is it a trailing whitespace? */\n\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\n\t\tif !literal && len(leading_break) > 0 && leading_break[0] == '\\n' &&\n\t\t\t!leading_blank && !trailing_blank {\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\tleading_break = leading_break[:0]\n\t\t} else {\n\t\t\ts = append(s, leading_break...)\n\t\t\tleading_break = leading_break[:0]\n\t\t}\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\n\t\tleading_blank = is_blank(parser.buffer[parser.buffer_pos])\n\n\t\t/* Consume the current line. */\n\n\t\tfor !is_breakz_at(parser.buffer, parser.buffer_pos) {\n\t\t\ts = read(parser, s)\n\t\t\tif !cache(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t/* Consume the line break. */\n\n\t\tif !cache(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\n\t\tif !yaml_parser_scan_block_scalar_breaks(parser,\n\t\t\t&indent, &trailing_breaks, start_mark, &end_mark) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/* Chomp the tail. */\n\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\n\t*token = yaml_token_t{\n\t\ttoken_type: 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\n\treturn true\n}\n\n/*\n * Scan indentation spaces and line breaks for a block scalar.  Determine the\n * indentation level if needed.\n */\n\nfunc yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t,\n\tindent *int, breaks *[]byte,\n\tstart_mark YAML_mark_t, end_mark *YAML_mark_t) bool {\n\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\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor (*indent == 0 || parser.mark.column < *indent) &&\n\t\t\tis_space(parser.buffer[parser.buffer_pos]) {\n\t\t\tskip(parser)\n\t\t\tif !cache(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\n\t\tif (*indent == 0 || parser.mark.column < *indent) &&\n\t\t\tis_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\n\t\tif !is_break_at(parser.buffer, parser.buffer_pos) {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Consume the line break. */\n\n\t\tif !cache(parser, 2) {\n\t\t\treturn false\n\t\t}\n\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\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\n\treturn true\n}\n\n/*\n * Scan a quoted scalar.\n */\n\nfunc yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t,\n\tsingle bool) bool {\n\n\t/* Eat the left quote. */\n\n\tstart_mark := parser.mark\n\n\tskip(parser)\n\n\t/* Consume the content of the quoted scalar. */\n\tvar s []byte\n\tvar leading_break []byte\n\tvar trailing_breaks []byte\n\tvar whitespaces []byte\n\tfor {\n\t\t/* Check that there are no document indicators at the beginning of the line. */\n\n\t\tif !cache(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] == '-' &&\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] == '.' &&\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_at(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\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\n\t\tif !cache(parser, 2) {\n\t\t\treturn false\n\t\t}\n\n\t\tleading_blanks := false\n\n\t\tfor !is_blankz_at(parser.buffer, parser.buffer_pos) {\n\t\t\t/* Check for an escaped single quote. */\n\n\t\t\tif single && parser.buffer[parser.buffer_pos] == '\\'' &&\n\t\t\t\tparser.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\t\t\t} else if single && parser.buffer[parser.buffer_pos] == '\\'' {\n\t\t\t\t/* Check for the right quote. */\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\"' {\n\t\t\t\t/* Check for the right quote. */\n\t\t\t\tbreak\n\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' &&\n\t\t\t\tis_break_at(parser.buffer, parser.buffer_pos+1) {\n\n\t\t\t\t/* Check for an escaped line break. */\n\t\t\t\tif !cache(parser, 3) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\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\t\t\t} else if !single && parser.buffer[parser.buffer_pos] == '\\\\' {\n\n\t\t\t\t/* Check for an escape sequence. */\n\n\t\t\t\tcode_length := 0\n\n\t\t\t\t/* Check the escape character. */\n\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\n\t\t\t\tif code_length > 0 {\n\t\t\t\t\tvalue := 0\n\n\t\t\t\t\t/* Scan the character value. */\n\n\t\t\t\t\tif !cache(parser, code_length) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\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\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\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\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\n\t\t\t\ts = read(parser, s)\n\t\t\t}\n\n\t\t\tif !cache(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t/* Check if we are at the end of the scalar. */\n\t\tb := parser.buffer[parser.buffer_pos]\n\t\tif single {\n\t\t\tif b == '\\'' {\n\t\t\t\tbreak\n\t\t\t}\n\t\t} else if b == '\"' {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Consume blank characters. */\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer[parser.buffer_pos]) || is_break_at(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 !cache(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\n\t\t\tif !cache(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\n\t\tif leading_blanks {\n\t\t\t/* Do we need to fold line breaks? */\n\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\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t}\n\n\t\t\t\tleading_break = leading_break[:0]\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\tleading_break = leading_break[:0]\n\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t}\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\n\tskip(parser)\n\n\tend_mark := parser.mark\n\n\t/* Create a token. */\n\n\t*token = yaml_token_t{\n\t\ttoken_type: 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\n\treturn true\n}\n\n/*\n * Scan a plain scalar.\n */\n\nfunc yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {\n\tvar s []byte\n\tvar leading_break []byte\n\tvar trailing_breaks []byte\n\tvar whitespaces []byte\n\tleading_blanks := false\n\tindent := 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\n\tfor {\n\t\t/* Check for a document indicator. */\n\n\t\tif !cache(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] == '-' &&\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] == '.' &&\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_at(parser.buffer, parser.buffer_pos+3) {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Check for a comment. */\n\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Consume non-blank characters. */\n\n\t\tfor !is_blankz_at(parser.buffer, parser.buffer_pos) {\n\t\t\t/* Check for 'x:x' in the flow context. TODO: Fix the test \"spec-08-13\". */\n\n\t\t\tif parser.flow_level > 0 &&\n\t\t\t\tparser.buffer[parser.buffer_pos] == ':' &&\n\t\t\t\t!is_blankz_at(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\tstart_mark, \"found unexpected ':'\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t/* Check for indicators that may end a plain scalar. */\n\t\t\tb := parser.buffer[parser.buffer_pos]\n\t\t\tif (b == ':' && is_blankz_at(parser.buffer, parser.buffer_pos+1)) ||\n\t\t\t\t(parser.flow_level > 0 &&\n\t\t\t\t\t(b == ',' || b == ':' ||\n\t\t\t\t\t\tb == '?' || b == '[' ||\n\t\t\t\t\t\tb == ']' || b == '{' ||\n\t\t\t\t\t\tb == '}')) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t/* Check if we need to join whitespaces and breaks. */\n\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\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\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tleading_break = leading_break[:0]\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\tleading_break = leading_break[:0]\n\t\t\t\t\t\ttrailing_breaks = trailing_breaks[:0]\n\t\t\t\t\t}\n\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\n\t\t\ts = read(parser, s)\n\t\t\tend_mark = parser.mark\n\n\t\t\tif !cache(parser, 2) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t/* Is it the end? */\n\n\t\tif !(is_blank(parser.buffer[parser.buffer_pos]) ||\n\t\t\tis_break_at(parser.buffer, parser.buffer_pos)) {\n\t\t\tbreak\n\t\t}\n\n\t\t/* Consume blank characters. */\n\n\t\tif !cache(parser, 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tfor is_blank(parser.buffer[parser.buffer_pos]) ||\n\t\t\tis_break_at(parser.buffer, parser.buffer_pos) {\n\n\t\t\tif is_blank(parser.buffer[parser.buffer_pos]) {\n\t\t\t\t/* Check for tab character that abuse indentation. */\n\n\t\t\t\tif leading_blanks && parser.mark.column < indent &&\n\t\t\t\t\tis_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 violate 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\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 !cache(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\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 !cache(parser, 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t/* Check indentation level. */\n\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\n\t*token = yaml_token_t{\n\t\ttoken_type: 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\n\tif leading_blanks {\n\t\tparser.simple_key_allowed = true\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/tags.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n)\n\n// A field represents a single field found in a struct.\ntype field struct {\n\tname      string\n\ttag       bool\n\tindex     []int\n\ttyp       reflect.Type\n\tomitEmpty bool\n\tflow      bool\n}\n\n// byName sorts field by name, breaking ties with depth,\n// then breaking ties with \"name came from json tag\", then\n// breaking ties with index sequence.\ntype byName []field\n\nfunc (x byName) Len() int { return len(x) }\n\nfunc (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byName) Less(i, j int) bool {\n\tif x[i].name != x[j].name {\n\t\treturn x[i].name < x[j].name\n\t}\n\tif len(x[i].index) != len(x[j].index) {\n\t\treturn len(x[i].index) < len(x[j].index)\n\t}\n\tif x[i].tag != x[j].tag {\n\t\treturn x[i].tag\n\t}\n\treturn byIndex(x).Less(i, j)\n}\n\n// byIndex sorts field by index sequence.\ntype byIndex []field\n\nfunc (x byIndex) Len() int { return len(x) }\n\nfunc (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byIndex) Less(i, j int) bool {\n\tfor k, xik := range x[i].index {\n\t\tif k >= len(x[j].index) {\n\t\t\treturn false\n\t\t}\n\t\tif xik != x[j].index[k] {\n\t\t\treturn xik < x[j].index[k]\n\t\t}\n\t}\n\treturn len(x[i].index) < len(x[j].index)\n}\n\n// typeFields returns a list of fields that JSON should recognize for the given type.\n// The algorithm is breadth-first search over the set of structs to include - the top struct\n// and then any reachable anonymous structs.\nfunc typeFields(t reflect.Type) []field {\n\t// Anonymous fields to explore at the current level and the next.\n\tcurrent := []field{}\n\tnext := []field{{typ: t}}\n\n\t// Count of queued names for current level and the next.\n\tcount := map[reflect.Type]int{}\n\tnextCount := map[reflect.Type]int{}\n\n\t// Types already visited at an earlier level.\n\tvisited := map[reflect.Type]bool{}\n\n\t// Fields found.\n\tvar fields []field\n\n\tfor len(next) > 0 {\n\t\tcurrent, next = next, current[:0]\n\t\tcount, nextCount = nextCount, map[reflect.Type]int{}\n\n\t\tfor _, f := range current {\n\t\t\tif visited[f.typ] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvisited[f.typ] = true\n\n\t\t\t// Scan f.typ for fields to include.\n\t\t\tfor i := 0; i < f.typ.NumField(); i++ {\n\t\t\t\tsf := f.typ.Field(i)\n\t\t\t\tif sf.PkgPath != \"\" { // unexported\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\ttag := sf.Tag.Get(\"yaml\")\n\t\t\t\tif tag == \"-\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tname, opts := parseTag(tag)\n\t\t\t\tif !isValidTag(name) {\n\t\t\t\t\tname = \"\"\n\t\t\t\t}\n\t\t\t\tindex := make([]int, len(f.index)+1)\n\t\t\t\tcopy(index, f.index)\n\t\t\t\tindex[len(f.index)] = i\n\n\t\t\t\tft := sf.Type\n\t\t\t\tif ft.Name() == \"\" && ft.Kind() == reflect.Ptr {\n\t\t\t\t\t// Follow pointer.\n\t\t\t\t\tft = ft.Elem()\n\t\t\t\t}\n\n\t\t\t\t// Record found field and index sequence.\n\t\t\t\tif name != \"\" || !sf.Anonymous || ft.Kind() != reflect.Struct {\n\t\t\t\t\ttagged := name != \"\"\n\t\t\t\t\tif name == \"\" {\n\t\t\t\t\t\tname = sf.Name\n\t\t\t\t\t}\n\t\t\t\t\tfields = append(fields, field{name, tagged, index, ft,\n\t\t\t\t\t\topts.Contains(\"omitempty\"), opts.Contains(\"flow\")})\n\t\t\t\t\tif count[f.typ] > 1 {\n\t\t\t\t\t\t// If there were multiple instances, add a second,\n\t\t\t\t\t\t// so that the annihilation code will see a duplicate.\n\t\t\t\t\t\t// It only cares about the distinction between 1 or 2,\n\t\t\t\t\t\t// so don't bother generating any more copies.\n\t\t\t\t\t\tfields = append(fields, fields[len(fields)-1])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Record new anonymous struct to explore in next round.\n\t\t\t\tnextCount[ft]++\n\t\t\t\tif nextCount[ft] == 1 {\n\t\t\t\t\tnext = append(next, field{name: ft.Name(), index: index, typ: ft})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsort.Sort(byName(fields))\n\n\t// Delete all fields that are hidden by the Go rules for embedded fields,\n\t// except that fields with JSON tags are promoted.\n\n\t// The fields are sorted in primary order of name, secondary order\n\t// of field index length. Loop over names; for each name, delete\n\t// hidden fields by choosing the one dominant field that survives.\n\tout := fields[:0]\n\tfor advance, i := 0, 0; i < len(fields); i += advance {\n\t\t// One iteration per name.\n\t\t// Find the sequence of fields with the name of this first field.\n\t\tfi := fields[i]\n\t\tname := fi.name\n\t\tfor advance = 1; i+advance < len(fields); advance++ {\n\t\t\tfj := fields[i+advance]\n\t\t\tif fj.name != name {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif advance == 1 { // Only one field with this name\n\t\t\tout = append(out, fi)\n\t\t\tcontinue\n\t\t}\n\t\tdominant, ok := dominantField(fields[i : i+advance])\n\t\tif ok {\n\t\t\tout = append(out, dominant)\n\t\t}\n\t}\n\n\tfields = out\n\tsort.Sort(byIndex(fields))\n\n\treturn fields\n}\n\n// dominantField looks through the fields, all of which are known to\n// have the same name, to find the single field that dominates the\n// others using Go's embedding rules, modified by the presence of\n// JSON tags. If there are multiple top-level fields, the boolean\n// will be false: This condition is an error in Go and we skip all\n// the fields.\nfunc dominantField(fields []field) (field, bool) {\n\t// The fields are sorted in increasing index-length order. The winner\n\t// must therefore be one with the shortest index length. Drop all\n\t// longer entries, which is easy: just truncate the slice.\n\tlength := len(fields[0].index)\n\ttagged := -1 // Index of first tagged field.\n\tfor i, f := range fields {\n\t\tif len(f.index) > length {\n\t\t\tfields = fields[:i]\n\t\t\tbreak\n\t\t}\n\t\tif f.tag {\n\t\t\tif tagged >= 0 {\n\t\t\t\t// Multiple tagged fields at the same level: conflict.\n\t\t\t\t// Return no field.\n\t\t\t\treturn field{}, false\n\t\t\t}\n\t\t\ttagged = i\n\t\t}\n\t}\n\tif tagged >= 0 {\n\t\treturn fields[tagged], true\n\t}\n\t// All remaining fields have the same length. If there's more than one,\n\t// we have a conflict (two fields named \"X\" at the same level) and we\n\t// return no field.\n\tif len(fields) > 1 {\n\t\treturn field{}, false\n\t}\n\treturn fields[0], true\n}\n\nvar fieldCache struct {\n\tsync.RWMutex\n\tm map[reflect.Type][]field\n}\n\n// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.\nfunc cachedTypeFields(t reflect.Type) []field {\n\tfieldCache.RLock()\n\tf := fieldCache.m[t]\n\tfieldCache.RUnlock()\n\tif f != nil {\n\t\treturn f\n\t}\n\n\t// Compute fields without lock.\n\t// Might duplicate effort but won't hold other computations back.\n\tf = typeFields(t)\n\tif f == nil {\n\t\tf = []field{}\n\t}\n\n\tfieldCache.Lock()\n\tif fieldCache.m == nil {\n\t\tfieldCache.m = map[reflect.Type][]field{}\n\t}\n\tfieldCache.m[t] = f\n\tfieldCache.Unlock()\n\treturn f\n}\n\n// tagOptions is the string following a comma in a struct field's \"json\"\n// tag, or the empty string. It does not include the leading comma.\ntype tagOptions string\n\nfunc isValidTag(s string) bool {\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase strings.ContainsRune(\"!#$%&()*+-./:<=>?@[]^_{|}~ \", c):\n\t\t\t// Backslash and quote chars are reserved, but\n\t\t\t// otherwise any punctuation chars are allowed\n\t\t\t// in a tag name.\n\t\tdefault:\n\t\t\tif !unicode.IsLetter(c) && !unicode.IsDigit(c) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc fieldByIndex(v reflect.Value, index []int) reflect.Value {\n\tfor _, i := range index {\n\t\tif v.Kind() == reflect.Ptr {\n\t\t\tif v.IsNil() {\n\t\t\t\treturn reflect.Value{}\n\t\t\t}\n\t\t\tv = v.Elem()\n\t\t}\n\t\tv = v.Field(i)\n\t}\n\treturn v\n}\n\nfunc typeByIndex(t reflect.Type, index []int) reflect.Type {\n\tfor _, i := range index {\n\t\tif t.Kind() == reflect.Ptr {\n\t\t\tt = t.Elem()\n\t\t}\n\t\tt = t.Field(i).Type\n\t}\n\treturn t\n}\n\n// stringValues is a slice of reflect.Value holding *reflect.StringValue.\n// It implements the methods to sort by string.\ntype stringValues []reflect.Value\n\nfunc (sv stringValues) Len() int      { return len(sv) }\nfunc (sv stringValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] }\nfunc (sv stringValues) Less(i, j int) bool {\n\tav, ak := getElem(sv[i])\n\tbv, bk := getElem(sv[j])\n\tif ak == reflect.String && bk == reflect.String {\n\t\treturn av.String() < bv.String()\n\t}\n\n\treturn ak < bk\n}\n\nfunc getElem(v reflect.Value) (reflect.Value, reflect.Kind) {\n\tk := v.Kind()\n\tfor k == reflect.Interface || k == reflect.Ptr && !v.IsNil() {\n\t\tv = v.Elem()\n\t\tk = v.Kind()\n\t}\n\n\treturn v, k\n}\n\n// parseTag splits a struct field's json tag into its name and\n// comma-separated options.\nfunc parseTag(tag string) (string, tagOptions) {\n\tif idx := strings.Index(tag, \",\"); idx != -1 {\n\t\treturn tag[:idx], tagOptions(tag[idx+1:])\n\t}\n\treturn tag, tagOptions(\"\")\n}\n\n// Contains reports whether a comma-separated list of options\n// contains a particular substr flag. substr must be surrounded by a\n// string boundary or commas.\nfunc (o tagOptions) Contains(optionName string) bool {\n\tif len(o) == 0 {\n\t\treturn false\n\t}\n\ts := string(o)\n\tfor s != \"\" {\n\t\tvar next string\n\t\ti := strings.Index(s, \",\")\n\t\tif i >= 0 {\n\t\t\ts, next = s[:i], s[i+1:]\n\t\t}\n\t\tif s == optionName {\n\t\t\treturn true\n\t\t}\n\t\ts = next\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/writer.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\n/*\n * Set the writer error and return 0.\n */\n\nfunc yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {\n\temitter.error = yaml_WRITER_ERROR\n\temitter.problem = problem\n\n\treturn false\n}\n\n/*\n * Flush the output buffer.\n */\n\nfunc yaml_emitter_flush(emitter *yaml_emitter_t) bool {\n\tif emitter.write_handler == nil {\n\t\tpanic(\"Write handler must be set\") /* Write handler must be set. */\n\t}\n\tif emitter.encoding == yaml_ANY_ENCODING {\n\t\tpanic(\"Encoding must be set\") /* Output encoding must be set. */\n\t}\n\n\t/* Check if the buffer is empty. */\n\n\tif emitter.buffer_pos == 0 {\n\t\treturn true\n\t}\n\n\t/* If the output encoding is UTF-8, we don't need to recode the buffer. */\n\n\tif emitter.encoding == yaml_UTF8_ENCODING {\n\t\tif err := emitter.write_handler(emitter,\n\t\t\temitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t\t}\n\t\temitter.buffer_pos = 0\n\t\treturn true\n\t}\n\n\t/* Recode the buffer into the raw buffer. */\n\n\tvar low, high int\n\tif emitter.encoding == yaml_UTF16LE_ENCODING {\n\t\tlow, high = 0, 1\n\t} else {\n\t\thigh, low = 1, 0\n\t}\n\n\tpos := 0\n\tfor pos < emitter.buffer_pos {\n\n\t\t/*\n\t\t * See the \"reader.c\" code for more details on UTF-8 encoding.  Note\n\t\t * that we assume that the buffer contains a valid UTF-8 sequence.\n\t\t */\n\n\t\t/* Read the next UTF-8 character. */\n\n\t\toctet := emitter.buffer[pos]\n\n\t\tvar w int\n\t\tvar value rune\n\t\tswitch {\n\t\tcase octet&0x80 == 0x00:\n\t\t\tw, value = 1, rune(octet&0x7F)\n\t\tcase octet&0xE0 == 0xC0:\n\t\t\tw, value = 2, rune(octet&0x1F)\n\t\tcase octet&0xF0 == 0xE0:\n\t\t\tw, value = 3, rune(octet&0x0F)\n\t\tcase octet&0xF8 == 0xF0:\n\t\t\tw, value = 4, rune(octet&0x07)\n\t\t}\n\n\t\tfor k := 1; k < w; k++ {\n\t\t\toctet = emitter.buffer[pos+k]\n\t\t\tvalue = (value << 6) + (rune(octet) & 0x3F)\n\t\t}\n\n\t\tpos += w\n\n\t\t/* Write the character. */\n\n\t\tif value < 0x10000 {\n\t\t\tvar b [2]byte\n\t\t\tb[high] = byte(value >> 8)\n\t\t\tb[low] = byte(value & 0xFF)\n\t\t\temitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1])\n\t\t} else {\n\t\t\t/* Write the character using a surrogate pair (check \"reader.c\"). */\n\n\t\t\tvar b [4]byte\n\t\t\tvalue -= 0x10000\n\t\t\tb[high] = byte(0xD8 + (value >> 18))\n\t\t\tb[low] = byte((value >> 10) & 0xFF)\n\t\t\tb[high+2] = byte(0xDC + ((value >> 8) & 0xFF))\n\t\t\tb[low+2] = byte(value & 0xFF)\n\t\t\temitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1], b[2], b[3])\n\t\t}\n\t}\n\n\t/* Write the raw buffer. */\n\n\t// Write the raw buffer.\n\tif err := emitter.write_handler(emitter, emitter.raw_buffer); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\n\temitter.buffer_pos = 0\n\temitter.raw_buffer = emitter.raw_buffer[:0]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_definesh.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nconst (\n\tyaml_VERSION_MAJOR  = 0\n\tyaml_VERSION_MINOR  = 1\n\tyaml_VERSION_PATCH  = 6\n\tyaml_VERSION_STRING = \"0.1.6\"\n)\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_privateh.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nconst (\n\tINPUT_RAW_BUFFER_SIZE = 1024\n\n\t/*\n\t * The size of the input buffer.\n\t *\n\t * It should be possible to decode the whole raw buffer.\n\t */\n\tINPUT_BUFFER_SIZE = (INPUT_RAW_BUFFER_SIZE * 3)\n\n\t/*\n\t * The size of the output buffer.\n\t */\n\n\tOUTPUT_BUFFER_SIZE = 512\n\n\t/*\n\t * The size of the output raw buffer.\n\t *\n\t * It should be possible to encode the whole output buffer.\n\t */\n\n\tOUTPUT_RAW_BUFFER_SIZE = (OUTPUT_BUFFER_SIZE*2 + 2)\n\n\tINITIAL_STACK_SIZE = 16\n\tINITIAL_QUEUE_SIZE = 16\n)\n\nfunc width(b byte) int {\n\tif b&0x80 == 0 {\n\t\treturn 1\n\t}\n\n\tif b&0xE0 == 0xC0 {\n\t\treturn 2\n\t}\n\n\tif b&0xF0 == 0xE0 {\n\t\treturn 3\n\t}\n\n\tif b&0xF8 == 0xF0 {\n\t\treturn 4\n\t}\n\n\treturn 0\n}\n\nfunc copy_bytes(dest []byte, dest_pos *int, src []byte, src_pos *int) {\n\tw := width(src[*src_pos])\n\tswitch w {\n\tcase 4:\n\t\tdest[*dest_pos+3] = src[*src_pos+3]\n\t\tfallthrough\n\tcase 3:\n\t\tdest[*dest_pos+2] = src[*src_pos+2]\n\t\tfallthrough\n\tcase 2:\n\t\tdest[*dest_pos+1] = src[*src_pos+1]\n\t\tfallthrough\n\tcase 1:\n\t\tdest[*dest_pos] = src[*src_pos]\n\tdefault:\n\t\tpanic(\"invalid width\")\n\t}\n\t*dest_pos += w\n\t*src_pos += w\n}\n\n// /*\n//  * Check if the character at the specified position is an alphabetical\n//  * character, a digit, '_', or '-'.\n//  */\n\nfunc is_alpha(b byte) bool {\n\treturn (b >= '0' && b <= '9') ||\n\t\t(b >= 'A' && b <= 'Z') ||\n\t\t(b >= 'a' && b <= 'z') ||\n\t\tb == '_' || b == '-'\n}\n\n// /*\n//  * Check if the character at the specified position is a digit.\n//  */\n//\nfunc is_digit(b byte) bool {\n\treturn b >= '0' && b <= '9'\n}\n\n// /*\n//  * Get the value of a digit.\n//  */\n//\nfunc as_digit(b byte) int {\n\treturn int(b) - '0'\n}\n\n// /*\n//  * Check if the character at the specified position is a hex-digit.\n//  */\n//\nfunc is_hex(b byte) bool {\n\treturn (b >= '0' && b <= '9') ||\n\t\t(b >= 'A' && b <= 'F') ||\n\t\t(b >= 'a' && b <= 'f')\n}\n\n//\n// /*\n//  * Get the value of a hex-digit.\n//  */\n//\nfunc as_hex(b byte) int {\n\tif b >= 'A' && b <= 'F' {\n\t\treturn int(b) - 'A' + 10\n\t} else if b >= 'a' && b <= 'f' {\n\t\treturn int(b) - 'a' + 10\n\t}\n\treturn int(b) - '0'\n}\n\n// #define AS_HEX_AT(string,offset)                                                \\\n//       (((string).pointer[offset] >= (yaml_char_t) 'A' &&                        \\\n//         (string).pointer[offset] <= (yaml_char_t) 'F') ?                        \\\n//        ((string).pointer[offset] - (yaml_char_t) 'A' + 10) :                    \\\n//        ((string).pointer[offset] >= (yaml_char_t) 'a' &&                        \\\n//         (string).pointer[offset] <= (yaml_char_t) 'f') ?                        \\\n//        ((string).pointer[offset] - (yaml_char_t) 'a' + 10) :                    \\\n//        ((string).pointer[offset] - (yaml_char_t) '0'))\n\n// /*\n//  * Check if the character is a line break, space, tab, or NUL.\n//  */\nfunc is_blankz_at(b []byte, i int) bool {\n\treturn is_blank(b[i]) || is_breakz_at(b, i)\n}\n\n// /*\n//  * Check if the character at the specified position is a line break.\n//  */\nfunc is_break_at(b []byte, i int) bool {\n\treturn b[i] == '\\r' || /* CR (#xD)*/\n\t\tb[i] == '\\n' || /* LF (#xA) */\n\t\t(b[i] == 0xC2 && b[i+1] == 0x85) || /* NEL (#x85) */\n\t\t(b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8) || /* LS (#x2028) */\n\t\t(b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) /* PS (#x2029) */\n}\n\nfunc is_breakz_at(b []byte, i int) bool {\n\treturn is_break_at(b, i) || is_z(b[i])\n}\n\nfunc is_crlf_at(b []byte, i int) bool {\n\treturn b[i] == '\\r' && b[i+1] == '\\n'\n}\n\n// /*\n//  * Check if the character at the specified position is NUL.\n//  */\nfunc is_z(b byte) bool {\n\treturn b == 0x0\n}\n\n// /*\n//  * Check if the character at the specified position is space.\n//  */\nfunc is_space(b byte) bool {\n\treturn b == ' '\n}\n\n//\n// /*\n//  * Check if the character at the specified position is tab.\n//  */\nfunc is_tab(b byte) bool {\n\treturn b == '\\t'\n}\n\n// /*\n//  * Check if the character at the specified position is blank (space or tab).\n//  */\nfunc is_blank(b byte) bool {\n\treturn is_space(b) || is_tab(b)\n}\n\n// /*\n//  * Check if the character is ASCII.\n//  */\nfunc is_ascii(b byte) bool {\n\treturn b <= '\\x7f'\n}\n\n// /*\n//  * Check if the character can be printed unescaped.\n//  */\nfunc is_printable_at(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 && /* && . != #xFEFF */\n\t\t\t!(b[i+1] == 0xBB && b[i+2] == 0xBF) &&\n\t\t\t!(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))\n}\n\nfunc insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {\n\t// collapse the slice\n\tif parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {\n\t\tif parser.tokens_head != len(parser.tokens) {\n\t\t\t// move the tokens down\n\t\t\tcopy(parser.tokens, parser.tokens[parser.tokens_head:])\n\t\t}\n\t\t// readjust the length\n\t\tparser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]\n\t\tparser.tokens_head = 0\n\t}\n\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// /*\n//  * Check if the character at the specified position is BOM.\n//  */\n//\nfunc is_bom_at(b []byte, i int) bool {\n\treturn b[i] == 0xEF && b[i+1] == 0xBB && b[i+2] == 0xBF\n}\n\n//\n// #ifdef HAVE_CONFIG_H\n// #include <config.h>\n// #endif\n//\n// #include \"./yaml.h\"\n//\n// #include <assert.h>\n// #include <limits.h>\n//\n// /*\n//  * Memory management.\n//  */\n//\n// yaml_DECLARE(void *)\n// yaml_malloc(size_t size);\n//\n// yaml_DECLARE(void *)\n// yaml_realloc(void *ptr, size_t size);\n//\n// yaml_DECLARE(void)\n// yaml_free(void *ptr);\n//\n// yaml_DECLARE(yaml_char_t *)\n// yaml_strdup(const yaml_char_t *);\n//\n// /*\n//  * Reader: Ensure that the buffer contains at least `length` characters.\n//  */\n//\n// yaml_DECLARE(int)\n// yaml_parser_update_buffer(yaml_parser_t *parser, size_t length);\n//\n// /*\n//  * Scanner: Ensure that the token stack contains at least one token ready.\n//  */\n//\n// yaml_DECLARE(int)\n// yaml_parser_fetch_more_tokens(yaml_parser_t *parser);\n//\n// /*\n//  * The size of the input raw buffer.\n//  */\n//\n// #define INPUT_RAW_BUFFER_SIZE   16384\n//\n// /*\n//  * The size of the input buffer.\n//  *\n//  * It should be possible to decode the whole raw buffer.\n//  */\n//\n// #define INPUT_BUFFER_SIZE       (INPUT_RAW_BUFFER_SIZE*3)\n//\n// /*\n//  * The size of the output buffer.\n//  */\n//\n// #define OUTPUT_BUFFER_SIZE      16384\n//\n// /*\n//  * The size of the output raw buffer.\n//  *\n//  * It should be possible to encode the whole output buffer.\n//  */\n//\n// #define OUTPUT_RAW_BUFFER_SIZE  (OUTPUT_BUFFER_SIZE*2+2)\n//\n// /*\n//  * The size of other stacks and queues.\n//  */\n//\n// #define INITIAL_STACK_SIZE  16\n// #define INITIAL_QUEUE_SIZE  16\n// #define INITIAL_STRING_SIZE 16\n//\n// /*\n//  * Buffer management.\n//  */\n//\n// #define BUFFER_INIT(context,buffer,size)                                        \\\n//     (((buffer).start = yaml_malloc(size)) ?                                     \\\n//         ((buffer).last = (buffer).pointer = (buffer).start,                     \\\n//          (buffer).end = (buffer).start+(size),                                  \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define BUFFER_DEL(context,buffer)                                              \\\n//     (yaml_free((buffer).start),                                                 \\\n//      (buffer).start = (buffer).pointer = (buffer).end = 0)\n//\n// /*\n//  * String management.\n//  */\n//\n// typedef struct {\n//     yaml_char_t *start;\n//     yaml_char_t *end;\n//     yaml_char_t *pointer;\n// } yaml_string_t;\n//\n// yaml_DECLARE(int)\n// yaml_string_extend(yaml_char_t **start,\n//         yaml_char_t **pointer, yaml_char_t **end);\n//\n// yaml_DECLARE(int)\n// yaml_string_join(\n//         yaml_char_t **a_start, yaml_char_t **a_pointer, yaml_char_t **a_end,\n//         yaml_char_t **b_start, yaml_char_t **b_pointer, yaml_char_t **b_end);\n//\n// #define NULL_STRING { NULL, NULL, NULL }\n//\n// #define STRING(string,length)   { (string), (string)+(length), (string) }\n//\n// #define STRING_ASSIGN(value,string,length)                                      \\\n//     ((value).start = (string),                                                  \\\n//      (value).end = (string)+(length),                                           \\\n//      (value).pointer = (string))\n//\n// #define STRING_INIT(context,string,size)                                        \\\n//     (((string).start = yaml_malloc(size)) ?                                     \\\n//         ((string).pointer = (string).start,                                     \\\n//          (string).end = (string).start+(size),                                  \\\n//          memset((string).start, 0, (size)),                                     \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define STRING_DEL(context,string)                                              \\\n//     (yaml_free((string).start),                                                 \\\n//      (string).start = (string).pointer = (string).end = 0)\n//\n// #define STRING_EXTEND(context,string)                                           \\\n//     (((string).pointer+5 < (string).end)                                        \\\n//         || yaml_string_extend(&(string).start,                                  \\\n//             &(string).pointer, &(string).end))\n//\n// #define CLEAR(context,string)                                                   \\\n//     ((string).pointer = (string).start,                                         \\\n//      memset((string).start, 0, (string).end-(string).start))\n//\n// #define JOIN(context,string_a,string_b)                                         \\\n//     ((yaml_string_join(&(string_a).start, &(string_a).pointer,                  \\\n//                        &(string_a).end, &(string_b).start,                      \\\n//                        &(string_b).pointer, &(string_b).end)) ?                 \\\n//         ((string_b).pointer = (string_b).start,                                 \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// /*\n//  * String check operations.\n//  */\n//\n// /*\n//  * Check the octet at the specified position.\n//  */\n//\n// #define CHECK_AT(string,octet,offset)                                           \\\n//     ((string).pointer[offset] == (yaml_char_t)(octet))\n//\n// /*\n//  * Check the current octet in the buffer.\n//  */\n//\n// #define CHECK(string,octet) CHECK_AT((string),(octet),0)\n//\n// /*\n//  * Check if the character at the specified position is an alphabetical\n//  * character, a digit, '_', or '-'.\n//  */\n//\n// #define IS_ALPHA_AT(string,offset)                                              \\\n//      (((string).pointer[offset] >= (yaml_char_t) '0' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) '9') ||                        \\\n//       ((string).pointer[offset] >= (yaml_char_t) 'A' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) 'Z') ||                        \\\n//       ((string).pointer[offset] >= (yaml_char_t) 'a' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) 'z') ||                        \\\n//       (string).pointer[offset] == '_' ||                                        \\\n//       (string).pointer[offset] == '-')\n//\n// #define IS_ALPHA(string)    IS_ALPHA_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is a digit.\n//  */\n//\n// #define IS_DIGIT_AT(string,offset)                                              \\\n//      (((string).pointer[offset] >= (yaml_char_t) '0' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) '9'))\n//\n// #define IS_DIGIT(string)    IS_DIGIT_AT((string),0)\n//\n// /*\n//  * Get the value of a digit.\n//  */\n//\n// #define AS_DIGIT_AT(string,offset)                                              \\\n//      ((string).pointer[offset] - (yaml_char_t) '0')\n//\n// #define AS_DIGIT(string)    AS_DIGIT_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is a hex-digit.\n//  */\n//\n// #define IS_HEX_AT(string,offset)                                                \\\n//      (((string).pointer[offset] >= (yaml_char_t) '0' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) '9') ||                        \\\n//       ((string).pointer[offset] >= (yaml_char_t) 'A' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) 'F') ||                        \\\n//       ((string).pointer[offset] >= (yaml_char_t) 'a' &&                         \\\n//        (string).pointer[offset] <= (yaml_char_t) 'f'))\n//\n// #define IS_HEX(string)    IS_HEX_AT((string),0)\n//\n// /*\n//  * Get the value of a hex-digit.\n//  */\n//\n// #define AS_HEX_AT(string,offset)                                                \\\n//       (((string).pointer[offset] >= (yaml_char_t) 'A' &&                        \\\n//         (string).pointer[offset] <= (yaml_char_t) 'F') ?                        \\\n//        ((string).pointer[offset] - (yaml_char_t) 'A' + 10) :                    \\\n//        ((string).pointer[offset] >= (yaml_char_t) 'a' &&                        \\\n//         (string).pointer[offset] <= (yaml_char_t) 'f') ?                        \\\n//        ((string).pointer[offset] - (yaml_char_t) 'a' + 10) :                    \\\n//        ((string).pointer[offset] - (yaml_char_t) '0'))\n//\n// #define AS_HEX(string)  AS_HEX_AT((string),0)\n//\n// /*\n//  * Check if the character is ASCII.\n//  */\n//\n// #define IS_ASCII_AT(string,offset)                                              \\\n//     ((string).pointer[offset] <= (yaml_char_t) '\\x7F')\n//\n// #define IS_ASCII(string)    IS_ASCII_AT((string),0)\n//\n// /*\n//  * Check if the character can be printed unescaped.\n//  */\n//\n// #define IS_PRINTABLE_AT(string,offset)                                          \\\n//     (((string).pointer[offset] == 0x0A)         /* . == #x0A */                 \\\n//      || ((string).pointer[offset] >= 0x20       /* #x20 <= . <= #x7E */         \\\n//          && (string).pointer[offset] <= 0x7E)                                   \\\n//      || ((string).pointer[offset] == 0xC2       /* #0xA0 <= . <= #xD7FF */      \\\n//          && (string).pointer[offset+1] >= 0xA0)                                 \\\n//      || ((string).pointer[offset] > 0xC2                                        \\\n//          && (string).pointer[offset] < 0xED)                                    \\\n//      || ((string).pointer[offset] == 0xED                                       \\\n//          && (string).pointer[offset+1] < 0xA0)                                  \\\n//      || ((string).pointer[offset] == 0xEE)                                      \\\n//      || ((string).pointer[offset] == 0xEF      /* #xE000 <= . <= #xFFFD */      \\\n//          && !((string).pointer[offset+1] == 0xBB        /* && . != #xFEFF */    \\\n//              && (string).pointer[offset+2] == 0xBF)                             \\\n//          && !((string).pointer[offset+1] == 0xBF                                \\\n//              && ((string).pointer[offset+2] == 0xBE                             \\\n//                  || (string).pointer[offset+2] == 0xBF))))\n//\n// #define IS_PRINTABLE(string)    IS_PRINTABLE_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is NUL.\n//  */\n//\n// #define IS_Z_AT(string,offset)    CHECK_AT((string),'\\0',(offset))\n//\n// #define IS_Z(string)    IS_Z_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is BOM.\n//  */\n//\n// #define IS_BOM_AT(string,offset)                                                \\\n//      (CHECK_AT((string),'\\xEF',(offset))                                        \\\n//       && CHECK_AT((string),'\\xBB',(offset)+1)                                   \\\n//       && CHECK_AT((string),'\\xBF',(offset)+2))  /* BOM (#xFEFF) */\n//\n// #define IS_BOM(string)  IS_BOM_AT(string,0)\n//\n// /*\n//  * Check if the character at the specified position is space.\n//  */\n//\n// #define IS_SPACE_AT(string,offset)  CHECK_AT((string),' ',(offset))\n//\n// #define IS_SPACE(string)    IS_SPACE_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is tab.\n//  */\n//\n// #define IS_TAB_AT(string,offset)    CHECK_AT((string),'\\t',(offset))\n//\n// #define IS_TAB(string)  IS_TAB_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is blank (space or tab).\n//  */\n//\n// #define IS_BLANK_AT(string,offset)                                              \\\n//     (IS_SPACE_AT((string),(offset)) || IS_TAB_AT((string),(offset)))\n//\n// #define IS_BLANK(string)    IS_BLANK_AT((string),0)\n//\n// /*\n//  * Check if the character at the specified position is a line break.\n//  */\n//\n// #define IS_BREAK_AT(string,offset)                                              \\\n//     (CHECK_AT((string),'\\r',(offset))               /* CR (#xD)*/               \\\n//      || CHECK_AT((string),'\\n',(offset))            /* LF (#xA) */              \\\n//      || (CHECK_AT((string),'\\xC2',(offset))                                     \\\n//          && CHECK_AT((string),'\\x85',(offset)+1))   /* NEL (#x85) */            \\\n//      || (CHECK_AT((string),'\\xE2',(offset))                                     \\\n//          && CHECK_AT((string),'\\x80',(offset)+1)                                \\\n//          && CHECK_AT((string),'\\xA8',(offset)+2))   /* LS (#x2028) */           \\\n//      || (CHECK_AT((string),'\\xE2',(offset))                                     \\\n//          && CHECK_AT((string),'\\x80',(offset)+1)                                \\\n//          && CHECK_AT((string),'\\xA9',(offset)+2)))  /* PS (#x2029) */\n//\n// #define IS_BREAK(string)    IS_BREAK_AT((string),0)\n//\n// #define IS_CRLF_AT(string,offset)                                               \\\n//      (CHECK_AT((string),'\\r',(offset)) && CHECK_AT((string),'\\n',(offset)+1))\n//\n// #define IS_CRLF(string) IS_CRLF_AT((string),0)\n//\n// /*\n//  * Check if the character is a line break or NUL.\n//  */\n//\n// #define IS_BREAKZ_AT(string,offset)                                             \\\n//     (IS_BREAK_AT((string),(offset)) || IS_Z_AT((string),(offset)))\n//\n// #define IS_BREAKZ(string)   IS_BREAKZ_AT((string),0)\n//\n// /*\n//  * Check if the character is a line break, space, or NUL.\n//  */\n//\n// #define IS_SPACEZ_AT(string,offset)                                             \\\n//     (IS_SPACE_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))\n//\n// #define IS_SPACEZ(string)   IS_SPACEZ_AT((string),0)\n//\n// /*\n//  * Check if the character is a line break, space, tab, or NUL.\n//  */\n//\n// #define IS_BLANKZ_AT(string,offset)                                             \\\n//     (IS_BLANK_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))\n//\n// #define IS_BLANKZ(string)   IS_BLANKZ_AT((string),0)\n//\n// /*\n//  * Determine the width of the character.\n//  */\n//\n// #define WIDTH_AT(string,offset)                                                 \\\n//      (((string).pointer[offset] & 0x80) == 0x00 ? 1 :                           \\\n//       ((string).pointer[offset] & 0xE0) == 0xC0 ? 2 :                           \\\n//       ((string).pointer[offset] & 0xF0) == 0xE0 ? 3 :                           \\\n//       ((string).pointer[offset] & 0xF8) == 0xF0 ? 4 : 0)\n//\n// #define WIDTH(string)   WIDTH_AT((string),0)\n//\n// /*\n//  * Move the string pointer to the next character.\n//  */\n//\n// #define MOVE(string)    ((string).pointer += WIDTH((string)))\n//\n// /*\n//  * Copy a character and move the pointers of both strings.\n//  */\n//\n// #define COPY(string_a,string_b)                                                 \\\n//     ((*(string_b).pointer & 0x80) == 0x00 ?                                     \\\n//      (*((string_a).pointer++) = *((string_b).pointer++)) :                      \\\n//      (*(string_b).pointer & 0xE0) == 0xC0 ?                                     \\\n//      (*((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++)) :                      \\\n//      (*(string_b).pointer & 0xF0) == 0xE0 ?                                     \\\n//      (*((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++)) :                      \\\n//      (*(string_b).pointer & 0xF8) == 0xF0 ?                                     \\\n//      (*((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++),                        \\\n//       *((string_a).pointer++) = *((string_b).pointer++)) : 0)\n//\n// /*\n//  * Stack and queue management.\n//  */\n//\n// yaml_DECLARE(int)\n// yaml_stack_extend(void **start, void **top, void **end);\n//\n// yaml_DECLARE(int)\n// yaml_queue_extend(void **start, void **head, void **tail, void **end);\n//\n// #define STACK_INIT(context,stack,size)                                          \\\n//     (((stack).start = yaml_malloc((size)*sizeof(*(stack).start))) ?             \\\n//         ((stack).top = (stack).start,                                           \\\n//          (stack).end = (stack).start+(size),                                    \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define STACK_DEL(context,stack)                                                \\\n//     (yaml_free((stack).start),                                                  \\\n//      (stack).start = (stack).top = (stack).end = 0)\n//\n// #define STACK_EMPTY(context,stack)                                              \\\n//     ((stack).start == (stack).top)\n//\n// #define PUSH(context,stack,value)                                               \\\n//     (((stack).top != (stack).end                                                \\\n//       || yaml_stack_extend((void **)&(stack).start,                             \\\n//               (void **)&(stack).top, (void **)&(stack).end)) ?                  \\\n//         (*((stack).top++) = value,                                              \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define POP(context,stack)                                                      \\\n//     (*(--(stack).top))\n//\n// #define QUEUE_INIT(context,queue,size)                                          \\\n//     (((queue).start = yaml_malloc((size)*sizeof(*(queue).start))) ?             \\\n//         ((queue).head = (queue).tail = (queue).start,                           \\\n//          (queue).end = (queue).start+(size),                                    \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define QUEUE_DEL(context,queue)                                                \\\n//     (yaml_free((queue).start),                                                  \\\n//      (queue).start = (queue).head = (queue).tail = (queue).end = 0)\n//\n// #define QUEUE_EMPTY(context,queue)                                              \\\n//     ((queue).head == (queue).tail)\n//\n// #define ENQUEUE(context,queue,value)                                            \\\n//     (((queue).tail != (queue).end                                               \\\n//       || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head,     \\\n//             (void **)&(queue).tail, (void **)&(queue).end)) ?                   \\\n//         (*((queue).tail++) = value,                                             \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// #define DEQUEUE(context,queue)                                                  \\\n//     (*((queue).head++))\n//\n// #define QUEUE_INSERT(context,queue,index,value)                                 \\\n//     (((queue).tail != (queue).end                                               \\\n//       || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head,     \\\n//             (void **)&(queue).tail, (void **)&(queue).end)) ?                   \\\n//         (memmove((queue).head+(index)+1,(queue).head+(index),                   \\\n//             ((queue).tail-(queue).head-(index))*sizeof(*(queue).start)),        \\\n//          *((queue).head+(index)) = value,                                       \\\n//          (queue).tail++,                                                        \\\n//          1) :                                                                   \\\n//         ((context)->error = yaml_MEMORY_ERROR,                                  \\\n//          0))\n//\n// /*\n//  * Token initializers.\n//  */\n//\n// #define TOKEN_INIT(token,token_type,token_start_mark,token_end_mark)            \\\n//     (memset(&(token), 0, sizeof(yaml_token_t)),                                 \\\n//      (token).type = (token_type),                                               \\\n//      (token).start_mark = (token_start_mark),                                   \\\n//      (token).end_mark = (token_end_mark))\n//\n// #define STREAM_START_TOKEN_INIT(token,token_encoding,start_mark,end_mark)       \\\n//     (TOKEN_INIT((token),yaml_STREAM_START_TOKEN,(start_mark),(end_mark)),       \\\n//      (token).data.stream_start.encoding = (token_encoding))\n//\n// #define STREAM_END_TOKEN_INIT(token,start_mark,end_mark)                        \\\n//     (TOKEN_INIT((token),yaml_STREAM_END_TOKEN,(start_mark),(end_mark)))\n//\n// #define ALIAS_TOKEN_INIT(token,token_value,start_mark,end_mark)                 \\\n//     (TOKEN_INIT((token),yaml_ALIAS_TOKEN,(start_mark),(end_mark)),              \\\n//      (token).data.alias.value = (token_value))\n//\n// #define ANCHOR_TOKEN_INIT(token,token_value,start_mark,end_mark)                \\\n//     (TOKEN_INIT((token),yaml_ANCHOR_TOKEN,(start_mark),(end_mark)),             \\\n//      (token).data.anchor.value = (token_value))\n//\n// #define TAG_TOKEN_INIT(token,token_handle,token_suffix,start_mark,end_mark)     \\\n//     (TOKEN_INIT((token),yaml_TAG_TOKEN,(start_mark),(end_mark)),                \\\n//      (token).data.tag.handle = (token_handle),                                  \\\n//      (token).data.tag.suffix = (token_suffix))\n//\n// #define SCALAR_TOKEN_INIT(token,token_value,token_length,token_style,start_mark,end_mark)   \\\n//     (TOKEN_INIT((token),yaml_SCALAR_TOKEN,(start_mark),(end_mark)),             \\\n//      (token).data.scalar.value = (token_value),                                 \\\n//      (token).data.scalar.length = (token_length),                               \\\n//      (token).data.scalar.style = (token_style))\n//\n// #define VERSION_DIRECTIVE_TOKEN_INIT(token,token_major,token_minor,start_mark,end_mark)     \\\n//     (TOKEN_INIT((token),yaml_VERSION_DIRECTIVE_TOKEN,(start_mark),(end_mark)),  \\\n//      (token).data.version_directive.major = (token_major),                      \\\n//      (token).data.version_directive.minor = (token_minor))\n//\n// #define TAG_DIRECTIVE_TOKEN_INIT(token,token_handle,token_prefix,start_mark,end_mark)       \\\n//     (TOKEN_INIT((token),yaml_TAG_DIRECTIVE_TOKEN,(start_mark),(end_mark)),      \\\n//      (token).data.tag_directive.handle = (token_handle),                        \\\n//      (token).data.tag_directive.prefix = (token_prefix))\n//\n// /*\n//  * Event initializers.\n//  */\n//\n// #define EVENT_INIT(event,event_type,event_start_mark,event_end_mark)            \\\n//     (memset(&(event), 0, sizeof(yaml_event_t)),                                 \\\n//      (event).type = (event_type),                                               \\\n//      (event).start_mark = (event_start_mark),                                   \\\n//      (event).end_mark = (event_end_mark))\n//\n// #define STREAM_START_EVENT_INIT(event,event_encoding,start_mark,end_mark)       \\\n//     (EVENT_INIT((event),yaml_STREAM_START_EVENT,(start_mark),(end_mark)),       \\\n//      (event).data.stream_start.encoding = (event_encoding))\n//\n// #define STREAM_END_EVENT_INIT(event,start_mark,end_mark)                        \\\n//     (EVENT_INIT((event),yaml_STREAM_END_EVENT,(start_mark),(end_mark)))\n//\n// #define DOCUMENT_START_EVENT_INIT(event,event_version_directive,                \\\n//         event_tag_directives_start,event_tag_directives_end,event_implicit,start_mark,end_mark) \\\n//     (EVENT_INIT((event),yaml_DOCUMENT_START_EVENT,(start_mark),(end_mark)),     \\\n//      (event).data.document_start.version_directive = (event_version_directive), \\\n//      (event).data.document_start.tag_directives.start = (event_tag_directives_start),   \\\n//      (event).data.document_start.tag_directives.end = (event_tag_directives_end),   \\\n//      (event).data.document_start.implicit = (event_implicit))\n//\n// #define DOCUMENT_END_EVENT_INIT(event,event_implicit,start_mark,end_mark)       \\\n//     (EVENT_INIT((event),yaml_DOCUMENT_END_EVENT,(start_mark),(end_mark)),       \\\n//      (event).data.document_end.implicit = (event_implicit))\n//\n// #define ALIAS_EVENT_INIT(event,event_anchor,start_mark,end_mark)                \\\n//     (EVENT_INIT((event),yaml_ALIAS_EVENT,(start_mark),(end_mark)),              \\\n//      (event).data.alias.anchor = (event_anchor))\n//\n// #define SCALAR_EVENT_INIT(event,event_anchor,event_tag,event_value,event_length,    \\\n//         event_plain_implicit, event_quoted_implicit,event_style,start_mark,end_mark)    \\\n//     (EVENT_INIT((event),yaml_SCALAR_EVENT,(start_mark),(end_mark)),             \\\n//      (event).data.scalar.anchor = (event_anchor),                               \\\n//      (event).data.scalar.tag = (event_tag),                                     \\\n//      (event).data.scalar.value = (event_value),                                 \\\n//      (event).data.scalar.length = (event_length),                               \\\n//      (event).data.scalar.plain_implicit = (event_plain_implicit),               \\\n//      (event).data.scalar.quoted_implicit = (event_quoted_implicit),             \\\n//      (event).data.scalar.style = (event_style))\n//\n// #define SEQUENCE_START_EVENT_INIT(event,event_anchor,event_tag,                 \\\n//         event_implicit,event_style,start_mark,end_mark)                         \\\n//     (EVENT_INIT((event),yaml_SEQUENCE_START_EVENT,(start_mark),(end_mark)),     \\\n//      (event).data.sequence_start.anchor = (event_anchor),                       \\\n//      (event).data.sequence_start.tag = (event_tag),                             \\\n//      (event).data.sequence_start.implicit = (event_implicit),                   \\\n//      (event).data.sequence_start.style = (event_style))\n//\n// #define SEQUENCE_END_EVENT_INIT(event,start_mark,end_mark)                      \\\n//     (EVENT_INIT((event),yaml_SEQUENCE_END_EVENT,(start_mark),(end_mark)))\n//\n// #define MAPPING_START_EVENT_INIT(event,event_anchor,event_tag,                  \\\n//         event_implicit,event_style,start_mark,end_mark)                         \\\n//     (EVENT_INIT((event),yaml_MAPPING_START_EVENT,(start_mark),(end_mark)),      \\\n//      (event).data.mapping_start.anchor = (event_anchor),                        \\\n//      (event).data.mapping_start.tag = (event_tag),                              \\\n//      (event).data.mapping_start.implicit = (event_implicit),                    \\\n//      (event).data.mapping_start.style = (event_style))\n//\n// #define MAPPING_END_EVENT_INIT(event,start_mark,end_mark)                       \\\n//     (EVENT_INIT((event),yaml_MAPPING_END_EVENT,(start_mark),(end_mark)))\n//\n// /*\n//  * Document initializer.\n//  */\n//\n// #define DOCUMENT_INIT(document,document_nodes_start,document_nodes_end,         \\\n//         document_version_directive,document_tag_directives_start,               \\\n//         document_tag_directives_end,document_start_implicit,                    \\\n//         document_end_implicit,document_start_mark,document_end_mark)            \\\n//     (memset(&(document), 0, sizeof(yaml_document_t)),                           \\\n//      (document).nodes.start = (document_nodes_start),                           \\\n//      (document).nodes.end = (document_nodes_end),                               \\\n//      (document).nodes.top = (document_nodes_start),                             \\\n//      (document).version_directive = (document_version_directive),               \\\n//      (document).tag_directives.start = (document_tag_directives_start),         \\\n//      (document).tag_directives.end = (document_tag_directives_end),             \\\n//      (document).start_implicit = (document_start_implicit),                     \\\n//      (document).end_implicit = (document_end_implicit),                         \\\n//      (document).start_mark = (document_start_mark),                             \\\n//      (document).end_mark = (document_end_mark))\n//\n// /*\n//  * Node initializers.\n//  */\n//\n// #define NODE_INIT(node,node_type,node_tag,node_start_mark,node_end_mark)        \\\n//     (memset(&(node), 0, sizeof(yaml_node_t)),                                   \\\n//      (node).type = (node_type),                                                 \\\n//      (node).tag = (node_tag),                                                   \\\n//      (node).start_mark = (node_start_mark),                                     \\\n//      (node).end_mark = (node_end_mark))\n//\n// #define SCALAR_NODE_INIT(node,node_tag,node_value,node_length,                  \\\n//         node_style,start_mark,end_mark)                                         \\\n//     (NODE_INIT((node),yaml_SCALAR_NODE,(node_tag),(start_mark),(end_mark)),     \\\n//      (node).data.scalar.value = (node_value),                                   \\\n//      (node).data.scalar.length = (node_length),                                 \\\n//      (node).data.scalar.style = (node_style))\n//\n// #define SEQUENCE_NODE_INIT(node,node_tag,node_items_start,node_items_end,       \\\n//         node_style,start_mark,end_mark)                                         \\\n//     (NODE_INIT((node),yaml_SEQUENCE_NODE,(node_tag),(start_mark),(end_mark)),   \\\n//      (node).data.sequence.items.start = (node_items_start),                     \\\n//      (node).data.sequence.items.end = (node_items_end),                         \\\n//      (node).data.sequence.items.top = (node_items_start),                       \\\n//      (node).data.sequence.style = (node_style))\n//\n// #define MAPPING_NODE_INIT(node,node_tag,node_pairs_start,node_pairs_end,        \\\n//         node_style,start_mark,end_mark)                                         \\\n//     (NODE_INIT((node),yaml_MAPPING_NODE,(node_tag),(start_mark),(end_mark)),    \\\n//      (node).data.mapping.pairs.start = (node_pairs_start),                      \\\n//      (node).data.mapping.pairs.end = (node_pairs_end),                          \\\n//      (node).data.mapping.pairs.top = (node_pairs_start),                        \\\n//      (node).data.mapping.style = (node_style))\n//\n"
  },
  {
    "path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yamlh.go",
    "content": "/*\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*/\n\npackage candiedyaml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n/** The version directive data. */\ntype yaml_version_directive_t struct {\n\tmajor int // The major version number\n\tminor int // 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\n/** The stream encoding. */\ntype yaml_encoding_t int\n\nconst (\n\t/** Let the parser choose the encoding. */\n\tyaml_ANY_ENCODING yaml_encoding_t = iota\n\t/** The defau lt UTF-8 encoding. */\n\tyaml_UTF8_ENCODING\n\t/** The UTF-16-LE encoding with BOM. */\n\tyaml_UTF16LE_ENCODING\n\t/** The UTF-16-BE encoding with BOM. */\n\tyaml_UTF16BE_ENCODING\n)\n\n/** Line break types. */\ntype yaml_break_t int\n\nconst (\n\tyaml_ANY_BREAK  yaml_break_t = iota /** Let the parser choose the break type. */\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\n/** Many bad things could happen with the parser and emitter. */\ntype YAML_error_type_t int\n\nconst (\n\t/** No error is produced. */\n\tyaml_NO_ERROR YAML_error_type_t = iota\n\n\t/** Cannot allocate or reallocate a block of memory. */\n\tyaml_MEMORY_ERROR\n\n\t/** Cannot read or decode the input stream. */\n\tyaml_READER_ERROR\n\t/** Cannot scan the input stream. */\n\tyaml_SCANNER_ERROR\n\t/** Cannot parse the input stream. */\n\tyaml_PARSER_ERROR\n\t/** Cannot compose a YAML document. */\n\tyaml_COMPOSER_ERROR\n\n\t/** Cannot write to the output stream. */\n\tyaml_WRITER_ERROR\n\t/** Cannot emit a YAML stream. */\n\tyaml_EMITTER_ERROR\n)\n\n/** The pointer position. */\ntype YAML_mark_t struct {\n\t/** The position index. */\n\tindex int\n\n\t/** The position line. */\n\tline int\n\n\t/** The position column. */\n\tcolumn int\n}\n\nfunc (m YAML_mark_t) String() string {\n\treturn fmt.Sprintf(\"line %d, column %d\", m.line, m.column)\n}\n\n/** @} */\n\n/**\n * @defgroup styles Node Styles\n * @{\n */\n\ntype yaml_style_t int\n\n/** Scalar styles. */\ntype yaml_scalar_style_t yaml_style_t\n\nconst (\n\t/** Let the emitter choose the style. */\n\tyaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota\n\n\t/** The plain scalar style. */\n\tyaml_PLAIN_SCALAR_STYLE\n\n\t/** The single-quoted scalar style. */\n\tyaml_SINGLE_QUOTED_SCALAR_STYLE\n\t/** The double-quoted scalar style. */\n\tyaml_DOUBLE_QUOTED_SCALAR_STYLE\n\n\t/** The literal scalar style. */\n\tyaml_LITERAL_SCALAR_STYLE\n\t/** The folded scalar style. */\n\tyaml_FOLDED_SCALAR_STYLE\n)\n\n/** Sequence styles. */\ntype yaml_sequence_style_t yaml_style_t\n\nconst (\n\t/** Let the emitter choose the style. */\n\tyaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota\n\n\t/** The block sequence style. */\n\tyaml_BLOCK_SEQUENCE_STYLE\n\t/** The flow sequence style. */\n\tyaml_FLOW_SEQUENCE_STYLE\n)\n\n/** Mapping styles. */\ntype yaml_mapping_style_t yaml_style_t\n\nconst (\n\t/** Let the emitter choose the style. */\n\tyaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota\n\n\t/** The block mapping style. */\n\tyaml_BLOCK_MAPPING_STYLE\n\t/** The flow mapping style. */\n\tyaml_FLOW_MAPPING_STYLE\n\n/*    yaml_FLOW_SET_MAPPING_STYLE   */\n)\n\n/** @} */\n\n/**\n * @defgroup tokens Tokens\n * @{\n */\n\n/** Token types. */\ntype yaml_token_type_t int\n\nconst (\n\t/** An empty token. */\n\tyaml_NO_TOKEN yaml_token_type_t = iota\n\n\t/** A STREAM-START token. */\n\tyaml_STREAM_START_TOKEN\n\t/** A STREAM-END token. */\n\tyaml_STREAM_END_TOKEN\n\n\t/** A VERSION-DIRECTIVE token. */\n\tyaml_VERSION_DIRECTIVE_TOKEN\n\t/** A TAG-DIRECTIVE token. */\n\tyaml_TAG_DIRECTIVE_TOKEN\n\t/** A DOCUMENT-START token. */\n\tyaml_DOCUMENT_START_TOKEN\n\t/** A DOCUMENT-END token. */\n\tyaml_DOCUMENT_END_TOKEN\n\n\t/** A BLOCK-SEQUENCE-START token. */\n\tyaml_BLOCK_SEQUENCE_START_TOKEN\n\t/** A BLOCK-SEQUENCE-END token. */\n\tyaml_BLOCK_MAPPING_START_TOKEN\n\t/** A BLOCK-END token. */\n\tyaml_BLOCK_END_TOKEN\n\n\t/** A FLOW-SEQUENCE-START token. */\n\tyaml_FLOW_SEQUENCE_START_TOKEN\n\t/** A FLOW-SEQUENCE-END token. */\n\tyaml_FLOW_SEQUENCE_END_TOKEN\n\t/** A FLOW-MAPPING-START token. */\n\tyaml_FLOW_MAPPING_START_TOKEN\n\t/** A FLOW-MAPPING-END token. */\n\tyaml_FLOW_MAPPING_END_TOKEN\n\n\t/** A BLOCK-ENTRY token. */\n\tyaml_BLOCK_ENTRY_TOKEN\n\t/** A FLOW-ENTRY token. */\n\tyaml_FLOW_ENTRY_TOKEN\n\t/** A KEY token. */\n\tyaml_KEY_TOKEN\n\t/** A VALUE token. */\n\tyaml_VALUE_TOKEN\n\n\t/** An ALIAS token. */\n\tyaml_ALIAS_TOKEN\n\t/** An ANCHOR token. */\n\tyaml_ANCHOR_TOKEN\n\t/** A TAG token. */\n\tyaml_TAG_TOKEN\n\t/** A SCALAR token. */\n\tyaml_SCALAR_TOKEN\n)\n\n/** The token structure. */\ntype yaml_token_t struct {\n\n\t/** The token type. */\n\ttoken_type yaml_token_type_t\n\n\t/** The token data. */\n\t/** The stream start (for @c yaml_STREAM_START_TOKEN). */\n\tencoding yaml_encoding_t\n\n\t/** The alias (for @c yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN,yaml_TAG_TOKEN ). */\n\t/** The anchor (for @c ). */\n\t/** The scalar value (for @c ). */\n\tvalue []byte\n\n\t/** The tag suffix. */\n\tsuffix []byte\n\n\t/** The scalar value (for @c yaml_SCALAR_TOKEN). */\n\t/** The scalar style. */\n\tstyle yaml_scalar_style_t\n\n\t/** The version directive (for @c yaml_VERSION_DIRECTIVE_TOKEN). */\n\tversion_directive yaml_version_directive_t\n\n\t/** The tag directive (for @c yaml_TAG_DIRECTIVE_TOKEN). */\n\tprefix []byte\n\n\t/** The beginning of the token. */\n\tstart_mark YAML_mark_t\n\t/** The end of the token. */\n\tend_mark YAML_mark_t\n\n\tmajor, minor int\n}\n\n/**\n * @defgroup events Events\n * @{\n */\n\n/** Event types. */\ntype yaml_event_type_t int\n\nconst (\n\t/** An empty event. */\n\tyaml_NO_EVENT yaml_event_type_t = iota\n\n\t/** A STREAM-START event. */\n\tyaml_STREAM_START_EVENT\n\t/** A STREAM-END event. */\n\tyaml_STREAM_END_EVENT\n\n\t/** A DOCUMENT-START event. */\n\tyaml_DOCUMENT_START_EVENT\n\t/** A DOCUMENT-END event. */\n\tyaml_DOCUMENT_END_EVENT\n\n\t/** An ALIAS event. */\n\tyaml_ALIAS_EVENT\n\t/** A SCALAR event. */\n\tyaml_SCALAR_EVENT\n\n\t/** A SEQUENCE-START event. */\n\tyaml_SEQUENCE_START_EVENT\n\t/** A SEQUENCE-END event. */\n\tyaml_SEQUENCE_END_EVENT\n\n\t/** A MAPPING-START event. */\n\tyaml_MAPPING_START_EVENT\n\t/** A MAPPING-END event. */\n\tyaml_MAPPING_END_EVENT\n)\n\n/** The event structure. */\ntype yaml_event_t struct {\n\n\t/** The event type. */\n\tevent_type yaml_event_type_t\n\n\t/** The stream parameters (for @c yaml_STREAM_START_EVENT). */\n\tencoding yaml_encoding_t\n\n\t/** The document parameters (for @c yaml_DOCUMENT_START_EVENT). */\n\tversion_directive *yaml_version_directive_t\n\n\t/** The beginning and end of the tag directives list. */\n\ttag_directives []yaml_tag_directive_t\n\n\t/** The document parameters (for @c yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT,yaml_MAPPING_START_EVENT). */\n\t/** Is the document indicator implicit? */\n\timplicit bool\n\n\t/** The alias parameters (for @c yaml_ALIAS_EVENT,yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */\n\t/** The anchor. */\n\tanchor []byte\n\n\t/** The scalar parameters (for @c yaml_SCALAR_EVENT,yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */\n\t/** The tag. */\n\ttag []byte\n\t/** The scalar value. */\n\tvalue []byte\n\n\t/** Is the tag optional for the plain style? */\n\tplain_implicit bool\n\t/** Is the tag optional for any non-plain style? */\n\tquoted_implicit bool\n\n\t/** The sequence parameters (for @c yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). */\n\t/** The sequence style. */\n\t/** The scalar style. */\n\tstyle yaml_style_t\n\n\t/** The beginning of the event. */\n\tstart_mark, end_mark YAML_mark_t\n}\n\n/**\n * @defgroup nodes Nodes\n * @{\n */\n\nconst (\n\t/** The tag @c !!null with the only possible value: @c null. */\n\tyaml_NULL_TAG = \"tag:yaml.org,2002:null\"\n\t/** The tag @c !!bool with the values: @c true and @c falce. */\n\tyaml_BOOL_TAG = \"tag:yaml.org,2002:bool\"\n\t/** The tag @c !!str for string values. */\n\tyaml_STR_TAG = \"tag:yaml.org,2002:str\"\n\t/** The tag @c !!int for integer values. */\n\tyaml_INT_TAG = \"tag:yaml.org,2002:int\"\n\t/** The tag @c !!float for float values. */\n\tyaml_FLOAT_TAG = \"tag:yaml.org,2002:float\"\n\t/** The tag @c !!timestamp for date and time values. */\n\tyaml_TIMESTAMP_TAG = \"tag:yaml.org,2002:timestamp\"\n\n\t/** The tag @c !!seq is used to denote sequences. */\n\tyaml_SEQ_TAG = \"tag:yaml.org,2002:seq\"\n\t/** The tag @c !!map is used to denote mapping. */\n\tyaml_MAP_TAG = \"tag:yaml.org,2002:map\"\n\n\t/** The default scalar tag is @c !!str. */\n\tyaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG\n\t/** The default sequence tag is @c !!seq. */\n\tyaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG\n\t/** The default mapping tag is @c !!map. */\n\tyaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG\n\n\tyaml_BINARY_TAG = \"tag:yaml.org,2002:binary\"\n)\n\n/** Node types. */\ntype yaml_node_type_t int\n\nconst (\n\t/** An empty node. */\n\tyaml_NO_NODE yaml_node_type_t = iota\n\n\t/** A scalar node. */\n\tyaml_SCALAR_NODE\n\t/** A sequence node. */\n\tyaml_SEQUENCE_NODE\n\t/** A mapping node. */\n\tyaml_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\t/** The key of the element. */\n\tkey int\n\t/** The value of the element. */\n\tvalue int\n}\n\n/** The node structure. */\ntype yaml_node_t struct {\n\n\t/** The node type. */\n\tnode_type yaml_node_type_t\n\n\t/** The node tag. */\n\ttag []byte\n\n\t/** The scalar parameters (for @c yaml_SCALAR_NODE). */\n\tscalar struct {\n\t\t/** The scalar value. */\n\t\tvalue []byte\n\t\t/** The scalar style. */\n\t\tstyle yaml_scalar_style_t\n\t}\n\n\t/** The sequence parameters (for @c yaml_SEQUENCE_NODE). */\n\tsequence struct {\n\t\t/** The stack of sequence items. */\n\t\titems []yaml_node_item_t\n\t\t/** The sequence style. */\n\t\tstyle yaml_sequence_style_t\n\t}\n\n\t/** The mapping parameters (for @c yaml_MAPPING_NODE). */\n\tmapping struct {\n\t\t/** The stack of mapping pairs (key, value). */\n\t\tpairs []yaml_node_pair_t\n\t\t/** The mapping style. */\n\t\tstyle yaml_mapping_style_t\n\t}\n\n\t/** The beginning of the node. */\n\tstart_mark YAML_mark_t\n\t/** The end of the node. */\n\tend_mark YAML_mark_t\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\ttags []yaml_tag_directive_t\n\n\t/** Is the document start indicator implicit? */\n\tstart_implicit bool\n\t/** Is the document end indicator implicit? */\n\tend_implicit bool\n\n\t/** The beginning of the document. */\n\tstart_mark YAML_mark_t\n\t/** The end of the document. */\n\tend_mark YAML_mark_t\n}\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 @a size bytes to the @a\n * buffer.  The number of written bytes should be set to the @a length variable.\n *\n * @param[in,out]   data        A pointer to an application data specified by\n *                              yaml_parser_set_input().\n * @param[out]      buffer      The buffer to write the data from the source.\n * @param[in]       size        The size of the buffer.\n * @param[out]      size_read   The actual number of bytes read from the source.\n *\n * @returns On success, the handler should return @c 1.  If the handler failed,\n * the returned value should be @c 0.  On EOF, the handler should set the\n * @a size_read to @c 0 and return @c 1.\n */\n\ntype yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)\n\n/**\n * This structure holds information about a potential simple key.\n */\n\ntype yaml_simple_key_t struct {\n\t/** Is a simple key possible? */\n\tpossible bool\n\n\t/** Is a simple key required? */\n\trequired bool\n\n\t/** The number of the token. */\n\ttoken_number int\n\n\t/** The position mark. */\n\tmark YAML_mark_t\n}\n\n/**\n * The states of the parser.\n */\ntype yaml_parser_state_t int\n\nconst (\n\t/** Expect STREAM-START. */\n\tyaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota\n\t/** Expect the beginning of an implicit document. */\n\tyaml_PARSE_IMPLICIT_DOCUMENT_START_STATE\n\t/** Expect DOCUMENT-START. */\n\tyaml_PARSE_DOCUMENT_START_STATE\n\t/** Expect the content of a document. */\n\tyaml_PARSE_DOCUMENT_CONTENT_STATE\n\t/** Expect DOCUMENT-END. */\n\tyaml_PARSE_DOCUMENT_END_STATE\n\t/** Expect a block node. */\n\tyaml_PARSE_BLOCK_NODE_STATE\n\t/** Expect a block node or indentless sequence. */\n\tyaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE\n\t/** Expect a flow node. */\n\tyaml_PARSE_FLOW_NODE_STATE\n\t/** Expect the first entry of a block sequence. */\n\tyaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE\n\t/** Expect an entry of a block sequence. */\n\tyaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE\n\t/** Expect an entry of an indentless sequence. */\n\tyaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE\n\t/** Expect the first key of a block mapping. */\n\tyaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE\n\t/** Expect a block mapping key. */\n\tyaml_PARSE_BLOCK_MAPPING_KEY_STATE\n\t/** Expect a block mapping value. */\n\tyaml_PARSE_BLOCK_MAPPING_VALUE_STATE\n\t/** Expect the first entry of a flow sequence. */\n\tyaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE\n\t/** Expect an entry of a flow sequence. */\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE\n\t/** Expect a key of an ordered mapping. */\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE\n\t/** Expect a value of an ordered mapping. */\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE\n\t/** Expect the and of an ordered mapping entry. */\n\tyaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE\n\t/** Expect the first key of a flow mapping. */\n\tyaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE\n\t/** Expect a key of a flow mapping. */\n\tyaml_PARSE_FLOW_MAPPING_KEY_STATE\n\t/** Expect a value of a flow mapping. */\n\tyaml_PARSE_FLOW_MAPPING_VALUE_STATE\n\t/** Expect an empty value of a flow mapping. */\n\tyaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE\n\t/** Expect nothing. */\n\tyaml_PARSE_END_STATE\n)\n\n/**\n * This structure holds aliases data.\n */\n\ntype yaml_alias_data_t struct {\n\t/** The anchor. */\n\tanchor []byte\n\t/** The node id. */\n\tindex int\n\t/** The anchor mark. */\n\tmark YAML_mark_t\n}\n\n/**\n * The parser structure.\n *\n * All members are internal.  Manage the structure using the @c yaml_parser_\n * family of functions.\n */\n\ntype yaml_parser_t struct {\n\n\t/**\n\t * @name Error handling\n\t * @{\n\t */\n\n\t/** Error type. */\n\terror YAML_error_type_t\n\t/** Error description. */\n\tproblem string\n\t/** The byte about which the problem occured. */\n\tproblem_offset int\n\t/** The problematic value (@c -1 is none). */\n\tproblem_value int\n\t/** The problem position. */\n\tproblem_mark YAML_mark_t\n\t/** The error context. */\n\tcontext string\n\t/** The context position. */\n\tcontext_mark YAML_mark_t\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Reader stuff\n\t * @{\n\t */\n\n\t/** Read handler. */\n\tread_handler yaml_read_handler_t\n\n\t/** Reader input data. */\n\tinput_reader io.Reader\n\tinput        []byte\n\tinput_pos    int\n\n\t/** EOF flag */\n\teof bool\n\n\t/** The working buffer. */\n\tbuffer     []byte\n\tbuffer_pos int\n\n\t/* The number of unread characters in the buffer. */\n\tunread int\n\n\t/** The raw buffer. */\n\traw_buffer     []byte\n\traw_buffer_pos int\n\n\t/** The input encoding. */\n\tencoding yaml_encoding_t\n\n\t/** The offset of the current position (in bytes). */\n\toffset int\n\n\t/** The mark of the current position. */\n\tmark YAML_mark_t\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Scanner stuff\n\t * @{\n\t */\n\n\t/** Have we started to scan the input stream? */\n\tstream_start_produced bool\n\n\t/** Have we reached the end of the input stream? */\n\tstream_end_produced bool\n\n\t/** The number of unclosed '[' and '{' indicators. */\n\tflow_level int\n\n\t/** The tokens queue. */\n\ttokens      []yaml_token_t\n\ttokens_head int\n\n\t/** The number of tokens fetched from the queue. */\n\ttokens_parsed int\n\n\t/* Does the tokens queue contain a token ready for dequeueing. */\n\ttoken_available bool\n\n\t/** The indentation levels stack. */\n\tindents []int\n\n\t/** The current indentation level. */\n\tindent int\n\n\t/** May a simple key occur at the current position? */\n\tsimple_key_allowed bool\n\n\t/** The stack of simple keys. */\n\tsimple_keys []yaml_simple_key_t\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Parser stuff\n\t * @{\n\t */\n\n\t/** The parser states stack. */\n\tstates []yaml_parser_state_t\n\n\t/** The current parser state. */\n\tstate yaml_parser_state_t\n\n\t/** The stack of marks. */\n\tmarks []YAML_mark_t\n\n\t/** The list of TAG directives. */\n\ttag_directives []yaml_tag_directive_t\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Dumper stuff\n\t * @{\n\t */\n\n\t/** The alias data. */\n\taliases []yaml_alias_data_t\n\n\t/** The currently parsed document. */\n\tdocument *yaml_document_t\n\n\t/**\n\t * @}\n\t */\n\n}\n\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 */\n\ntype yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error\n\n/** The emitter states. */\ntype yaml_emitter_state_t int\n\nconst (\n\t/** Expect STREAM-START. */\n\tyaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota\n\t/** Expect the first DOCUMENT-START or STREAM-END. */\n\tyaml_EMIT_FIRST_DOCUMENT_START_STATE\n\t/** Expect DOCUMENT-START or STREAM-END. */\n\tyaml_EMIT_DOCUMENT_START_STATE\n\t/** Expect the content of a document. */\n\tyaml_EMIT_DOCUMENT_CONTENT_STATE\n\t/** Expect DOCUMENT-END. */\n\tyaml_EMIT_DOCUMENT_END_STATE\n\t/** Expect the first item of a flow sequence. */\n\tyaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE\n\t/** Expect an item of a flow sequence. */\n\tyaml_EMIT_FLOW_SEQUENCE_ITEM_STATE\n\t/** Expect the first key of a flow mapping. */\n\tyaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE\n\t/** Expect a key of a flow mapping. */\n\tyaml_EMIT_FLOW_MAPPING_KEY_STATE\n\t/** Expect a value for a simple key of a flow mapping. */\n\tyaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE\n\t/** Expect a value of a flow mapping. */\n\tyaml_EMIT_FLOW_MAPPING_VALUE_STATE\n\t/** Expect the first item of a block sequence. */\n\tyaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE\n\t/** Expect an item of a block sequence. */\n\tyaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE\n\t/** Expect the first key of a block mapping. */\n\tyaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE\n\t/** Expect the key of a block mapping. */\n\tyaml_EMIT_BLOCK_MAPPING_KEY_STATE\n\t/** Expect a value for a simple key of a block mapping. */\n\tyaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE\n\t/** Expect a value of a block mapping. */\n\tyaml_EMIT_BLOCK_MAPPING_VALUE_STATE\n\t/** Expect nothing. */\n\tyaml_EMIT_END_STATE\n)\n\n/**\n * The emitter structure.\n *\n * All members are internal.  Manage the structure using the @c yaml_emitter_\n * family of functions.\n */\n\ntype yaml_emitter_t struct {\n\n\t/**\n\t * @name Error handling\n\t * @{\n\t */\n\n\t/** Error type. */\n\terror YAML_error_type_t\n\t/** Error description. */\n\tproblem string\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Writer stuff\n\t * @{\n\t */\n\n\t/** Write handler. */\n\twrite_handler yaml_write_handler_t\n\n\t/** Standard (string or file) output data. */\n\toutput_buffer *[]byte\n\toutput_writer io.Writer\n\n\t/** The working buffer. */\n\tbuffer     []byte\n\tbuffer_pos int\n\n\t/** The raw buffer. */\n\traw_buffer     []byte\n\traw_buffer_pos int\n\n\t/** The stream encoding. */\n\tencoding yaml_encoding_t\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Emitter stuff\n\t * @{\n\t */\n\n\t/** If the output is in the canonical style? */\n\tcanonical bool\n\t/** The number of indentation spaces. */\n\tbest_indent int\n\t/** The preferred width of the output lines. */\n\tbest_width int\n\t/** Allow unescaped non-ASCII characters? */\n\tunicode bool\n\t/** The preferred line break. */\n\tline_break yaml_break_t\n\n\t/** The stack of states. */\n\tstates []yaml_emitter_state_t\n\n\t/** The current emitter state. */\n\tstate yaml_emitter_state_t\n\n\t/** The event queue. */\n\tevents      []yaml_event_t\n\tevents_head int\n\n\t/** The stack of indentation levels. */\n\tindents []int\n\n\t/** The list of tag directives. */\n\ttag_directives []yaml_tag_directive_t\n\n\t/** The current indentation level. */\n\tindent int\n\n\t/** The current flow level. */\n\tflow_level int\n\n\t/** Is it the document root context? */\n\troot_context bool\n\t/** Is it a sequence context? */\n\tsequence_context bool\n\t/** Is it a mapping context? */\n\tmapping_context bool\n\t/** Is it a simple mapping key context? */\n\tsimple_key_context bool\n\n\t/** The current line. */\n\tline int\n\t/** The current column. */\n\tcolumn int\n\t/** If the last character was a whitespace? */\n\twhitespace bool\n\t/** If the last character was an indentation character (' ', '-', '?', ':')? */\n\tindention bool\n\t/** If an explicit document end is required? */\n\topen_ended bool\n\n\t/** Anchor analysis. */\n\tanchor_data struct {\n\t\t/** The anchor value. */\n\t\tanchor []byte\n\t\t/** Is it an alias? */\n\t\talias bool\n\t}\n\n\t/** Tag analysis. */\n\ttag_data struct {\n\t\t/** The tag handle. */\n\t\thandle []byte\n\t\t/** The tag suffix. */\n\t\tsuffix []byte\n\t}\n\n\t/** Scalar analysis. */\n\tscalar_data struct {\n\t\t/** The scalar value. */\n\t\tvalue []byte\n\t\t/** Does the scalar contain line breaks? */\n\t\tmultiline bool\n\t\t/** Can the scalar be expessed in the flow plain style? */\n\t\tflow_plain_allowed bool\n\t\t/** Can the scalar be expressed in the block plain style? */\n\t\tblock_plain_allowed bool\n\t\t/** Can the scalar be expressed in the single quoted style? */\n\t\tsingle_quoted_allowed bool\n\t\t/** Can the scalar be expressed in the literal or folded styles? */\n\t\tblock_allowed bool\n\t\t/** The output style. */\n\t\tstyle yaml_scalar_style_t\n\t}\n\n\t/**\n\t * @}\n\t */\n\n\t/**\n\t * @name Dumper stuff\n\t * @{\n\t */\n\n\t/** If the stream was already opened? */\n\topened bool\n\t/** If the stream was already closed? */\n\tclosed bool\n\n\t/** The information associated with the document nodes. */\n\tanchors *struct {\n\t\t/** The number of references. */\n\t\treferences int\n\t\t/** The anchor id. */\n\t\tanchor int\n\t\t/** If the node has been emitted? */\n\t\tserialized bool\n\t}\n\n\t/** The last assigned anchor id. */\n\tlast_anchor_id int\n\n\t/** The currently emitted document. */\n\tdocument *yaml_document_t\n\n\t/**\n\t * @}\n\t */\n\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/.gitignore",
    "content": "*.coverprofile\nnode_modules/\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/.travis.yml",
    "content": "language: go\n\nsudo: false\n\ncache:\n  directories:\n  - node_modules\n\ngo:\n- 1.2.2\n- 1.3.3\n- 1.4\n- 1.5.4\n- 1.6.2\n- master\n\nmatrix:\n  allow_failures:\n  - go: master\n  include:\n  - go: 1.6.2\n    os: osx\n  - go: 1.1.2\n    install: go get -v .\n    before_script: echo skipping gfmxr on $TRAVIS_GO_VERSION\n    script:\n    - ./runtests vet\n    - ./runtests test\n\nbefore_script:\n- go get github.com/urfave/gfmxr/...\n- if [ ! -f node_modules/.bin/markdown-toc ] ; then\n    npm install markdown-toc ;\n  fi\n\nscript:\n- ./runtests vet\n- ./runtests test\n- ./runtests gfmxr\n- ./runtests toc\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/CHANGELOG.md",
    "content": "# Change Log\n\n**ATTN**: This project uses [semantic versioning](http://semver.org/).\n\n## [Unreleased]\n\n## [1.18.0] - 2016-06-27\n### Added\n- `./runtests` test runner with coverage tracking by default\n- testing on OS X\n- testing on Windows\n- `UintFlag`, `Uint64Flag`, and `Int64Flag` types and supporting code\n\n### Changed\n- Use spaces for alignment in help/usage output instead of tabs, making the\n  output alignment consistent regardless of tab width\n\n### Fixed\n- Printing of command aliases in help text\n- Printing of visible flags for both struct and struct pointer flags\n- Display the `help` subcommand when using `CommandCategories`\n- No longer swallows `panic`s that occur within the `Action`s themselves when\n  detecting the signature of the `Action` field\n\n## [1.17.0] - 2016-05-09\n### Added\n- Pluggable flag-level help text rendering via `cli.DefaultFlagStringFunc`\n- `context.GlobalBoolT` was added as an analogue to `context.GlobalBool`\n- Support for hiding commands by setting `Hidden: true` -- this will hide the\n  commands in help output\n\n### Changed\n- `Float64Flag`, `IntFlag`, and `DurationFlag` default values are no longer\n  quoted in help text output.\n- All flag types now include `(default: {value})` strings following usage when a\n  default value can be (reasonably) detected.\n- `IntSliceFlag` and `StringSliceFlag` usage strings are now more consistent\n  with non-slice flag types\n- Apps now exit with a code of 3 if an unknown subcommand is specified\n  (previously they printed \"No help topic for...\", but still exited 0. This\n  makes it easier to script around apps built using `cli` since they can trust\n  that a 0 exit code indicated a successful execution.\n- cleanups based on [Go Report Card\n  feedback](https://goreportcard.com/report/github.com/urfave/cli)\n\n## [1.16.0] - 2016-05-02\n### Added\n- `Hidden` field on all flag struct types to omit from generated help text\n\n### Changed\n- `BashCompletionFlag` (`--enable-bash-completion`) is now omitted from\ngenerated help text via the `Hidden` field\n\n### Fixed\n- handling of error values in `HandleAction` and `HandleExitCoder`\n\n## [1.15.0] - 2016-04-30\n### Added\n- This file!\n- Support for placeholders in flag usage strings\n- `App.Metadata` map for arbitrary data/state management\n- `Set` and `GlobalSet` methods on `*cli.Context` for altering values after\nparsing.\n- Support for nested lookup of dot-delimited keys in structures loaded from\nYAML.\n\n### Changed\n- The `App.Action` and `Command.Action` now prefer a return signature of\n`func(*cli.Context) error`, as defined by `cli.ActionFunc`.  If a non-nil\n`error` is returned, there may be two outcomes:\n    - If the error fulfills `cli.ExitCoder`, then `os.Exit` will be called\n    automatically\n    - Else the error is bubbled up and returned from `App.Run`\n- Specifying an `Action` with the legacy return signature of\n`func(*cli.Context)` will produce a deprecation message to stderr\n- Specifying an `Action` that is not a `func` type will produce a non-zero exit\nfrom `App.Run`\n- Specifying an `Action` func that has an invalid (input) signature will\nproduce a non-zero exit from `App.Run`\n\n### Deprecated\n- <a name=\"deprecated-cli-app-runandexitonerror\"></a>\n`cli.App.RunAndExitOnError`, which should now be done by returning an error\nthat fulfills `cli.ExitCoder` to `cli.App.Run`.\n- <a name=\"deprecated-cli-app-action-signature\"></a> the legacy signature for\n`cli.App.Action` of `func(*cli.Context)`, which should now have a return\nsignature of `func(*cli.Context) error`, as defined by `cli.ActionFunc`.\n\n### Fixed\n- Added missing `*cli.Context.GlobalFloat64` method\n\n## [1.14.0] - 2016-04-03 (backfilled 2016-04-25)\n### Added\n- Codebeat badge\n- Support for categorization via `CategorizedHelp` and `Categories` on app.\n\n### Changed\n- Use `filepath.Base` instead of `path.Base` in `Name` and `HelpName`.\n\n### Fixed\n- Ensure version is not shown in help text when `HideVersion` set.\n\n## [1.13.0] - 2016-03-06 (backfilled 2016-04-25)\n### Added\n- YAML file input support.\n- `NArg` method on context.\n\n## [1.12.0] - 2016-02-17 (backfilled 2016-04-25)\n### Added\n- Custom usage error handling.\n- Custom text support in `USAGE` section of help output.\n- Improved help messages for empty strings.\n- AppVeyor CI configuration.\n\n### Changed\n- Removed `panic` from default help printer func.\n- De-duping and optimizations.\n\n### Fixed\n- Correctly handle `Before`/`After` at command level when no subcommands.\n- Case of literal `-` argument causing flag reordering.\n- Environment variable hints on Windows.\n- Docs updates.\n\n## [1.11.1] - 2015-12-21 (backfilled 2016-04-25)\n### Changed\n- Use `path.Base` in `Name` and `HelpName`\n- Export `GetName` on flag types.\n\n### Fixed\n- Flag parsing when skipping is enabled.\n- Test output cleanup.\n- Move completion check to account for empty input case.\n\n## [1.11.0] - 2015-11-15 (backfilled 2016-04-25)\n### Added\n- Destination scan support for flags.\n- Testing against `tip` in Travis CI config.\n\n### Changed\n- Go version in Travis CI config.\n\n### Fixed\n- Removed redundant tests.\n- Use correct example naming in tests.\n\n## [1.10.2] - 2015-10-29 (backfilled 2016-04-25)\n### Fixed\n- Remove unused var in bash completion.\n\n## [1.10.1] - 2015-10-21 (backfilled 2016-04-25)\n### Added\n- Coverage and reference logos in README.\n\n### Fixed\n- Use specified values in help and version parsing.\n- Only display app version and help message once.\n\n## [1.10.0] - 2015-10-06 (backfilled 2016-04-25)\n### Added\n- More tests for existing functionality.\n- `ArgsUsage` at app and command level for help text flexibility.\n\n### Fixed\n- Honor `HideHelp` and `HideVersion` in `App.Run`.\n- Remove juvenile word from README.\n\n## [1.9.0] - 2015-09-08 (backfilled 2016-04-25)\n### Added\n- `FullName` on command with accompanying help output update.\n- Set default `$PROG` in bash completion.\n\n### Changed\n- Docs formatting.\n\n### Fixed\n- Removed self-referential imports in tests.\n\n## [1.8.0] - 2015-06-30 (backfilled 2016-04-25)\n### Added\n- Support for `Copyright` at app level.\n- `Parent` func at context level to walk up context lineage.\n\n### Fixed\n- Global flag processing at top level.\n\n## [1.7.1] - 2015-06-11 (backfilled 2016-04-25)\n### Added\n- Aggregate errors from `Before`/`After` funcs.\n- Doc comments on flag structs.\n- Include non-global flags when checking version and help.\n- Travis CI config updates.\n\n### Fixed\n- Ensure slice type flags have non-nil values.\n- Collect global flags from the full command hierarchy.\n- Docs prose.\n\n## [1.7.0] - 2015-05-03 (backfilled 2016-04-25)\n### Changed\n- `HelpPrinter` signature includes output writer.\n\n### Fixed\n- Specify go 1.1+ in docs.\n- Set `Writer` when running command as app.\n\n## [1.6.0] - 2015-03-23 (backfilled 2016-04-25)\n### Added\n- Multiple author support.\n- `NumFlags` at context level.\n- `Aliases` at command level.\n\n### Deprecated\n- `ShortName` at command level.\n\n### Fixed\n- Subcommand help output.\n- Backward compatible support for deprecated `Author` and `Email` fields.\n- Docs regarding `Names`/`Aliases`.\n\n## [1.5.0] - 2015-02-20 (backfilled 2016-04-25)\n### Added\n- `After` hook func support at app and command level.\n\n### Fixed\n- Use parsed context when running command as subcommand.\n- Docs prose.\n\n## [1.4.1] - 2015-01-09 (backfilled 2016-04-25)\n### Added\n- Support for hiding `-h / --help` flags, but not `help` subcommand.\n- Stop flag parsing after `--`.\n\n### Fixed\n- Help text for generic flags to specify single value.\n- Use double quotes in output for defaults.\n- Use `ParseInt` instead of `ParseUint` for int environment var values.\n- Use `0` as base when parsing int environment var values.\n\n## [1.4.0] - 2014-12-12 (backfilled 2016-04-25)\n### Added\n- Support for environment variable lookup \"cascade\".\n- Support for `Stdout` on app for output redirection.\n\n### Fixed\n- Print command help instead of app help in `ShowCommandHelp`.\n\n## [1.3.1] - 2014-11-13 (backfilled 2016-04-25)\n### Added\n- Docs and example code updates.\n\n### Changed\n- Default `-v / --version` flag made optional.\n\n## [1.3.0] - 2014-08-10 (backfilled 2016-04-25)\n### Added\n- `FlagNames` at context level.\n- Exposed `VersionPrinter` var for more control over version output.\n- Zsh completion hook.\n- `AUTHOR` section in default app help template.\n- Contribution guidelines.\n- `DurationFlag` type.\n\n## [1.2.0] - 2014-08-02\n### Added\n- Support for environment variable defaults on flags plus tests.\n\n## [1.1.0] - 2014-07-15\n### Added\n- Bash completion.\n- Optional hiding of built-in help command.\n- Optional skipping of flag parsing at command level.\n- `Author`, `Email`, and `Compiled` metadata on app.\n- `Before` hook func support at app and command level.\n- `CommandNotFound` func support at app level.\n- Command reference available on context.\n- `GenericFlag` type.\n- `Float64Flag` type.\n- `BoolTFlag` type.\n- `IsSet` flag helper on context.\n- More flag lookup funcs at context level.\n- More tests &amp; docs.\n\n### Changed\n- Help template updates to account for presence/absence of flags.\n- Separated subcommand help template.\n- Exposed `HelpPrinter` var for more control over help output.\n\n## [1.0.0] - 2013-11-01\n### Added\n- `help` flag in default app flag set and each command flag set.\n- Custom handling of argument parsing errors.\n- Command lookup by name at app level.\n- `StringSliceFlag` type and supporting `StringSlice` type.\n- `IntSliceFlag` type and supporting `IntSlice` type.\n- Slice type flag lookups by name at context level.\n- Export of app and command help functions.\n- More tests &amp; docs.\n\n## 0.1.0 - 2013-07-22\n### Added\n- Initial implementation.\n\n[Unreleased]: https://github.com/urfave/cli/compare/v1.18.0...HEAD\n[1.18.0]: https://github.com/urfave/cli/compare/v1.17.0...v1.18.0\n[1.17.0]: https://github.com/urfave/cli/compare/v1.16.0...v1.17.0\n[1.16.0]: https://github.com/urfave/cli/compare/v1.15.0...v1.16.0\n[1.15.0]: https://github.com/urfave/cli/compare/v1.14.0...v1.15.0\n[1.14.0]: https://github.com/urfave/cli/compare/v1.13.0...v1.14.0\n[1.13.0]: https://github.com/urfave/cli/compare/v1.12.0...v1.13.0\n[1.12.0]: https://github.com/urfave/cli/compare/v1.11.1...v1.12.0\n[1.11.1]: https://github.com/urfave/cli/compare/v1.11.0...v1.11.1\n[1.11.0]: https://github.com/urfave/cli/compare/v1.10.2...v1.11.0\n[1.10.2]: https://github.com/urfave/cli/compare/v1.10.1...v1.10.2\n[1.10.1]: https://github.com/urfave/cli/compare/v1.10.0...v1.10.1\n[1.10.0]: https://github.com/urfave/cli/compare/v1.9.0...v1.10.0\n[1.9.0]: https://github.com/urfave/cli/compare/v1.8.0...v1.9.0\n[1.8.0]: https://github.com/urfave/cli/compare/v1.7.1...v1.8.0\n[1.7.1]: https://github.com/urfave/cli/compare/v1.7.0...v1.7.1\n[1.7.0]: https://github.com/urfave/cli/compare/v1.6.0...v1.7.0\n[1.6.0]: https://github.com/urfave/cli/compare/v1.5.0...v1.6.0\n[1.5.0]: https://github.com/urfave/cli/compare/v1.4.1...v1.5.0\n[1.4.1]: https://github.com/urfave/cli/compare/v1.4.0...v1.4.1\n[1.4.0]: https://github.com/urfave/cli/compare/v1.3.1...v1.4.0\n[1.3.1]: https://github.com/urfave/cli/compare/v1.3.0...v1.3.1\n[1.3.0]: https://github.com/urfave/cli/compare/v1.2.0...v1.3.0\n[1.2.0]: https://github.com/urfave/cli/compare/v1.1.0...v1.2.0\n[1.1.0]: https://github.com/urfave/cli/compare/v1.0.0...v1.1.0\n[1.0.0]: https://github.com/urfave/cli/compare/v0.1.0...v1.0.0\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Jeremy Saenz & 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/codegangsta/cli/README.md",
    "content": "cli\n===\n\n[![Build Status](https://travis-ci.org/urfave/cli.svg?branch=master)](https://travis-ci.org/urfave/cli)\n[![Windows Build Status](https://ci.appveyor.com/api/projects/status/rtgk5xufi932pb2v?svg=true)](https://ci.appveyor.com/project/urfave/cli)\n[![GoDoc](https://godoc.org/github.com/urfave/cli?status.svg)](https://godoc.org/github.com/urfave/cli)\n[![codebeat](https://codebeat.co/badges/0a8f30aa-f975-404b-b878-5fab3ae1cc5f)](https://codebeat.co/projects/github-com-urfave-cli)\n[![Go Report Card](https://goreportcard.com/badge/urfave/cli)](https://goreportcard.com/report/urfave/cli)\n[![top level coverage](https://gocover.io/_badge/github.com/urfave/cli?0 \"top level coverage\")](http://gocover.io/github.com/urfave/cli) /\n[![altsrc coverage](https://gocover.io/_badge/github.com/urfave/cli/altsrc?0 \"altsrc coverage\")](http://gocover.io/github.com/urfave/cli/altsrc)\n\n**Notice:** This is the library formerly known as\n`github.com/codegangsta/cli` -- Github will automatically redirect requests\nto this repository, but we recommend updating your references for clarity.\n\ncli is a simple, fast, and fun package for building command line apps in Go. The\ngoal is to enable developers to write fast and distributable command line\napplications in an expressive way.\n\n<!-- toc -->\n\n- [Overview](#overview)\n- [Installation](#installation)\n  * [Supported platforms](#supported-platforms)\n  * [Using the `v2` branch](#using-the-v2-branch)\n  * [Pinning to the `v1` branch](#pinning-to-the-v1-branch)\n- [Getting Started](#getting-started)\n- [Examples](#examples)\n  * [Arguments](#arguments)\n  * [Flags](#flags)\n    + [Placeholder Values](#placeholder-values)\n    + [Alternate Names](#alternate-names)\n    + [Values from the Environment](#values-from-the-environment)\n    + [Values from alternate input sources (YAML and others)](#values-from-alternate-input-sources-yaml-and-others)\n  * [Subcommands](#subcommands)\n  * [Subcommands categories](#subcommands-categories)\n  * [Exit code](#exit-code)\n  * [Bash Completion](#bash-completion)\n    + [Enabling](#enabling)\n    + [Distribution](#distribution)\n    + [Customization](#customization)\n  * [Generated Help Text](#generated-help-text)\n    + [Customization](#customization-1)\n  * [Version Flag](#version-flag)\n    + [Customization](#customization-2)\n    + [Full API Example](#full-api-example)\n- [Contribution Guidelines](#contribution-guidelines)\n\n<!-- tocstop -->\n\n## Overview\n\nCommand line apps are usually so tiny that there is absolutely no reason why\nyour code should *not* be self-documenting. Things like generating help text and\nparsing command flags/options should not hinder productivity when writing a\ncommand line app.\n\n**This is where cli comes into play.** cli makes command line programming fun,\norganized, and expressive!\n\n## Installation\n\nMake sure you have a working Go environment.  Go version 1.1+ is required for\ncore cli, whereas use of the [`./altsrc`](./altsrc) input extensions requires Go\nversion 1.2+. [See the install\ninstructions](http://golang.org/doc/install.html).\n\nTo install cli, simply run:\n```\n$ go get github.com/urfave/cli\n```\n\nMake sure your `PATH` includes to the `$GOPATH/bin` directory so your commands\ncan be easily used:\n```\nexport PATH=$PATH:$GOPATH/bin\n```\n\n### Supported platforms\n\ncli is tested against multiple versions of Go on Linux, and against the latest\nreleased version of Go on OS X and Windows.  For full details, see\n[`./.travis.yml`](./.travis.yml) and [`./appveyor.yml`](./appveyor.yml).\n\n### Using the `v2` branch\n\n**Warning**: The `v2` branch is currently unreleased and considered unstable.\n\nThere is currently a long-lived branch named `v2` that is intended to land as\nthe new `master` branch once development there has settled down.  The current\n`master` branch (mirrored as `v1`) is being manually merged into `v2` on\nan irregular human-based schedule, but generally if one wants to \"upgrade\" to\n`v2` *now* and accept the volatility (read: \"awesomeness\") that comes along with\nthat, please use whatever version pinning of your preference, such as via\n`gopkg.in`:\n\n```\n$ go get gopkg.in/urfave/cli.v2\n```\n\n``` go\n...\nimport (\n  \"gopkg.in/urfave/cli.v2\" // imports as package \"cli\"\n)\n...\n```\n\n### Pinning to the `v1` branch\n\nSimilarly to the section above describing use of the `v2` branch, if one wants\nto avoid any unexpected compatibility pains once `v2` becomes `master`, then\npinning to the `v1` branch is an acceptable option, e.g.:\n\n```\n$ go get gopkg.in/urfave/cli.v1\n```\n\n``` go\n...\nimport (\n  \"gopkg.in/urfave/cli.v1\" // imports as package \"cli\"\n)\n...\n```\n\n## Getting Started\n\nOne of the philosophies behind cli is that an API should be playful and full of\ndiscovery. So a cli app can be as little as one line of code in `main()`.\n\n<!-- {\n  \"args\": [\"&#45;&#45;help\"],\n  \"output\": \"A new cli application\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  cli.NewApp().Run(os.Args)\n}\n```\n\nThis app will run and show help text, but is not very useful. Let's give an\naction to execute and some help documentation:\n\n<!-- {\n  \"output\": \"boom! I say!\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n  app.Name = \"boom\"\n  app.Usage = \"make an explosive entrance\"\n  app.Action = func(c *cli.Context) error {\n    fmt.Println(\"boom! I say!\")\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\nRunning this already gives you a ton of functionality, plus support for things\nlike subcommands and flags, which are covered below.\n\n## Examples\n\nBeing a programmer can be a lonely job. Thankfully by the power of automation\nthat is not the case! Let's create a greeter app to fend off our demons of\nloneliness!\n\nStart by creating a directory named `greet`, and within it, add a file,\n`greet.go` with the following code in it:\n\n<!-- {\n  \"output\": \"Hello friend!\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n  app.Name = \"greet\"\n  app.Usage = \"fight the loneliness!\"\n  app.Action = func(c *cli.Context) error {\n    fmt.Println(\"Hello friend!\")\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\nInstall our command to the `$GOPATH/bin` directory:\n\n```\n$ go install\n```\n\nFinally run our new command:\n\n```\n$ greet\nHello friend!\n```\n\ncli also generates neat help text:\n\n```\n$ greet help\nNAME:\n    greet - fight the loneliness!\n\nUSAGE:\n    greet [global options] command [command options] [arguments...]\n\nVERSION:\n    0.0.0\n\nCOMMANDS:\n    help, h  Shows a list of commands or help for one command\n\nGLOBAL OPTIONS\n    --version Shows version information\n```\n\n### Arguments\n\nYou can lookup arguments by calling the `Args` function on `cli.Context`, e.g.:\n\n<!-- {\n  \"output\": \"Hello \\\"\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Action = func(c *cli.Context) error {\n    fmt.Printf(\"Hello %q\", c.Args().Get(0))\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\n### Flags\n\nSetting and querying flags is simple.\n\n<!-- {\n  \"output\": \"Hello Nefertiti\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag {\n    cli.StringFlag{\n      Name: \"lang\",\n      Value: \"english\",\n      Usage: \"language for the greeting\",\n    },\n  }\n\n  app.Action = func(c *cli.Context) error {\n    name := \"Nefertiti\"\n    if c.NArg() > 0 {\n      name = c.Args().Get(0)\n    }\n    if c.String(\"lang\") == \"spanish\" {\n      fmt.Println(\"Hola\", name)\n    } else {\n      fmt.Println(\"Hello\", name)\n    }\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\nYou can also set a destination variable for a flag, to which the content will be\nscanned.\n\n<!-- {\n  \"output\": \"Hello someone\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n  \"fmt\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  var language string\n\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag {\n    cli.StringFlag{\n      Name:        \"lang\",\n      Value:       \"english\",\n      Usage:       \"language for the greeting\",\n      Destination: &language,\n    },\n  }\n\n  app.Action = func(c *cli.Context) error {\n    name := \"someone\"\n    if c.NArg() > 0 {\n      name = c.Args()[0]\n    }\n    if language == \"spanish\" {\n      fmt.Println(\"Hola\", name)\n    } else {\n      fmt.Println(\"Hello\", name)\n    }\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\nSee full list of flags at http://godoc.org/github.com/urfave/cli\n\n#### Placeholder Values\n\nSometimes it's useful to specify a flag's value within the usage string itself.\nSuch placeholders are indicated with back quotes.\n\nFor example this:\n\n<!-- {\n  \"args\": [\"&#45;&#45;help\"],\n  \"output\": \"&#45;&#45;config FILE, &#45;c FILE\"\n} -->\n```go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag{\n    cli.StringFlag{\n      Name:  \"config, c\",\n      Usage: \"Load configuration from `FILE`\",\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\nWill result in help output like:\n\n```\n--config FILE, -c FILE   Load configuration from FILE\n```\n\nNote that only the first placeholder is used. Subsequent back-quoted words will\nbe left as-is.\n\n#### Alternate Names\n\nYou can set alternate (or short) names for flags by providing a comma-delimited\nlist for the `Name`. e.g.\n\n<!-- {\n  \"args\": [\"&#45;&#45;help\"],\n  \"output\": \"&#45;&#45;lang value, &#45;l value.*language for the greeting.*default: \\\"english\\\"\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag {\n    cli.StringFlag{\n      Name: \"lang, l\",\n      Value: \"english\",\n      Usage: \"language for the greeting\",\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\nThat flag can then be set with `--lang spanish` or `-l spanish`. Note that\ngiving two different forms of the same flag in the same command invocation is an\nerror.\n\n#### Values from the Environment\n\nYou can also have the default value set from the environment via `EnvVar`.  e.g.\n\n<!-- {\n  \"args\": [\"&#45;&#45;help\"],\n  \"output\": \"language for the greeting.*APP_LANG\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag {\n    cli.StringFlag{\n      Name: \"lang, l\",\n      Value: \"english\",\n      Usage: \"language for the greeting\",\n      EnvVar: \"APP_LANG\",\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\nThe `EnvVar` may also be given as a comma-delimited \"cascade\", where the first\nenvironment variable that resolves is used as the default.\n\n<!-- {\n  \"args\": [\"&#45;&#45;help\"],\n  \"output\": \"language for the greeting.*LEGACY_COMPAT_LANG.*APP_LANG.*LANG\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Flags = []cli.Flag {\n    cli.StringFlag{\n      Name: \"lang, l\",\n      Value: \"english\",\n      Usage: \"language for the greeting\",\n      EnvVar: \"LEGACY_COMPAT_LANG,APP_LANG,LANG\",\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\n#### Values from alternate input sources (YAML and others)\n\nThere is a separate package altsrc that adds support for getting flag values\nfrom other input sources like YAML.\n\nIn order to get values for a flag from an alternate input source the following\ncode would be added to wrap an existing cli.Flag like below:\n\n``` go\n  altsrc.NewIntFlag(cli.IntFlag{Name: \"test\"})\n```\n\nInitialization must also occur for these flags. Below is an example initializing\ngetting data from a yaml file below.\n\n``` go\n  command.Before = altsrc.InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc(\"load\"))\n```\n\nThe code above will use the \"load\" string as a flag name to get the file name of\na yaml file from the cli.Context.  It will then use that file name to initialize\nthe yaml input source for any flags that are defined on that command.  As a note\nthe \"load\" flag used would also have to be defined on the command flags in order\nfor this code snipped to work.\n\nCurrently only YAML files are supported but developers can add support for other\ninput sources by implementing the altsrc.InputSourceContext for their given\nsources.\n\nHere is a more complete sample of a command using YAML support:\n\n<!-- {\n  \"args\": [\"test-cmd\", \"&#45;&#45;help\"],\n  \"output\": \"&#45&#45;test value.*default: 0\"\n} -->\n``` go\npackage notmain\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n  \"github.com/urfave/cli/altsrc\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  flags := []cli.Flag{\n    altsrc.NewIntFlag(cli.IntFlag{Name: \"test\"}),\n    cli.StringFlag{Name: \"load\"},\n  }\n\n  app.Action = func(c *cli.Context) error {\n    fmt.Println(\"yaml ist rad\")\n    return nil\n  }\n\n  app.Before = altsrc.InitInputSourceWithContext(flags, altsrc.NewYamlSourceFromFlagFunc(\"load\"))\n  app.Flags = flags\n\n  app.Run(os.Args)\n}\n```\n\n### Subcommands\n\nSubcommands can be defined for a more git-like command line app.\n\n<!-- {\n  \"args\": [\"template\", \"add\"],\n  \"output\": \"new task template: .+\"\n} -->\n```go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Commands = []cli.Command{\n    {\n      Name:    \"add\",\n      Aliases: []string{\"a\"},\n      Usage:   \"add a task to the list\",\n      Action:  func(c *cli.Context) error {\n        fmt.Println(\"added task: \", c.Args().First())\n        return nil\n      },\n    },\n    {\n      Name:    \"complete\",\n      Aliases: []string{\"c\"},\n      Usage:   \"complete a task on the list\",\n      Action:  func(c *cli.Context) error {\n        fmt.Println(\"completed task: \", c.Args().First())\n        return nil\n      },\n    },\n    {\n      Name:        \"template\",\n      Aliases:     []string{\"t\"},\n      Usage:       \"options for task templates\",\n      Subcommands: []cli.Command{\n        {\n          Name:  \"add\",\n          Usage: \"add a new template\",\n          Action: func(c *cli.Context) error {\n            fmt.Println(\"new task template: \", c.Args().First())\n            return nil\n          },\n        },\n        {\n          Name:  \"remove\",\n          Usage: \"remove an existing template\",\n          Action: func(c *cli.Context) error {\n            fmt.Println(\"removed task template: \", c.Args().First())\n            return nil\n          },\n        },\n      },\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\n### Subcommands categories\n\nFor additional organization in apps that have many subcommands, you can\nassociate a category for each command to group them together in the help\noutput.\n\nE.g.\n\n```go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n\n  app.Commands = []cli.Command{\n    {\n      Name: \"noop\",\n    },\n    {\n      Name:     \"add\",\n      Category: \"template\",\n    },\n    {\n      Name:     \"remove\",\n      Category: \"template\",\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\nWill include:\n\n```\nCOMMANDS:\n    noop\n\n  Template actions:\n    add\n    remove\n```\n\n### Exit code\n\nCalling `App.Run` will not automatically call `os.Exit`, which means that by\ndefault the exit code will \"fall through\" to being `0`.  An explicit exit code\nmay be set by returning a non-nil error that fulfills `cli.ExitCoder`, *or* a\n`cli.MultiError` that includes an error that fulfills `cli.ExitCoder`, e.g.:\n\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  app := cli.NewApp()\n  app.Flags = []cli.Flag{\n    cli.BoolTFlag{\n      Name:  \"ginger-crouton\",\n      Usage: \"is it in the soup?\",\n    },\n  }\n  app.Action = func(ctx *cli.Context) error {\n    if !ctx.Bool(\"ginger-crouton\") {\n      return cli.NewExitError(\"it is not in the soup\", 86)\n    }\n    return nil\n  }\n\n  app.Run(os.Args)\n}\n```\n\n### Bash Completion\n\nYou can enable completion commands by setting the `EnableBashCompletion`\nflag on the `App` object.  By default, this setting will only auto-complete to\nshow an app's subcommands, but you can write your own completion methods for\nthe App or its subcommands.\n\n<!-- {\n  \"args\": [\"complete\", \"&#45;&#45;generate&#45;bash&#45;completion\"],\n  \"output\": \"laundry\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  tasks := []string{\"cook\", \"clean\", \"laundry\", \"eat\", \"sleep\", \"code\"}\n\n  app := cli.NewApp()\n  app.EnableBashCompletion = true\n  app.Commands = []cli.Command{\n    {\n      Name:  \"complete\",\n      Aliases: []string{\"c\"},\n      Usage: \"complete a task on the list\",\n      Action: func(c *cli.Context) error {\n         fmt.Println(\"completed task: \", c.Args().First())\n         return nil\n      },\n      BashComplete: func(c *cli.Context) {\n        // This will complete if no args are passed\n        if c.NArg() > 0 {\n          return\n        }\n        for _, t := range tasks {\n          fmt.Println(t)\n        }\n      },\n    },\n  }\n\n  app.Run(os.Args)\n}\n```\n\n#### Enabling\n\nSource the `autocomplete/bash_autocomplete` file in your `.bashrc` file while\nsetting the `PROG` variable to the name of your program:\n\n`PROG=myprogram source /.../cli/autocomplete/bash_autocomplete`\n\n#### Distribution\n\nCopy `autocomplete/bash_autocomplete` into `/etc/bash_completion.d/` and rename\nit to the name of the program you wish to add autocomplete support for (or\nautomatically install it there if you are distributing a package). Don't forget\nto source the file to make it active in the current shell.\n\n```\nsudo cp src/bash_autocomplete /etc/bash_completion.d/<myprogram>\nsource /etc/bash_completion.d/<myprogram>\n```\n\nAlternatively, you can just document that users should source the generic\n`autocomplete/bash_autocomplete` in their bash configuration with `$PROG` set\nto the name of their program (as above).\n\n#### Customization\n\nThe default bash completion flag (`--generate-bash-completion`) is defined as\n`cli.BashCompletionFlag`, and may be redefined if desired, e.g.:\n\n<!-- {\n  \"args\": [\"&#45;&#45;compgen\"],\n  \"output\": \"wat\\nhelp\\nh\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  cli.BashCompletionFlag = cli.BoolFlag{\n    Name:   \"compgen\",\n    Hidden: true,\n  }\n\n  app := cli.NewApp()\n  app.EnableBashCompletion = true\n  app.Commands = []cli.Command{\n    {\n      Name: \"wat\",\n    },\n  }\n  app.Run(os.Args)\n}\n```\n\n### Generated Help Text\n\nThe default help flag (`-h/--help`) is defined as `cli.HelpFlag` and is checked \nby the cli internals in order to print generated help text for the app, command,\nor subcommand, and break execution.\n\n#### Customization\n\nAll of the help text generation may be customized, and at multiple levels.  The\ntemplates are exposed as variables `AppHelpTemplate`, `CommandHelpTemplate`, and\n`SubcommandHelpTemplate` which may be reassigned or augmented, and full override\nis possible by assigning a compatible func to the `cli.HelpPrinter` variable,\ne.g.:\n\n<!-- {\n  \"output\": \"Ha HA.  I pwnd the help!!1\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"io\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  // EXAMPLE: Append to an existing template\n  cli.AppHelpTemplate = fmt.Sprintf(`%s\n\nWEBSITE: http://awesometown.example.com\n\nSUPPORT: support@awesometown.example.com\n\n`, cli.AppHelpTemplate)\n\n  // EXAMPLE: Override a template\n  cli.AppHelpTemplate = `NAME:\n   {{.Name}} - {{.Usage}}\nUSAGE:\n   {{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command\n[command options]{{end}} {{if\n.ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}\n   {{if len .Authors}}\nAUTHOR(S):\n   {{range .Authors}}{{ . }}{{end}}\n   {{end}}{{if .Commands}}\nCOMMANDS:\n{{range .Commands}}{{if not .HideHelp}}   {{join .Names \", \"}}{{ \"\\t\"\n}}{{.Usage}}{{ \"\\n\" }}{{end}}{{end}}{{end}}{{if .VisibleFlags}}\nGLOBAL OPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}{{if .Copyright }}\nCOPYRIGHT:\n   {{.Copyright}}\n   {{end}}{{if .Version}}\nVERSION:\n   {{.Version}}\n   {{end}}\n`\n\n  // EXAMPLE: Replace the `HelpPrinter` func\n  cli.HelpPrinter = func(w io.Writer, templ string, data interface{}) {\n    fmt.Println(\"Ha HA.  I pwnd the help!!1\")\n  }\n\n  cli.NewApp().Run(os.Args)\n}\n```\n\nThe default flag may be customized to something other than `-h/--help` by\nsetting `cli.HelpFlag`, e.g.:\n\n<!-- {\n  \"args\": [\"&#45;&#45halp\"],\n  \"output\": \"haaaaalp.*HALP\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  cli.HelpFlag = cli.BoolFlag{\n    Name: \"halp, haaaaalp\",\n    Usage: \"HALP\",\n    EnvVar: \"SHOW_HALP,HALPPLZ\",\n  }\n\n  cli.NewApp().Run(os.Args)\n}\n```\n\n### Version Flag\n\nThe default version flag (`-v/--version`) is defined as `cli.VersionFlag`, which\nis checked by the cli internals in order to print the `App.Version` via\n`cli.VersionPrinter` and break execution.\n\n#### Customization\n\nThe default flag may be cusomized to something other than `-v/--version` by\nsetting `cli.VersionFlag`, e.g.:\n\n<!-- {\n  \"args\": [\"&#45;&#45print-version\"],\n  \"output\": \"partay version v19\\\\.99\\\\.0\"\n} -->\n``` go\npackage main\n\nimport (\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc main() {\n  cli.VersionFlag = cli.BoolFlag{\n    Name: \"print-version, V\",\n    Usage: \"print only the version\",\n  }\n\n  app := cli.NewApp()\n  app.Name = \"partay\"\n  app.Version = \"v19.99.0\"\n  app.Run(os.Args)\n}\n```\n\nAlternatively, the version printer at `cli.VersionPrinter` may be overridden, e.g.:\n\n<!-- {\n  \"args\": [\"&#45;&#45version\"],\n  \"output\": \"version=v19\\\\.99\\\\.0 revision=fafafaf\"\n} -->\n``` go\npackage main\n\nimport (\n  \"fmt\"\n  \"os\"\n\n  \"github.com/urfave/cli\"\n)\n\nvar (\n  Revision = \"fafafaf\"\n)\n\nfunc main() {\n  cli.VersionPrinter = func(c *cli.Context) {\n    fmt.Printf(\"version=%s revision=%s\\n\", c.App.Version, Revision)\n  }\n\n  app := cli.NewApp()\n  app.Name = \"partay\"\n  app.Version = \"v19.99.0\"\n  app.Run(os.Args)\n}\n```\n\n#### Full API Example\n\n**Notice**: This is a contrived (functioning) example meant strictly for API\ndemonstration purposes.  Use of one's imagination is encouraged.\n\n<!-- {\n  \"output\": \"made it!\\nPhew!\"\n} -->\n``` go\npackage main\n\nimport (\n  \"errors\"\n  \"flag\"\n  \"fmt\"\n  \"io\"\n  \"io/ioutil\"\n  \"os\"\n  \"time\"\n\n  \"github.com/urfave/cli\"\n)\n\nfunc init() {\n  cli.AppHelpTemplate += \"\\nCUSTOMIZED: you bet ur muffins\\n\"\n  cli.CommandHelpTemplate += \"\\nYMMV\\n\"\n  cli.SubcommandHelpTemplate += \"\\nor something\\n\"\n\n  cli.HelpFlag = cli.BoolFlag{Name: \"halp\"}\n  cli.BashCompletionFlag = cli.BoolFlag{Name: \"compgen\", Hidden: true}\n  cli.VersionFlag = cli.BoolFlag{Name: \"print-version, V\"}\n\n  cli.HelpPrinter = func(w io.Writer, templ string, data interface{}) {\n    fmt.Fprintf(w, \"best of luck to you\\n\")\n  }\n  cli.VersionPrinter = func(c *cli.Context) {\n    fmt.Fprintf(c.App.Writer, \"version=%s\\n\", c.App.Version)\n  }\n  cli.OsExiter = func(c int) {\n    fmt.Fprintf(cli.ErrWriter, \"refusing to exit %d\\n\", c)\n  }\n  cli.ErrWriter = ioutil.Discard\n  cli.FlagStringer = func(fl cli.Flag) string {\n    return fmt.Sprintf(\"\\t\\t%s\", fl.GetName())\n  }\n}\n\ntype hexWriter struct{}\n\nfunc (w *hexWriter) Write(p []byte) (int, error) {\n  for _, b := range p {\n    fmt.Printf(\"%x\", b)\n  }\n  fmt.Printf(\"\\n\")\n\n  return len(p), nil\n}\n\ntype genericType struct{\n  s string\n}\n\nfunc (g *genericType) Set(value string) error {\n  g.s = value\n  return nil\n}\n\nfunc (g *genericType) String() string {\n  return g.s\n}\n\nfunc main() {\n  app := cli.NewApp()\n  app.Name = \"kənˈtrīv\"\n  app.Version = \"v19.99.0\"\n  app.Compiled = time.Now()\n  app.Authors = []cli.Author{\n    cli.Author{\n      Name:  \"Example Human\",\n      Email: \"human@example.com\",\n    },\n  }\n  app.Copyright = \"(c) 1999 Serious Enterprise\"\n  app.HelpName = \"contrive\"\n  app.Usage = \"demonstrate available API\"\n  app.UsageText = \"contrive - demonstrating the available API\"\n  app.ArgsUsage = \"[args and such]\"\n  app.Commands = []cli.Command{\n    cli.Command{\n      Name:        \"doo\",\n      Aliases:     []string{\"do\"},\n      Category:    \"motion\",\n      Usage:       \"do the doo\",\n      UsageText:   \"doo - does the dooing\",\n      Description: \"no really, there is a lot of dooing to be done\",\n      ArgsUsage:   \"[arrgh]\",\n      Flags: []cli.Flag{\n        cli.BoolFlag{Name: \"forever, forevvarr\"},\n      },\n      Subcommands: cli.Commands{\n        cli.Command{\n          Name:   \"wop\",\n          Action: wopAction,\n        },\n      },\n      SkipFlagParsing: false,\n      HideHelp:        false,\n      Hidden:          false,\n      HelpName:        \"doo!\",\n      BashComplete: func(c *cli.Context) {\n        fmt.Fprintf(c.App.Writer, \"--better\\n\")\n      },\n      Before: func(c *cli.Context) error {\n        fmt.Fprintf(c.App.Writer, \"brace for impact\\n\")\n        return nil\n      },\n      After: func(c *cli.Context) error {\n        fmt.Fprintf(c.App.Writer, \"did we lose anyone?\\n\")\n        return nil\n      },\n      Action: func(c *cli.Context) error {\n        c.Command.FullName()\n        c.Command.HasName(\"wop\")\n        c.Command.Names()\n        c.Command.VisibleFlags()\n        fmt.Fprintf(c.App.Writer, \"dodododododoodododddooooododododooo\\n\")\n        if c.Bool(\"forever\") {\n          c.Command.Run(c)\n        }\n        return nil\n      },\n      OnUsageError: func(c *cli.Context, err error, isSubcommand bool) error {\n        fmt.Fprintf(c.App.Writer, \"for shame\\n\")\n        return err\n      },\n    },\n  }\n  app.Flags = []cli.Flag{\n    cli.BoolFlag{Name: \"fancy\"},\n    cli.BoolTFlag{Name: \"fancier\"},\n    cli.DurationFlag{Name: \"howlong, H\", Value: time.Second * 3},\n    cli.Float64Flag{Name: \"howmuch\"},\n    cli.GenericFlag{Name: \"wat\", Value: &genericType{}},\n    cli.Int64Flag{Name: \"longdistance\"},\n    cli.Int64SliceFlag{Name: \"intervals\"},\n    cli.IntFlag{Name: \"distance\"},\n    cli.IntSliceFlag{Name: \"times\"},\n    cli.StringFlag{Name: \"dance-move, d\"},\n    cli.StringSliceFlag{Name: \"names, N\"},\n    cli.UintFlag{Name: \"age\"},\n    cli.Uint64Flag{Name: \"bigage\"},\n  }\n  app.EnableBashCompletion = true\n  app.HideHelp = false\n  app.HideVersion = false\n  app.BashComplete = func(c *cli.Context) {\n    fmt.Fprintf(c.App.Writer, \"lipstick\\nkiss\\nme\\nlipstick\\nringo\\n\")\n  }\n  app.Before = func(c *cli.Context) error {\n    fmt.Fprintf(c.App.Writer, \"HEEEERE GOES\\n\")\n    return nil\n  }\n  app.After = func(c *cli.Context) error {\n    fmt.Fprintf(c.App.Writer, \"Phew!\\n\")\n    return nil\n  }\n  app.CommandNotFound = func(c *cli.Context, command string) {\n    fmt.Fprintf(c.App.Writer, \"Thar be no %q here.\\n\", command)\n  }\n  app.OnUsageError = func(c *cli.Context, err error, isSubcommand bool) error {\n    if isSubcommand {\n      return err\n    }\n\n    fmt.Fprintf(c.App.Writer, \"WRONG: %#v\\n\", err)\n    return nil\n  }\n  app.Action = func(c *cli.Context) error {\n    cli.DefaultAppComplete(c)\n    cli.HandleExitCoder(errors.New(\"not an exit coder, though\"))\n    cli.ShowAppHelp(c)\n    cli.ShowCommandCompletions(c, \"nope\")\n    cli.ShowCommandHelp(c, \"also-nope\")\n    cli.ShowCompletions(c)\n    cli.ShowSubcommandHelp(c)\n    cli.ShowVersion(c)\n\n    categories := c.App.Categories()\n    categories.AddCommand(\"sounds\", cli.Command{\n      Name: \"bloop\",\n    })\n\n    for _, category := range c.App.Categories() {\n      fmt.Fprintf(c.App.Writer, \"%s\\n\", category.Name)\n      fmt.Fprintf(c.App.Writer, \"%#v\\n\", category.Commands)\n      fmt.Fprintf(c.App.Writer, \"%#v\\n\", category.VisibleCommands())\n    }\n\n    fmt.Printf(\"%#v\\n\", c.App.Command(\"doo\"))\n    if c.Bool(\"infinite\") {\n      c.App.Run([]string{\"app\", \"doo\", \"wop\"})\n    }\n\n    if c.Bool(\"forevar\") {\n      c.App.RunAsSubcommand(c)\n    }\n    c.App.Setup()\n    fmt.Printf(\"%#v\\n\", c.App.VisibleCategories())\n    fmt.Printf(\"%#v\\n\", c.App.VisibleCommands())\n    fmt.Printf(\"%#v\\n\", c.App.VisibleFlags())\n\n    fmt.Printf(\"%#v\\n\", c.Args().First())\n    if len(c.Args()) > 0 {\n      fmt.Printf(\"%#v\\n\", c.Args()[1])\n    }\n    fmt.Printf(\"%#v\\n\", c.Args().Present())\n    fmt.Printf(\"%#v\\n\", c.Args().Tail())\n\n    set := flag.NewFlagSet(\"contrive\", 0)\n    nc := cli.NewContext(c.App, set, c)\n\n    fmt.Printf(\"%#v\\n\", nc.Args())\n    fmt.Printf(\"%#v\\n\", nc.Bool(\"nope\"))\n    fmt.Printf(\"%#v\\n\", nc.BoolT(\"nerp\"))\n    fmt.Printf(\"%#v\\n\", nc.Duration(\"howlong\"))\n    fmt.Printf(\"%#v\\n\", nc.Float64(\"hay\"))\n    fmt.Printf(\"%#v\\n\", nc.Generic(\"bloop\"))\n    fmt.Printf(\"%#v\\n\", nc.Int64(\"bonk\"))\n    fmt.Printf(\"%#v\\n\", nc.Int64Slice(\"burnks\"))\n    fmt.Printf(\"%#v\\n\", nc.Int(\"bips\"))\n    fmt.Printf(\"%#v\\n\", nc.IntSlice(\"blups\"))\n    fmt.Printf(\"%#v\\n\", nc.String(\"snurt\"))\n    fmt.Printf(\"%#v\\n\", nc.StringSlice(\"snurkles\"))\n    fmt.Printf(\"%#v\\n\", nc.Uint(\"flub\"))\n    fmt.Printf(\"%#v\\n\", nc.Uint64(\"florb\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalBool(\"global-nope\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalBoolT(\"global-nerp\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalDuration(\"global-howlong\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalFloat64(\"global-hay\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalGeneric(\"global-bloop\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalInt(\"global-bips\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalIntSlice(\"global-blups\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalString(\"global-snurt\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalStringSlice(\"global-snurkles\"))\n\n    fmt.Printf(\"%#v\\n\", nc.FlagNames())\n    fmt.Printf(\"%#v\\n\", nc.GlobalFlagNames())\n    fmt.Printf(\"%#v\\n\", nc.GlobalIsSet(\"wat\"))\n    fmt.Printf(\"%#v\\n\", nc.GlobalSet(\"wat\", \"nope\"))\n    fmt.Printf(\"%#v\\n\", nc.NArg())\n    fmt.Printf(\"%#v\\n\", nc.NumFlags())\n    fmt.Printf(\"%#v\\n\", nc.Parent())\n\n    nc.Set(\"wat\", \"also-nope\")\n\n    ec := cli.NewExitError(\"ohwell\", 86)\n    fmt.Fprintf(c.App.Writer, \"%d\", ec.ExitCode())\n    fmt.Printf(\"made it!\\n\")\n    return ec\n  }\n\n  if os.Getenv(\"HEXY\") != \"\" {\n    app.Writer = &hexWriter{}\n    app.ErrWriter = &hexWriter{}\n  }\n\n  app.Metadata = map[string]interface{}{\n    \"layers\":     \"many\",\n    \"explicable\": false,\n    \"whatever-values\": 19.99,\n  }\n\n  app.Run(os.Args)\n}\n\nfunc wopAction(c *cli.Context) error {\n  fmt.Fprintf(c.App.Writer, \":wave: over here, eh\\n\")\n  return nil\n}\n```\n\n## Contribution Guidelines\n\nFeel free to put up a pull request to fix a bug or maybe add a feature. I will\ngive it a code review and make sure that it does not break backwards\ncompatibility. If I or any other collaborators agree that it is in line with\nthe vision of the project, we will work with you to get the code into\na mergeable state and merge it into the master branch.\n\nIf you have contributed something significant to the project, we will most\nlikely add you as a collaborator. As a collaborator you are given the ability\nto merge others pull requests. It is very important that new code does not\nbreak existing code, so be careful about what code you do choose to merge.\n\nIf you feel like you have contributed to the project but have not yet been\nadded as a collaborator, we probably forgot to add you, please open an issue.\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/app.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tchangeLogURL                    = \"https://github.com/urfave/cli/blob/master/CHANGELOG.md\"\n\tappActionDeprecationURL         = fmt.Sprintf(\"%s#deprecated-cli-app-action-signature\", changeLogURL)\n\trunAndExitOnErrorDeprecationURL = fmt.Sprintf(\"%s#deprecated-cli-app-runandexitonerror\", changeLogURL)\n\n\tcontactSysadmin = \"This is an error in the application.  Please contact the distributor of this application if this is not you.\"\n\n\terrNonFuncAction = NewExitError(\"ERROR invalid Action type.  \"+\n\t\tfmt.Sprintf(\"Must be a func of type `cli.ActionFunc`.  %s\", contactSysadmin)+\n\t\tfmt.Sprintf(\"See %s\", appActionDeprecationURL), 2)\n\terrInvalidActionSignature = NewExitError(\"ERROR invalid Action signature.  \"+\n\t\tfmt.Sprintf(\"Must be `cli.ActionFunc`.  %s\", contactSysadmin)+\n\t\tfmt.Sprintf(\"See %s\", appActionDeprecationURL), 2)\n)\n\n// App is the main structure of a cli application. It is recommended that\n// an app be created with the cli.NewApp() function\ntype App struct {\n\t// The name of the program. Defaults to path.Base(os.Args[0])\n\tName string\n\t// Full name of command for help, defaults to Name\n\tHelpName string\n\t// Description of the program.\n\tUsage string\n\t// Text to override the USAGE section of help\n\tUsageText string\n\t// Description of the program argument format.\n\tArgsUsage string\n\t// Version of the program\n\tVersion string\n\t// List of commands to execute\n\tCommands []Command\n\t// List of flags to parse\n\tFlags []Flag\n\t// Boolean to enable bash completion commands\n\tEnableBashCompletion bool\n\t// Boolean to hide built-in help command\n\tHideHelp bool\n\t// Boolean to hide built-in version flag and the VERSION section of help\n\tHideVersion bool\n\t// Populate on app startup, only gettable through method Categories()\n\tcategories CommandCategories\n\t// An action to execute when the bash-completion flag is set\n\tBashComplete BashCompleteFunc\n\t// An action to execute before any subcommands are run, but after the context is ready\n\t// If a non-nil error is returned, no subcommands are run\n\tBefore BeforeFunc\n\t// An action to execute after any subcommands are run, but after the subcommand has finished\n\t// It is run even if Action() panics\n\tAfter AfterFunc\n\t// The action to execute when no subcommands are specified\n\tAction interface{}\n\t// TODO: replace `Action: interface{}` with `Action: ActionFunc` once some kind\n\t// of deprecation period has passed, maybe?\n\n\t// Execute this function if the proper command cannot be found\n\tCommandNotFound CommandNotFoundFunc\n\t// Execute this function if an usage error occurs\n\tOnUsageError OnUsageErrorFunc\n\t// Compilation date\n\tCompiled time.Time\n\t// List of all authors who contributed\n\tAuthors []Author\n\t// Copyright of the binary if any\n\tCopyright string\n\t// Name of Author (Note: Use App.Authors, this is deprecated)\n\tAuthor string\n\t// Email of Author (Note: Use App.Authors, this is deprecated)\n\tEmail string\n\t// Writer writer to write output to\n\tWriter io.Writer\n\t// ErrWriter writes error output\n\tErrWriter io.Writer\n\t// Other custom info\n\tMetadata map[string]interface{}\n\n\tdidSetup bool\n}\n\n// Tries to find out when this binary was compiled.\n// Returns the current time if it fails to find it.\nfunc compileTime() time.Time {\n\tinfo, err := os.Stat(os.Args[0])\n\tif err != nil {\n\t\treturn time.Now()\n\t}\n\treturn info.ModTime()\n}\n\n// NewApp creates a new cli Application with some reasonable defaults for Name,\n// Usage, Version and Action.\nfunc NewApp() *App {\n\treturn &App{\n\t\tName:         filepath.Base(os.Args[0]),\n\t\tHelpName:     filepath.Base(os.Args[0]),\n\t\tUsage:        \"A new cli application\",\n\t\tUsageText:    \"\",\n\t\tVersion:      \"0.0.0\",\n\t\tBashComplete: DefaultAppComplete,\n\t\tAction:       helpCommand.Action,\n\t\tCompiled:     compileTime(),\n\t\tWriter:       os.Stdout,\n\t}\n}\n\n// Setup runs initialization code to ensure all data structures are ready for\n// `Run` or inspection prior to `Run`.  It is internally called by `Run`, but\n// will return early if setup has already happened.\nfunc (a *App) Setup() {\n\tif a.didSetup {\n\t\treturn\n\t}\n\n\ta.didSetup = true\n\n\tif a.Author != \"\" || a.Email != \"\" {\n\t\ta.Authors = append(a.Authors, Author{Name: a.Author, Email: a.Email})\n\t}\n\n\tnewCmds := []Command{}\n\tfor _, c := range a.Commands {\n\t\tif c.HelpName == \"\" {\n\t\t\tc.HelpName = fmt.Sprintf(\"%s %s\", a.HelpName, c.Name)\n\t\t}\n\t\tnewCmds = append(newCmds, c)\n\t}\n\ta.Commands = newCmds\n\n\tif a.Command(helpCommand.Name) == nil && !a.HideHelp {\n\t\ta.Commands = append(a.Commands, helpCommand)\n\t\tif (HelpFlag != BoolFlag{}) {\n\t\t\ta.appendFlag(HelpFlag)\n\t\t}\n\t}\n\n\tif a.EnableBashCompletion {\n\t\ta.appendFlag(BashCompletionFlag)\n\t}\n\n\tif !a.HideVersion {\n\t\ta.appendFlag(VersionFlag)\n\t}\n\n\ta.categories = CommandCategories{}\n\tfor _, command := range a.Commands {\n\t\ta.categories = a.categories.AddCommand(command.Category, command)\n\t}\n\tsort.Sort(a.categories)\n}\n\n// Run is the entry point to the cli app. Parses the arguments slice and routes\n// to the proper flag/args combination\nfunc (a *App) Run(arguments []string) (err error) {\n\ta.Setup()\n\n\t// parse flags\n\tset := flagSet(a.Name, a.Flags)\n\tset.SetOutput(ioutil.Discard)\n\terr = set.Parse(arguments[1:])\n\tnerr := normalizeFlags(a.Flags, set)\n\tcontext := NewContext(a, set, nil)\n\tif nerr != nil {\n\t\tfmt.Fprintln(a.Writer, nerr)\n\t\tShowAppHelp(context)\n\t\treturn nerr\n\t}\n\n\tif checkCompletions(context) {\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\tif a.OnUsageError != nil {\n\t\t\terr := a.OnUsageError(context, err, false)\n\t\t\tHandleExitCoder(err)\n\t\t\treturn err\n\t\t}\n\t\tfmt.Fprintf(a.Writer, \"%s\\n\\n\", \"Incorrect Usage.\")\n\t\tShowAppHelp(context)\n\t\treturn err\n\t}\n\n\tif !a.HideHelp && checkHelp(context) {\n\t\tShowAppHelp(context)\n\t\treturn nil\n\t}\n\n\tif !a.HideVersion && checkVersion(context) {\n\t\tShowVersion(context)\n\t\treturn nil\n\t}\n\n\tif a.After != nil {\n\t\tdefer func() {\n\t\t\tif afterErr := a.After(context); afterErr != nil {\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = NewMultiError(err, afterErr)\n\t\t\t\t} else {\n\t\t\t\t\terr = afterErr\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tif a.Before != nil {\n\t\tbeforeErr := a.Before(context)\n\t\tif beforeErr != nil {\n\t\t\tfmt.Fprintf(a.Writer, \"%v\\n\\n\", beforeErr)\n\t\t\tShowAppHelp(context)\n\t\t\tHandleExitCoder(beforeErr)\n\t\t\terr = beforeErr\n\t\t\treturn err\n\t\t}\n\t}\n\n\targs := context.Args()\n\tif args.Present() {\n\t\tname := args.First()\n\t\tc := a.Command(name)\n\t\tif c != nil {\n\t\t\treturn c.Run(context)\n\t\t}\n\t}\n\n\t// Run default Action\n\terr = HandleAction(a.Action, context)\n\n\tHandleExitCoder(err)\n\treturn err\n}\n\n// DEPRECATED: Another entry point to the cli app, takes care of passing arguments and error handling\nfunc (a *App) RunAndExitOnError() {\n\tif err := a.Run(os.Args); err != nil {\n\t\tfmt.Fprintln(a.errWriter(), err)\n\t\tOsExiter(1)\n\t}\n}\n\n// RunAsSubcommand invokes the subcommand given the context, parses ctx.Args() to\n// generate command-specific flags\nfunc (a *App) RunAsSubcommand(ctx *Context) (err error) {\n\t// append help to commands\n\tif len(a.Commands) > 0 {\n\t\tif a.Command(helpCommand.Name) == nil && !a.HideHelp {\n\t\t\ta.Commands = append(a.Commands, helpCommand)\n\t\t\tif (HelpFlag != BoolFlag{}) {\n\t\t\t\ta.appendFlag(HelpFlag)\n\t\t\t}\n\t\t}\n\t}\n\n\tnewCmds := []Command{}\n\tfor _, c := range a.Commands {\n\t\tif c.HelpName == \"\" {\n\t\t\tc.HelpName = fmt.Sprintf(\"%s %s\", a.HelpName, c.Name)\n\t\t}\n\t\tnewCmds = append(newCmds, c)\n\t}\n\ta.Commands = newCmds\n\n\t// append flags\n\tif a.EnableBashCompletion {\n\t\ta.appendFlag(BashCompletionFlag)\n\t}\n\n\t// parse flags\n\tset := flagSet(a.Name, a.Flags)\n\tset.SetOutput(ioutil.Discard)\n\terr = set.Parse(ctx.Args().Tail())\n\tnerr := normalizeFlags(a.Flags, set)\n\tcontext := NewContext(a, set, ctx)\n\n\tif nerr != nil {\n\t\tfmt.Fprintln(a.Writer, nerr)\n\t\tfmt.Fprintln(a.Writer)\n\t\tif len(a.Commands) > 0 {\n\t\t\tShowSubcommandHelp(context)\n\t\t} else {\n\t\t\tShowCommandHelp(ctx, context.Args().First())\n\t\t}\n\t\treturn nerr\n\t}\n\n\tif checkCompletions(context) {\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\tif a.OnUsageError != nil {\n\t\t\terr = a.OnUsageError(context, err, true)\n\t\t\tHandleExitCoder(err)\n\t\t\treturn err\n\t\t}\n\t\tfmt.Fprintf(a.Writer, \"%s\\n\\n\", \"Incorrect Usage.\")\n\t\tShowSubcommandHelp(context)\n\t\treturn err\n\t}\n\n\tif len(a.Commands) > 0 {\n\t\tif checkSubcommandHelp(context) {\n\t\t\treturn nil\n\t\t}\n\t} else {\n\t\tif checkCommandHelp(ctx, context.Args().First()) {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif a.After != nil {\n\t\tdefer func() {\n\t\t\tafterErr := a.After(context)\n\t\t\tif afterErr != nil {\n\t\t\t\tHandleExitCoder(err)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = NewMultiError(err, afterErr)\n\t\t\t\t} else {\n\t\t\t\t\terr = afterErr\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tif a.Before != nil {\n\t\tbeforeErr := a.Before(context)\n\t\tif beforeErr != nil {\n\t\t\tHandleExitCoder(beforeErr)\n\t\t\terr = beforeErr\n\t\t\treturn err\n\t\t}\n\t}\n\n\targs := context.Args()\n\tif args.Present() {\n\t\tname := args.First()\n\t\tc := a.Command(name)\n\t\tif c != nil {\n\t\t\treturn c.Run(context)\n\t\t}\n\t}\n\n\t// Run default Action\n\terr = HandleAction(a.Action, context)\n\n\tHandleExitCoder(err)\n\treturn err\n}\n\n// Command returns the named command on App. Returns nil if the command does not exist\nfunc (a *App) Command(name string) *Command {\n\tfor _, c := range a.Commands {\n\t\tif c.HasName(name) {\n\t\t\treturn &c\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Categories returns a slice containing all the categories with the commands they contain\nfunc (a *App) Categories() CommandCategories {\n\treturn a.categories\n}\n\n// VisibleCategories returns a slice of categories and commands that are\n// Hidden=false\nfunc (a *App) VisibleCategories() []*CommandCategory {\n\tret := []*CommandCategory{}\n\tfor _, category := range a.categories {\n\t\tif visible := func() *CommandCategory {\n\t\t\tfor _, command := range category.Commands {\n\t\t\t\tif !command.Hidden {\n\t\t\t\t\treturn category\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}(); visible != nil {\n\t\t\tret = append(ret, visible)\n\t\t}\n\t}\n\treturn ret\n}\n\n// VisibleCommands returns a slice of the Commands with Hidden=false\nfunc (a *App) VisibleCommands() []Command {\n\tret := []Command{}\n\tfor _, command := range a.Commands {\n\t\tif !command.Hidden {\n\t\t\tret = append(ret, command)\n\t\t}\n\t}\n\treturn ret\n}\n\n// VisibleFlags returns a slice of the Flags with Hidden=false\nfunc (a *App) VisibleFlags() []Flag {\n\treturn visibleFlags(a.Flags)\n}\n\nfunc (a *App) hasFlag(flag Flag) bool {\n\tfor _, f := range a.Flags {\n\t\tif flag == f {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (a *App) errWriter() io.Writer {\n\n\t// When the app ErrWriter is nil use the package level one.\n\tif a.ErrWriter == nil {\n\t\treturn ErrWriter\n\t}\n\n\treturn a.ErrWriter\n}\n\nfunc (a *App) appendFlag(flag Flag) {\n\tif !a.hasFlag(flag) {\n\t\ta.Flags = append(a.Flags, flag)\n\t}\n}\n\n// Author represents someone who has contributed to a cli project.\ntype Author struct {\n\tName  string // The Authors name\n\tEmail string // The Authors email\n}\n\n// String makes Author comply to the Stringer interface, to allow an easy print in the templating process\nfunc (a Author) String() string {\n\te := \"\"\n\tif a.Email != \"\" {\n\t\te = \"<\" + a.Email + \"> \"\n\t}\n\n\treturn fmt.Sprintf(\"%v %v\", a.Name, e)\n}\n\n// HandleAction uses ✧✧✧reflection✧✧✧ to figure out if the given Action is an\n// ActionFunc, a func with the legacy signature for Action, or some other\n// invalid thing.  If it's an ActionFunc or a func with the legacy signature for\n// Action, the func is run!\nfunc HandleAction(action interface{}, context *Context) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// Try to detect a known reflection error from *this scope*, rather than\n\t\t\t// swallowing all panics that may happen when calling an Action func.\n\t\t\ts := fmt.Sprintf(\"%v\", r)\n\t\t\tif strings.HasPrefix(s, \"reflect: \") && strings.Contains(s, \"too many input arguments\") {\n\t\t\t\terr = NewExitError(fmt.Sprintf(\"ERROR unknown Action error: %v.  See %s\", r, appActionDeprecationURL), 2)\n\t\t\t} else {\n\t\t\t\tpanic(r)\n\t\t\t}\n\t\t}\n\t}()\n\n\tif reflect.TypeOf(action).Kind() != reflect.Func {\n\t\treturn errNonFuncAction\n\t}\n\n\tvals := reflect.ValueOf(action).Call([]reflect.Value{reflect.ValueOf(context)})\n\n\tif len(vals) == 0 {\n\t\treturn nil\n\t}\n\n\tif len(vals) > 1 {\n\t\treturn errInvalidActionSignature\n\t}\n\n\tif retErr, ok := vals[0].Interface().(error); vals[0].IsValid() && ok {\n\t\treturn retErr\n\t}\n\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/appveyor.yml",
    "content": "version: \"{build}\"\n\nos: Windows Server 2012 R2\n\nclone_folder: c:\\gopath\\src\\github.com\\urfave\\cli\n\nenvironment:\n  GOPATH: C:\\gopath\n  GOVERSION: 1.6\n  PYTHON: C:\\Python27-x64\n  PYTHON_VERSION: 2.7.x\n  PYTHON_ARCH: 64\n  GFMXR_DEBUG: 1\n\ninstall:\n- set PATH=%GOPATH%\\bin;C:\\go\\bin;%PATH%\n- go version\n- go env\n- go get github.com/urfave/gfmxr/...\n- go get -v -t ./...\n\nbuild_script:\n- python runtests vet\n- python runtests test\n- python runtests gfmxr\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/category.go",
    "content": "package cli\n\n// CommandCategories is a slice of *CommandCategory.\ntype CommandCategories []*CommandCategory\n\n// CommandCategory is a category containing commands.\ntype CommandCategory struct {\n\tName     string\n\tCommands Commands\n}\n\nfunc (c CommandCategories) Less(i, j int) bool {\n\treturn c[i].Name < c[j].Name\n}\n\nfunc (c CommandCategories) Len() int {\n\treturn len(c)\n}\n\nfunc (c CommandCategories) Swap(i, j int) {\n\tc[i], c[j] = c[j], c[i]\n}\n\n// AddCommand adds a command to a category.\nfunc (c CommandCategories) AddCommand(category string, command Command) CommandCategories {\n\tfor _, commandCategory := range c {\n\t\tif commandCategory.Name == category {\n\t\t\tcommandCategory.Commands = append(commandCategory.Commands, command)\n\t\t\treturn c\n\t\t}\n\t}\n\treturn append(c, &CommandCategory{Name: category, Commands: []Command{command}})\n}\n\n// VisibleCommands returns a slice of the Commands with Hidden=false\nfunc (c *CommandCategory) VisibleCommands() []Command {\n\tret := []Command{}\n\tfor _, command := range c.Commands {\n\t\tif !command.Hidden {\n\t\t\tret = append(ret, command)\n\t\t}\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/cli.go",
    "content": "// Package cli provides a minimal framework for creating and organizing command line\n// Go applications. cli is designed to be easy to understand and write, the most simple\n// cli application can be written as follows:\n//   func main() {\n//     cli.NewApp().Run(os.Args)\n//   }\n//\n// Of course this application does not do much, so let's make this an actual application:\n//   func main() {\n//     app := cli.NewApp()\n//     app.Name = \"greet\"\n//     app.Usage = \"say a greeting\"\n//     app.Action = func(c *cli.Context) error {\n//       println(\"Greetings\")\n//     }\n//\n//     app.Run(os.Args)\n//   }\npackage cli\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/command.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// Command is a subcommand for a cli.App.\ntype Command struct {\n\t// The name of the command\n\tName string\n\t// short name of the command. Typically one character (deprecated, use `Aliases`)\n\tShortName string\n\t// A list of aliases for the command\n\tAliases []string\n\t// A short description of the usage of this command\n\tUsage string\n\t// Custom text to show on USAGE section of help\n\tUsageText string\n\t// A longer explanation of how the command works\n\tDescription string\n\t// A short description of the arguments of this command\n\tArgsUsage string\n\t// The category the command is part of\n\tCategory string\n\t// The function to call when checking for bash command completions\n\tBashComplete BashCompleteFunc\n\t// An action to execute before any sub-subcommands are run, but after the context is ready\n\t// If a non-nil error is returned, no sub-subcommands are run\n\tBefore BeforeFunc\n\t// An action to execute after any subcommands are run, but after the subcommand has finished\n\t// It is run even if Action() panics\n\tAfter AfterFunc\n\t// The function to call when this command is invoked\n\tAction interface{}\n\t// TODO: replace `Action: interface{}` with `Action: ActionFunc` once some kind\n\t// of deprecation period has passed, maybe?\n\n\t// Execute this function if a usage error occurs.\n\tOnUsageError OnUsageErrorFunc\n\t// List of child commands\n\tSubcommands Commands\n\t// List of flags to parse\n\tFlags []Flag\n\t// Treat all flags as normal arguments if true\n\tSkipFlagParsing bool\n\t// Boolean to hide built-in help command\n\tHideHelp bool\n\t// Boolean to hide this command from help or completion\n\tHidden bool\n\n\t// Full name of command for help, defaults to full command name, including parent commands.\n\tHelpName        string\n\tcommandNamePath []string\n}\n\n// FullName returns the full name of the command.\n// For subcommands this ensures that parent commands are part of the command path\nfunc (c Command) FullName() string {\n\tif c.commandNamePath == nil {\n\t\treturn c.Name\n\t}\n\treturn strings.Join(c.commandNamePath, \" \")\n}\n\n// Commands is a slice of Command\ntype Commands []Command\n\n// Run invokes the command given the context, parses ctx.Args() to generate command-specific flags\nfunc (c Command) Run(ctx *Context) (err error) {\n\tif len(c.Subcommands) > 0 {\n\t\treturn c.startApp(ctx)\n\t}\n\n\tif !c.HideHelp && (HelpFlag != BoolFlag{}) {\n\t\t// append help to flags\n\t\tc.Flags = append(\n\t\t\tc.Flags,\n\t\t\tHelpFlag,\n\t\t)\n\t}\n\n\tif ctx.App.EnableBashCompletion {\n\t\tc.Flags = append(c.Flags, BashCompletionFlag)\n\t}\n\n\tset := flagSet(c.Name, c.Flags)\n\tset.SetOutput(ioutil.Discard)\n\n\tif !c.SkipFlagParsing {\n\t\tfirstFlagIndex := -1\n\t\tterminatorIndex := -1\n\t\tfor index, arg := range ctx.Args() {\n\t\t\tif arg == \"--\" {\n\t\t\t\tterminatorIndex = index\n\t\t\t\tbreak\n\t\t\t} else if arg == \"-\" {\n\t\t\t\t// Do nothing. A dash alone is not really a flag.\n\t\t\t\tcontinue\n\t\t\t} else if strings.HasPrefix(arg, \"-\") && firstFlagIndex == -1 {\n\t\t\t\tfirstFlagIndex = index\n\t\t\t}\n\t\t}\n\n\t\tif firstFlagIndex > -1 {\n\t\t\targs := ctx.Args()\n\t\t\tregularArgs := make([]string, len(args[1:firstFlagIndex]))\n\t\t\tcopy(regularArgs, args[1:firstFlagIndex])\n\n\t\t\tvar flagArgs []string\n\t\t\tif terminatorIndex > -1 {\n\t\t\t\tflagArgs = args[firstFlagIndex:terminatorIndex]\n\t\t\t\tregularArgs = append(regularArgs, args[terminatorIndex:]...)\n\t\t\t} else {\n\t\t\t\tflagArgs = args[firstFlagIndex:]\n\t\t\t}\n\n\t\t\terr = set.Parse(append(flagArgs, regularArgs...))\n\t\t} else {\n\t\t\terr = set.Parse(ctx.Args().Tail())\n\t\t}\n\t} else {\n\t\tif c.SkipFlagParsing {\n\t\t\terr = set.Parse(append([]string{\"--\"}, ctx.Args().Tail()...))\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tif c.OnUsageError != nil {\n\t\t\terr := c.OnUsageError(ctx, err, false)\n\t\t\tHandleExitCoder(err)\n\t\t\treturn err\n\t\t}\n\t\tfmt.Fprintln(ctx.App.Writer, \"Incorrect Usage.\")\n\t\tfmt.Fprintln(ctx.App.Writer)\n\t\tShowCommandHelp(ctx, c.Name)\n\t\treturn err\n\t}\n\n\tnerr := normalizeFlags(c.Flags, set)\n\tif nerr != nil {\n\t\tfmt.Fprintln(ctx.App.Writer, nerr)\n\t\tfmt.Fprintln(ctx.App.Writer)\n\t\tShowCommandHelp(ctx, c.Name)\n\t\treturn nerr\n\t}\n\n\tcontext := NewContext(ctx.App, set, ctx)\n\n\tif checkCommandCompletions(context, c.Name) {\n\t\treturn nil\n\t}\n\n\tif checkCommandHelp(context, c.Name) {\n\t\treturn nil\n\t}\n\n\tif c.After != nil {\n\t\tdefer func() {\n\t\t\tafterErr := c.After(context)\n\t\t\tif afterErr != nil {\n\t\t\t\tHandleExitCoder(err)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = NewMultiError(err, afterErr)\n\t\t\t\t} else {\n\t\t\t\t\terr = afterErr\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\tif c.Before != nil {\n\t\terr = c.Before(context)\n\t\tif err != nil {\n\t\t\tfmt.Fprintln(ctx.App.Writer, err)\n\t\t\tfmt.Fprintln(ctx.App.Writer)\n\t\t\tShowCommandHelp(ctx, c.Name)\n\t\t\tHandleExitCoder(err)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tcontext.Command = c\n\terr = HandleAction(c.Action, context)\n\n\tif err != nil {\n\t\tHandleExitCoder(err)\n\t}\n\treturn err\n}\n\n// Names returns the names including short names and aliases.\nfunc (c Command) Names() []string {\n\tnames := []string{c.Name}\n\n\tif c.ShortName != \"\" {\n\t\tnames = append(names, c.ShortName)\n\t}\n\n\treturn append(names, c.Aliases...)\n}\n\n// HasName returns true if Command.Name or Command.ShortName matches given name\nfunc (c Command) HasName(name string) bool {\n\tfor _, n := range c.Names() {\n\t\tif n == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (c Command) startApp(ctx *Context) error {\n\tapp := NewApp()\n\tapp.Metadata = ctx.App.Metadata\n\t// set the name and usage\n\tapp.Name = fmt.Sprintf(\"%s %s\", ctx.App.Name, c.Name)\n\tif c.HelpName == \"\" {\n\t\tapp.HelpName = c.HelpName\n\t} else {\n\t\tapp.HelpName = app.Name\n\t}\n\n\tif c.Description != \"\" {\n\t\tapp.Usage = c.Description\n\t} else {\n\t\tapp.Usage = c.Usage\n\t}\n\n\t// set CommandNotFound\n\tapp.CommandNotFound = ctx.App.CommandNotFound\n\n\t// set the flags and commands\n\tapp.Commands = c.Subcommands\n\tapp.Flags = c.Flags\n\tapp.HideHelp = c.HideHelp\n\n\tapp.Version = ctx.App.Version\n\tapp.HideVersion = ctx.App.HideVersion\n\tapp.Compiled = ctx.App.Compiled\n\tapp.Author = ctx.App.Author\n\tapp.Email = ctx.App.Email\n\tapp.Writer = ctx.App.Writer\n\n\tapp.categories = CommandCategories{}\n\tfor _, command := range c.Subcommands {\n\t\tapp.categories = app.categories.AddCommand(command.Category, command)\n\t}\n\n\tsort.Sort(app.categories)\n\n\t// bash completion\n\tapp.EnableBashCompletion = ctx.App.EnableBashCompletion\n\tif c.BashComplete != nil {\n\t\tapp.BashComplete = c.BashComplete\n\t}\n\n\t// set the actions\n\tapp.Before = c.Before\n\tapp.After = c.After\n\tif c.Action != nil {\n\t\tapp.Action = c.Action\n\t} else {\n\t\tapp.Action = helpSubcommand.Action\n\t}\n\n\tfor index, cc := range app.Commands {\n\t\tapp.Commands[index].commandNamePath = []string{c.Name, cc.Name}\n\t}\n\n\treturn app.RunAsSubcommand(ctx)\n}\n\n// VisibleFlags returns a slice of the Flags with Hidden=false\nfunc (c Command) VisibleFlags() []Flag {\n\treturn visibleFlags(c.Flags)\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/context.go",
    "content": "package cli\n\nimport (\n\t\"errors\"\n\t\"flag\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Context is a type that is passed through to\n// each Handler action in a cli application. Context\n// can be used to retrieve context-specific Args and\n// parsed command-line options.\ntype Context struct {\n\tApp            *App\n\tCommand        Command\n\tflagSet        *flag.FlagSet\n\tsetFlags       map[string]bool\n\tglobalSetFlags map[string]bool\n\tparentContext  *Context\n}\n\n// NewContext creates a new context. For use in when invoking an App or Command action.\nfunc NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context {\n\treturn &Context{App: app, flagSet: set, parentContext: parentCtx}\n}\n\n// Int looks up the value of a local int flag, returns 0 if no int flag exists\nfunc (c *Context) Int(name string) int {\n\treturn lookupInt(name, c.flagSet)\n}\n\n// Int64 looks up the value of a local int flag, returns 0 if no int flag exists\nfunc (c *Context) Int64(name string) int64 {\n\treturn lookupInt64(name, c.flagSet)\n}\n\n// Uint looks up the value of a local int flag, returns 0 if no int flag exists\nfunc (c *Context) Uint(name string) uint {\n\treturn lookupUint(name, c.flagSet)\n}\n\n// Uint64 looks up the value of a local int flag, returns 0 if no int flag exists\nfunc (c *Context) Uint64(name string) uint64 {\n\treturn lookupUint64(name, c.flagSet)\n}\n\n// Duration looks up the value of a local time.Duration flag, returns 0 if no\n// time.Duration flag exists\nfunc (c *Context) Duration(name string) time.Duration {\n\treturn lookupDuration(name, c.flagSet)\n}\n\n// Float64 looks up the value of a local float64 flag, returns 0 if no float64\n// flag exists\nfunc (c *Context) Float64(name string) float64 {\n\treturn lookupFloat64(name, c.flagSet)\n}\n\n// Bool looks up the value of a local bool flag, returns false if no bool flag exists\nfunc (c *Context) Bool(name string) bool {\n\treturn lookupBool(name, c.flagSet)\n}\n\n// BoolT looks up the value of a local boolT flag, returns false if no bool flag exists\nfunc (c *Context) BoolT(name string) bool {\n\treturn lookupBoolT(name, c.flagSet)\n}\n\n// String looks up the value of a local string flag, returns \"\" if no string flag exists\nfunc (c *Context) String(name string) string {\n\treturn lookupString(name, c.flagSet)\n}\n\n// StringSlice looks up the value of a local string slice flag, returns nil if no\n// string slice flag exists\nfunc (c *Context) StringSlice(name string) []string {\n\treturn lookupStringSlice(name, c.flagSet)\n}\n\n// IntSlice looks up the value of a local int slice flag, returns nil if no int\n// slice flag exists\nfunc (c *Context) IntSlice(name string) []int {\n\treturn lookupIntSlice(name, c.flagSet)\n}\n\n// Int64Slice looks up the value of a local int slice flag, returns nil if no int\n// slice flag exists\nfunc (c *Context) Int64Slice(name string) []int64 {\n\treturn lookupInt64Slice(name, c.flagSet)\n}\n\n// Generic looks up the value of a local generic flag, returns nil if no generic\n// flag exists\nfunc (c *Context) Generic(name string) interface{} {\n\treturn lookupGeneric(name, c.flagSet)\n}\n\n// GlobalInt looks up the value of a global int flag, returns 0 if no int flag exists\nfunc (c *Context) GlobalInt(name string) int {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupInt(name, fs)\n\t}\n\treturn 0\n}\n\n// GlobalInt64 looks up the value of a global int flag, returns 0 if no int flag exists\nfunc (c *Context) GlobalInt64(name string) int64 {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupInt64(name, fs)\n\t}\n\treturn 0\n}\n\n// GlobalUint looks up the value of a global int flag, returns 0 if no int flag exists\nfunc (c *Context) GlobalUint(name string) uint {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupUint(name, fs)\n\t}\n\treturn 0\n}\n\n// GlobalUint64 looks up the value of a global int flag, returns 0 if no int flag exists\nfunc (c *Context) GlobalUint64(name string) uint64 {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupUint64(name, fs)\n\t}\n\treturn 0\n}\n\n// GlobalFloat64 looks up the value of a global float64 flag, returns float64(0)\n// if no float64 flag exists\nfunc (c *Context) GlobalFloat64(name string) float64 {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupFloat64(name, fs)\n\t}\n\treturn float64(0)\n}\n\n// GlobalDuration looks up the value of a global time.Duration flag, returns 0\n// if no time.Duration flag exists\nfunc (c *Context) GlobalDuration(name string) time.Duration {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupDuration(name, fs)\n\t}\n\treturn 0\n}\n\n// GlobalBool looks up the value of a global bool flag, returns false if no bool\n// flag exists\nfunc (c *Context) GlobalBool(name string) bool {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupBool(name, fs)\n\t}\n\treturn false\n}\n\n// GlobalBoolT looks up the value of a global bool flag, returns true if no bool\n// flag exists\nfunc (c *Context) GlobalBoolT(name string) bool {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupBoolT(name, fs)\n\t}\n\treturn false\n}\n\n// GlobalString looks up the value of a global string flag, returns \"\" if no\n// string flag exists\nfunc (c *Context) GlobalString(name string) string {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupString(name, fs)\n\t}\n\treturn \"\"\n}\n\n// GlobalStringSlice looks up the value of a global string slice flag, returns\n// nil if no string slice flag exists\nfunc (c *Context) GlobalStringSlice(name string) []string {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupStringSlice(name, fs)\n\t}\n\treturn nil\n}\n\n// GlobalIntSlice looks up the value of a global int slice flag, returns nil if\n// no int slice flag exists\nfunc (c *Context) GlobalIntSlice(name string) []int {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupIntSlice(name, fs)\n\t}\n\treturn nil\n}\n\n// GlobalInt64Slice looks up the value of a global int slice flag, returns nil if\n// no int slice flag exists\nfunc (c *Context) GlobalInt64Slice(name string) []int64 {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupInt64Slice(name, fs)\n\t}\n\treturn nil\n}\n\n// GlobalGeneric looks up the value of a global generic flag, returns nil if no\n// generic flag exists\nfunc (c *Context) GlobalGeneric(name string) interface{} {\n\tif fs := lookupGlobalFlagSet(name, c); fs != nil {\n\t\treturn lookupGeneric(name, fs)\n\t}\n\treturn nil\n}\n\n// NumFlags returns the number of flags set\nfunc (c *Context) NumFlags() int {\n\treturn c.flagSet.NFlag()\n}\n\n// Set sets a context flag to a value.\nfunc (c *Context) Set(name, value string) error {\n\treturn c.flagSet.Set(name, value)\n}\n\n// GlobalSet sets a context flag to a value on the global flagset\nfunc (c *Context) GlobalSet(name, value string) error {\n\treturn globalContext(c).flagSet.Set(name, value)\n}\n\n// IsSet determines if the flag was actually set\nfunc (c *Context) IsSet(name string) bool {\n\tif c.setFlags == nil {\n\t\tc.setFlags = make(map[string]bool)\n\t\tc.flagSet.Visit(func(f *flag.Flag) {\n\t\t\tc.setFlags[f.Name] = true\n\t\t})\n\t}\n\treturn c.setFlags[name] == true\n}\n\n// GlobalIsSet determines if the global flag was actually set\nfunc (c *Context) GlobalIsSet(name string) bool {\n\tif c.globalSetFlags == nil {\n\t\tc.globalSetFlags = make(map[string]bool)\n\t\tctx := c\n\t\tif ctx.parentContext != nil {\n\t\t\tctx = ctx.parentContext\n\t\t}\n\t\tfor ; ctx != nil && c.globalSetFlags[name] == false; ctx = ctx.parentContext {\n\t\t\tctx.flagSet.Visit(func(f *flag.Flag) {\n\t\t\t\tc.globalSetFlags[f.Name] = true\n\t\t\t})\n\t\t}\n\t}\n\treturn c.globalSetFlags[name]\n}\n\n// FlagNames returns a slice of flag names used in this context.\nfunc (c *Context) FlagNames() (names []string) {\n\tfor _, flag := range c.Command.Flags {\n\t\tname := strings.Split(flag.GetName(), \",\")[0]\n\t\tif name == \"help\" {\n\t\t\tcontinue\n\t\t}\n\t\tnames = append(names, name)\n\t}\n\treturn\n}\n\n// GlobalFlagNames returns a slice of global flag names used by the app.\nfunc (c *Context) GlobalFlagNames() (names []string) {\n\tfor _, flag := range c.App.Flags {\n\t\tname := strings.Split(flag.GetName(), \",\")[0]\n\t\tif name == \"help\" || name == \"version\" {\n\t\t\tcontinue\n\t\t}\n\t\tnames = append(names, name)\n\t}\n\treturn\n}\n\n// Parent returns the parent context, if any\nfunc (c *Context) Parent() *Context {\n\treturn c.parentContext\n}\n\n// Args contains apps console arguments\ntype Args []string\n\n// Args returns the command line arguments associated with the context.\nfunc (c *Context) Args() Args {\n\targs := Args(c.flagSet.Args())\n\treturn args\n}\n\n// NArg returns the number of the command line arguments.\nfunc (c *Context) NArg() int {\n\treturn len(c.Args())\n}\n\n// Get returns the nth argument, or else a blank string\nfunc (a Args) Get(n int) string {\n\tif len(a) > n {\n\t\treturn a[n]\n\t}\n\treturn \"\"\n}\n\n// First returns the first argument, or else a blank string\nfunc (a Args) First() string {\n\treturn a.Get(0)\n}\n\n// Tail returns the rest of the arguments (not the first one)\n// or else an empty string slice\nfunc (a Args) Tail() []string {\n\tif len(a) >= 2 {\n\t\treturn []string(a)[1:]\n\t}\n\treturn []string{}\n}\n\n// Present checks if there are any arguments present\nfunc (a Args) Present() bool {\n\treturn len(a) != 0\n}\n\n// Swap swaps arguments at the given indexes\nfunc (a Args) Swap(from, to int) error {\n\tif from >= len(a) || to >= len(a) {\n\t\treturn errors.New(\"index out of range\")\n\t}\n\ta[from], a[to] = a[to], a[from]\n\treturn nil\n}\n\nfunc globalContext(ctx *Context) *Context {\n\tif ctx == nil {\n\t\treturn nil\n\t}\n\n\tfor {\n\t\tif ctx.parentContext == nil {\n\t\t\treturn ctx\n\t\t}\n\t\tctx = ctx.parentContext\n\t}\n}\n\nfunc lookupGlobalFlagSet(name string, ctx *Context) *flag.FlagSet {\n\tif ctx.parentContext != nil {\n\t\tctx = ctx.parentContext\n\t}\n\tfor ; ctx != nil; ctx = ctx.parentContext {\n\t\tif f := ctx.flagSet.Lookup(name); f != nil {\n\t\t\treturn ctx.flagSet\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc lookupInt(name string, set *flag.FlagSet) int {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseInt(f.Value.String(), 0, 64)\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn int(val)\n\t}\n\n\treturn 0\n}\n\nfunc lookupInt64(name string, set *flag.FlagSet) int64 {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseInt(f.Value.String(), 0, 64)\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn val\n\t}\n\n\treturn 0\n}\n\nfunc lookupUint(name string, set *flag.FlagSet) uint {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseUint(f.Value.String(), 0, 64)\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn uint(val)\n\t}\n\n\treturn 0\n}\n\nfunc lookupUint64(name string, set *flag.FlagSet) uint64 {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseUint(f.Value.String(), 0, 64)\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn val\n\t}\n\n\treturn 0\n}\n\nfunc lookupDuration(name string, set *flag.FlagSet) time.Duration {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := time.ParseDuration(f.Value.String())\n\t\tif err == nil {\n\t\t\treturn val\n\t\t}\n\t}\n\n\treturn 0\n}\n\nfunc lookupFloat64(name string, set *flag.FlagSet) float64 {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseFloat(f.Value.String(), 64)\n\t\tif err != nil {\n\t\t\treturn 0\n\t\t}\n\t\treturn val\n\t}\n\n\treturn 0\n}\n\nfunc lookupString(name string, set *flag.FlagSet) string {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\treturn f.Value.String()\n\t}\n\n\treturn \"\"\n}\n\nfunc lookupStringSlice(name string, set *flag.FlagSet) []string {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\treturn (f.Value.(*StringSlice)).Value()\n\n\t}\n\n\treturn nil\n}\n\nfunc lookupIntSlice(name string, set *flag.FlagSet) []int {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\treturn (f.Value.(*IntSlice)).Value()\n\n\t}\n\n\treturn nil\n}\n\nfunc lookupInt64Slice(name string, set *flag.FlagSet) []int64 {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\treturn (f.Value.(*Int64Slice)).Value()\n\n\t}\n\n\treturn nil\n}\n\nfunc lookupGeneric(name string, set *flag.FlagSet) interface{} {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\treturn f.Value\n\t}\n\treturn nil\n}\n\nfunc lookupBool(name string, set *flag.FlagSet) bool {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseBool(f.Value.String())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn val\n\t}\n\n\treturn false\n}\n\nfunc lookupBoolT(name string, set *flag.FlagSet) bool {\n\tf := set.Lookup(name)\n\tif f != nil {\n\t\tval, err := strconv.ParseBool(f.Value.String())\n\t\tif err != nil {\n\t\t\treturn true\n\t\t}\n\t\treturn val\n\t}\n\n\treturn false\n}\n\nfunc copyFlag(name string, ff *flag.Flag, set *flag.FlagSet) {\n\tswitch ff.Value.(type) {\n\tcase *StringSlice:\n\tdefault:\n\t\tset.Set(name, ff.Value.String())\n\t}\n}\n\nfunc normalizeFlags(flags []Flag, set *flag.FlagSet) error {\n\tvisited := make(map[string]bool)\n\tset.Visit(func(f *flag.Flag) {\n\t\tvisited[f.Name] = true\n\t})\n\tfor _, f := range flags {\n\t\tparts := strings.Split(f.GetName(), \",\")\n\t\tif len(parts) == 1 {\n\t\t\tcontinue\n\t\t}\n\t\tvar ff *flag.Flag\n\t\tfor _, name := range parts {\n\t\t\tname = strings.Trim(name, \" \")\n\t\t\tif visited[name] {\n\t\t\t\tif ff != nil {\n\t\t\t\t\treturn errors.New(\"Cannot use two forms of the same flag: \" + name + \" \" + ff.Name)\n\t\t\t\t}\n\t\t\t\tff = set.Lookup(name)\n\t\t\t}\n\t\t}\n\t\tif ff == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, name := range parts {\n\t\t\tname = strings.Trim(name, \" \")\n\t\t\tif !visited[name] {\n\t\t\t\tcopyFlag(name, ff, set)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/errors.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\n// OsExiter is the function used when the app exits. If not set defaults to os.Exit.\nvar OsExiter = os.Exit\n\n// ErrWriter is used to write errors to the user. This can be anything\n// implementing the io.Writer interface and defaults to os.Stderr.\nvar ErrWriter io.Writer = os.Stderr\n\n// MultiError is an error that wraps multiple errors.\ntype MultiError struct {\n\tErrors []error\n}\n\n// NewMultiError creates a new MultiError. Pass in one or more errors.\nfunc NewMultiError(err ...error) MultiError {\n\treturn MultiError{Errors: err}\n}\n\n// Error implents the error interface.\nfunc (m MultiError) Error() string {\n\terrs := make([]string, len(m.Errors))\n\tfor i, err := range m.Errors {\n\t\terrs[i] = err.Error()\n\t}\n\n\treturn strings.Join(errs, \"\\n\")\n}\n\n// ExitCoder is the interface checked by `App` and `Command` for a custom exit\n// code\ntype ExitCoder interface {\n\terror\n\tExitCode() int\n}\n\n// ExitError fulfills both the builtin `error` interface and `ExitCoder`\ntype ExitError struct {\n\texitCode int\n\tmessage  string\n}\n\n// NewExitError makes a new *ExitError\nfunc NewExitError(message string, exitCode int) *ExitError {\n\treturn &ExitError{\n\t\texitCode: exitCode,\n\t\tmessage:  message,\n\t}\n}\n\n// Error returns the string message, fulfilling the interface required by\n// `error`\nfunc (ee *ExitError) Error() string {\n\treturn ee.message\n}\n\n// ExitCode returns the exit code, fulfilling the interface required by\n// `ExitCoder`\nfunc (ee *ExitError) ExitCode() int {\n\treturn ee.exitCode\n}\n\n// HandleExitCoder checks if the error fulfills the ExitCoder interface, and if\n// so prints the error to stderr (if it is non-empty) and calls OsExiter with the\n// given exit code.  If the given error is a MultiError, then this func is\n// called on all members of the Errors slice.\nfunc HandleExitCoder(err error) {\n\tif err == nil {\n\t\treturn\n\t}\n\n\tif exitErr, ok := err.(ExitCoder); ok {\n\t\tif err.Error() != \"\" {\n\t\t\tfmt.Fprintln(ErrWriter, err)\n\t\t}\n\t\tOsExiter(exitErr.ExitCode())\n\t\treturn\n\t}\n\n\tif multiErr, ok := err.(MultiError); ok {\n\t\tfor _, merr := range multiErr.Errors {\n\t\t\tHandleExitCoder(merr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/flag.go",
    "content": "package cli\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst defaultPlaceholder = \"value\"\n\n// BashCompletionFlag enables bash-completion for all commands and subcommands\nvar BashCompletionFlag = BoolFlag{\n\tName:   \"generate-bash-completion\",\n\tHidden: true,\n}\n\n// VersionFlag prints the version for the application\nvar VersionFlag = BoolFlag{\n\tName:  \"version, v\",\n\tUsage: \"print the version\",\n}\n\n// HelpFlag prints the help for all commands and subcommands\n// Set to the zero value (BoolFlag{}) to disable flag -- keeps subcommand\n// unless HideHelp is set to true)\nvar HelpFlag = BoolFlag{\n\tName:  \"help, h\",\n\tUsage: \"show help\",\n}\n\n// FlagStringer converts a flag definition to a string. This is used by help\n// to display a flag.\nvar FlagStringer FlagStringFunc = stringifyFlag\n\n// Flag is a common interface related to parsing flags in cli.\n// For more advanced flag parsing techniques, it is recommended that\n// this interface be implemented.\ntype Flag interface {\n\tfmt.Stringer\n\t// Apply Flag settings to the given flag set\n\tApply(*flag.FlagSet)\n\tGetName() string\n}\n\nfunc flagSet(name string, flags []Flag) *flag.FlagSet {\n\tset := flag.NewFlagSet(name, flag.ContinueOnError)\n\n\tfor _, f := range flags {\n\t\tf.Apply(set)\n\t}\n\treturn set\n}\n\nfunc eachName(longName string, fn func(string)) {\n\tparts := strings.Split(longName, \",\")\n\tfor _, name := range parts {\n\t\tname = strings.Trim(name, \" \")\n\t\tfn(name)\n\t}\n}\n\n// Generic is a generic parseable type identified by a specific flag\ntype Generic interface {\n\tSet(value string) error\n\tString() string\n}\n\n// GenericFlag is the flag type for types implementing Generic\ntype GenericFlag struct {\n\tName   string\n\tValue  Generic\n\tUsage  string\n\tEnvVar string\n\tHidden bool\n}\n\n// String returns the string representation of the generic flag to display the\n// help text to the user (uses the String() method of the generic flag to show\n// the value)\nfunc (f GenericFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply takes the flagset and calls Set on the generic flag with the value\n// provided by the user for parsing by the flag\nfunc (f GenericFlag) Apply(set *flag.FlagSet) {\n\tval := f.Value\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tval.Set(envVal)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tset.Var(f.Value, name, f.Usage)\n\t})\n}\n\n// GetName returns the name of a flag.\nfunc (f GenericFlag) GetName() string {\n\treturn f.Name\n}\n\n// StringSlice is an opaque type for []string to satisfy flag.Value\ntype StringSlice []string\n\n// Set appends the string value to the list of values\nfunc (f *StringSlice) Set(value string) error {\n\t*f = append(*f, value)\n\treturn nil\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f *StringSlice) String() string {\n\treturn fmt.Sprintf(\"%s\", *f)\n}\n\n// Value returns the slice of strings set by this flag\nfunc (f *StringSlice) Value() []string {\n\treturn *f\n}\n\n// StringSliceFlag is a string flag that can be specified multiple times on the\n// command-line\ntype StringSliceFlag struct {\n\tName   string\n\tValue  *StringSlice\n\tUsage  string\n\tEnvVar string\n\tHidden bool\n}\n\n// String returns the usage\nfunc (f StringSliceFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f StringSliceFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tnewVal := &StringSlice{}\n\t\t\t\tfor _, s := range strings.Split(envVal, \",\") {\n\t\t\t\t\ts = strings.TrimSpace(s)\n\t\t\t\t\tnewVal.Set(s)\n\t\t\t\t}\n\t\t\t\tf.Value = newVal\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Value == nil {\n\t\t\tf.Value = &StringSlice{}\n\t\t}\n\t\tset.Var(f.Value, name, f.Usage)\n\t})\n}\n\n// GetName returns the name of a flag.\nfunc (f StringSliceFlag) GetName() string {\n\treturn f.Name\n}\n\n// IntSlice is an opaque type for []int to satisfy flag.Value\ntype IntSlice []int\n\n// Set parses the value into an integer and appends it to the list of values\nfunc (f *IntSlice) Set(value string) error {\n\ttmp, err := strconv.Atoi(value)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*f = append(*f, tmp)\n\treturn nil\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f *IntSlice) String() string {\n\treturn fmt.Sprintf(\"%#v\", *f)\n}\n\n// Value returns the slice of ints set by this flag\nfunc (f *IntSlice) Value() []int {\n\treturn *f\n}\n\n// IntSliceFlag is an int flag that can be specified multiple times on the\n// command-line\ntype IntSliceFlag struct {\n\tName   string\n\tValue  *IntSlice\n\tUsage  string\n\tEnvVar string\n\tHidden bool\n}\n\n// String returns the usage\nfunc (f IntSliceFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f IntSliceFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tnewVal := &IntSlice{}\n\t\t\t\tfor _, s := range strings.Split(envVal, \",\") {\n\t\t\t\t\ts = strings.TrimSpace(s)\n\t\t\t\t\terr := newVal.Set(s)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tfmt.Fprintf(ErrWriter, err.Error())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tf.Value = newVal\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Value == nil {\n\t\t\tf.Value = &IntSlice{}\n\t\t}\n\t\tset.Var(f.Value, name, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f IntSliceFlag) GetName() string {\n\treturn f.Name\n}\n\n// Int64Slice is an opaque type for []int to satisfy flag.Value\ntype Int64Slice []int64\n\n// Set parses the value into an integer and appends it to the list of values\nfunc (f *Int64Slice) Set(value string) error {\n\ttmp, err := strconv.ParseInt(value, 10, 64)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*f = append(*f, tmp)\n\treturn nil\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f *Int64Slice) String() string {\n\treturn fmt.Sprintf(\"%#v\", *f)\n}\n\n// Value returns the slice of ints set by this flag\nfunc (f *Int64Slice) Value() []int64 {\n\treturn *f\n}\n\n// Int64SliceFlag is an int flag that can be specified multiple times on the\n// command-line\ntype Int64SliceFlag struct {\n\tName   string\n\tValue  *Int64Slice\n\tUsage  string\n\tEnvVar string\n\tHidden bool\n}\n\n// String returns the usage\nfunc (f Int64SliceFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f Int64SliceFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tnewVal := &Int64Slice{}\n\t\t\t\tfor _, s := range strings.Split(envVal, \",\") {\n\t\t\t\t\ts = strings.TrimSpace(s)\n\t\t\t\t\terr := newVal.Set(s)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tfmt.Fprintf(ErrWriter, err.Error())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tf.Value = newVal\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Value == nil {\n\t\t\tf.Value = &Int64Slice{}\n\t\t}\n\t\tset.Var(f.Value, name, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f Int64SliceFlag) GetName() string {\n\treturn f.Name\n}\n\n// BoolFlag is a switch that defaults to false\ntype BoolFlag struct {\n\tName        string\n\tUsage       string\n\tEnvVar      string\n\tDestination *bool\n\tHidden      bool\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f BoolFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f BoolFlag) Apply(set *flag.FlagSet) {\n\tval := false\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValBool, err := strconv.ParseBool(envVal)\n\t\t\t\tif err == nil {\n\t\t\t\t\tval = envValBool\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.BoolVar(f.Destination, name, val, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Bool(name, val, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f BoolFlag) GetName() string {\n\treturn f.Name\n}\n\n// BoolTFlag this represents a boolean flag that is true by default, but can\n// still be set to false by --some-flag=false\ntype BoolTFlag struct {\n\tName        string\n\tUsage       string\n\tEnvVar      string\n\tDestination *bool\n\tHidden      bool\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f BoolTFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f BoolTFlag) Apply(set *flag.FlagSet) {\n\tval := true\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValBool, err := strconv.ParseBool(envVal)\n\t\t\t\tif err == nil {\n\t\t\t\t\tval = envValBool\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.BoolVar(f.Destination, name, val, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Bool(name, val, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f BoolTFlag) GetName() string {\n\treturn f.Name\n}\n\n// StringFlag represents a flag that takes as string value\ntype StringFlag struct {\n\tName        string\n\tValue       string\n\tUsage       string\n\tEnvVar      string\n\tDestination *string\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f StringFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f StringFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tf.Value = envVal\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.StringVar(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.String(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f StringFlag) GetName() string {\n\treturn f.Name\n}\n\n// IntFlag is a flag that takes an integer\ntype IntFlag struct {\n\tName        string\n\tValue       int\n\tUsage       string\n\tEnvVar      string\n\tDestination *int\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f IntFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f IntFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValInt, err := strconv.ParseInt(envVal, 0, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = int(envValInt)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.IntVar(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Int(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f IntFlag) GetName() string {\n\treturn f.Name\n}\n\n// Int64Flag is a flag that takes a 64-bit integer\ntype Int64Flag struct {\n\tName        string\n\tValue       int64\n\tUsage       string\n\tEnvVar      string\n\tDestination *int64\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f Int64Flag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f Int64Flag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValInt, err := strconv.ParseInt(envVal, 0, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = envValInt\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.Int64Var(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Int64(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f Int64Flag) GetName() string {\n\treturn f.Name\n}\n\n// UintFlag is a flag that takes an unsigned integer\ntype UintFlag struct {\n\tName        string\n\tValue       uint\n\tUsage       string\n\tEnvVar      string\n\tDestination *uint\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f UintFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f UintFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValInt, err := strconv.ParseUint(envVal, 0, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = uint(envValInt)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.UintVar(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Uint(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f UintFlag) GetName() string {\n\treturn f.Name\n}\n\n// Uint64Flag is a flag that takes an unsigned 64-bit integer\ntype Uint64Flag struct {\n\tName        string\n\tValue       uint64\n\tUsage       string\n\tEnvVar      string\n\tDestination *uint64\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f Uint64Flag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f Uint64Flag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValInt, err := strconv.ParseUint(envVal, 0, 64)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = uint64(envValInt)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.Uint64Var(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Uint64(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f Uint64Flag) GetName() string {\n\treturn f.Name\n}\n\n// DurationFlag is a flag that takes a duration specified in Go's duration\n// format: https://golang.org/pkg/time/#ParseDuration\ntype DurationFlag struct {\n\tName        string\n\tValue       time.Duration\n\tUsage       string\n\tEnvVar      string\n\tDestination *time.Duration\n\tHidden      bool\n}\n\n// String returns a readable representation of this value (for usage defaults)\nfunc (f DurationFlag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f DurationFlag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValDuration, err := time.ParseDuration(envVal)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = envValDuration\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.DurationVar(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Duration(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f DurationFlag) GetName() string {\n\treturn f.Name\n}\n\n// Float64Flag is a flag that takes an float value\ntype Float64Flag struct {\n\tName        string\n\tValue       float64\n\tUsage       string\n\tEnvVar      string\n\tDestination *float64\n\tHidden      bool\n}\n\n// String returns the usage\nfunc (f Float64Flag) String() string {\n\treturn FlagStringer(f)\n}\n\n// Apply populates the flag given the flag set and environment\nfunc (f Float64Flag) Apply(set *flag.FlagSet) {\n\tif f.EnvVar != \"\" {\n\t\tfor _, envVar := range strings.Split(f.EnvVar, \",\") {\n\t\t\tenvVar = strings.TrimSpace(envVar)\n\t\t\tif envVal := os.Getenv(envVar); envVal != \"\" {\n\t\t\t\tenvValFloat, err := strconv.ParseFloat(envVal, 10)\n\t\t\t\tif err == nil {\n\t\t\t\t\tf.Value = float64(envValFloat)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\teachName(f.Name, func(name string) {\n\t\tif f.Destination != nil {\n\t\t\tset.Float64Var(f.Destination, name, f.Value, f.Usage)\n\t\t\treturn\n\t\t}\n\t\tset.Float64(name, f.Value, f.Usage)\n\t})\n}\n\n// GetName returns the name of the flag.\nfunc (f Float64Flag) GetName() string {\n\treturn f.Name\n}\n\nfunc visibleFlags(fl []Flag) []Flag {\n\tvisible := []Flag{}\n\tfor _, flag := range fl {\n\t\tif !flagValue(flag).FieldByName(\"Hidden\").Bool() {\n\t\t\tvisible = append(visible, flag)\n\t\t}\n\t}\n\treturn visible\n}\n\nfunc prefixFor(name string) (prefix string) {\n\tif len(name) == 1 {\n\t\tprefix = \"-\"\n\t} else {\n\t\tprefix = \"--\"\n\t}\n\n\treturn\n}\n\n// Returns the placeholder, if any, and the unquoted usage string.\nfunc unquoteUsage(usage string) (string, string) {\n\tfor i := 0; i < len(usage); i++ {\n\t\tif usage[i] == '`' {\n\t\t\tfor j := i + 1; j < len(usage); j++ {\n\t\t\t\tif usage[j] == '`' {\n\t\t\t\t\tname := usage[i+1 : j]\n\t\t\t\t\tusage = usage[:i] + name + usage[j+1:]\n\t\t\t\t\treturn name, usage\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn \"\", usage\n}\n\nfunc prefixedNames(fullName, placeholder string) string {\n\tvar prefixed string\n\tparts := strings.Split(fullName, \",\")\n\tfor i, name := range parts {\n\t\tname = strings.Trim(name, \" \")\n\t\tprefixed += prefixFor(name) + name\n\t\tif placeholder != \"\" {\n\t\t\tprefixed += \" \" + placeholder\n\t\t}\n\t\tif i < len(parts)-1 {\n\t\t\tprefixed += \", \"\n\t\t}\n\t}\n\treturn prefixed\n}\n\nfunc withEnvHint(envVar, str string) string {\n\tenvText := \"\"\n\tif envVar != \"\" {\n\t\tprefix := \"$\"\n\t\tsuffix := \"\"\n\t\tsep := \", $\"\n\t\tif runtime.GOOS == \"windows\" {\n\t\t\tprefix = \"%\"\n\t\t\tsuffix = \"%\"\n\t\t\tsep = \"%, %\"\n\t\t}\n\t\tenvText = fmt.Sprintf(\" [%s%s%s]\", prefix, strings.Join(strings.Split(envVar, \",\"), sep), suffix)\n\t}\n\treturn str + envText\n}\n\nfunc flagValue(f Flag) reflect.Value {\n\tfv := reflect.ValueOf(f)\n\tfor fv.Kind() == reflect.Ptr {\n\t\tfv = reflect.Indirect(fv)\n\t}\n\treturn fv\n}\n\nfunc stringifyFlag(f Flag) string {\n\tfv := flagValue(f)\n\n\tswitch f.(type) {\n\tcase IntSliceFlag:\n\t\treturn withEnvHint(fv.FieldByName(\"EnvVar\").String(),\n\t\t\tstringifyIntSliceFlag(f.(IntSliceFlag)))\n\tcase Int64SliceFlag:\n\t\treturn withEnvHint(fv.FieldByName(\"EnvVar\").String(),\n\t\t\tstringifyInt64SliceFlag(f.(Int64SliceFlag)))\n\tcase StringSliceFlag:\n\t\treturn withEnvHint(fv.FieldByName(\"EnvVar\").String(),\n\t\t\tstringifyStringSliceFlag(f.(StringSliceFlag)))\n\t}\n\n\tplaceholder, usage := unquoteUsage(fv.FieldByName(\"Usage\").String())\n\n\tneedsPlaceholder := false\n\tdefaultValueString := \"\"\n\tval := fv.FieldByName(\"Value\")\n\n\tif val.IsValid() {\n\t\tneedsPlaceholder = true\n\t\tdefaultValueString = fmt.Sprintf(\" (default: %v)\", val.Interface())\n\n\t\tif val.Kind() == reflect.String && val.String() != \"\" {\n\t\t\tdefaultValueString = fmt.Sprintf(\" (default: %q)\", val.String())\n\t\t}\n\t}\n\n\tif defaultValueString == \" (default: )\" {\n\t\tdefaultValueString = \"\"\n\t}\n\n\tif needsPlaceholder && placeholder == \"\" {\n\t\tplaceholder = defaultPlaceholder\n\t}\n\n\tusageWithDefault := strings.TrimSpace(fmt.Sprintf(\"%s%s\", usage, defaultValueString))\n\n\treturn withEnvHint(fv.FieldByName(\"EnvVar\").String(),\n\t\tfmt.Sprintf(\"%s\\t%s\", prefixedNames(fv.FieldByName(\"Name\").String(), placeholder), usageWithDefault))\n}\n\nfunc stringifyIntSliceFlag(f IntSliceFlag) string {\n\tdefaultVals := []string{}\n\tif f.Value != nil && len(f.Value.Value()) > 0 {\n\t\tfor _, i := range f.Value.Value() {\n\t\t\tdefaultVals = append(defaultVals, fmt.Sprintf(\"%d\", i))\n\t\t}\n\t}\n\n\treturn stringifySliceFlag(f.Usage, f.Name, defaultVals)\n}\n\nfunc stringifyInt64SliceFlag(f Int64SliceFlag) string {\n\tdefaultVals := []string{}\n\tif f.Value != nil && len(f.Value.Value()) > 0 {\n\t\tfor _, i := range f.Value.Value() {\n\t\t\tdefaultVals = append(defaultVals, fmt.Sprintf(\"%d\", i))\n\t\t}\n\t}\n\n\treturn stringifySliceFlag(f.Usage, f.Name, defaultVals)\n}\n\nfunc stringifyStringSliceFlag(f StringSliceFlag) string {\n\tdefaultVals := []string{}\n\tif f.Value != nil && len(f.Value.Value()) > 0 {\n\t\tfor _, s := range f.Value.Value() {\n\t\t\tif len(s) > 0 {\n\t\t\t\tdefaultVals = append(defaultVals, fmt.Sprintf(\"%q\", s))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn stringifySliceFlag(f.Usage, f.Name, defaultVals)\n}\n\nfunc stringifySliceFlag(usage, name string, defaultVals []string) string {\n\tplaceholder, usage := unquoteUsage(usage)\n\tif placeholder == \"\" {\n\t\tplaceholder = defaultPlaceholder\n\t}\n\n\tdefaultVal := \"\"\n\tif len(defaultVals) > 0 {\n\t\tdefaultVal = fmt.Sprintf(\" (default: %s)\", strings.Join(defaultVals, \", \"))\n\t}\n\n\tusageWithDefault := strings.TrimSpace(fmt.Sprintf(\"%s%s\", usage, defaultVal))\n\treturn fmt.Sprintf(\"%s\\t%s\", prefixedNames(name, placeholder), usageWithDefault)\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/funcs.go",
    "content": "package cli\n\n// BashCompleteFunc is an action to execute when the bash-completion flag is set\ntype BashCompleteFunc func(*Context)\n\n// BeforeFunc is an action to execute before any subcommands are run, but after\n// the context is ready if a non-nil error is returned, no subcommands are run\ntype BeforeFunc func(*Context) error\n\n// AfterFunc is an action to execute after any subcommands are run, but after the\n// subcommand has finished it is run even if Action() panics\ntype AfterFunc func(*Context) error\n\n// ActionFunc is the action to execute when no subcommands are specified\ntype ActionFunc func(*Context) error\n\n// CommandNotFoundFunc is executed if the proper command cannot be found\ntype CommandNotFoundFunc func(*Context, string)\n\n// OnUsageErrorFunc is executed if an usage error occurs. This is useful for displaying\n// customized usage error messages.  This function is able to replace the\n// original error messages.  If this function is not set, the \"Incorrect usage\"\n// is displayed and the execution is interrupted.\ntype OnUsageErrorFunc func(context *Context, err error, isSubcommand bool) error\n\n// FlagStringFunc is used by the help generation to display a flag, which is\n// expected to be a single line.\ntype FlagStringFunc func(Flag) string\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/help.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"text/tabwriter\"\n\t\"text/template\"\n)\n\n// AppHelpTemplate is the text template for the Default help topic.\n// cli.go uses text/template to render templates. You can\n// render custom help text by setting this variable.\nvar AppHelpTemplate = `NAME:\n   {{.Name}} - {{.Usage}}\n\nUSAGE:\n   {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}\n   {{if .Version}}{{if not .HideVersion}}\nVERSION:\n   {{.Version}}\n   {{end}}{{end}}{{if len .Authors}}\nAUTHOR(S):\n   {{range .Authors}}{{.}}{{end}}\n   {{end}}{{if .VisibleCommands}}\nCOMMANDS:{{range .VisibleCategories}}{{if .Name}}\n   {{.Name}}:{{end}}{{range .VisibleCommands}}\n     {{join .Names \", \"}}{{\"\\t\"}}{{.Usage}}{{end}}\n{{end}}{{end}}{{if .VisibleFlags}}\nGLOBAL OPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}{{if .Copyright}}\nCOPYRIGHT:\n   {{.Copyright}}\n   {{end}}\n`\n\n// CommandHelpTemplate is the text template for the command help topic.\n// cli.go uses text/template to render templates. You can\n// render custom help text by setting this variable.\nvar CommandHelpTemplate = `NAME:\n   {{.HelpName}} - {{.Usage}}\n\nUSAGE:\n   {{.HelpName}}{{if .VisibleFlags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{if .Category}}\n\nCATEGORY:\n   {{.Category}}{{end}}{{if .Description}}\n\nDESCRIPTION:\n   {{.Description}}{{end}}{{if .VisibleFlags}}\n\nOPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}\n`\n\n// SubcommandHelpTemplate is the text template for the subcommand help topic.\n// cli.go uses text/template to render templates. You can\n// render custom help text by setting this variable.\nvar SubcommandHelpTemplate = `NAME:\n   {{.HelpName}} - {{.Usage}}\n\nUSAGE:\n   {{.HelpName}} command{{if .VisibleFlags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}\n\nCOMMANDS:{{range .VisibleCategories}}{{if .Name}}\n   {{.Name}}:{{end}}{{range .VisibleCommands}}\n     {{join .Names \", \"}}{{\"\\t\"}}{{.Usage}}{{end}}\n{{end}}{{if .VisibleFlags}}\nOPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}\n`\n\nvar helpCommand = Command{\n\tName:      \"help\",\n\tAliases:   []string{\"h\"},\n\tUsage:     \"Shows a list of commands or help for one command\",\n\tArgsUsage: \"[command]\",\n\tAction: func(c *Context) error {\n\t\targs := c.Args()\n\t\tif args.Present() {\n\t\t\treturn ShowCommandHelp(c, args.First())\n\t\t}\n\n\t\tShowAppHelp(c)\n\t\treturn nil\n\t},\n}\n\nvar helpSubcommand = Command{\n\tName:      \"help\",\n\tAliases:   []string{\"h\"},\n\tUsage:     \"Shows a list of commands or help for one command\",\n\tArgsUsage: \"[command]\",\n\tAction: func(c *Context) error {\n\t\targs := c.Args()\n\t\tif args.Present() {\n\t\t\treturn ShowCommandHelp(c, args.First())\n\t\t}\n\n\t\treturn ShowSubcommandHelp(c)\n\t},\n}\n\n// Prints help for the App or Command\ntype helpPrinter func(w io.Writer, templ string, data interface{})\n\n// HelpPrinter is a function that writes the help output. If not set a default\n// is used. The function signature is:\n// func(w io.Writer, templ string, data interface{})\nvar HelpPrinter helpPrinter = printHelp\n\n// VersionPrinter prints the version for the App\nvar VersionPrinter = printVersion\n\n// ShowAppHelp is an action that displays the help.\nfunc ShowAppHelp(c *Context) error {\n\tHelpPrinter(c.App.Writer, AppHelpTemplate, c.App)\n\treturn nil\n}\n\n// DefaultAppComplete prints the list of subcommands as the default app completion method\nfunc DefaultAppComplete(c *Context) {\n\tfor _, command := range c.App.Commands {\n\t\tif command.Hidden {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, name := range command.Names() {\n\t\t\tfmt.Fprintln(c.App.Writer, name)\n\t\t}\n\t}\n}\n\n// ShowCommandHelp prints help for the given command\nfunc ShowCommandHelp(ctx *Context, command string) error {\n\t// show the subcommand help for a command with subcommands\n\tif command == \"\" {\n\t\tHelpPrinter(ctx.App.Writer, SubcommandHelpTemplate, ctx.App)\n\t\treturn nil\n\t}\n\n\tfor _, c := range ctx.App.Commands {\n\t\tif c.HasName(command) {\n\t\t\tHelpPrinter(ctx.App.Writer, CommandHelpTemplate, c)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif ctx.App.CommandNotFound == nil {\n\t\treturn NewExitError(fmt.Sprintf(\"No help topic for '%v'\", command), 3)\n\t}\n\n\tctx.App.CommandNotFound(ctx, command)\n\treturn nil\n}\n\n// ShowSubcommandHelp prints help for the given subcommand\nfunc ShowSubcommandHelp(c *Context) error {\n\treturn ShowCommandHelp(c, c.Command.Name)\n}\n\n// ShowVersion prints the version number of the App\nfunc ShowVersion(c *Context) {\n\tVersionPrinter(c)\n}\n\nfunc printVersion(c *Context) {\n\tfmt.Fprintf(c.App.Writer, \"%v version %v\\n\", c.App.Name, c.App.Version)\n}\n\n// ShowCompletions prints the lists of commands within a given context\nfunc ShowCompletions(c *Context) {\n\ta := c.App\n\tif a != nil && a.BashComplete != nil {\n\t\ta.BashComplete(c)\n\t}\n}\n\n// ShowCommandCompletions prints the custom completions for a given command\nfunc ShowCommandCompletions(ctx *Context, command string) {\n\tc := ctx.App.Command(command)\n\tif c != nil && c.BashComplete != nil {\n\t\tc.BashComplete(ctx)\n\t}\n}\n\nfunc printHelp(out io.Writer, templ string, data interface{}) {\n\tfuncMap := template.FuncMap{\n\t\t\"join\": strings.Join,\n\t}\n\n\tw := tabwriter.NewWriter(out, 1, 8, 2, ' ', 0)\n\tt := template.Must(template.New(\"help\").Funcs(funcMap).Parse(templ))\n\terr := t.Execute(w, data)\n\tif err != nil {\n\t\t// If the writer is closed, t.Execute will fail, and there's nothing\n\t\t// we can do to recover.\n\t\tif os.Getenv(\"CLI_TEMPLATE_ERROR_DEBUG\") != \"\" {\n\t\t\tfmt.Fprintf(ErrWriter, \"CLI TEMPLATE ERROR: %#v\\n\", err)\n\t\t}\n\t\treturn\n\t}\n\tw.Flush()\n}\n\nfunc checkVersion(c *Context) bool {\n\tfound := false\n\tif VersionFlag.Name != \"\" {\n\t\teachName(VersionFlag.Name, func(name string) {\n\t\t\tif c.GlobalBool(name) || c.Bool(name) {\n\t\t\t\tfound = true\n\t\t\t}\n\t\t})\n\t}\n\treturn found\n}\n\nfunc checkHelp(c *Context) bool {\n\tfound := false\n\tif HelpFlag.Name != \"\" {\n\t\teachName(HelpFlag.Name, func(name string) {\n\t\t\tif c.GlobalBool(name) || c.Bool(name) {\n\t\t\t\tfound = true\n\t\t\t}\n\t\t})\n\t}\n\treturn found\n}\n\nfunc checkCommandHelp(c *Context, name string) bool {\n\tif c.Bool(\"h\") || c.Bool(\"help\") {\n\t\tShowCommandHelp(c, name)\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc checkSubcommandHelp(c *Context) bool {\n\tif c.GlobalBool(\"h\") || c.GlobalBool(\"help\") {\n\t\tShowSubcommandHelp(c)\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc checkCompletions(c *Context) bool {\n\tif (c.GlobalBool(BashCompletionFlag.Name) || c.Bool(BashCompletionFlag.Name)) && c.App.EnableBashCompletion {\n\t\tShowCompletions(c)\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc checkCommandCompletions(c *Context, name string) bool {\n\tif c.Bool(BashCompletionFlag.Name) && c.App.EnableBashCompletion {\n\t\tShowCommandCompletions(c, name)\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/codegangsta/cli/runtests",
    "content": "#!/usr/bin/env python\nfrom __future__ import print_function\n\nimport argparse\nimport os\nimport sys\nimport tempfile\n\nfrom subprocess import check_call, check_output\n\n\nPACKAGE_NAME = os.environ.get(\n    'CLI_PACKAGE_NAME', 'github.com/urfave/cli'\n)\n\n\ndef main(sysargs=sys.argv[:]):\n    targets = {\n        'vet': _vet,\n        'test': _test,\n        'gfmxr': _gfmxr,\n        'toc': _toc,\n    }\n\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\n        'target', nargs='?', choices=tuple(targets.keys()), default='test'\n    )\n    args = parser.parse_args(sysargs[1:])\n\n    targets[args.target]()\n    return 0\n\n\ndef _test():\n    if check_output('go version'.split()).split()[2] < 'go1.2':\n        _run('go test -v .'.split())\n        return\n\n    coverprofiles = []\n    for subpackage in ['', 'altsrc']:\n        coverprofile = 'cli.coverprofile'\n        if subpackage != '':\n            coverprofile = '{}.coverprofile'.format(subpackage)\n\n        coverprofiles.append(coverprofile)\n\n        _run('go test -v'.split() + [\n            '-coverprofile={}'.format(coverprofile),\n            ('{}/{}'.format(PACKAGE_NAME, subpackage)).rstrip('/')\n        ])\n\n    combined_name = _combine_coverprofiles(coverprofiles)\n    _run('go tool cover -func={}'.format(combined_name).split())\n    os.remove(combined_name)\n\n\ndef _gfmxr():\n    _run(['gfmxr', '-c', str(_gfmxr_count()), '-s', 'README.md'])\n\n\ndef _vet():\n    _run('go vet ./...'.split())\n\n\ndef _toc():\n    _run(['node_modules/.bin/markdown-toc', '-i', 'README.md'])\n    _run(['git', 'diff', '--quiet'])\n\n\ndef _run(command):\n    print('runtests: {}'.format(' '.join(command)), file=sys.stderr)\n    check_call(command)\n\n\ndef _gfmxr_count():\n    with open('README.md') as infile:\n        lines = infile.read().splitlines()\n        return len(filter(_is_go_runnable, lines))\n\n\ndef _is_go_runnable(line):\n    return line.startswith('package main')\n\n\ndef _combine_coverprofiles(coverprofiles):\n    combined = tempfile.NamedTemporaryFile(\n        suffix='.coverprofile', delete=False\n    )\n    combined.write('mode: set\\n')\n\n    for coverprofile in coverprofiles:\n        with open(coverprofile, 'r') as infile:\n            for line in infile.readlines():\n                if not line.startswith('mode: '):\n                    combined.write(line)\n\n    combined.flush()\n    name = combined.name\n    combined.close()\n    return name\n\n\nif __name__ == '__main__':\n    sys.exit(main())\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/LICENSE",
    "content": "\nCopyright (c) 2011-2014 - Canonical Inc.\n\nThis software is licensed under the LGPLv3, included below.\n\nAs a special exception to the GNU Lesser General Public License version 3\n(\"LGPL3\"), the copyright holders of this Library give you permission to\nconvey to a third party a Combined Work that links statically or dynamically\nto this Library without providing any Minimal Corresponding Source or\nMinimal Application Code as set out in 4d or providing the installation\ninformation set out in section 4e, provided that you comply with the other\nprovisions of LGPL3 and provided that you meet, for the Application the\nterms and conditions of the license(s) which apply to the Application.\n\nExcept as stated in this special exception, the provisions of LGPL3 will\ncontinue to comply in full to this Library. If you modify this Library, you\nmay apply this exception to your version of this Library, but you are not\nobliged to do so. If you do not wish to do so, delete this exception\nstatement from your version. This exception does not (and cannot) modify any\nlicense terms which apply to the Application, with which you must still\ncomply.\n\n\n                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary.\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/LICENSE.libyaml",
    "content": "The following files were ported to Go from C files of libyaml, and thus\nare still covered by their original copyright and license:\n\n    apic.go\n    emitterc.go\n    parserc.go\n    readerc.go\n    scannerc.go\n    writerc.go\n    yamlh.go\n    yamlprivateh.go\n\nCopyright (c) 2006 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"
  },
  {
    "path": "vendor/github.com/coreos/yaml/README.md",
    "content": "Note: This is a fork of https://github.com/go-yaml/yaml. The following README\ndoesn't necessarily apply to this fork.\n\n# 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.1 and 1.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.v1*.\n\nTo install it, run:\n\n    go get gopkg.in/yaml.v1\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.v1](https://gopkg.in/yaml.v1)\n\nAPI stability\n-------------\n\nThe package API for yaml v1 will remain stable as described in [gopkg.in](https://gopkg.in).\n\n\nLicense\n-------\n\nThe yaml package is licensed under the LGPL with an exception that allows it to be linked statically. Please 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.v1\"\n)\n\nvar data = `\na: Easy!\nb:\n  c: 2\n  d: [3, 4]\n`\n\ntype T struct {\n        A string\n        B struct{C int; D []int \",flow\"}\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/github.com/coreos/yaml/apic.go",
    "content": "package yaml\n\nimport (\n\t\"io\"\n\t\"os\"\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// File read handler.\nfunc yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {\n\treturn parser.input_file.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_file(parser *yaml_parser_t, file *os.File) {\n\tif parser.read_handler != nil {\n\t\tpanic(\"must set the input source only once\")\n\t}\n\tparser.read_handler = yaml_file_read_handler\n\tparser.input_file = file\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) bool {\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}\n\treturn true\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// File write handler.\nfunc yaml_file_write_handler(emitter *yaml_emitter_t, buffer []byte) error {\n\t_, err := emitter.output_file.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_file(emitter *yaml_emitter_t, file 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_file_write_handler\n\temitter.output_file = file\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) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_STREAM_START_EVENT,\n\t\tencoding: encoding,\n\t}\n\treturn true\n}\n\n// Create STREAM-END.\nfunc yaml_stream_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_STREAM_END_EVENT,\n\t}\n\treturn true\n}\n\n// Create DOCUMENT-START.\nfunc yaml_document_start_event_initialize(event *yaml_event_t, version_directive *yaml_version_directive_t,\n\ttag_directives []yaml_tag_directive_t, implicit bool) bool {\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\treturn true\n}\n\n// Create DOCUMENT-END.\nfunc yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) bool {\n\t*event = yaml_event_t{\n\t\ttyp:      yaml_DOCUMENT_END_EVENT,\n\t\timplicit: implicit,\n\t}\n\treturn true\n}\n\n///*\n// * Create ALIAS.\n// */\n//\n//YAML_DECLARE(int)\n//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t)\n//{\n//    mark yaml_mark_t = { 0, 0, 0 }\n//    anchor_copy *yaml_char_t = NULL\n//\n//    assert(event) // Non-NULL event object is expected.\n//    assert(anchor) // Non-NULL anchor is expected.\n//\n//    if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0\n//\n//    anchor_copy = yaml_strdup(anchor)\n//    if (!anchor_copy)\n//        return 0\n//\n//    ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark)\n//\n//    return 1\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) bool {\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\treturn true\n}\n\n// Create MAPPING-END.\nfunc yaml_mapping_end_event_initialize(event *yaml_event_t) bool {\n\t*event = yaml_event_t{\n\t\ttyp: yaml_MAPPING_END_EVENT,\n\t}\n\treturn true\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 compliler 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/github.com/coreos/yaml/decode.go",
    "content": "package yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n)\n\nconst (\n\tdocumentNode = 1 << iota\n\tmappingNode\n\tsequenceNode\n\tscalarNode\n\taliasNode\n)\n\ntype node struct {\n\tkind         int\n\tline, column int\n\ttag          string\n\tvalue        string\n\timplicit     bool\n\tchildren     []*node\n\tanchors      map[string]*node\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\ttransform transformString\n}\n\nfunc newParser(b []byte, t transformString) *parser {\n\tp := parser{transform: t}\n\n\tif !yaml_parser_initialize(&p.parser) {\n\t\tpanic(\"Failed to initialize YAML emitter\")\n\t}\n\n\tif len(b) == 0 {\n\t\tb = []byte{'\\n'}\n\t}\n\n\tyaml_parser_set_input_string(&p.parser, b)\n\n\tp.skip()\n\tif p.event.typ != yaml_STREAM_START_EVENT {\n\t\tpanic(\"Expected stream start event, got \" + strconv.Itoa(int(p.event.typ)))\n\t}\n\tp.skip()\n\treturn &p\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\nfunc (p *parser) skip() {\n\tif p.event.typ != yaml_NO_EVENT {\n\t\tif p.event.typ == yaml_STREAM_END_EVENT {\n\t\t\tfail(\"Attempted to go past the end of stream. Corrupted value?\")\n\t\t}\n\t\tyaml_event_delete(&p.event)\n\t}\n\tif !yaml_parser_parse(&p.parser, &p.event) {\n\t\tp.fail()\n\t}\n}\n\nfunc (p *parser) fail() {\n\tvar where string\n\tvar line int\n\tif p.parser.problem_mark.line != 0 {\n\t\tline = p.parser.problem_mark.line\n\t} else if p.parser.context_mark.line != 0 {\n\t\tline = p.parser.context_mark.line\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\tfail(where + msg)\n}\n\nfunc (p *parser) anchor(n *node, anchor []byte) {\n\tif anchor != nil {\n\t\tp.doc.anchors[string(anchor)] = n\n\t}\n}\n\nfunc (p *parser) parse() *node {\n\tswitch p.event.typ {\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\tdefault:\n\t\tpanic(\"Attempted to parse unknown event: \" + strconv.Itoa(int(p.event.typ)))\n\t}\n\tpanic(\"unreachable\")\n}\n\nfunc (p *parser) node(kind int) *node {\n\treturn &node{\n\t\tkind:   kind,\n\t\tline:   p.event.start_mark.line,\n\t\tcolumn: p.event.start_mark.column,\n\t}\n}\n\nfunc (p *parser) document() *node {\n\tn := p.node(documentNode)\n\tn.anchors = make(map[string]*node)\n\tp.doc = n\n\tp.skip()\n\tn.children = append(n.children, p.parse())\n\tif p.event.typ != yaml_DOCUMENT_END_EVENT {\n\t\tpanic(\"Expected end of document event but got \" + strconv.Itoa(int(p.event.typ)))\n\t}\n\tp.skip()\n\treturn n\n}\n\nfunc (p *parser) alias() *node {\n\tn := p.node(aliasNode)\n\tn.value = string(p.event.anchor)\n\tp.skip()\n\treturn n\n}\n\nfunc (p *parser) scalar() *node {\n\tn := p.node(scalarNode)\n\tn.value = string(p.event.value)\n\tn.tag = string(p.event.tag)\n\tn.implicit = p.event.implicit\n\tp.anchor(n, p.event.anchor)\n\tp.skip()\n\treturn n\n}\n\nfunc (p *parser) sequence() *node {\n\tn := p.node(sequenceNode)\n\tp.anchor(n, p.event.anchor)\n\tp.skip()\n\tfor p.event.typ != yaml_SEQUENCE_END_EVENT {\n\t\tn.children = append(n.children, p.parse())\n\t}\n\tp.skip()\n\treturn n\n}\n\nfunc (p *parser) mapping() *node {\n\tn := p.node(mappingNode)\n\tp.anchor(n, p.event.anchor)\n\tp.skip()\n\tfor p.event.typ != yaml_MAPPING_END_EVENT {\n\t\tkey := p.parse()\n\t\tkey.value = p.transform(key.value)\n\t\tvalue := p.parse()\n\t\tn.children = append(n.children, key, value)\n\t}\n\tp.skip()\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[string]bool\n}\n\nfunc newDecoder() *decoder {\n\td := &decoder{}\n\td.aliases = make(map[string]bool)\n\treturn d\n}\n\n// d.setter deals with setters and pointer dereferencing and initialization.\n//\n// It's a slightly convoluted case to handle properly:\n//\n// - nil pointers should be initialized, unless being set to nil\n// - we don't know at this point yet what's the value to SetYAML() with.\n// - we can't separate pointer deref/init and setter checking, because\n//   a setter may be found while going down a pointer chain.\n//\n// Thus, here is how it takes care of it:\n//\n// - out is provided as a pointer, so that it can be replaced.\n// - when looking at a non-setter ptr, *out=ptr.Elem(), unless tag=!!null\n// - when a setter is found, *out=interface{}, and a set() function is\n//   returned to call SetYAML() with the value of *out once it's defined.\n//\nfunc (d *decoder) setter(tag string, out *reflect.Value, good *bool) (set func()) {\n\tif (*out).Kind() != reflect.Ptr && (*out).CanAddr() {\n\t\tsetter, _ := (*out).Addr().Interface().(Setter)\n\t\tif setter != nil {\n\t\t\tvar arg interface{}\n\t\t\t*out = reflect.ValueOf(&arg).Elem()\n\t\t\treturn func() {\n\t\t\t\t*good = setter.SetYAML(shortTag(tag), arg)\n\t\t\t}\n\t\t}\n\t}\n\tagain := true\n\tfor again {\n\t\tagain = false\n\t\tsetter, _ := (*out).Interface().(Setter)\n\t\tif tag != yaml_NULL_TAG || setter != nil {\n\t\t\tif pv := (*out); pv.Kind() == reflect.Ptr {\n\t\t\t\tif pv.IsNil() {\n\t\t\t\t\t*out = reflect.New(pv.Type().Elem()).Elem()\n\t\t\t\t\tpv.Set((*out).Addr())\n\t\t\t\t} else {\n\t\t\t\t\t*out = pv.Elem()\n\t\t\t\t}\n\t\t\t\tsetter, _ = pv.Interface().(Setter)\n\t\t\t\tagain = true\n\t\t\t}\n\t\t}\n\t\tif setter != nil {\n\t\t\tvar arg interface{}\n\t\t\t*out = reflect.ValueOf(&arg).Elem()\n\t\t\treturn func() {\n\t\t\t\t*good = setter.SetYAML(shortTag(tag), arg)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {\n\tswitch n.kind {\n\tcase documentNode:\n\t\tgood = d.document(n, out)\n\tcase scalarNode:\n\t\tgood = d.scalar(n, out)\n\tcase aliasNode:\n\t\tgood = d.alias(n, out)\n\tcase mappingNode:\n\t\tgood = d.mapping(n, out)\n\tcase sequenceNode:\n\t\tgood = d.sequence(n, out)\n\tdefault:\n\t\tpanic(\"Internal error: unknown node kind: \" + strconv.Itoa(n.kind))\n\t}\n\treturn\n}\n\nfunc (d *decoder) document(n *node, out reflect.Value) (good bool) {\n\tif len(n.children) == 1 {\n\t\td.doc = n\n\t\td.unmarshal(n.children[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\tan, ok := d.doc.anchors[n.value]\n\tif !ok {\n\t\tfail(\"Unknown anchor '\" + n.value + \"' referenced\")\n\t}\n\tif d.aliases[n.value] {\n\t\tfail(\"Anchor '\" + n.value + \"' value contains itself\")\n\t}\n\td.aliases[n.value] = true\n\tgood = d.unmarshal(an, out)\n\tdelete(d.aliases, n.value)\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\nvar durationType = reflect.TypeOf(time.Duration(0))\n\nfunc (d *decoder) scalar(n *node, out reflect.Value) (good bool) {\n\tvar tag string\n\tvar resolved interface{}\n\tif n.tag == \"\" && !n.implicit {\n\t\ttag = yaml_STR_TAG\n\t\tresolved = n.value\n\t} else {\n\t\ttag, resolved = resolve(n.tag, n.value)\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tdata, err := base64.StdEncoding.DecodeString(resolved.(string))\n\t\t\tif err != nil {\n\t\t\t\tfail(\"!!binary value contains invalid base64 data\")\n\t\t\t}\n\t\t\tresolved = string(data)\n\t\t}\n\t}\n\tif set := d.setter(tag, &out, &good); set != nil {\n\t\tdefer set()\n\t}\n\tif resolved == nil {\n\t\tif out.Kind() == reflect.Map && !out.CanAddr() {\n\t\t\tresetMap(out)\n\t\t} else {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t}\n\t\tgood = true\n\t\treturn\n\t}\n\tswitch out.Kind() {\n\tcase reflect.String:\n\t\tif tag == yaml_BINARY_TAG {\n\t\t\tout.SetString(resolved.(string))\n\t\t\tgood = true\n\t\t} else if resolved != nil {\n\t\t\tout.SetString(n.value)\n\t\t\tgood = true\n\t\t}\n\tcase reflect.Interface:\n\t\tif resolved == nil {\n\t\t\tout.Set(reflect.Zero(out.Type()))\n\t\t} else {\n\t\t\tout.Set(reflect.ValueOf(resolved))\n\t\t}\n\t\tgood = true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tswitch resolved := resolved.(type) {\n\t\tcase int:\n\t\t\tif !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\tgood = true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif !out.OverflowInt(resolved) {\n\t\t\t\tout.SetInt(resolved)\n\t\t\t\tgood = true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved < 1<<63-1 && !out.OverflowInt(int64(resolved)) {\n\t\t\t\tout.SetInt(int64(resolved))\n\t\t\t\tgood = 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\tgood = 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 {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\tgood = true\n\t\t\t}\n\t\tcase int64:\n\t\t\tif resolved >= 0 {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\tgood = true\n\t\t\t}\n\t\tcase float64:\n\t\t\tif resolved < 1<<64-1 && !out.OverflowUint(uint64(resolved)) {\n\t\t\t\tout.SetUint(uint64(resolved))\n\t\t\t\tgood = 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\tgood = true\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\tgood = true\n\t\tcase int64:\n\t\t\tout.SetFloat(float64(resolved))\n\t\t\tgood = true\n\t\tcase float64:\n\t\t\tout.SetFloat(resolved)\n\t\t\tgood = true\n\t\t}\n\tcase reflect.Ptr:\n\t\tif out.Type().Elem() == reflect.TypeOf(resolved) {\n\t\t\telem := reflect.New(out.Type().Elem())\n\t\t\telem.Elem().Set(reflect.ValueOf(resolved))\n\t\t\tout.Set(elem)\n\t\t\tgood = true\n\t\t}\n\t}\n\treturn good\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\tif set := d.setter(yaml_SEQ_TAG, &out, &good); set != nil {\n\t\tdefer set()\n\t}\n\tvar iface reflect.Value\n\tif out.Kind() == 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{}, 0))\n\t}\n\n\tif out.Kind() != reflect.Slice {\n\t\treturn false\n\t}\n\tet := out.Type().Elem()\n\n\tl := len(n.children)\n\tfor i := 0; i < l; i++ {\n\t\te := reflect.New(et).Elem()\n\t\tif ok := d.unmarshal(n.children[i], e); ok {\n\t\t\tout.Set(reflect.Append(out, e))\n\t\t}\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\tif set := d.setter(yaml_MAP_TAG, &out, &good); set != nil {\n\t\tdefer set()\n\t}\n\tif out.Kind() == reflect.Struct {\n\t\treturn d.mappingStruct(n, out)\n\t}\n\n\tif out.Kind() == reflect.Interface {\n\t\t// No type hints. Will have to use a generic map.\n\t\tiface := out\n\t\tout = settableValueOf(make(map[interface{}]interface{}))\n\t\tiface.Set(out)\n\t}\n\n\tif out.Kind() != reflect.Map {\n\t\treturn false\n\t}\n\toutt := out.Type()\n\tkt := outt.Key()\n\tet := outt.Elem()\n\n\tif out.IsNil() {\n\t\tout.Set(reflect.MakeMap(outt))\n\t}\n\tl := len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tif isMerge(n.children[i]) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tk := reflect.New(kt).Elem()\n\t\tif d.unmarshal(n.children[i], k) {\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\tfail(fmt.Sprintf(\"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.children[i+1], e) {\n\t\t\t\tout.SetMapIndex(k, e)\n\t\t\t}\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\tname := settableValueOf(\"\")\n\tl := len(n.children)\n\tfor i := 0; i < l; i += 2 {\n\t\tni := n.children[i]\n\t\tif isMerge(ni) {\n\t\t\td.merge(n.children[i+1], out)\n\t\t\tcontinue\n\t\t}\n\t\tif !d.unmarshal(ni, name) {\n\t\t\tcontinue\n\t\t}\n\t\tif info, ok := sinfo.FieldsMap[name.String()]; ok {\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 = out.FieldByIndex(info.Inline)\n\t\t\t}\n\t\t\td.unmarshal(n.children[i+1], field)\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (d *decoder) merge(n *node, out reflect.Value) {\n\tconst wantMap = \"map merge requires map or sequence of maps as the value\"\n\tswitch n.kind {\n\tcase mappingNode:\n\t\td.unmarshal(n, out)\n\tcase aliasNode:\n\t\tan, ok := d.doc.anchors[n.value]\n\t\tif ok && an.kind != mappingNode {\n\t\t\tfail(wantMap)\n\t\t}\n\t\td.unmarshal(n, out)\n\tcase sequenceNode:\n\t\t// Step backwards as earlier nodes take precedence.\n\t\tfor i := len(n.children) - 1; i >= 0; i-- {\n\t\t\tni := n.children[i]\n\t\t\tif ni.kind == aliasNode {\n\t\t\t\tan, ok := d.doc.anchors[ni.value]\n\t\t\t\tif ok && an.kind != mappingNode {\n\t\t\t\t\tfail(wantMap)\n\t\t\t\t}\n\t\t\t} else if ni.kind != mappingNode {\n\t\t\t\tfail(wantMap)\n\t\t\t}\n\t\t\td.unmarshal(ni, out)\n\t\t}\n\tdefault:\n\t\tfail(wantMap)\n\t}\n}\n\nfunc isMerge(n *node) bool {\n\treturn n.kind == scalarNode && n.value == \"<<\" && (n.implicit == true || n.tag == yaml_MERGE_TAG)\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/emitterc.go",
    "content": "package yaml\n\nimport (\n\t\"bytes\"\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\temitter.column = 0\n\temitter.line++\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\temitter.column = 0\n\t\temitter.line++\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\temitter.indent += emitter.best_indent\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)\n\n\tcase yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:\n\t\treturn yaml_emitter_emit_flow_sequence_item(emitter, event, false)\n\n\tcase yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, true)\n\n\tcase yaml_EMIT_FLOW_MAPPING_KEY_STATE:\n\t\treturn yaml_emitter_emit_flow_mapping_key(emitter, event, 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\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 {\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\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\treturn yaml_emitter_emit_node(emitter, event, true, false, false, false)\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\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 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\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_indicator(emitter, []byte{','}, false, 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_write_indicator(emitter, []byte{']'}, false, false, false) {\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 {\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 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\temitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\n}\n\n// Expect a flow key node.\nfunc yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first 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\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_indicator(emitter, []byte{','}, false, 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_write_indicator(emitter, []byte{'}'}, false, false, false) {\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 {\n\t\tif !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {\n\t\t\treturn false\n\t\t}\n\t}\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\temitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\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, emitter.mapping_context && !emitter.indention) {\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_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\treturn yaml_emitter_emit_node(emitter, event, false, true, false, false)\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 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 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\temitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)\n\treturn yaml_emitter_emit_node(emitter, event, false, false, true, false)\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\t\"expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS\")\n\t}\n\treturn false\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 achor.\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// 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\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\tpreceeded_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\tpreceeded_by_whitespace = true\n\tfor i, w := 0, 0; i < len(value); i += w {\n\t\tw = width(value[0])\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 preceeded_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 !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\tpreceeded_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 || 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\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\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\tfor emitter.column < indent {\n\t\tif !put(emitter, ' ') {\n\t\t\treturn false\n\t\t}\n\t}\n\temitter.whitespace = true\n\temitter.indention = true\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 !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\temitter.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\temitter.whitespace = false\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\temitter.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 !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.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\temitter.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\n\tif !put_break(emitter) {\n\t\treturn false\n\t}\n\temitter.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\temitter.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"
  },
  {
    "path": "vendor/github.com/coreos/yaml/encode.go",
    "content": "package yaml\n\nimport (\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype encoder struct {\n\temitter yaml_emitter_t\n\tevent   yaml_event_t\n\tout     []byte\n\tflow    bool\n}\n\nfunc newEncoder() (e *encoder) {\n\te = &encoder{}\n\te.must(yaml_emitter_initialize(&e.emitter))\n\tyaml_emitter_set_output_string(&e.emitter, &e.out)\n\te.must(yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING))\n\te.emit()\n\te.must(yaml_document_start_event_initialize(&e.event, nil, nil, true))\n\te.emit()\n\treturn e\n}\n\nfunc (e *encoder) finish() {\n\te.must(yaml_document_end_event_initialize(&e.event, true))\n\te.emit()\n\te.emitter.open_ended = false\n\te.must(yaml_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\tif !yaml_emitter_emit(&e.emitter, &e.event) && e.event.typ != yaml_DOCUMENT_END_EVENT && e.event.typ != yaml_STREAM_END_EVENT {\n\t\te.must(false)\n\t}\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\tfail(msg)\n\t}\n}\n\nfunc (e *encoder) marshal(tag string, in reflect.Value) {\n\tif !in.IsValid() {\n\t\te.nilv()\n\t\treturn\n\t}\n\tvar value interface{}\n\tif getter, ok := in.Interface().(Getter); ok {\n\t\ttag, value = getter.GetYAML()\n\t\ttag = longTag(tag)\n\t\tif value == nil {\n\t\t\te.nilv()\n\t\t\treturn\n\t\t}\n\t\tin = reflect.ValueOf(value)\n\t}\n\tswitch in.Kind() {\n\tcase reflect.Interface:\n\t\tif in.IsNil() {\n\t\t\te.nilv()\n\t\t} else {\n\t\t\te.marshal(tag, in.Elem())\n\t\t}\n\tcase reflect.Map:\n\t\te.mapv(tag, in)\n\tcase reflect.Ptr:\n\t\tif in.IsNil() {\n\t\t\te.nilv()\n\t\t} else {\n\t\t\te.marshal(tag, in.Elem())\n\t\t}\n\tcase reflect.Struct:\n\t\te.structv(tag, in)\n\tcase reflect.Slice:\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\tif in.Type() == durationType {\n\t\t\te.stringv(tag, reflect.ValueOf(in.Interface().(time.Duration).String()))\n\t\t} else {\n\t\t\te.intv(tag, in)\n\t\t}\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(\"Can't 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) 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 = in.FieldByIndex(info.Inline)\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})\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\te.must(yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))\n\te.emit()\n\tf()\n\te.must(yaml_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\nfunc (e *encoder) stringv(tag string, in reflect.Value) {\n\tvar style yaml_scalar_style_t\n\ts := in.String()\n\trtag, rs := resolve(\"\", s)\n\tif rtag == yaml_BINARY_TAG {\n\t\tif tag == \"\" || tag == yaml_STR_TAG {\n\t\t\ttag = rtag\n\t\t\ts = rs.(string)\n\t\t} else if tag == yaml_BINARY_TAG {\n\t\t\tfail(\"explicitly tagged !!binary data must be base64-encoded\")\n\t\t} else {\n\t\t\tfail(\"cannot marshal invalid UTF-8 data as \" + shortTag(tag))\n\t\t}\n\t}\n\tif tag == \"\" && (rtag != yaml_STR_TAG || isBase60Float(s)) {\n\t\tstyle = yaml_DOUBLE_QUOTED_SCALAR_STYLE\n\t} else if strings.Contains(s, \"\\n\") {\n\t\tstyle = yaml_LITERAL_SCALAR_STYLE\n\t} else {\n\t\tstyle = yaml_PLAIN_SCALAR_STYLE\n\t}\n\te.emitScalar(s, \"\", tag, style)\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)\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)\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)\n}\n\nfunc (e *encoder) floatv(tag string, in reflect.Value) {\n\t// FIXME: Handle 64 bits here.\n\ts := strconv.FormatFloat(float64(in.Float()), 'g', -1, 32)\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)\n}\n\nfunc (e *encoder) nilv() {\n\te.emitScalar(\"null\", \"\", \"\", yaml_PLAIN_SCALAR_STYLE)\n}\n\nfunc (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {\n\timplicit := tag == \"\"\n\te.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))\n\te.emit()\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/parserc.go",
    "content": "package 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\treturn &parser.tokens[parser.tokens_head]\n\t}\n\treturn nil\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\treturn false\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\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\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\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\treturn true\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\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\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\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\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\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\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\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\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_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\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_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// 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\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_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\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\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\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\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/github.com/coreos/yaml/readerc.go",
    "content": "package 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// 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\treturn 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\thigh, low = 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} 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} 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} 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}\n\t\t\tbuffer_len += width\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\tparser.buffer = parser.buffer[:buffer_len]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/resolve.go",
    "content": "package yaml\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\n// TODO: merge, timestamps, base 60 floats, omap.\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, yaml_BOOL_TAG, []string{\"y\", \"Y\", \"yes\", \"Yes\", \"YES\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"true\", \"True\", \"TRUE\"}},\n\t\t{true, yaml_BOOL_TAG, []string{\"on\", \"On\", \"ON\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"n\", \"N\", \"no\", \"No\", \"NO\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"false\", \"False\", \"FALSE\"}},\n\t\t{false, yaml_BOOL_TAG, []string{\"off\", \"Off\", \"OFF\"}},\n\t\t{nil, yaml_NULL_TAG, []string{\"\", \"~\", \"null\", \"Null\", \"NULL\"}},\n\t\t{math.NaN(), yaml_FLOAT_TAG, []string{\".nan\", \".NaN\", \".NAN\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\".inf\", \".Inf\", \".INF\"}},\n\t\t{math.Inf(+1), yaml_FLOAT_TAG, []string{\"+.inf\", \"+.Inf\", \"+.INF\"}},\n\t\t{math.Inf(-1), yaml_FLOAT_TAG, []string{\"-.inf\", \"-.Inf\", \"-.INF\"}},\n\t\t{\"<<\", yaml_MERGE_TAG, []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 longTagPrefix = \"tag:yaml.org,2002:\"\n\nfunc shortTag(tag string) string {\n\t// TODO This can easily be made faster and produce less garbage.\n\tif strings.HasPrefix(tag, longTagPrefix) {\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\treturn longTagPrefix + tag[2:]\n\t}\n\treturn tag\n}\n\nfunc resolvableTag(tag string) bool {\n\tswitch tag {\n\tcase \"\", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc resolve(tag string, in string) (rtag string, out interface{}) {\n\tif !resolvableTag(tag) {\n\t\treturn tag, in\n\t}\n\n\tdefer func() {\n\t\tswitch tag {\n\t\tcase \"\", rtag, yaml_STR_TAG, yaml_BINARY_TAG:\n\t\t\treturn\n\t\t}\n\t\tfail(fmt.Sprintf(\"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 != yaml_STR_TAG && tag != yaml_BINARY_TAG {\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 yaml_FLOAT_TAG, floatv\n\t\t\t}\n\n\t\tcase 'D', 'S':\n\t\t\t// Int, float, or timestamp.\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 yaml_INT_TAG, int(intv)\n\t\t\t\t} else {\n\t\t\t\t\treturn yaml_INT_TAG, intv\n\t\t\t\t}\n\t\t\t}\n\t\t\tfloatv, err := strconv.ParseFloat(plain, 64)\n\t\t\tif err == nil {\n\t\t\t\treturn yaml_FLOAT_TAG, floatv\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\treturn yaml_INT_TAG, int(intv)\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\treturn yaml_INT_TAG, -int(intv)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// XXX Handle timestamps here.\n\n\t\tdefault:\n\t\t\tpanic(\"resolveTable item not yet handled: \" + string(rune(hint)) + \" (with \" + in + \")\")\n\t\t}\n\t}\n\tif tag == yaml_BINARY_TAG {\n\t\treturn yaml_BINARY_TAG, in\n\t}\n\tif utf8.ValidString(in) {\n\t\treturn yaml_STR_TAG, in\n\t}\n\treturn yaml_BINARY_TAG, encodeBase64(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"
  },
  {
    "path": "vendor/github.com/coreos/yaml/scannerc.go",
    "content": "package 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/cvs/current.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\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} 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}\n}\n\n// Copy a character to a string buffer and advance pointers.\nfunc read(parser *yaml_parser_t, s []byte) []byte {\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\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, \"did not find URI escaped octet\")\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// Check if we really need to fetch more tokens.\n\t\tneed_more_tokens := false\n\n\t\tif parser.tokens_head == len(parser.tokens) {\n\t\t\t// Queue is empty.\n\t\t\tneed_more_tokens = true\n\t\t} else {\n\t\t\t// Check if any potential simple key may occupy the head position.\n\t\t\tif !yaml_parser_stale_simple_keys(parser) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfor i := range parser.simple_keys {\n\t\t\t\tsimple_key := &parser.simple_keys[i]\n\t\t\t\tif simple_key.possible && simple_key.token_number == parser.tokens_parsed {\n\t\t\t\t\tneed_more_tokens = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We are finished.\n\t\tif !need_more_tokens {\n\t\t\tbreak\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) 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\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// Remove obsolete potential simple keys.\n\tif !yaml_parser_stale_simple_keys(parser) {\n\t\treturn false\n\t}\n\n\t// Check the indentation level against the current column.\n\tif !yaml_parser_unroll_indent(parser, parser.mark.column) {\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\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] 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\n// Check the list of potential simple keys and remove the positions that\n// cannot contain simple keys anymore.\nfunc yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {\n\t// Check for a potential simple key for each flow level.\n\tfor i := range parser.simple_keys {\n\t\tsimple_key := &parser.simple_keys[i]\n\n\t\t// The specification requires that a simple key\n\t\t//\n\t\t//  - is limited to a single line,\n\t\t//  - is shorter than 1024 characters.\n\t\tif simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) {\n\n\t\t\t// Check if the potential simple key to be removed is required.\n\t\t\tif simple_key.required {\n\t\t\t\treturn yaml_parser_set_scanner_error(parser,\n\t\t\t\t\t\"while scanning a simple key\", simple_key.mark,\n\t\t\t\t\t\"could not find expected ':'\")\n\t\t\t}\n\t\t\tsimple_key.possible = false\n\t\t}\n\t}\n\treturn 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// A simple key is required only when it is the first token in the current\n\t// line.  Therefore it is always allowed.  But we add a check anyway.\n\tif required && !parser.simple_key_allowed {\n\t\tpanic(\"should not happen\")\n\t}\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}\n\t\tsimple_key.mark = parser.mark\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}\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}\n\t// Remove the key from the stack.\n\tparser.simple_keys[i].possible = false\n\treturn true\n}\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\n\t// Increase the flow level.\n\tparser.flow_level++\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\tparser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1]\n\t}\n\treturn true\n}\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\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 intendation level, append\n// the BLOCK-END token.\nfunc yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {\n\t// In the flow context, do nothing.\n\tif parser.flow_level > 0 {\n\t\treturn true\n\t}\n\n\t// Loop through the intendation levels in the stack.\n\tfor parser.indent > column {\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: parser.mark,\n\t\t\tend_mark:   parser.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\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) {\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) {\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) {\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\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 simple_key.possible {\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\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\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// Eat a comment until a line break.\n\t\tif parser.buffer[parser.buffer_pos] == '#' {\n\t\t\tfor !is_breakz(parser.buffer, parser.buffer_pos) {\n\t\t\t\tskip(parser)\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}\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 uknown 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\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 && !(s[0] == '!' && s[1] == 0) {\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\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] 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}\n\n\t// Check if the tag is non-empty.\n\tif len(s) == 0 {\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 intendation 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 intendation indicator equal to 0\")\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Get the intendation 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 intendation 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\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 intendation 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 intendation 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 intendation spaces and line breaks for a block scalar.  Determine the\n// intendation 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 intendation spaces and line breaks.\n\tmax_indent := 0\n\tfor {\n\t\t// Eat the intendation 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 intendation.\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 intendation 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\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\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\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 'x:x' in the flow context. TODO: Fix the test \"spec-08-13\".\n\t\t\tif parser.flow_level > 0 &&\n\t\t\t\tparser.buffer[parser.buffer_pos] == ':' &&\n\t\t\t\t!is_blankz(parser.buffer, parser.buffer_pos+1) {\n\t\t\t\tyaml_parser_set_scanner_error(parser, \"while scanning a plain scalar\",\n\t\t\t\t\tstart_mark, \"found unexpected ':'\")\n\t\t\t\treturn false\n\t\t\t}\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] == ',' || 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 character that abuse intendation.\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 violate intendation\")\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 intendation 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"
  },
  {
    "path": "vendor/github.com/coreos/yaml/sorter.go",
    "content": "package 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\tfor i := 0; i < len(ar) && i < len(br); i++ {\n\t\tif ar[i] == br[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\treturn bl\n\t\t}\n\t\tvar ai, bi int\n\t\tvar an, bn int64\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/github.com/coreos/yaml/writerc.go",
    "content": "package 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\t// If the output encoding is UTF-8, we don't need to recode the buffer.\n\tif emitter.encoding == yaml_UTF8_ENCODING {\n\t\tif err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {\n\t\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t\t}\n\t\temitter.buffer_pos = 0\n\t\treturn true\n\t}\n\n\t// Recode the buffer into the raw buffer.\n\tvar low, high int\n\tif emitter.encoding == yaml_UTF16LE_ENCODING {\n\t\tlow, high = 0, 1\n\t} else {\n\t\thigh, low = 1, 0\n\t}\n\n\tpos := 0\n\tfor pos < emitter.buffer_pos {\n\t\t// See the \"reader.c\" code for more details on UTF-8 encoding.  Note\n\t\t// that we assume that the buffer contains a valid UTF-8 sequence.\n\n\t\t// Read the next UTF-8 character.\n\t\toctet := emitter.buffer[pos]\n\n\t\tvar w int\n\t\tvar value rune\n\t\tswitch {\n\t\tcase octet&0x80 == 0x00:\n\t\t\tw, value = 1, rune(octet&0x7F)\n\t\tcase octet&0xE0 == 0xC0:\n\t\t\tw, value = 2, rune(octet&0x1F)\n\t\tcase octet&0xF0 == 0xE0:\n\t\t\tw, value = 3, rune(octet&0x0F)\n\t\tcase octet&0xF8 == 0xF0:\n\t\t\tw, value = 4, rune(octet&0x07)\n\t\t}\n\t\tfor k := 1; k < w; k++ {\n\t\t\toctet = emitter.buffer[pos+k]\n\t\t\tvalue = (value << 6) + (rune(octet) & 0x3F)\n\t\t}\n\t\tpos += w\n\n\t\t// Write the character.\n\t\tif value < 0x10000 {\n\t\t\tvar b [2]byte\n\t\t\tb[high] = byte(value >> 8)\n\t\t\tb[low] = byte(value & 0xFF)\n\t\t\temitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1])\n\t\t} else {\n\t\t\t// Write the character using a surrogate pair (check \"reader.c\").\n\t\t\tvar b [4]byte\n\t\t\tvalue -= 0x10000\n\t\t\tb[high] = byte(0xD8 + (value >> 18))\n\t\t\tb[low] = byte((value >> 10) & 0xFF)\n\t\t\tb[high+2] = byte(0xDC + ((value >> 8) & 0xFF))\n\t\t\tb[low+2] = byte(value & 0xFF)\n\t\t\temitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1], b[2], b[3])\n\t\t}\n\t}\n\n\t// Write the raw buffer.\n\tif err := emitter.write_handler(emitter, emitter.raw_buffer); err != nil {\n\t\treturn yaml_emitter_set_writer_error(emitter, \"write error: \"+err.Error())\n\t}\n\temitter.buffer_pos = 0\n\temitter.raw_buffer = emitter.raw_buffer[:0]\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/yaml.go",
    "content": "// 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\"reflect\"\n\t\"strings\"\n\t\"sync\"\n)\n\ntype yamlError string\n\nfunc fail(msg string) {\n\tpanic(yamlError(msg))\n}\n\nfunc handleErr(err *error) {\n\tif r := recover(); r != nil {\n\t\tif e, ok := r.(yamlError); ok {\n\t\t\t*err = errors.New(\"YAML error: \" + string(e))\n\t\t} else {\n\t\t\tpanic(r)\n\t\t}\n\t}\n}\n\n// The Setter interface may be implemented by types to do their own custom\n// unmarshalling of YAML values, rather than being implicitly assigned by\n// the yaml package machinery. If setting the value works, the method should\n// return true.  If it returns false, the value is considered unsupported\n// and is omitted from maps and slices.\ntype Setter interface {\n\tSetYAML(tag string, value interface{}) bool\n}\n\n// The Getter interface is implemented by types to do their own custom\n// marshalling into a YAML tag and value.\ntype Getter interface {\n\tGetYAML() (tag string, value interface{})\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 and the type of out will be considered,\n// and Unmarshal will do the best possible job to unmarshal values\n// appropriately.  It is NOT considered an error, though, to skip values\n// because they are not available in the decoded YAML, or if they are not\n// compatible with the out value. To ensure something was properly\n// unmarshaled use a map or compare against the previous value for the\n// field (usually the zero value).\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\tdefer handleErr(&err)\n\td := newDecoder()\n\tp := newParser(in, UnmarshalMappingKeyTransform)\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\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 unmarshalled if they are exported (have an upper case\n// first letter), and are unmarshalled 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//                  Does not apply to zero valued structs.\n//\n//     flow         Marshal using a flow style (useful for structs,\n//                  sequences and maps.\n//\n//     inline       Inline the struct it's applied to, so its fields\n//                  are processed as if they were part of the outer\n//                  struct.\n//\n// In addition, if the key is \"-\", the field is ignored.\n//\n// For example:\n//\n//     type T struct {\n//         F int \"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.marshal(\"\", reflect.ValueOf(in))\n\te.finish()\n\tout = e.out\n\treturn\n}\n\n// UnmarshalMappingKeyTransform is a string transformation that is applied to\n// each mapping key in a YAML document before it is unmarshalled. By default,\n// UnmarshalMappingKeyTransform is an identity transform (no modification).\nvar UnmarshalMappingKeyTransform transformString = identityTransform\n\ntype transformString func(in string) (out string)\n\nfunc identityTransform(in string) (out string) {\n\treturn in\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\ntype fieldInfo struct {\n\tKey       string\n\tNum       int\n\tOmitEmpty bool\n\tFlow      bool\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\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\tfor i := 0; i != n; i++ {\n\t\tfield := st.Field(i)\n\t\tif field.PkgPath != \"\" {\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\t// TODO: Implement support for inline maps.\n\t\t\t//case 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:\n\t\t\t\tsinfo, err := getStructInfo(field.Type)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, finfo := range sinfo.FieldsList {\n\t\t\t\t\tif _, found := fieldsMap[finfo.Key]; found {\n\t\t\t\t\t\tmsg := \"Duplicated key '\" + finfo.Key + \"' in struct \" + st.String()\n\t\t\t\t\t\treturn nil, errors.New(msg)\n\t\t\t\t\t}\n\t\t\t\t\tif finfo.Inline == nil {\n\t\t\t\t\t\tfinfo.Inline = []int{i, finfo.Num}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinfo.Inline = append([]int{i}, finfo.Inline...)\n\t\t\t\t\t}\n\t\t\t\t\tfieldsMap[finfo.Key] = finfo\n\t\t\t\t\tfieldsList = append(fieldsList, finfo)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t//return nil, errors.New(\"Option ,inline needs a struct value or map field\")\n\t\t\t\treturn nil, errors.New(\"Option ,inline needs a struct value 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\tfieldsList = append(fieldsList, info)\n\t\tfieldsMap[info.Key] = info\n\t}\n\n\tsinfo = &structInfo{fieldsMap, fieldsList, inlineMap}\n\n\tfieldMapMutex.Lock()\n\tstructMap[st] = sinfo\n\tfieldMapMutex.Unlock()\n\treturn sinfo, nil\n}\n\nfunc isZero(v reflect.Value) bool {\n\tswitch v.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.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\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/coreos/yaml/yamlh.go",
    "content": "package yaml\n\nimport (\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 = iota\n\n\tyaml_PLAIN_SCALAR_STYLE         // 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)\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 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 occured.\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_file 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\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// 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\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\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_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_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_file   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\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// 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/github.com/coreos/yaml/yamlprivateh.go",
    "content": "package 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 (        // is_break:\n\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 ( // is_space:\n\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 ( // is_blank:\n\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/github.com/davecgh/go-spew/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/.travis.yml",
    "content": "language: go\ngo: 1.2\ninstall:\n    - go get -v code.google.com/p/go.tools/cmd/cover\nscript:\n    - go test -v -tags=disableunsafe ./spew\n    - go test -v -tags=testcgo ./spew -covermode=count -coverprofile=profile.cov\nafter_success:\n    - go get -v github.com/mattn/goveralls\n    - export PATH=$PATH:$HOME/gopath/bin\n    - goveralls -coverprofile=profile.cov -service=travis-ci\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/LICENSE",
    "content": "Copyright (c) 2012-2013 Dave Collins <dave@davec.name>\n\nPermission to use, copy, modify, and 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/README.md",
    "content": "go-spew\n=======\n\n[![Build Status](https://travis-ci.org/davecgh/go-spew.png?branch=master)]\n(https://travis-ci.org/davecgh/go-spew) [![Coverage Status]\n(https://coveralls.io/repos/davecgh/go-spew/badge.png?branch=master)]\n(https://coveralls.io/r/davecgh/go-spew?branch=master)\n\nGo-spew implements a deep pretty printer for Go data structures to aid in\ndebugging.  A comprehensive suite of tests with 100% test coverage is provided\nto ensure proper functionality.  See `test_coverage.txt` for the gocov coverage\nreport.  Go-spew is licensed under the liberal ISC license, so it may be used in\nopen source or commercial projects.\n\nIf you're interested in reading about how this package came to life and some\nof the challenges involved in providing a deep pretty printer, there is a blog\npost about it\n[here](https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/).\n\n## Documentation\n\n[![GoDoc](https://godoc.org/github.com/davecgh/go-spew/spew?status.png)]\n(http://godoc.org/github.com/davecgh/go-spew/spew)\n\nFull `go doc` style documentation for the project can be viewed online without\ninstalling this package by using the excellent GoDoc site here:\nhttp://godoc.org/github.com/davecgh/go-spew/spew\n\nYou can also view the documentation locally once the package is installed with\nthe `godoc` tool by running `godoc -http=\":6060\"` and pointing your browser to\nhttp://localhost:6060/pkg/github.com/davecgh/go-spew/spew\n\n## Installation\n\n```bash\n$ go get -u github.com/davecgh/go-spew/spew\n```\n\n## Quick Start\n\nAdd this import line to the file you're working in:\n\n```Go\nimport \"github.com/davecgh/go-spew/spew\"\n```\n\nTo dump a variable with full newlines, indentation, type, and pointer\ninformation use Dump, Fdump, or Sdump:\n\n```Go\nspew.Dump(myVar1, myVar2, ...)\nspew.Fdump(someWriter, myVar1, myVar2, ...)\nstr := spew.Sdump(myVar1, myVar2, ...)\n```\n\nAlternatively, if you would prefer to use format strings with a compacted inline\nprinting style, use the convenience wrappers Printf, Fprintf, etc with %v (most\ncompact), %+v (adds pointer addresses), %#v (adds types), or %#+v (adds types\nand pointer addresses): \n\n```Go\nspew.Printf(\"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\nspew.Printf(\"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\nspew.Fprintf(someWriter, \"myVar1: %v -- myVar2: %+v\", myVar1, myVar2)\nspew.Fprintf(someWriter, \"myVar3: %#v -- myVar4: %#+v\", myVar3, myVar4)\n```\n\n## Debugging a Web Application Example\n\nHere is an example of how you can use `spew.Sdump()` to help debug a web application. Please be sure to wrap your output using the `html.EscapeString()` function for safety reasons. You should also only use this debugging technique in a development environment, never in production.\n\n```Go\npackage main\n\nimport (\n    \"fmt\"\n    \"html\"\n    \"net/http\"\n\n    \"github.com/davecgh/go-spew/spew\"\n)\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n    w.Header().Set(\"Content-Type\", \"text/html\")\n    fmt.Fprintf(w, \"Hi there, %s!\", r.URL.Path[1:])\n    fmt.Fprintf(w, \"<!--\\n\" + html.EscapeString(spew.Sdump(w)) + \"\\n-->\")\n}\n\nfunc main() {\n    http.HandleFunc(\"/\", handler)\n    http.ListenAndServe(\":8080\", nil)\n}\n```\n\n## Sample Dump Output\n\n```\n(main.Foo) {\n unexportedField: (*main.Bar)(0xf84002e210)({\n  flag: (main.Flag) flagTwo,\n  data: (uintptr) <nil>\n }),\n ExportedField: (map[interface {}]interface {}) {\n  (string) \"one\": (bool) true\n }\n}\n([]uint8) {\n 00000000  11 12 13 14 15 16 17 18  19 1a 1b 1c 1d 1e 1f 20  |............... |\n 00000010  21 22 23 24 25 26 27 28  29 2a 2b 2c 2d 2e 2f 30  |!\"#$%&'()*+,-./0|\n 00000020  31 32                                             |12|\n}\n```\n\n## Sample Formatter Output\n\nDouble pointer to a uint8:\n```\n\t  %v: <**>5\n\t %+v: <**>(0xf8400420d0->0xf8400420c8)5\n\t %#v: (**uint8)5\n\t%#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5\n```\n\nPointer to circular struct with a uint8 field and a pointer to itself:\n```\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```\n\n## Configuration 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 via the\nspew.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\n```\n* Indent\n\tString to use for each indentation level for Dump functions.\n\tIt is a single space by default.  A popular alternative is \"\\t\".\n\n* MaxDepth\n\tMaximum number of levels to descend into nested data structures.\n\tThere is no limit by default.\n\n* DisableMethods\n\tDisables invocation of error and Stringer interface methods.\n\tMethod invocation is enabled by default.\n\n* DisablePointerMethods\n\tDisables invocation of error and Stringer interface methods on types\n\twhich only accept pointer receivers from non-pointer variables.  This option\n\trelies on access to the unsafe package, so it will not have any effect when\n\trunning in environments without access to the unsafe package such as Google\n\tApp Engine or with the \"disableunsafe\" build tag specified.\n\tPointer method invocation is enabled by default.\n\n* ContinueOnMethod\n\tEnables recursion into types after invoking error and Stringer interface\n\tmethods. Recursion after method invocation is disabled by default.\n\n* SortKeys\n\tSpecifies map keys should be sorted before being printed. Use\n\tthis to have a more deterministic, diffable output.  Note that\n\tonly native types (bool, int, uint, floats, uintptr and string)\n\tand types which implement error or Stringer interfaces are supported,\n\twith other types sorted according to the reflect.Value.String() output\n\twhich guarantees display stability.  Natural map order is used by\n\tdefault.\n\n* SpewKeys\n\tSpewKeys specifies that, as a last resort attempt, map keys should be\n\tspewed to strings and sorted by those strings.  This is only considered\n\tif SortKeys is true.\n\n```\n\n## Unsafe Package Dependency\n\nThis package relies on the unsafe package to perform some of the more advanced\nfeatures, however it also supports a \"limited\" mode which allows it to work in\nenvironments where the unsafe package is not available.  By default, it will\noperate in this mode on Google App Engine.  The \"disableunsafe\" build tag may\nalso be specified to force the package to build without using the unsafe\npackage.\n\n## License\n\nGo-spew is licensed under the liberal ISC License.\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/cov_report.sh",
    "content": "#!/bin/sh\n\n# This script uses gocov to generate a test coverage report.\n# The gocov tool my be obtained with the following command:\n#   go get github.com/axw/gocov/gocov\n#\n# It will be installed to $GOPATH/bin, so ensure that location is in your $PATH.\n\n# Check for gocov.\nif ! type gocov >/dev/null 2>&1; then\n\techo >&2 \"This script requires the gocov tool.\"\n\techo >&2 \"You may obtain it with the following command:\"\n\techo >&2 \"go get github.com/axw/gocov/gocov\"\n\texit 1\nfi\n\n# Only run the cgo tests if gcc is installed.\nif type gcc >/dev/null 2>&1; then\n\t(cd spew && gocov test -tags testcgo | gocov report)\nelse\n\t(cd spew && gocov test | gocov report)\nfi\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypass.go",
    "content": "// Copyright (c) 2015 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 and \"-tags disableunsafe\"\n// is not added to the go build command line.\n// +build !appengine,!disableunsafe\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\nvar (\n\t// offsetPtr, offsetScalar, and offsetFlag are the offsets for the\n\t// internal reflect.Value fields.  These values are valid before golang\n\t// commit ecccf07e7f9d which changed the format.  The are also valid\n\t// after commit 82f48826c6c7 which changed the format again to mirror\n\t// the original format.  Code in the init function updates these offsets\n\t// as necessary.\n\toffsetPtr    = uintptr(ptrSize)\n\toffsetScalar = uintptr(0)\n\toffsetFlag   = uintptr(ptrSize * 2)\n\n\t// flagKindWidth and flagKindShift indicate various bits that the\n\t// reflect package uses internally to track kind information.\n\t//\n\t// flagRO indicates whether or not the value field of a reflect.Value is\n\t// read-only.\n\t//\n\t// flagIndir indicates whether the value field of a reflect.Value is\n\t// the actual data or a pointer to the data.\n\t//\n\t// These values are valid before golang commit 90a7c3c86944 which\n\t// changed their positions.  Code in the init function updates these\n\t// flags as necessary.\n\tflagKindWidth = uintptr(5)\n\tflagKindShift = uintptr(flagKindWidth - 1)\n\tflagRO        = uintptr(1 << 0)\n\tflagIndir     = uintptr(1 << 1)\n)\n\nfunc init() {\n\t// Older versions of reflect.Value stored small integers directly in the\n\t// ptr field (which is named val in the older versions).  Versions\n\t// between commits ecccf07e7f9d and 82f48826c6c7 added a new field named\n\t// scalar for this purpose which unfortunately came before the flag\n\t// field, so the offset of the flag field is different for those\n\t// versions.\n\t//\n\t// This code constructs a new reflect.Value from a known small integer\n\t// and checks if the size of the reflect.Value struct indicates it has\n\t// the scalar field. When it does, the offsets are updated accordingly.\n\tvv := reflect.ValueOf(0xf00)\n\tif unsafe.Sizeof(vv) == (ptrSize * 4) {\n\t\toffsetScalar = ptrSize * 2\n\t\toffsetFlag = ptrSize * 3\n\t}\n\n\t// Commit 90a7c3c86944 changed the flag positions such that the low\n\t// order bits are the kind.  This code extracts the kind from the flags\n\t// field and ensures it's the correct type.  When it's not, the flag\n\t// order has been changed to the newer format, so the flags are updated\n\t// accordingly.\n\tupf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag)\n\tupfv := *(*uintptr)(upf)\n\tflagKindMask := uintptr((1<<flagKindWidth - 1) << flagKindShift)\n\tif (upfv&flagKindMask)>>flagKindShift != uintptr(reflect.Int) {\n\t\tflagKindShift = 0\n\t\tflagRO = 1 << 5\n\t\tflagIndir = 1 << 6\n\n\t\t// Commit adf9b30e5594 modified the flags to separate the\n\t\t// flagRO flag into two bits which specifies whether or not the\n\t\t// field is embedded.  This causes flagIndir to move over a bit\n\t\t// and means that flagRO is the combination of either of the\n\t\t// original flagRO bit and the new bit.\n\t\t//\n\t\t// This code detects the change by extracting what used to be\n\t\t// the indirect bit to ensure it's set.  When it's not, the flag\n\t\t// order has been changed to the newer format, so the flags are\n\t\t// updated accordingly.\n\t\tif upfv&flagIndir == 0 {\n\t\t\tflagRO = 3 << 5\n\t\t\tflagIndir = 1 << 7\n\t\t}\n\t}\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) (rv reflect.Value) {\n\tindirects := 1\n\tvt := v.Type()\n\tupv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr)\n\trvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag))\n\tif rvf&flagIndir != 0 {\n\t\tvt = reflect.PtrTo(v.Type())\n\t\tindirects++\n\t} else if offsetScalar != 0 {\n\t\t// The value is in the scalar field when it's not one of the\n\t\t// reference types.\n\t\tswitch vt.Kind() {\n\t\tcase reflect.Uintptr:\n\t\tcase reflect.Chan:\n\t\tcase reflect.Func:\n\t\tcase reflect.Map:\n\t\tcase reflect.Ptr:\n\t\tcase reflect.UnsafePointer:\n\t\tdefault:\n\t\t\tupv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) +\n\t\t\t\toffsetScalar)\n\t\t}\n\t}\n\n\tpv := reflect.NewAt(vt, upv)\n\trv = pv\n\tfor i := 0; i < indirects; i++ {\n\t\trv = rv.Elem()\n\t}\n\treturn rv\n}\n"
  },
  {
    "path": "vendor/github.com/davecgh/go-spew/spew/bypasssafe.go",
    "content": "// Copyright (c) 2015 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 either the code is running on Google App Engine or \"-tags disableunsafe\"\n// is added to the go build command line.\n// +build appengine disableunsafe\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 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 hexidecimal 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 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 \"disableunsafe\" build tag specified.\n\tDisablePointerMethods 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 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* 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 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 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 == true:\n\t\td.w.Write(nilAngleBytes)\n\n\tcase cycleFound == true:\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 || 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 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 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 == true:\n\t\tf.fs.Write(nilAngleBytes)\n\n\tcase cycleFound == true:\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 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/davecgh/go-spew/test_coverage.txt",
    "content": "\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.dump\t\t\t 100.00% (88/88)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.format\t\t 100.00% (82/82)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.formatPtr\t\t 100.00% (52/52)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.dumpPtr\t\t 100.00% (44/44)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.dumpSlice\t\t 100.00% (39/39)\ngithub.com/davecgh/go-spew/spew/common.go\t handleMethods\t\t\t 100.00% (30/30)\ngithub.com/davecgh/go-spew/spew/common.go\t printHexPtr\t\t\t 100.00% (18/18)\ngithub.com/davecgh/go-spew/spew/common.go\t unsafeReflectValue\t\t 100.00% (13/13)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.constructOrigFormat 100.00% (12/12)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t fdump\t\t\t\t 100.00% (11/11)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.Format\t\t 100.00% (11/11)\ngithub.com/davecgh/go-spew/spew/common.go\t init\t\t\t\t 100.00% (10/10)\ngithub.com/davecgh/go-spew/spew/common.go\t printComplex\t\t\t 100.00% (9/9)\ngithub.com/davecgh/go-spew/spew/common.go\t valuesSorter.Less\t\t 100.00% (8/8)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.buildDefaultFormat\t 100.00% (7/7)\ngithub.com/davecgh/go-spew/spew/format.go\t formatState.unpackValue\t 100.00% (5/5)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.indent\t\t 100.00% (4/4)\ngithub.com/davecgh/go-spew/spew/common.go\t catchPanic\t\t\t 100.00% (4/4)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.convertArgs\t 100.00% (4/4)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t convertArgs\t\t\t 100.00% (4/4)\ngithub.com/davecgh/go-spew/spew/format.go\t newFormatter\t\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t Sdump\t\t\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/common.go\t printBool\t\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/common.go\t sortValues\t\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Sdump\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.unpackValue\t\t 100.00% (3/3)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Printf\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Println\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Sprint\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Sprintf\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Sprintln\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/common.go\t printFloat\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t NewDefaultConfig\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/common.go\t printInt\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/common.go\t printUint\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/common.go\t valuesSorter.Len\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/common.go\t valuesSorter.Swap\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Errorf\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Fprint\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Fprintf\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Fprintln\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Print\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Printf\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Println\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Sprint\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Sprintf\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Sprintln\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.NewFormatter\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Fdump\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/config.go\t ConfigState.Dump\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t Fdump\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/dump.go\t\t Dump\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Fprintln\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/format.go\t NewFormatter\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Errorf\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Fprint\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Fprintf\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew/spew.go\t\t Print\t\t\t\t 100.00% (1/1)\ngithub.com/davecgh/go-spew/spew\t\t\t ------------------------------- 100.00% (505/505)\n\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/.gitignore",
    "content": "containerd/containerd\ncontainerd-shim/containerd-shim\nbin/\nctr/ctr\nhack/benchmark\n*.exe\nintegration-test/test-artifacts\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/CONTRIBUTING.md",
    "content": "# Contributing\n\n## Sign your work\n\nThe sign-off is a simple line at the end of the explanation for the patch. Your\nsignature certifies that you wrote the patch or otherwise have the right to pass\nit on as an open-source patch. The rules are pretty simple: if you can certify\nthe below (from [developercertificate.org](http://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nThen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe.smith@email.com>\n\nUse your real name (sorry, no pseudonyms or anonymous contributions.)\n\nIf you set your `user.name` and `user.email` git configs, you can sign your\ncommit automatically with `git commit -s`.\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/Dockerfile",
    "content": "FROM debian:jessie\n\nRUN apt-get update && apt-get install -y \\\n\tbuild-essential \\\n\tca-certificates \\\n\tcurl \\\n\tgit \\\n\tmake \\\n\tjq \\\n\tapparmor \\\n\tlibapparmor-dev \\\n\t--no-install-recommends \\\n\t&& rm -rf /var/lib/apt/lists/*\n\n# Install Go\nENV GO_VERSION 1.5.3\nRUN curl -sSL  \"https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz\" | tar -v -C /usr/local -xz\nENV PATH /go/bin:/usr/local/go/bin:$PATH\nENV GOPATH /go:/go/src/github.com/docker/containerd/vendor\n\nWORKDIR /go/src/github.com/docker/containerd\n\n# install seccomp: the version shipped in trusty is too old\nENV SECCOMP_VERSION 2.3.0\nRUN set -x \\\n\t&& export SECCOMP_PATH=\"$(mktemp -d)\" \\\n\t&& curl -fsSL \"https://github.com/seccomp/libseccomp/releases/download/v${SECCOMP_VERSION}/libseccomp-${SECCOMP_VERSION}.tar.gz\" \\\n\t\t| tar -xzC \"$SECCOMP_PATH\" --strip-components=1 \\\n\t&& ( \\\n\t\tcd \"$SECCOMP_PATH\" \\\n\t\t&& ./configure --prefix=/usr/local \\\n\t\t&& make \\\n\t\t&& make install \\\n\t\t&& ldconfig \\\n\t) \\\n\t&& rm -rf \"$SECCOMP_PATH\"\n\n# Install runc\nENV RUNC_COMMIT d49ece5a83da3dcb820121d6850e2b61bd0a5fbe\nRUN set -x \\\n\t&& export GOPATH=\"$(mktemp -d)\" \\\n    && git clone git://github.com/opencontainers/runc.git \"$GOPATH/src/github.com/opencontainers/runc\" \\\n\t&& cd \"$GOPATH/src/github.com/opencontainers/runc\" \\\n\t&& git checkout -q \"$RUNC_COMMIT\" \\\n\t&& make BUILDTAGS=\"seccomp apparmor selinux\" && make install\n\nCOPY . /go/src/github.com/docker/containerd\n\nWORKDIR /go/src/github.com/docker/containerd\n\nRUN make all install\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/LICENSE.code",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://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   Copyright 2013-2016 Docker, Inc.\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       https://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/docker/containerd/LICENSE.docs",
    "content": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreative Commons Corporation (\"Creative Commons\") is not a law firm and\ndoes not provide legal services or legal advice. Distribution of\nCreative Commons public licenses does not create a lawyer-client or\nother relationship. Creative Commons makes its licenses and related\ninformation available on an \"as-is\" basis. Creative Commons gives no\nwarranties regarding its licenses, any material licensed under their\nterms and conditions, or any related information. Creative Commons\ndisclaims all liability for damages resulting from their use to the\nfullest extent possible.\n\nUsing Creative Commons Public Licenses\n\nCreative Commons public licenses provide a standard set of terms and\nconditions that creators and other rights holders may use to share\noriginal works of authorship and other material subject to copyright\nand certain other rights specified in the public license below. The\nfollowing considerations are for informational purposes only, are not\nexhaustive, and do not form part of our licenses.\n\n     Considerations for licensors: Our public licenses are\n     intended for use by those authorized to give the public\n     permission to use material in ways otherwise restricted by\n     copyright and certain other rights. Our licenses are\n     irrevocable. Licensors should read and understand the terms\n     and conditions of the license they choose before applying it.\n     Licensors should also secure all rights necessary before\n     applying our licenses so that the public can reuse the\n     material as expected. Licensors should clearly mark any\n     material not subject to the license. This includes other CC-\n     licensed material, or material used under an exception or\n     limitation to copyright. More considerations for licensors:\n\twiki.creativecommons.org/Considerations_for_licensors\n\n     Considerations for the public: By using one of our public\n     licenses, a licensor grants the public permission to use the\n     licensed material under specified terms and conditions. If\n     the licensor's permission is not necessary for any reason--for\n     example, because of any applicable exception or limitation to\n     copyright--then that use is not regulated by the license. Our\n     licenses grant only permissions under copyright and certain\n     other rights that a licensor has authority to grant. Use of\n     the licensed material may still be restricted for other\n     reasons, including because others have copyright or other\n     rights in the material. A licensor may make special requests,\n     such as asking that all changes be marked or described.\n     Although not required by our licenses, you are encouraged to\n     respect those requests where reasonable. More_considerations\n     for the public:\n\twiki.creativecommons.org/Considerations_for_licensees\n\n=======================================================================\n\nCreative Commons Attribution-ShareAlike 4.0 International Public\nLicense\n\nBy exercising the Licensed Rights (defined below), You accept and agree\nto be bound by the terms and conditions of this Creative Commons\nAttribution-ShareAlike 4.0 International Public License (\"Public\nLicense\"). To the extent this Public License may be interpreted as a\ncontract, You are granted the Licensed Rights in consideration of Your\nacceptance of these terms and conditions, and the Licensor grants You\nsuch rights in consideration of benefits the Licensor receives from\nmaking the Licensed Material available under these terms and\nconditions.\n\n\nSection 1 -- Definitions.\n\n  a. Adapted Material means material subject to Copyright and Similar\n     Rights that is derived from or based upon the Licensed Material\n     and in which the Licensed Material is translated, altered,\n     arranged, transformed, or otherwise modified in a manner requiring\n     permission under the Copyright and Similar Rights held by the\n     Licensor. For purposes of this Public License, where the Licensed\n     Material is a musical work, performance, or sound recording,\n     Adapted Material is always produced where the Licensed Material is\n     synched in timed relation with a moving image.\n\n  b. Adapter's License means the license You apply to Your Copyright\n     and Similar Rights in Your contributions to Adapted Material in\n     accordance with the terms and conditions of this Public License.\n\n  c. BY-SA Compatible License means a license listed at\n     creativecommons.org/compatiblelicenses, approved by Creative\n     Commons as essentially the equivalent of this Public License.\n\n  d. Copyright and Similar Rights means copyright and/or similar rights\n     closely related to copyright including, without limitation,\n     performance, broadcast, sound recording, and Sui Generis Database\n     Rights, without regard to how the rights are labeled or\n     categorized. For purposes of this Public License, the rights\n     specified in Section 2(b)(1)-(2) are not Copyright and Similar\n     Rights.\n\n  e. Effective Technological Measures means those measures that, in the\n     absence of proper authority, may not be circumvented under laws\n     fulfilling obligations under Article 11 of the WIPO Copyright\n     Treaty adopted on December 20, 1996, and/or similar international\n     agreements.\n\n  f. Exceptions and Limitations means fair use, fair dealing, and/or\n     any other exception or limitation to Copyright and Similar Rights\n     that applies to Your use of the Licensed Material.\n\n  g. License Elements means the license attributes listed in the name\n     of a Creative Commons Public License. The License Elements of this\n     Public License are Attribution and ShareAlike.\n\n  h. Licensed Material means the artistic or literary work, database,\n     or other material to which the Licensor applied this Public\n     License.\n\n  i. Licensed Rights means the rights granted to You subject to the\n     terms and conditions of this Public License, which are limited to\n     all Copyright and Similar Rights that apply to Your use of the\n     Licensed Material and that the Licensor has authority to license.\n\n  j. Licensor means the individual(s) or entity(ies) granting rights\n     under this Public License.\n\n  k. Share means to provide material to the public by any means or\n     process that requires permission under the Licensed Rights, such\n     as reproduction, public display, public performance, distribution,\n     dissemination, communication, or importation, and to make material\n     available to the public including in ways that members of the\n     public may access the material from a place and at a time\n     individually chosen by them.\n\n  l. Sui Generis Database Rights means rights other than copyright\n     resulting from Directive 96/9/EC of the European Parliament and of\n     the Council of 11 March 1996 on the legal protection of databases,\n     as amended and/or succeeded, as well as other essentially\n     equivalent rights anywhere in the world.\n\n  m. You means the individual or entity exercising the Licensed Rights\n     under this Public License. Your has a corresponding meaning.\n\n\nSection 2 -- Scope.\n\n  a. License grant.\n\n       1. Subject to the terms and conditions of this Public License,\n          the Licensor hereby grants You a worldwide, royalty-free,\n          non-sublicensable, non-exclusive, irrevocable license to\n          exercise the Licensed Rights in the Licensed Material to:\n\n            a. reproduce and Share the Licensed Material, in whole or\n               in part; and\n\n            b. produce, reproduce, and Share Adapted Material.\n\n       2. Exceptions and Limitations. For the avoidance of doubt, where\n          Exceptions and Limitations apply to Your use, this Public\n          License does not apply, and You do not need to comply with\n          its terms and conditions.\n\n       3. Term. The term of this Public License is specified in Section\n          6(a).\n\n       4. Media and formats; technical modifications allowed. The\n          Licensor authorizes You to exercise the Licensed Rights in\n          all media and formats whether now known or hereafter created,\n          and to make technical modifications necessary to do so. The\n          Licensor waives and/or agrees not to assert any right or\n          authority to forbid You from making technical modifications\n          necessary to exercise the Licensed Rights, including\n          technical modifications necessary to circumvent Effective\n          Technological Measures. For purposes of this Public License,\n          simply making modifications authorized by this Section 2(a)\n          (4) never produces Adapted Material.\n\n       5. Downstream recipients.\n\n            a. Offer from the Licensor -- Licensed Material. Every\n               recipient of the Licensed Material automatically\n               receives an offer from the Licensor to exercise the\n               Licensed Rights under the terms and conditions of this\n               Public License.\n\n            b. Additional offer from the Licensor -- Adapted Material.\n               Every recipient of Adapted Material from You\n               automatically receives an offer from the Licensor to\n               exercise the Licensed Rights in the Adapted Material\n               under the conditions of the Adapter's License You apply.\n\n            c. No downstream restrictions. You may not offer or impose\n               any additional or different terms or conditions on, or\n               apply any Effective Technological Measures to, the\n               Licensed Material if doing so restricts exercise of the\n               Licensed Rights by any recipient of the Licensed\n               Material.\n\n       6. No endorsement. Nothing in this Public License constitutes or\n          may be construed as permission to assert or imply that You\n          are, or that Your use of the Licensed Material is, connected\n          with, or sponsored, endorsed, or granted official status by,\n          the Licensor or others designated to receive attribution as\n          provided in Section 3(a)(1)(A)(i).\n\n  b. Other rights.\n\n       1. Moral rights, such as the right of integrity, are not\n          licensed under this Public License, nor are publicity,\n          privacy, and/or other similar personality rights; however, to\n          the extent possible, the Licensor waives and/or agrees not to\n          assert any such rights held by the Licensor to the limited\n          extent necessary to allow You to exercise the Licensed\n          Rights, but not otherwise.\n\n       2. Patent and trademark rights are not licensed under this\n          Public License.\n\n       3. To the extent possible, the Licensor waives any right to\n          collect royalties from You for the exercise of the Licensed\n          Rights, whether directly or through a collecting society\n          under any voluntary or waivable statutory or compulsory\n          licensing scheme. In all other cases the Licensor expressly\n          reserves any right to collect such royalties.\n\n\nSection 3 -- License Conditions.\n\nYour exercise of the Licensed Rights is expressly made subject to the\nfollowing conditions.\n\n  a. Attribution.\n\n       1. If You Share the Licensed Material (including in modified\n          form), You must:\n\n            a. retain the following if it is supplied by the Licensor\n               with the Licensed Material:\n\n                 i. identification of the creator(s) of the Licensed\n                    Material and any others designated to receive\n                    attribution, in any reasonable manner requested by\n                    the Licensor (including by pseudonym if\n                    designated);\n\n                ii. a copyright notice;\n\n               iii. a notice that refers to this Public License;\n\n                iv. a notice that refers to the disclaimer of\n                    warranties;\n\n                 v. a URI or hyperlink to the Licensed Material to the\n                    extent reasonably practicable;\n\n            b. indicate if You modified the Licensed Material and\n               retain an indication of any previous modifications; and\n\n            c. indicate the Licensed Material is licensed under this\n               Public License, and include the text of, or the URI or\n               hyperlink to, this Public License.\n\n       2. You may satisfy the conditions in Section 3(a)(1) in any\n          reasonable manner based on the medium, means, and context in\n          which You Share the Licensed Material. For example, it may be\n          reasonable to satisfy the conditions by providing a URI or\n          hyperlink to a resource that includes the required\n          information.\n\n       3. If requested by the Licensor, You must remove any of the\n          information required by Section 3(a)(1)(A) to the extent\n          reasonably practicable.\n\n  b. ShareAlike.\n\n     In addition to the conditions in Section 3(a), if You Share\n     Adapted Material You produce, the following conditions also apply.\n\n       1. The Adapter's License You apply must be a Creative Commons\n          license with the same License Elements, this version or\n          later, or a BY-SA Compatible License.\n\n       2. You must include the text of, or the URI or hyperlink to, the\n          Adapter's License You apply. You may satisfy this condition\n          in any reasonable manner based on the medium, means, and\n          context in which You Share Adapted Material.\n\n       3. You may not offer or impose any additional or different terms\n          or conditions on, or apply any Effective Technological\n          Measures to, Adapted Material that restrict exercise of the\n          rights granted under the Adapter's License You apply.\n\n\nSection 4 -- Sui Generis Database Rights.\n\nWhere the Licensed Rights include Sui Generis Database Rights that\napply to Your use of the Licensed Material:\n\n  a. for the avoidance of doubt, Section 2(a)(1) grants You the right\n     to extract, reuse, reproduce, and Share all or a substantial\n     portion of the contents of the database;\n\n  b. if You include all or a substantial portion of the database\n     contents in a database in which You have Sui Generis Database\n     Rights, then the database in which You have Sui Generis Database\n     Rights (but not its individual contents) is Adapted Material,\n\n     including for purposes of Section 3(b); and\n  c. You must comply with the conditions in Section 3(a) if You Share\n     all or a substantial portion of the contents of the database.\n\nFor the avoidance of doubt, this Section 4 supplements and does not\nreplace Your obligations under this Public License where the Licensed\nRights include other Copyright and Similar Rights.\n\n\nSection 5 -- Disclaimer of Warranties and Limitation of Liability.\n\n  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE\n     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS\n     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF\n     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,\n     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,\n     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR\n     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,\n     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT\n     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT\n     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.\n\n  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE\n     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,\n     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,\n     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,\n     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR\n     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN\n     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR\n     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR\n     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.\n\n  c. The disclaimer of warranties and limitation of liability provided\n     above shall be interpreted in a manner that, to the extent\n     possible, most closely approximates an absolute disclaimer and\n     waiver of all liability.\n\n\nSection 6 -- Term and Termination.\n\n  a. This Public License applies for the term of the Copyright and\n     Similar Rights licensed here. However, if You fail to comply with\n     this Public License, then Your rights under this Public License\n     terminate automatically.\n\n  b. Where Your right to use the Licensed Material has terminated under\n     Section 6(a), it reinstates:\n\n       1. automatically as of the date the violation is cured, provided\n          it is cured within 30 days of Your discovery of the\n          violation; or\n\n       2. upon express reinstatement by the Licensor.\n\n     For the avoidance of doubt, this Section 6(b) does not affect any\n     right the Licensor may have to seek remedies for Your violations\n     of this Public License.\n\n  c. For the avoidance of doubt, the Licensor may also offer the\n     Licensed Material under separate terms or conditions or stop\n     distributing the Licensed Material at any time; however, doing so\n     will not terminate this Public License.\n\n  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public\n     License.\n\n\nSection 7 -- Other Terms and Conditions.\n\n  a. The Licensor shall not be bound by any additional or different\n     terms or conditions communicated by You unless expressly agreed.\n\n  b. Any arrangements, understandings, or agreements regarding the\n     Licensed Material not stated herein are separate from and\n     independent of the terms and conditions of this Public License.\n\n\nSection 8 -- Interpretation.\n\n  a. For the avoidance of doubt, this Public License does not, and\n     shall not be interpreted to, reduce, limit, restrict, or impose\n     conditions on any use of the Licensed Material that could lawfully\n     be made without permission under this Public License.\n\n  b. To the extent possible, if any provision of this Public License is\n     deemed unenforceable, it shall be automatically reformed to the\n     minimum extent necessary to make it enforceable. If the provision\n     cannot be reformed, it shall be severed from this Public License\n     without affecting the enforceability of the remaining terms and\n     conditions.\n\n  c. No term or condition of this Public License will be waived and no\n     failure to comply consented to unless expressly agreed to by the\n     Licensor.\n\n  d. Nothing in this Public License constitutes or may be interpreted\n     as a limitation upon, or waiver of, any privileges and immunities\n     that apply to the Licensor or You, including from the legal\n     processes of any jurisdiction or authority.\n\n\n=======================================================================\n\nCreative Commons is not a party to its public licenses.\nNotwithstanding, Creative Commons may elect to apply one of its public\nlicenses to material it publishes and in those instances will be\nconsidered the \"Licensor.\" Except for the limited purpose of indicating\nthat material is shared under a Creative Commons public license or as\notherwise permitted by the Creative Commons policies published at\ncreativecommons.org/policies, Creative Commons does not authorize the\nuse of the trademark \"Creative Commons\" or any other trademark or logo\nof Creative Commons without its prior written consent including,\nwithout limitation, in connection with any unauthorized modifications\nto any of its public licenses or any other arrangements,\nunderstandings, or agreements concerning use of licensed material. For\nthe avoidance of doubt, this paragraph does not form part of the public\nlicenses.\n\nCreative Commons may be contacted at creativecommons.org.\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/MAINTAINERS",
    "content": "# Containerd maintainers file\n#\n# This file describes who runs the docker/containerd project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n    [Org.\"Core maintainers\"]\n        people = [\n            \"crosbymichael\",\n            \"tonistiigi\",\n            \"mlaventure\",\n        ]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\n    [people.crosbymichael]\n    Name = \"Michael Crosby\"\n    Email = \"crosbymichael@gmail.com\"\n    GitHub = \"crosbymichael\"\n\n    [people.tonistiigi]\n    Name = \"Tõnis Tiigi\"\n    Email = \"tonis@docker.com\"\n    GitHub = \"tonistiigi\"\n\n    [people.mlaventure]\n    Name = \"Kenfe-Mickaël Laventure\"\n    Email = \"mickael.laventure@docker.com\"\n    GitHub = \"mlaventure\"\n\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/Makefile",
    "content": "BUILDTAGS=\n\nPROJECT=github.com/docker/containerd\n\nGIT_COMMIT := $(shell git rev-parse HEAD 2> /dev/null || true)\nGIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null)\n\nLDFLAGS := -X github.com/docker/containerd.GitCommit=${GIT_COMMIT} ${LDFLAGS}\n\nTEST_TIMEOUT ?= 5m\nTEST_SUITE_TIMEOUT ?= 10m\n\n# if this session isn't interactive, then we don't want to allocate a\n# TTY, which would fail, but if it is interactive, we do want to attach\n# so that the user can send e.g. ^C through.\nINTERACTIVE := $(shell [ -t 0 ] && echo 1 || echo 0)\nifeq ($(INTERACTIVE), 1)\n\tDOCKER_FLAGS += -t\nendif\n\nTESTBENCH_ARTIFACTS_DIR := output/test-artifacts\nTESTBENCH_BUNDLE_DIR := $(TESTBENCH_ARTIFACTS_DIR)/archives\n\nDOCKER_IMAGE := containerd-dev$(if $(GIT_BRANCH),:$(GIT_BRANCH))\nDOCKER_RUN := docker run --privileged --rm -i $(DOCKER_FLAGS) \"$(DOCKER_IMAGE)\"\n\n\nexport GOPATH:=$(CURDIR)/vendor:$(GOPATH)\n\nall: client daemon shim\n\nstatic: client-static daemon-static shim-static\n\nbin:\n\tmkdir -p bin/\n\nclean:\n\trm -rf bin && rm -rf output\n\nclient: bin\n\tcd ctr && go build -ldflags \"${LDFLAGS}\" -o ../bin/ctr\n\nclient-static:\n\tcd ctr && go build -ldflags \"-w -extldflags -static ${LDFLAGS}\" -tags \"$(BUILDTAGS)\" -o ../bin/ctr\n\ndaemon: bin\n\tcd containerd && go build -ldflags \"${LDFLAGS}\"  -tags \"$(BUILDTAGS)\" -o ../bin/containerd\n\ndaemon-static:\n\tcd containerd && go build -ldflags \"-w -extldflags -static ${LDFLAGS}\" -tags \"$(BUILDTAGS)\" -o ../bin/containerd\n\nshim: bin\n\tcd containerd-shim && go build -tags \"$(BUILDTAGS)\" -ldflags \"-w\" -o ../bin/containerd-shim\n\nshim-static:\n\tcd containerd-shim && go build -ldflags \"-w -extldflags -static ${LDFLAGS}\" -tags \"$(BUILDTAGS)\" -o ../bin/containerd-shim\n\n$(TESTBENCH_BUNDLE_DIR)/busybox.tar:\n\tmkdir -p $(TESTBENCH_BUNDLE_DIR)\n\tcurl -sSL 'https://github.com/jpetazzo/docker-busybox/raw/buildroot-2014.11/rootfs.tar' -o $(TESTBENCH_BUNDLE_DIR)/busybox.tar\n\nbundles-rootfs: $(TESTBENCH_BUNDLE_DIR)/busybox.tar\n\ndbuild: $(TESTBENCH_BUNDLE_DIR)/busybox.tar\n\t@docker build --rm --force-rm -t \"$(DOCKER_IMAGE)\" .\n\ndtest: dbuild\n\t$(DOCKER_RUN) make test\n\ndbench: dbuild\n\t$(DOCKER_RUN) make bench\n\ninstall:\n\tcp bin/* /usr/local/bin/\n\nprotoc:\n\tprotoc -I ./api/grpc/types ./api/grpc/types/api.proto --go_out=plugins=grpc:api/grpc/types\n\nfmt:\n\t@gofmt -s -l . | grep -v vendor | grep -v .pb. | tee /dev/stderr\n\nlint:\n\t@golint ./... | grep -v vendor | grep -v .pb. | tee /dev/stderr\n\nshell: dbuild\n\t$(DOCKER_RUN) bash\n\ntest: validate install bundles-rootfs\n\tgo test -bench=. -v $(shell go list ./... | grep -v /vendor | grep -v /integration-test)\nifneq ($(wildcard /.dockerenv), )\n\tcd integration-test ; \\\n\tgo test -check.v -check.timeout=$(TEST_TIMEOUT) -timeout=$(TEST_SUITE_TIMEOUT) $(TESTFLAGS) github.com/docker/containerd/integration-test && \\\n\tgo test -containerd.shim=\"\" -check.v -check.timeout=$(TEST_TIMEOUT) -timeout=$(TEST_SUITE_TIMEOUT) $(TESTFLAGS) github.com/docker/containerd/integration-test\nendif\n\nbench: shim validate install bundles-rootfs\n\tgo test -bench=. -v $(shell go list ./... | grep -v /vendor | grep -v /integration-test)\n\nvalidate: fmt\n\nuninstall:\n\t$(foreach file,containerd containerd-shim ctr,rm /usr/local/bin/$(file);)\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/NOTICE",
    "content": "Docker\nCopyright 2012-2015 Docker, Inc.\n\nThis product includes software developed at Docker, Inc. (https://www.docker.com).\n\nThe following is courtesy of our legal counsel:\n\n\nUse and transfer of Docker may be subject to certain restrictions by the\nUnited States and other governments.\nIt is your responsibility to ensure that your use and/or transfer does not\nviolate applicable laws.\n\nFor more information, please see https://www.bis.doc.gov\n\nSee also https://www.apache.org/dev/crypto.html and/or seek legal counsel.\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/README.md",
    "content": "# containerd\n\ncontainerd is a daemon to control runC, built for performance and density. \ncontainerd leverages runC's advanced features such as seccomp and user namespace support as well\nas checkpoint and restore for cloning and live migration of containers.\n\n## Getting started\n\nThe easiest way to start using containerd is to download binaries from the [releases page](https://github.com/docker/containerd/releases).\n\nThe included `ctr` command-line tool allows you interact with the containerd daemon:\n\n```\n$ sudo ctr containers start redis /containers/redis\n$ sudo ctr containers list\nID                  PATH                STATUS              PROCESSES\nredis               /containers/redis   running             14063\n```\n\n`/containers/redis` is the path to an OCI bundle. [See the docs for more information.](docs/bundle.md)\n\n## Docs\n\n * [Client CLI reference (`ctr`)](docs/cli.md)\n * [Daemon CLI reference (`containerd`)](docs/daemon.md)\n * [Creating OCI bundles](docs/bundle.md)\n * [containerd changes to the bundle](docs/bundle-changes.md)\n * [Attaching to STDIO or TTY](docs/attach.md)\n * [Telemetry and metrics](docs/telemetry.md)\n\nAll documentation is contained in the `/docs` directory in this repository.\n\n## Building\n\nYou will need to make sure that you have Go installed on your system and the containerd repository is cloned\nin your `$GOPATH`.  You will also need to make sure that you have all the dependencies cloned as well.\nCurrently, contributing to containerd is not for the first time devs as many dependencies are not vendored and \nwork is being completed at a high rate.  \n\nAfter that just run `make` and the binaries for the daemon and client will be localed in the `bin/` directory.\n\n## Performance\n\nStarting 1000 containers concurrently runs at 126-140 containers per second.\n\nOverall start times:\n\n```\n[containerd] 2015/12/04 15:00:54   count:        1000\n[containerd] 2015/12/04 14:59:54   min:          23ms\n[containerd] 2015/12/04 14:59:54   max:         355ms\n[containerd] 2015/12/04 14:59:54   mean:         78ms\n[containerd] 2015/12/04 14:59:54   stddev:       34ms\n[containerd] 2015/12/04 14:59:54   median:       73ms\n[containerd] 2015/12/04 14:59:54   75%:          91ms\n[containerd] 2015/12/04 14:59:54   95%:         123ms\n[containerd] 2015/12/04 14:59:54   99%:         287ms\n[containerd] 2015/12/04 14:59:54   99.9%:       355ms\n```\n\n## Roadmap\n\nThe current roadmap and milestones for alpha and beta completion are in the github issues on this repository.  Please refer to these issues for what is being worked on and completed for the various stages of development.\n\n## Copyright and license\n\nCopyright © 2016 Docker, Inc. All rights reserved, except as follows. Code\nis released under the Apache 2.0 license. The README.md file, and files in the\n\"docs\" folder are licensed under the Creative Commons Attribution 4.0\nInternational License under the terms and conditions set forth in the file\n\"LICENSE.docs\". You may obtain a duplicate copy of the same license, titled\nCC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/.\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/osutils/fds.go",
    "content": "// +build !windows,!darwin\n\npackage osutils\n\nimport (\n\t\"io/ioutil\"\n\t\"path/filepath\"\n\t\"strconv\"\n)\n\n// GetOpenFds returns the number of open fds for the process provided by pid\nfunc GetOpenFds(pid int) (int, error) {\n\tdirs, err := ioutil.ReadDir(filepath.Join(\"/proc\", strconv.Itoa(pid), \"fd\"))\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\treturn len(dirs), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/osutils/prctl.go",
    "content": "// +build linux\n\n// http://man7.org/linux/man-pages/man2/prctl.2.html\npackage osutils\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// If arg2 is nonzero, set the \"child subreaper\" attribute of the\n// calling process; if arg2 is zero, unset the attribute.  When a\n// process is marked as a child subreaper, all of the children\n// that it creates, and their descendants, will be marked as\n// having a subreaper.  In effect, a subreaper fulfills the role\n// of init(1) for its descendant processes.  Upon termination of\n// a process that is orphaned (i.e., its immediate parent has\n// already terminated) and marked as having a subreaper, the\n// nearest still living ancestor subreaper will receive a SIGCHLD\n// signal and be able to wait(2) on the process to discover its\n// termination status.\nconst PR_SET_CHILD_SUBREAPER = 36\n\n// Return the \"child subreaper\" setting of the caller, in the\n// location pointed to by (int *) arg2.\nconst PR_GET_CHILD_SUBREAPER = 37\n\n// GetSubreaper returns the subreaper setting for the calling process\nfunc GetSubreaper() (int, error) {\n\tvar i uintptr\n\tif _, _, err := syscall.RawSyscall(syscall.SYS_PRCTL, PR_GET_CHILD_SUBREAPER, uintptr(unsafe.Pointer(&i)), 0); err != 0 {\n\t\treturn -1, err\n\t}\n\treturn int(i), nil\n}\n\n// SetSubreaper sets the value i as the subreaper setting for the calling process\nfunc SetSubreaper(i int) error {\n\tif _, _, err := syscall.RawSyscall(syscall.SYS_PRCTL, PR_SET_CHILD_SUBREAPER, uintptr(i), 0); err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/osutils/prctl_solaris.go",
    "content": "// +build solaris\n\npackage osutils\n\nimport (\n\t\"errors\"\n)\n\n//Solaris TODO\n// GetSubreaper returns the subreaper setting for the calling process\nfunc GetSubreaper() (int, error) {\n\treturn 0, errors.New(\"osutils GetSubreaper not implemented on Solaris\")\n}\n\n// SetSubreaper sets the value i as the subreaper setting for the calling process\nfunc SetSubreaper(i int) error {\n\treturn errors.New(\"osutils SetSubreaper not implemented on Solaris\")\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/osutils/reaper.go",
    "content": "// +build !windows\n\npackage osutils\n\nimport \"syscall\"\n\n// Exit is the wait4 information from an exited process\ntype Exit struct {\n\tPid    int\n\tStatus int\n}\n\n// Reap reaps all child processes for the calling process and returns their\n// exit information\nfunc Reap() (exits []Exit, err error) {\n\tvar (\n\t\tws  syscall.WaitStatus\n\t\trus syscall.Rusage\n\t)\n\tfor {\n\t\tpid, err := syscall.Wait4(-1, &ws, syscall.WNOHANG, &rus)\n\t\tif err != nil {\n\t\t\tif err == syscall.ECHILD {\n\t\t\t\treturn exits, nil\n\t\t\t}\n\t\t\treturn exits, err\n\t\t}\n\t\tif pid <= 0 {\n\t\t\treturn exits, nil\n\t\t}\n\t\texits = append(exits, Exit{\n\t\t\tPid:    pid,\n\t\t\tStatus: exitStatus(ws),\n\t\t})\n\t}\n}\n\nconst exitSignalOffset = 128\n\n// exitStatus returns the correct exit status for a process based on if it\n// was signaled or exited cleanly\nfunc exitStatus(status syscall.WaitStatus) int {\n\tif status.Signaled() {\n\t\treturn exitSignalOffset + int(status.Signal())\n\t}\n\treturn status.ExitStatus()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/subreaper/exec/copy.go",
    "content": "package exec\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n)\n\n// Below is largely a copy from go's os/exec/exec.go\n\n// Run starts the specified command and waits for it to complete.\n//\n// The returned error is nil if the command runs, has no problems\n// copying stdin, stdout, and stderr, and exits with a zero exit\n// status.\n//\n// If the command fails to run or doesn't complete successfully, the\n// error is of type *ExitError. Other error types may be\n// returned for I/O problems.\nfunc (c *Cmd) Run() error {\n\tif err := c.Start(); err != nil {\n\t\treturn translateError(err)\n\t}\n\treturn translateError(c.Wait())\n}\n\n// Output runs the command and returns its standard output.\n// Any returned error will usually be of type *ExitError.\n// If c.Stderr was nil, Output populates ExitError.Stderr.\nfunc (c *Cmd) Output() ([]byte, error) {\n\tif c.Stdout != nil {\n\t\treturn nil, errors.New(\"exec: Stdout already set\")\n\t}\n\tvar stdout bytes.Buffer\n\tc.Stdout = &stdout\n\n\terr := c.Run()\n\treturn stdout.Bytes(), err\n}\n\n// CombinedOutput runs the command and returns its combined standard\n// output and standard error.\nfunc (c *Cmd) CombinedOutput() ([]byte, error) {\n\tif c.Stdout != nil {\n\t\treturn nil, errors.New(\"exec: Stdout already set\")\n\t}\n\tif c.Stderr != nil {\n\t\treturn nil, errors.New(\"exec: Stderr already set\")\n\t}\n\tvar b bytes.Buffer\n\tc.Stdout = &b\n\tc.Stderr = &b\n\terr := c.Run()\n\treturn b.Bytes(), err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/subreaper/exec/wrapper.go",
    "content": "package exec\n\nimport (\n\t\"fmt\"\n\tosExec \"os/exec\"\n\t\"strconv\"\n\n\t\"github.com/docker/containerd/subreaper\"\n)\n\nvar ErrNotFound = osExec.ErrNotFound\n\ntype Cmd struct {\n\tosExec.Cmd\n\terr error\n\tsub *subreaper.Subscription\n}\n\ntype Error struct {\n\tName string\n\tErr  error\n}\n\nfunc (e *Error) Error() string {\n\treturn \"exec: \" + strconv.Quote(e.Name) + \": \" + e.Err.Error()\n}\n\ntype ExitCodeError struct {\n\tCode int\n}\n\nfunc (e ExitCodeError) Error() string {\n\treturn fmt.Sprintf(\"Non-zero exit code: %d\", e.Code)\n}\n\nfunc LookPath(file string) (string, error) {\n\tv, err := osExec.LookPath(file)\n\treturn v, translateError(err)\n}\n\nfunc Command(name string, args ...string) *Cmd {\n\treturn &Cmd{\n\t\tCmd: *osExec.Command(name, args...),\n\t}\n}\n\nfunc (c *Cmd) Start() error {\n\tc.sub = subreaper.Subscribe()\n\terr := c.Cmd.Start()\n\tif err != nil {\n\t\tsubreaper.Unsubscribe(c.sub)\n\t\tc.sub = nil\n\t\tc.err = translateError(err)\n\t\treturn c.err\n\t}\n\n\tc.sub.SetPid(c.Cmd.Process.Pid)\n\treturn nil\n}\n\nfunc (c *Cmd) Wait() error {\n\t// c.Cmd.Wait() will always error because there is no child process anymore\n\t// This is called to ensure that the streams are closed and cleaned up properly\n\tdefer c.Cmd.Wait()\n\tif c.sub == nil {\n\t\treturn c.err\n\t}\n\texitCode := c.sub.Wait()\n\tif exitCode == 0 {\n\t\treturn nil\n\t}\n\treturn ExitCodeError{Code: exitCode}\n}\n\nfunc translateError(err error) error {\n\tswitch v := err.(type) {\n\tcase *osExec.Error:\n\t\treturn &Error{\n\t\t\tName: v.Name,\n\t\t\tErr:  v.Err,\n\t\t}\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/subreaper/reaper.go",
    "content": "package subreaper\n\nimport (\n\t\"os\"\n\t\"os/signal\"\n\t\"sync\"\n\t\"syscall\"\n\n\t\"github.com/docker/containerd/osutils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tsubscriptions = map[int]*Subscription{}\n\tsubLock       = sync.Mutex{}\n\tcounter       = 0\n\tonce          = sync.Once{}\n)\n\ntype Subscription struct {\n\tid   int\n\texit osutils.Exit\n\tc    chan osutils.Exit\n\twg   sync.WaitGroup\n}\n\nfunc (s *Subscription) SetPid(pid int) {\n\tgo func() {\n\t\tfor exit := range s.c {\n\t\t\tif exit.Pid == pid {\n\t\t\t\ts.exit = exit\n\t\t\t\ts.wg.Done()\n\t\t\t\tUnsubscribe(s)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc (s *Subscription) Wait() int {\n\ts.wg.Wait()\n\treturn s.exit.Status\n}\n\nfunc Subscribe() *Subscription {\n\tsubLock.Lock()\n\tdefer subLock.Unlock()\n\n\tStart()\n\n\tcounter++\n\ts := &Subscription{\n\t\tid: counter,\n\t\tc:  make(chan osutils.Exit, 1024),\n\t}\n\ts.wg.Add(1)\n\tsubscriptions[s.id] = s\n\treturn s\n}\n\nfunc Unsubscribe(sub *Subscription) {\n\tsubLock.Lock()\n\tdefer subLock.Unlock()\n\n\tif _, ok := subscriptions[sub.id]; ok {\n\t\tclose(sub.c)\n\t\tdelete(subscriptions, sub.id)\n\t}\n}\n\nfunc Start() error {\n\tvar err error\n\tonce.Do(func() {\n\t\terr = osutils.SetSubreaper(1)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\ts := make(chan os.Signal, 2048)\n\t\tsignal.Notify(s, syscall.SIGCHLD)\n\t\tgo childReaper(s)\n\t})\n\n\treturn err\n}\n\nfunc childReaper(s chan os.Signal) {\n\tfor range s {\n\t\texits, err := osutils.Reap()\n\t\tif err == nil {\n\t\t\tnotify(exits)\n\t\t} else {\n\t\t\tlogrus.WithField(\"error\", err).Warn(\"containerd: reap child processes\")\n\t\t}\n\t}\n}\n\nfunc notify(exits []osutils.Exit) {\n\tsubLock.Lock()\n\tfor _, exit := range exits {\n\t\tfor _, sub := range subscriptions {\n\t\t\tsub.c <- exit\n\t\t}\n\t}\n\tsubLock.Unlock()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/containerd/trash.conf",
    "content": "github.com/sirupsen/logrus v1.8.1\ngithub.com/cloudfoundry/gosigar 3ed7c74352dae6dc00bdc8c74045375352e3ec05\ngithub.com/codegangsta/cli 9fec0fad02befc9209347cc6d620e68e1b45f74d\ngithub.com/coreos/go-systemd 7b2428fec40033549c68f54e26e89e7ca9a9ce31\ngithub.com/cyberdelia/go-metrics-graphite 7e54b5c2aa6eaff4286c44129c3def899dff528c\ngithub.com/docker/docker 2f6e3b0ba027b558adabd41344fee59db4441011\ngithub.com/docker/go-units 5d2041e26a699eaca682e2ea41c8f891e1060444\ngithub.com/godbus/dbus e2cf28118e66a6a63db46cf6088a35d2054d3bb0\ngithub.com/golang/protobuf 3c84672111d91bb5ac31719e112f9f7126a0e26e\ngithub.com/opencontainers/runc d49ece5a83da3dcb820121d6850e2b61bd0a5fbe\ngithub.com/opencontainers/runtime-spec f955d90e70a98ddfb886bd930ffd076da9b67998\ngithub.com/rcrowley/go-metrics eeba7bd0dd01ace6e690fa833b3f22aaec29af43\ngithub.com/syndtr/gocapability 2c00daeb6c3b45114c80ac44119e7b8801fdd852\ngithub.com/vishvananda/netlink adb0f53af689dd38f1443eba79489feaacf0b22e\ngithub.com/Azure/go-ansiterm 70b2c90b260171e829f1ebd7c17f600c11858dbe\ngolang.org/x/net aea8142032473bb41e874c31eb771c364b790fb4 https://github.com/golang/net.git\ngolang.org/x/sys bc7a7d42d5c30f4d0fe808715c002826ce2c624e https://github.com/golang/sys.git\ngolang.org/x/text afb9336c4530b4b18f37130eab53f245f7d6821e https://github.com/golang/text.git\ngoogle.golang.org/grpc ab0be5212fb225475f2087566eded7da5d727960 https://github.com/grpc/grpc-go.git\ngithub.com/seccomp/libseccomp-golang 1b506fc7c24eec5a3693cdcbed40d9c226cfc6a1\n\ngithub.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3\ngithub.com/go-check/check a625211d932a2a643d0d17352095f03fb7774663 https://github.com/cpuguy83/check.git\n\n# dependencies of docker/pkg/listeners\ngithub.com/docker/go-connections v0.2.0\ngithub.com/Microsoft/go-winio v0.3.2\n\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n\n# never checkin from the bin file (for now)\nbin/*\n\n# Test key files\n*.pem\n\n# Cover profiles\n*.out\n\n# Editor/IDE specific files.\n*.sublime-project\n*.sublime-workspace\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/.mailmap",
    "content": "Stephen J Day <stephen.day@docker.com>  Stephen Day <stevvooe@users.noreply.github.com>\nStephen J Day <stephen.day@docker.com>  Stephen Day <stevvooe@gmail.com>\nOlivier Gambier <olivier@docker.com>    Olivier Gambier <dmp42@users.noreply.github.com>\nBrian Bland <brian.bland@docker.com>    Brian Bland <r4nd0m1n4t0r@gmail.com>\nBrian Bland <brian.bland@docker.com> Brian Bland <brian.t.bland@gmail.com>\nJosh Hawn <josh.hawn@docker.com>        Josh Hawn <jlhawn@berkeley.edu>\nRichard Scothern <richard.scothern@docker.com> Richard <richard.scothern@gmail.com>\nRichard Scothern <richard.scothern@docker.com> Richard Scothern <richard.scothern@gmail.com>\nAndrew Meredith <andymeredith@gmail.com> Andrew Meredith <kendru@users.noreply.github.com>\nharche <p.harshal@gmail.com> harche <harche@users.noreply.github.com>\nJessie Frazelle <jessie@docker.com>  <jfrazelle@users.noreply.github.com>\nSharif Nassar <sharif@mrwacky.com> Sharif Nassar <mrwacky42@users.noreply.github.com>\nSven Dowideit <SvenDowideit@home.org.au> Sven Dowideit <SvenDowideit@users.noreply.github.com>\nVincent Giersch <vincent.giersch@ovh.net> Vincent Giersch <vincent@giersch.fr>\ndavidli <wenquan.li@hp.com> davidli <wenquan.li@hpe.com>\nOmer Cohen <git@omer.io> Omer Cohen <git@omerc.net>"
  },
  {
    "path": "vendor/github.com/docker/distribution/AUTHORS",
    "content": "Aaron Lehmann <aaron.lehmann@docker.com>\nAaron Vinson <avinson.public@gmail.com>\nAdam Enger <adamenger@gmail.com>\nAdrian Mouat <adrian.mouat@gmail.com>\nAhmet Alp Balkan <ahmetalpbalkan@gmail.com>\nAlex Chan <alex.chan@metaswitch.com>\nAlex Elman <aelman@indeed.com>\namitshukla <ashukla73@hotmail.com>\nAmy Lindburg <amy.lindburg@docker.com>\nAndrew Meredith <andymeredith@gmail.com>\nAndrew T Nguyen <andrew.nguyen@docker.com>\nAndrey Kostov <kostov.andrey@gmail.com>\nAndy Goldstein <agoldste@redhat.com>\nAnton Tiurin <noxiouz@yandex.ru>\nAntonio Mercado <amercado@thinknode.com>\nAntonio Murdaca <runcom@redhat.com>\nArnaud Porterie <arnaud.porterie@docker.com>\nArthur Baars <arthur@semmle.com>\nAsuka Suzuki <hello@tanksuzuki.com>\nAvi Miller <avi.miller@oracle.com>\nAyose Cazorla <ayosec@gmail.com>\nBadZen <dave.trombley@gmail.com>\nBen Firshman <ben@firshman.co.uk>\nbin liu <liubin0329@gmail.com>\nBrian Bland <brian.bland@docker.com>\nburnettk <burnettk@gmail.com>\nCarson A <ca@carsonoid.net>\nChris Dillon <squarism@gmail.com>\nDaisuke Fujita <dtanshi45@gmail.com>\nDarren Shepherd <darren@rancher.com>\nDave Trombley <dave.trombley@gmail.com>\nDave Tucker <dt@docker.com>\nDavid Lawrence <david.lawrence@docker.com>\nDavid Verhasselt <david@crowdway.com>\nDavid Xia <dxia@spotify.com>\ndavidli <wenquan.li@hp.com>\nDejan Golja <dejan@golja.org>\nDerek McGowan <derek@mcgstyle.net>\nDiogo Mónica <diogo.monica@gmail.com>\nDJ Enriquez <dj.enriquez@infospace.com>\nDonald Huang <don.hcd@gmail.com>\nDoug Davis <dug@us.ibm.com>\nEric Yang <windfarer@gmail.com>\nfarmerworking <farmerworking@gmail.com>\nFelix Yan <felixonmars@archlinux.org>\nFlorentin Raud <florentin.raud@gmail.com>\nFrederick F. Kautz IV <fkautz@alumni.cmu.edu>\ngabriell nascimento <gabriell@bluesoft.com.br>\nharche <p.harshal@gmail.com>\nHenri Gomez <henri.gomez@gmail.com>\nHu Keping <hukeping@huawei.com>\nHua Wang <wanghua.humble@gmail.com>\nHuKeping <hukeping@huawei.com>\nIan Babrou <ibobrik@gmail.com>\nigayoso <igayoso@gmail.com>\nJack Griffin <jackpg14@gmail.com>\nJason Freidman <jason.freidman@gmail.com>\nJeff Nickoloff <jeff@allingeek.com>\nJessie Frazelle <jessie@docker.com>\nJianqing Wang <tsing@jianqing.org>\nJohn Starks <jostarks@microsoft.com>\nJon Poler <jonathan.poler@apcera.com>\nJonathan Boulle <jonathanboulle@gmail.com>\nJordan Liggitt <jliggitt@redhat.com>\nJosh Hawn <josh.hawn@docker.com>\nJulien Fernandez <julien.fernandez@gmail.com>\nKeerthan Mala <kmala@engineyard.com>\nKelsey Hightower <kelsey.hightower@gmail.com>\nKenneth Lim <kennethlimcp@gmail.com>\nKenny Leung <kleung@google.com>\nLi Yi <denverdino@gmail.com>\nLiu Hua <sdu.liu@huawei.com>\nliuchang0812 <liuchang0812@gmail.com>\nLouis Kottmann <louis.kottmann@gmail.com>\nLuke Carpenter <x@rubynerd.net>\nMary Anthony <mary@docker.com>\nMatt Bentley <mbentley@mbentley.net>\nMatt Duch <matt@learnmetrics.com>\nMatt Moore <mattmoor@google.com>\nMatt Robenolt <matt@ydekproductions.com>\nMichael Prokop <mika@grml.org>\nMichal Minar <miminar@redhat.com>\nMiquel Sabaté <msabate@suse.com>\nMorgan Bauer <mbauer@us.ibm.com>\nmoxiegirl <mary@docker.com>\nNathan Sullivan <nathan@nightsys.net>\nnevermosby <robolwq@qq.com>\nNghia Tran <tcnghia@gmail.com>\nNuutti Kotivuori <nuutti.kotivuori@poplatek.fi>\nOilbeater <liumengxinfly@gmail.com>\nOlivier Gambier <olivier@docker.com>\nOlivier Jacques <olivier.jacques@hp.com>\nOmer Cohen <git@omer.io>\nPatrick Devine <patrick.devine@docker.com>\nPhilip Misiowiec <philip@atlashealth.com>\nRichard Scothern <richard.scothern@docker.com>\nRodolfo Carvalho <rhcarvalho@gmail.com>\nRusty Conover <rusty@luckydinosaur.com>\nSean Boran <Boran@users.noreply.github.com>\nSebastiaan van Stijn <github@gone.nl>\nSharif Nassar <sharif@mrwacky.com>\nShawn Falkner-Horine <dreadpirateshawn@gmail.com>\nShreyas Karnik <karnik.shreyas@gmail.com>\nSimon Thulbourn <simon+github@thulbourn.com>\nSpencer Rinehart <anubis@overthemonkey.com>\nStefan Weil <sw@weilnetz.de>\nStephen J Day <stephen.day@docker.com>\nSungho Moon <sungho.moon@navercorp.com>\nSven Dowideit <SvenDowideit@home.org.au>\nSylvain Baubeau <sbaubeau@redhat.com>\nTed Reed <ted.reed@gmail.com>\ntgic <farmer1992@gmail.com>\nThomas Sjögren <konstruktoid@users.noreply.github.com>\nTianon Gravi <admwiggin@gmail.com>\nTibor Vass <teabee89@gmail.com>\nTonis Tiigi <tonistiigi@gmail.com>\nTrevor Pounds <trevor.pounds@gmail.com>\nTroels Thomsen <troels@thomsen.io>\nVincent Batts <vbatts@redhat.com>\nVincent Demeester <vincent@sbr.pm>\nVincent Giersch <vincent.giersch@ovh.net>\nW. Trevor King <wking@tremily.us>\nweiyuan.yl <weiyuan.yl@alibaba-inc.com>\nxg.song <xg.song@venusource.com>\nxiekeyang <xiekeyang@huawei.com>\nYann ROBERT <yann.robert@anantaplex.fr>\nyuzou <zouyu7@huawei.com>\n姜继忠 <jizhong.jiangjz@alibaba-inc.com>\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/CONTRIBUTING.md",
    "content": "# Contributing to the registry\n\n## Before reporting an issue...\n\n### If your problem is with...\n\n - automated builds\n - your account on the [Docker Hub](https://hub.docker.com/)\n - any other [Docker Hub](https://hub.docker.com/) issue\n\nThen please do not report your issue here - you should instead report it to [https://support.docker.com](https://support.docker.com)\n\n### If you...\n\n - need help setting up your registry\n - can't figure out something\n - are not sure what's going on or what your problem is\n\nThen please do not open an issue here yet - you should first try one of the following support forums:\n\n - irc: #docker-distribution on freenode\n - mailing-list: <distribution@dockerproject.org> or https://groups.google.com/a/dockerproject.org/forum/#!forum/distribution\n\n## Reporting an issue properly\n\nBy following these simple rules you will get better and faster feedback on your issue.\n\n - search the bugtracker for an already reported issue\n\n### If you found an issue that describes your problem:\n\n - please read other user comments first, and confirm this is the same issue: a given error condition might be indicative of different problems - you may also find a workaround in the comments\n - please refrain from adding \"same thing here\" or \"+1\" comments\n - you don't need to comment on an issue to get notified of updates: just hit the \"subscribe\" button\n - comment if you have some new, technical and relevant information to add to the case\n - __DO NOT__ comment on closed issues or merged PRs. If you think you have a related problem, open up a new issue and reference the PR or issue.\n\n### If you have not found an existing issue that describes your problem:\n\n 1. create a new issue, with a succinct title that describes your issue:\n   - bad title: \"It doesn't work with my docker\"\n   - good title: \"Private registry push fail: 400 error with E_INVALID_DIGEST\"\n 2. copy the output of:\n   - `docker version`\n   - `docker info`\n   - `docker exec <registry-container> registry -version`\n 3. copy the command line you used to launch your Registry\n 4. restart your docker daemon in debug mode (add `-D` to the daemon launch arguments)\n 5. reproduce your problem and get your docker daemon logs showing the error\n 6. if relevant, copy your registry logs that show the error\n 7. provide any relevant detail about your specific Registry configuration (e.g., storage backend used)\n 8. indicate if you are using an enterprise proxy, Nginx, or anything else between you and your Registry\n\n## Contributing a patch for a known bug, or a small correction\n\nYou should follow the basic GitHub workflow:\n\n 1. fork\n 2. commit a change\n 3. make sure the tests pass\n 4. PR\n\nAdditionally, you must [sign your commits](https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work). It's very simple:\n\n - configure your name with git: `git config user.name \"Real Name\" && git config user.email mail@example.com`\n - sign your commits using `-s`: `git commit -s -m \"My commit\"`\n\nSome simple rules to ensure quick merge:\n\n - clearly point to the issue(s) you want to fix in your PR comment (e.g., `closes #12345`)\n - prefer multiple (smaller) PRs addressing individual issues over a big one trying to address multiple issues at once\n - if you need to amend your PR following comments, please squash instead of adding more commits\n\n## Contributing new features\n\nYou are heavily encouraged to first discuss what you want to do. You can do so on the irc channel, or by opening an issue that clearly describes the use case you want to fulfill, or the problem you are trying to solve.\n\nIf this is a major new feature, you should then submit a proposal that describes your technical solution and reasoning.\nIf you did discuss it first, this will likely be greenlighted very fast. It's advisable to address all feedback on this proposal before starting actual work.\n\nThen you should submit your implementation, clearly linking to the issue (and possible proposal).\n\nYour PR will be reviewed by the community, then ultimately by the project maintainers, before being merged.\n\nIt's mandatory to:\n\n - interact respectfully with other community members and maintainers - more generally, you are expected to abide by the [Docker community rules](https://github.com/docker/docker/blob/master/CONTRIBUTING.md#docker-community-guidelines)\n - address maintainers' comments and modify your submission accordingly\n - write tests for any new code\n\nComplying to these simple rules will greatly accelerate the review process, and will ensure you have a pleasant experience in contributing code to the Registry.\n\nHave a look at a great, successful contribution: the [Swift driver PR](https://github.com/docker/distribution/pull/493)\n\n## Coding Style\n\nUnless explicitly stated, we follow all coding guidelines from the Go\ncommunity. While some of these standards may seem arbitrary, they somehow seem\nto result in a solid, consistent codebase.\n\nIt is possible that the code base does not currently comply with these\nguidelines. We are not looking for a massive PR that fixes this, since that\ngoes against the spirit of the guidelines. All new contributions should make a\nbest effort to clean up and make the code base better than they left it.\nObviously, apply your best judgement. Remember, the goal here is to make the\ncode base easier for humans to navigate and understand. Always keep that in\nmind when nudging others to comply.\n\nThe rules:\n\n1. All code should be formatted with `gofmt -s`.\n2. All code should pass the default levels of\n   [`golint`](https://github.com/golang/lint).\n3. All code should follow the guidelines covered in [Effective\n   Go](http://golang.org/doc/effective_go.html) and [Go Code Review\n   Comments](https://github.com/golang/go/wiki/CodeReviewComments).\n4. Comment the code. Tell us the why, the history and the context.\n5. Document _all_ declarations and methods, even private ones. Declare\n   expectations, caveats and anything else that may be important. If a type\n   gets exported, having the comments already there will ensure it's ready.\n6. Variable name length should be proportional to its context and no longer.\n   `noCommaALongVariableNameLikeThisIsNotMoreClearWhenASimpleCommentWouldDo`.\n   In practice, short methods will have short variable names and globals will\n   have longer names.\n7. No underscores in package names. If you need a compound name, step back,\n   and re-examine why you need a compound name. If you still think you need a\n   compound name, lose the underscore.\n8. No utils or helpers packages. If a function is not general enough to\n   warrant its own package, it has not been written generally enough to be a\n   part of a util package. Just leave it unexported and well-documented.\n9. All tests should run with `go test` and outside tooling should not be\n   required. No, we don't need another unit testing framework. Assertion\n   packages are acceptable if they provide _real_ incremental value.\n10. Even though we call these \"rules\" above, they are actually just\n    guidelines. Since you've read all the rules, you now know that.\n\nIf you are having trouble getting into the mood of idiomatic Go, we recommend\nreading through [Effective Go](http://golang.org/doc/effective_go.html). The\n[Go Blog](http://blog.golang.org/) is also a great resource. Drinking the\nkool-aid is a lot easier than going thirsty.\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/Dockerfile",
    "content": "FROM golang:1.6\n\nRUN apt-get update && \\\n    apt-get install -y apache2-utils && \\\n    rm -rf /var/lib/apt/lists/*\n\nENV DISTRIBUTION_DIR /go/src/github.com/docker/distribution\nENV DOCKER_BUILDTAGS include_oss include_gcs\n\nWORKDIR $DISTRIBUTION_DIR\nCOPY . $DISTRIBUTION_DIR\nCOPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml\nRUN make PREFIX=/go clean binaries\n\nVOLUME [\"/var/lib/registry\"]\nEXPOSE 5000\nENTRYPOINT [\"registry\"]\nCMD [\"serve\", \"/etc/docker/registry/config.yml\"]\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/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\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/MAINTAINERS",
    "content": "# Distribution maintainers file\n#\n# This file describes who runs the docker/distribution project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n\t[Org.\"Core maintainers\"]\n\t\tpeople = [\n\t\t\t\"aaronlehmann\",\n\t\t\t\"dmcgowan\",\n\t\t\t\"dmp42\",\n\t\t\t\"richardscothern\",\n\t\t\t\"shykes\",\n\t\t\t\"stevvooe\",\n\t\t]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\n\t[people.aaronlehmann]\n\tName = \"Aaron Lehmann\"\n\tEmail = \"aaron.lehmann@docker.com\"\n\tGitHub = \"aaronlehmann\"\n\n\t[people.brianbland]\n\tName = \"Brian Bland\"\n\tEmail = \"brian.bland@docker.com\"\n\tGitHub = \"BrianBland\"\n\n\t[people.dmcgowan]\n\tName = \"Derek McGowan\"\n\tEmail = \"derek@mcgstyle.net\"\n\tGitHub = \"dmcgowan\"\n\n\t[people.dmp42]\n\tName = \"Olivier Gambier\"\n\tEmail = \"olivier@docker.com\"\n\tGitHub = \"dmp42\"\n\n\t[people.richardscothern]\n\tName = \"Richard Scothern\"\n\tEmail = \"richard.scothern@gmail.com\"\n\tGitHub = \"richardscothern\"\n\n\t[people.shykes]\n\tName = \"Solomon Hykes\"\n\tEmail = \"solomon@docker.com\"\n\tGitHub = \"shykes\"\n\n\t[people.stevvooe]\n\tName = \"Stephen Day\"\n\tEmail = \"stephen.day@docker.com\"\n\tGitHub = \"stevvooe\"\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/Makefile",
    "content": "# Set an output prefix, which is the local directory if not specified\nPREFIX?=$(shell pwd)\n\n\n# Used to populate version variable in main package.\nVERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always)\n\n# Allow turning off function inlining and variable registerization\nifeq (${DISABLE_OPTIMIZATION},true)\n\tGO_GCFLAGS=-gcflags \"-N -l\"\n\tVERSION:=\"$(VERSION)-noopt\"\nendif\n\nGO_LDFLAGS=-ldflags \"-X `go list ./version`.Version=$(VERSION)\"\n\n.PHONY: clean all fmt vet lint build test binaries\n.DEFAULT: all\nall: fmt vet lint build test binaries\n\nAUTHORS: .mailmap .git/HEAD\n\t git log --format='%aN <%aE>' | sort -fu > $@\n\n# This only needs to be generated by hand when cutting full releases.\nversion/version.go:\n\t./version/version.sh > $@\n\n# Required for go 1.5 to build\nGO15VENDOREXPERIMENT := 1\n\n# Package list\nPKGS := $(shell go list -tags \"${DOCKER_BUILDTAGS}\" ./... | grep -v ^github.com/docker/distribution/vendor/)\n\n# Resolving binary dependencies for specific targets\nGOLINT := $(shell which golint || echo '')\nGODEP := $(shell which godep || echo '')\n\n${PREFIX}/bin/registry: $(wildcard **/*.go)\n\t@echo \"+ $@\"\n\t@go build -tags \"${DOCKER_BUILDTAGS}\" -o $@ ${GO_LDFLAGS}  ${GO_GCFLAGS} ./cmd/registry\n\n${PREFIX}/bin/digest:  $(wildcard **/*.go)\n\t@echo \"+ $@\"\n\t@go build -tags \"${DOCKER_BUILDTAGS}\" -o $@ ${GO_LDFLAGS}  ${GO_GCFLAGS} ./cmd/digest\n\n${PREFIX}/bin/registry-api-descriptor-template: $(wildcard **/*.go)\n\t@echo \"+ $@\"\n\t@go build -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry-api-descriptor-template\n\ndocs/spec/api.md: docs/spec/api.md.tmpl ${PREFIX}/bin/registry-api-descriptor-template\n\t./bin/registry-api-descriptor-template $< > $@\n\nvet:\n\t@echo \"+ $@\"\n\t@go vet -tags \"${DOCKER_BUILDTAGS}\" $(PKGS)\n\nfmt:\n\t@echo \"+ $@\"\n\t@test -z \"$$(gofmt -s -l . 2>&1 | grep -v ^vendor/ | tee /dev/stderr)\" || \\\n\t\t(echo >&2 \"+ please format Go code with 'gofmt -s'\" && false)\n\nlint:\n\t@echo \"+ $@\"\n\t$(if $(GOLINT), , \\\n\t\t$(error Please install golint: `go get -u github.com/golang/lint/golint`))\n\t@test -z \"$$($(GOLINT) ./... 2>&1 | grep -v ^vendor/ | tee /dev/stderr)\"\n\nbuild:\n\t@echo \"+ $@\"\n\t@go build -tags \"${DOCKER_BUILDTAGS}\" -v ${GO_LDFLAGS} $(PKGS)\n\ntest:\n\t@echo \"+ $@\"\n\t@go test -test.short -tags \"${DOCKER_BUILDTAGS}\" $(PKGS)\n\ntest-full:\n\t@echo \"+ $@\"\n\t@go test -tags \"${DOCKER_BUILDTAGS}\" $(PKGS)\n\nbinaries: ${PREFIX}/bin/registry ${PREFIX}/bin/digest ${PREFIX}/bin/registry-api-descriptor-template\n\t@echo \"+ $@\"\n\nclean:\n\t@echo \"+ $@\"\n\t@rm -rf \"${PREFIX}/bin/registry\" \"${PREFIX}/bin/digest\" \"${PREFIX}/bin/registry-api-descriptor-template\"\n\ndep-save:\n\t@echo \"+ $@\"\n\t$(if $(GODEP), , \\\n\t\t$(error Please install godep: go get github.com/tools/godep))\n\t@$(GODEP) save $(PKGS)\n\ndep-restore:\n\t@echo \"+ $@\"\n\t$(if $(GODEP), , \\\n\t\t$(error Please install godep: go get github.com/tools/godep))\n\t@$(GODEP) restore -v\n\ndep-validate: dep-restore\n\t@echo \"+ $@\"\n\t@rm -Rf .vendor.bak\n\t@mv vendor .vendor.bak\n\t@rm -Rf Godeps\n\t@$(GODEP) save ./...\n\t@test -z \"$$(diff -r vendor .vendor.bak 2>&1 | tee /dev/stderr)\" || \\\n\t\t(echo >&2 \"+ borked dependencies! what you have in Godeps/Godeps.json does not match with what you have in vendor\" && false)\n\t@rm -Rf .vendor.bak\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/README.md",
    "content": "# Distribution\n\nThe Docker toolset to pack, ship, store, and deliver content.\n\nThis repository's main product is the Docker Registry 2.0 implementation\nfor storing and distributing Docker images. It supersedes the\n[docker/docker-registry](https://github.com/docker/docker-registry)\nproject with a new API design, focused around security and performance.\n\n<img src=\"https://www.docker.com/sites/default/files/oyster-registry-3.png\" width=200px/>\n\n[![Circle CI](https://circleci.com/gh/docker/distribution/tree/master.svg?style=svg)](https://circleci.com/gh/docker/distribution/tree/master)\n[![GoDoc](https://godoc.org/github.com/docker/distribution?status.svg)](https://godoc.org/github.com/docker/distribution)\n\nThis repository contains the following components:\n\n|**Component**       |Description                                                                                                                                                                                         |\n|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **registry**       | An implementation of the [Docker Registry HTTP API V2](docs/spec/api.md) for use with docker 1.6+.                                                                                                  |\n| **libraries**      | A rich set of libraries for interacting with distribution components. Please see [godoc](https://godoc.org/github.com/docker/distribution) for details. **Note**: These libraries are **unstable**. |\n| **specifications** | _Distribution_ related specifications are available in [docs/spec](docs/spec)                                                                                                                        |\n| **documentation**  | Docker's full documentation set is available at [docs.docker.com](https://docs.docker.com). This repository [contains the subset](docs/index.md) related just to the registry.                                                                                                                                          |\n\n### How does this integrate with Docker engine?\n\nThis project should provide an implementation to a V2 API for use in the [Docker\ncore project](https://github.com/docker/docker). The API should be embeddable\nand simplify the process of securely pulling and pushing content from `docker`\ndaemons.\n\n### What are the long term goals of the Distribution project?\n\nThe _Distribution_ project has the further long term goal of providing a\nsecure tool chain for distributing content. The specifications, APIs and tools\nshould be as useful with Docker as they are without.\n\nOur goal is to design a professional grade and extensible content distribution\nsystem that allow users to:\n\n* Enjoy an efficient, secured and reliable way to store, manage, package and\n  exchange content\n* Hack/roll their own on top of healthy open-source components\n* Implement their own home made solution through good specs, and solid\n  extensions mechanism.\n\n## More about Registry 2.0\n\nThe new registry implementation provides the following benefits:\n\n- faster push and pull\n- new, more efficient implementation\n- simplified deployment\n- pluggable storage backend\n- webhook notifications\n\nFor information on upcoming functionality, please see [ROADMAP.md](ROADMAP.md).\n\n### Who needs to deploy a registry?\n\nBy default, Docker users pull images from Docker's public registry instance.\n[Installing Docker](https://docs.docker.com/engine/installation/) gives users this\nability. Users can also push images to a repository on Docker's public registry,\nif they have a [Docker Hub](https://hub.docker.com/) account. \n\nFor some users and even companies, this default behavior is sufficient. For\nothers, it is not. \n\nFor example, users with their own software products may want to maintain a\nregistry for private, company images. Also, you may wish to deploy your own\nimage repository for images used to test or in continuous integration. For these\nuse cases and others, [deploying your own registry instance](docs/deploying.md)\nmay be the better choice.\n\n### Migration to Registry 2.0\n\nFor those who have previously deployed their own registry based on the Registry\n1.0 implementation and wish to deploy a Registry 2.0 while retaining images,\ndata migration is required. A tool to assist with migration efforts has been\ncreated. For more information see [docker/migrator]\n(https://github.com/docker/migrator).\n\n## Contribute\n\nPlease see [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute\nissues, fixes, and patches to this project. If you are contributing code, see\nthe instructions for [building a development environment](docs/building.md).\n\n## Support\n\nIf any issues are encountered while using the _Distribution_ project, several\navenues are available for support:\n\n<table>\n<tr>\n\t<th align=\"left\">\n\tIRC\n\t</th>\n\t<td>\n\t#docker-distribution on FreeNode\n\t</td>\n</tr>\n<tr>\n\t<th align=\"left\">\n\tIssue Tracker\n\t</th>\n\t<td>\n\tgithub.com/docker/distribution/issues\n\t</td>\n</tr>\n<tr>\n\t<th align=\"left\">\n\tGoogle Groups\n\t</th>\n\t<td>\n\thttps://groups.google.com/a/dockerproject.org/forum/#!forum/distribution\n\t</td>\n</tr>\n<tr>\n\t<th align=\"left\">\n\tMailing List\n\t</th>\n\t<td>\n\tdocker@dockerproject.org\n\t</td>\n</tr>\n</table>\n\n\n## License\n\nThis project is distributed under [Apache License, Version 2.0](LICENSE).\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/ROADMAP.md",
    "content": "# Roadmap\n\nThe Distribution Project consists of several components, some of which are\nstill being defined. This document defines the high-level goals of the\nproject, identifies the current components, and defines the release-\nrelationship to the Docker Platform.\n\n* [Distribution Goals](#distribution-goals)\n* [Distribution Components](#distribution-components)\n* [Project Planning](#project-planning): release-relationship to the Docker Platform.\n\nThis road map is a living document, providing an overview of the goals and\nconsiderations made in respect of the future of the project.\n\n## Distribution Goals\n\n- Replace the existing [docker registry](github.com/docker/docker-registry)\n  implementation as the primary implementation.\n- Replace the existing push and pull code in the docker engine with the\n  distribution package.\n- Define a strong data model for distributing docker images\n- Provide a flexible distribution tool kit for use in the docker platform\n- Unlock new distribution models\n\n## Distribution Components\n\nComponents of the Distribution Project are managed via github [milestones](https://github.com/docker/distribution/milestones). Upcoming\nfeatures and bugfixes for a component will be added to the relevant milestone. If a feature or\nbugfix is not part of a milestone, it is currently unscheduled for\nimplementation. \n\n* [Registry](#registry)\n* [Distribution Package](#distribution-package)\n\n***\n\n### Registry\n\nThe new Docker registry is the main portion of the distribution repository.\nRegistry 2.0 is the first release of the next-generation registry. This was\nprimarily focused on implementing the [new registry\nAPI](https://github.com/docker/distribution/blob/master/docs/spec/api.md),\nwith a focus on security and performance. \n\nFollowing from the Distribution project goals above, we have a set of goals\nfor registry v2 that we would like to follow in the design. New features\nshould be compared against these goals.\n\n#### Data Storage and Distribution First\n\nThe registry's first goal is to provide a reliable, consistent storage\nlocation for Docker images. The registry should only provide the minimal\namount of indexing required to fetch image data and no more.\n\nThis means we should be selective in new features and API additions, including\nthose that may require expensive, ever growing indexes. Requests should be\nservable in \"constant time\".\n\n#### Content Addressability\n\nAll data objects used in the registry API should be content addressable.\nContent identifiers should be secure and verifiable. This provides a secure,\nreliable base from which to build more advanced content distribution systems.\n\n#### Content Agnostic\n\nIn the past, changes to the image format would require large changes in Docker\nand the Registry. By decoupling the distribution and image format, we can\nallow the formats to progress without having to coordinate between the two.\nThis means that we should be focused on decoupling Docker from the registry\njust as much as decoupling the registry from Docker. Such an approach will\nallow us to unlock new distribution models that haven't been possible before.\n\nWe can take this further by saying that the new registry should be content\nagnostic. The registry provides a model of names, tags, manifests and content\naddresses and that model can be used to work with content.\n\n#### Simplicity\n\nThe new registry should be closer to a microservice component than its\npredecessor. This means it should have a narrower API and a low number of\nservice dependencies. It should be easy to deploy.\n\nThis means that other solutions should be explored before changing the API or\nadding extra dependencies. If functionality is required, can it be added as an\nextension or companion service.\n\n#### Extensibility\n\nThe registry should provide extension points to add functionality. By keeping\nthe scope narrow, but providing the ability to add functionality.\n\nFeatures like search, indexing, synchronization and registry explorers fall\ninto this category. No such feature should be added unless we've found it\nimpossible to do through an extension.\n\n#### Active Feature Discussions\n\nThe following are feature discussions that are currently active.\n\nIf you don't see your favorite, unimplemented feature, feel free to contact us\nvia IRC or the mailing list and we can talk about adding it. The goal here is\nto make sure that new features go through a rigid design process before\nlanding in the registry.\n\n##### Proxying to other Registries\n\nA _pull-through caching_ mode exists for the registry, but is restricted from \nwithin the docker client to only mirror the official Docker Hub.  This functionality\ncan be expanded when image provenance has been specified and implemented in the \ndistribution project.\n\n##### Metadata storage\n\nMetadata for the registry is currently stored with the manifest and layer data on\nthe storage backend.  While this is a big win for simplicity and reliably maintaining\nstate, it comes with the cost of consistency and high latency.  The mutable registry\nmetadata operations should be abstracted behind an API which will allow ACID compliant\nstorage systems to handle metadata.\n\n##### Peer to Peer transfer\n\nDiscussion has started here: https://docs.google.com/document/d/1rYDpSpJiQWmCQy8Cuiaa3NH-Co33oK_SC9HeXYo87QA/edit\n\n##### Indexing, Search and Discovery\n\nThe original registry provided some implementation of search for use with\nprivate registries. Support has been elided from V2 since we'd like to both\ndecouple search functionality from the registry. The makes the registry\nsimpler to deploy, especially in use cases where search is not needed, and\nlet's us decouple the image format from the registry.\n\nThere are explorations into using the catalog API and notification system to\nbuild external indexes. The current line of thought is that we will define a\ncommon search API to index and query docker images. Such a system could be run\nas a companion to a registry or set of registries to power discovery.\n\nThe main issue with search and discovery is that there are so many ways to\naccomplish it. There are two aspects to this project. The first is deciding on\nhow it will be done, including an API definition that can work with changing\ndata formats. The second is the process of integrating with `docker search`.\nWe expect that someone attempts to address the problem with the existing tools\nand propose it as a standard search API or uses it to inform a standardization\nprocess. Once this has been explored, we integrate with the docker client.\n\nPlease see the following for more detail:\n\n- https://github.com/docker/distribution/issues/206\n\n##### Deletes\n\n> __NOTE:__ Deletes are a much asked for feature. Before requesting this\nfeature or participating in discussion, we ask that you read this section in\nfull and understand the problems behind deletes.\n\nWhile, at first glance, implementing deleting seems simple, there are a number\nmitigating factors that make many solutions not ideal or even pathological in\nthe context of a registry. The following paragraph discuss the background and\napproaches that could be applied to a arrive at a solution.\n\nThe goal of deletes in any system is to remove unused or unneeded data. Only\ndata requested for deletion should be removed and no other data. Removing\nunintended data is worse than _not_ removing data that was requested for\nremoval but ideally, both are supported. Generally, according to this rule, we\nerr on holding data longer than needed, ensuring that it is only removed when\nwe can be certain that it can be removed. With the current behavior, we opt to\nhold onto the data forever, ensuring that data cannot be incorrectly removed.\n\nTo understand the problems with implementing deletes, one must understand the\ndata model. All registry data is stored in a filesystem layout, implemented on\na \"storage driver\", effectively a _virtual file system_ (VFS). The storage\nsystem must assume that this VFS layer will be eventually consistent and has\npoor read- after-write consistency, since this is the lower common denominator\namong the storage drivers. This is mitigated by writing values in reverse-\ndependent order, but makes wider transactional operations unsafe.\n\nLayered on the VFS model is a content-addressable _directed, acyclic graph_\n(DAG) made up of blobs. Manifests reference layers. Tags reference manifests.\nSince the same data can be referenced by multiple manifests, we only store\ndata once, even if it is in different repositories. Thus, we have a set of\nblobs, referenced by tags and manifests. If we want to delete a blob we need\nto be certain that it is no longer referenced by another manifest or tag. When\nwe delete a manifest, we also can try to delete the referenced blobs. Deciding\nwhether or not a blob has an active reference is the crux of the problem.\n\nConceptually, deleting a manifest and its resources is quite simple. Just find\nall the manifests, enumerate the referenced blobs and delete the blobs not in\nthat set. An astute observer will recognize this as a garbage collection\nproblem. As with garbage collection in programming languages, this is very\nsimple when one always has a consistent view. When one adds parallelism and an\ninconsistent view of data, it becomes very challenging.\n\nA simple example can demonstrate this. Let's say we are deleting a manifest\n_A_ in one process. We scan the manifest and decide that all the blobs are\nready for deletion. Concurrently, we have another process accepting a new\nmanifest _B_ referencing one or more blobs from the manifest _A_. Manifest _B_\nis accepted and all the blobs are considered present, so the operation\nproceeds. The original process then deletes the referenced blobs, assuming\nthey were unreferenced. The manifest _B_, which we thought had all of its data\npresent, can no longer be served by the registry, since the dependent data has\nbeen deleted.\n\nDeleting data from the registry safely requires some way to coordinate this\noperation. The following approaches are being considered:\n\n- _Reference Counting_ - Maintain a count of references to each blob. This is\n  challenging for a number of reasons: 1. maintaining a consistent consensus\n  of reference counts across a set of Registries and 2. Building the initial\n  list of reference counts for an existing registry. These challenges can be\n  met with a consensus protocol like Paxos or Raft in the first case and a\n  necessary but simple scan in the second..\n- _Lock the World GC_ - Halt all writes to the data store. Walk the data store\n  and find all blob references. Delete all unreferenced blobs. This approach\n  is very simple but requires disabling writes for a period of time while the\n  service reads all data. This is slow and expensive but very accurate and\n  effective.\n- _Generational GC_ - Do something similar to above but instead of blocking\n  writes, writes are sent to another storage backend while reads are broadcast\n  to the new and old backends. GC is then performed on the read-only portion.\n  Because writes land in the new backend, the data in the read-only section\n  can be safely deleted. The main drawbacks of this approach are complexity\n  and coordination.\n- _Centralized Oracle_ - Using a centralized, transactional database, we can\n  know exactly which data is referenced at any given time. This avoids\n  coordination problem by managing this data in a single location. We trade\n  off metadata scalability for simplicity and performance. This is a very good\n  option for most registry deployments. This would create a bottleneck for\n  registry metadata. However, metadata is generally not the main bottleneck\n  when serving images.\n\nPlease let us know if other solutions exist that we have yet to enumerate.\nNote that for any approach, implementation is a massive consideration. For\nexample, a mark-sweep based solution may seem simple but the amount of work in\ncoordination offset the extra work it might take to build a _Centralized\nOracle_. We'll accept proposals for any solution but please coordinate with us\nbefore dropping code.\n\nAt this time, we have traded off simplicity and ease of deployment for disk\nspace. Simplicity and ease of deployment tend to reduce developer involvement,\nwhich is currently the most expensive resource in software engineering. Taking\non any solution for deletes will greatly effect these factors, trading off\nvery cheap disk space for a complex deployment and operational story.\n\nPlease see the following issues for more detail:\n\n- https://github.com/docker/distribution/issues/422\n- https://github.com/docker/distribution/issues/461\n- https://github.com/docker/distribution/issues/462\n\n### Distribution Package \n\nAt its core, the Distribution Project is a set of Go packages that make up\nDistribution Components. At this time, most of these packages make up the\nRegistry implementation. \n\nThe package itself is considered unstable. If you're using it, please take care to vendor the dependent version. \n\nFor feature additions, please see the Registry section. In the future, we may break out a\nseparate Roadmap for distribution-specific features that apply to more than\njust the registry.\n\n***\n\n### Project Planning\n\nAn [Open-Source Planning Process](https://github.com/docker/distribution/wiki/Open-Source-Planning-Process) is used to define the Roadmap. [Project Pages](https://github.com/docker/distribution/wiki) define the goals for each Milestone and identify current progress.\n\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/blobs.go",
    "content": "package distribution\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/distribution/reference\"\n)\n\nvar (\n\t// ErrBlobExists returned when blob already exists\n\tErrBlobExists = errors.New(\"blob exists\")\n\n\t// ErrBlobDigestUnsupported when blob digest is an unsupported version.\n\tErrBlobDigestUnsupported = errors.New(\"unsupported blob digest\")\n\n\t// ErrBlobUnknown when blob is not found.\n\tErrBlobUnknown = errors.New(\"unknown blob\")\n\n\t// ErrBlobUploadUnknown returned when upload is not found.\n\tErrBlobUploadUnknown = errors.New(\"blob upload unknown\")\n\n\t// ErrBlobInvalidLength returned when the blob has an expected length on\n\t// commit, meaning mismatched with the descriptor or an invalid value.\n\tErrBlobInvalidLength = errors.New(\"blob invalid length\")\n)\n\n// ErrBlobInvalidDigest returned when digest check fails.\ntype ErrBlobInvalidDigest struct {\n\tDigest digest.Digest\n\tReason error\n}\n\nfunc (err ErrBlobInvalidDigest) Error() string {\n\treturn fmt.Sprintf(\"invalid digest for referenced layer: %v, %v\",\n\t\terr.Digest, err.Reason)\n}\n\n// ErrBlobMounted returned when a blob is mounted from another repository\n// instead of initiating an upload session.\ntype ErrBlobMounted struct {\n\tFrom       reference.Canonical\n\tDescriptor Descriptor\n}\n\nfunc (err ErrBlobMounted) Error() string {\n\treturn fmt.Sprintf(\"blob mounted from: %v to: %v\",\n\t\terr.From, err.Descriptor)\n}\n\n// Descriptor describes targeted content. Used in conjunction with a blob\n// store, a descriptor can be used to fetch, store and target any kind of\n// blob. The struct also describes the wire protocol format. Fields should\n// only be added but never changed.\ntype Descriptor struct {\n\t// MediaType describe the type of the content. All text based formats are\n\t// encoded as utf-8.\n\tMediaType string `json:\"mediaType,omitempty\"`\n\n\t// Size in bytes of content.\n\tSize int64 `json:\"size,omitempty\"`\n\n\t// Digest uniquely identifies the content. A byte stream can be verified\n\t// against against this digest.\n\tDigest digest.Digest `json:\"digest,omitempty\"`\n\n\t// NOTE: Before adding a field here, please ensure that all\n\t// other options have been exhausted. Much of the type relationships\n\t// depend on the simplicity of this type.\n}\n\n// Descriptor returns the descriptor, to make it satisfy the Describable\n// interface. Note that implementations of Describable are generally objects\n// which can be described, not simply descriptors; this exception is in place\n// to make it more convenient to pass actual descriptors to functions that\n// expect Describable objects.\nfunc (d Descriptor) Descriptor() Descriptor {\n\treturn d\n}\n\n// BlobStatter makes blob descriptors available by digest. The service may\n// provide a descriptor of a different digest if the provided digest is not\n// canonical.\ntype BlobStatter interface {\n\t// Stat provides metadata about a blob identified by the digest. If the\n\t// blob is unknown to the describer, ErrBlobUnknown will be returned.\n\tStat(ctx context.Context, dgst digest.Digest) (Descriptor, error)\n}\n\n// BlobDeleter enables deleting blobs from storage.\ntype BlobDeleter interface {\n\tDelete(ctx context.Context, dgst digest.Digest) error\n}\n\n// BlobEnumerator enables iterating over blobs from storage\ntype BlobEnumerator interface {\n\tEnumerate(ctx context.Context, ingester func(dgst digest.Digest) error) error\n}\n\n// BlobDescriptorService manages metadata about a blob by digest. Most\n// implementations will not expose such an interface explicitly. Such mappings\n// should be maintained by interacting with the BlobIngester. Hence, this is\n// left off of BlobService and BlobStore.\ntype BlobDescriptorService interface {\n\tBlobStatter\n\n\t// SetDescriptor assigns the descriptor to the digest. The provided digest and\n\t// the digest in the descriptor must map to identical content but they may\n\t// differ on their algorithm. The descriptor must have the canonical\n\t// digest of the content and the digest algorithm must match the\n\t// annotators canonical algorithm.\n\t//\n\t// Such a facility can be used to map blobs between digest domains, with\n\t// the restriction that the algorithm of the descriptor must match the\n\t// canonical algorithm (ie sha256) of the annotator.\n\tSetDescriptor(ctx context.Context, dgst digest.Digest, desc Descriptor) error\n\n\t// Clear enables descriptors to be unlinked\n\tClear(ctx context.Context, dgst digest.Digest) error\n}\n\n// ReadSeekCloser is the primary reader type for blob data, combining\n// io.ReadSeeker with io.Closer.\ntype ReadSeekCloser interface {\n\tio.ReadSeeker\n\tio.Closer\n}\n\n// BlobProvider describes operations for getting blob data.\ntype BlobProvider interface {\n\t// Get returns the entire blob identified by digest along with the descriptor.\n\tGet(ctx context.Context, dgst digest.Digest) ([]byte, error)\n\n\t// Open provides a ReadSeekCloser to the blob identified by the provided\n\t// descriptor. If the blob is not known to the service, an error will be\n\t// returned.\n\tOpen(ctx context.Context, dgst digest.Digest) (ReadSeekCloser, error)\n}\n\n// BlobServer can serve blobs via http.\ntype BlobServer interface {\n\t// ServeBlob attempts to serve the blob, identifed by dgst, via http. The\n\t// service may decide to redirect the client elsewhere or serve the data\n\t// directly.\n\t//\n\t// This handler only issues successful responses, such as 2xx or 3xx,\n\t// meaning it serves data or issues a redirect. If the blob is not\n\t// available, an error will be returned and the caller may still issue a\n\t// response.\n\t//\n\t// The implementation may serve the same blob from a different digest\n\t// domain. The appropriate headers will be set for the blob, unless they\n\t// have already been set by the caller.\n\tServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error\n}\n\n// BlobIngester ingests blob data.\ntype BlobIngester interface {\n\t// Put inserts the content p into the blob service, returning a descriptor\n\t// or an error.\n\tPut(ctx context.Context, mediaType string, p []byte) (Descriptor, error)\n\n\t// Create allocates a new blob writer to add a blob to this service. The\n\t// returned handle can be written to and later resumed using an opaque\n\t// identifier. With this approach, one can Close and Resume a BlobWriter\n\t// multiple times until the BlobWriter is committed or cancelled.\n\tCreate(ctx context.Context, options ...BlobCreateOption) (BlobWriter, error)\n\n\t// Resume attempts to resume a write to a blob, identified by an id.\n\tResume(ctx context.Context, id string) (BlobWriter, error)\n}\n\n// BlobCreateOption is a general extensible function argument for blob creation\n// methods. A BlobIngester may choose to honor any or none of the given\n// BlobCreateOptions, which can be specific to the implementation of the\n// BlobIngester receiving them.\n// TODO (brianbland): unify this with ManifestServiceOption in the future\ntype BlobCreateOption interface {\n\tApply(interface{}) error\n}\n\n// BlobWriter provides a handle for inserting data into a blob store.\n// Instances should be obtained from BlobWriteService.Writer and\n// BlobWriteService.Resume. If supported by the store, a writer can be\n// recovered with the id.\ntype BlobWriter interface {\n\tio.WriteCloser\n\tio.ReaderFrom\n\n\t// Size returns the number of bytes written to this blob.\n\tSize() int64\n\n\t// ID returns the identifier for this writer. The ID can be used with the\n\t// Blob service to later resume the write.\n\tID() string\n\n\t// StartedAt returns the time this blob write was started.\n\tStartedAt() time.Time\n\n\t// Commit completes the blob writer process. The content is verified\n\t// against the provided provisional descriptor, which may result in an\n\t// error. Depending on the implementation, written data may be validated\n\t// against the provisional descriptor fields. If MediaType is not present,\n\t// the implementation may reject the commit or assign \"application/octet-\n\t// stream\" to the blob. The returned descriptor may have a different\n\t// digest depending on the blob store, referred to as the canonical\n\t// descriptor.\n\tCommit(ctx context.Context, provisional Descriptor) (canonical Descriptor, err error)\n\n\t// Cancel ends the blob write without storing any data and frees any\n\t// associated resources. Any data written thus far will be lost. Cancel\n\t// implementations should allow multiple calls even after a commit that\n\t// result in a no-op. This allows use of Cancel in a defer statement,\n\t// increasing the assurance that it is correctly called.\n\tCancel(ctx context.Context) error\n}\n\n// BlobService combines the operations to access, read and write blobs. This\n// can be used to describe remote blob services.\ntype BlobService interface {\n\tBlobStatter\n\tBlobProvider\n\tBlobIngester\n}\n\n// BlobStore represent the entire suite of blob related operations. Such an\n// implementation can access, read, write, delete and serve blobs.\ntype BlobStore interface {\n\tBlobService\n\tBlobServer\n\tBlobDeleter\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/circle.yml",
    "content": "# Pony-up!\nmachine:\n  pre:\n  # Install gvm\n    - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/1.0.22/binscripts/gvm-installer)\n  # Install codecov for coverage\n    - pip install --user codecov\n\n  post:\n  # go\n    - gvm install go1.6 --prefer-binary --name=stable\n\n  environment:\n  # Convenient shortcuts to \"common\" locations\n    CHECKOUT: /home/ubuntu/$CIRCLE_PROJECT_REPONAME\n    BASE_DIR: src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME\n  # Trick circle brainflat \"no absolute path\" behavior\n    BASE_STABLE: ../../../$HOME/.gvm/pkgsets/stable/global/$BASE_DIR\n    DOCKER_BUILDTAGS: \"include_oss include_gcs\"\n  # Workaround Circle parsing dumb bugs and/or YAML wonkyness\n    CIRCLE_PAIN: \"mode: set\"\n\n  hosts:\n  # Not used yet\n    fancy: 127.0.0.1\n\ndependencies:\n  pre:\n  # Copy the code to the gopath of all go versions\n    - >\n      gvm use stable &&\n      mkdir -p \"$(dirname $BASE_STABLE)\" &&\n      cp -R \"$CHECKOUT\" \"$BASE_STABLE\"\n\n  override:\n  # Install dependencies for every copied clone/go version\n    - gvm use stable && go get github.com/tools/godep:\n        pwd: $BASE_STABLE\n\n  post:\n  # For the stable go version, additionally install linting tools\n    - >\n      gvm use stable &&\n      go get github.com/axw/gocov/gocov github.com/golang/lint/golint\n\ntest:\n  pre:\n  # Output the go versions we are going to test\n    # - gvm use old && go version\n    - gvm use stable && go version\n\n  # Ensure validation of dependencies\n    - gvm use stable && if test -n \"`git diff --stat=1000 master | grep -Ei \\\"vendor|godeps\\\"`\"; then make dep-validate; fi:\n        pwd: $BASE_STABLE\n\n  # First thing: build everything. This will catch compile errors, and it's\n  # also necessary for go vet to work properly (see #807).\n    - gvm use stable && godep go install $(go list ./... | grep -v \"/vendor/\"):\n        pwd: $BASE_STABLE\n\n  # FMT\n    - gvm use stable && make fmt:\n        pwd: $BASE_STABLE\n\n   # VET\n    - gvm use stable && make vet:\n        pwd: $BASE_STABLE\n\n  # LINT\n    - gvm use stable && make lint:\n        pwd: $BASE_STABLE\n\n  override:\n  # Test stable, and report\n     - gvm use stable; export ROOT_PACKAGE=$(go list .); go list -tags \"$DOCKER_BUILDTAGS\" ./... | grep -v \"/vendor/\" | xargs -L 1 -I{} bash -c 'export PACKAGE={}; godep go test -tags \"$DOCKER_BUILDTAGS\" -test.short -coverprofile=$GOPATH/src/$PACKAGE/coverage.out -coverpkg=$(./coverpkg.sh $PACKAGE $ROOT_PACKAGE) $PACKAGE':\n         timeout: 600\n         pwd: $BASE_STABLE\n\n  post:\n  # Report to codecov\n    - bash <(curl -s https://codecov.io/bash):\n        pwd: $BASE_STABLE\n\n  ## Notes\n  # Disabled the -race detector due to massive memory usage.\n  # Do we want these as well?\n  # - go get code.google.com/p/go.tools/cmd/goimports\n  # - test -z \"$(goimports -l -w ./... | tee /dev/stderr)\"\n  # http://labix.org/gocheck\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/context.go",
    "content": "package context\n\nimport (\n\t\"sync\"\n\n\t\"github.com/docker/distribution/uuid\"\n\t\"golang.org/x/net/context\"\n)\n\n// Context is a copy of Context from the golang.org/x/net/context package.\ntype Context interface {\n\tcontext.Context\n}\n\n// instanceContext is a context that provides only an instance id. It is\n// provided as the main background context.\ntype instanceContext struct {\n\tContext\n\tid   string    // id of context, logged as \"instance.id\"\n\tonce sync.Once // once protect generation of the id\n}\n\nfunc (ic *instanceContext) Value(key interface{}) interface{} {\n\tif key == \"instance.id\" {\n\t\tic.once.Do(func() {\n\t\t\t// We want to lazy initialize the UUID such that we don't\n\t\t\t// call a random generator from the package initialization\n\t\t\t// code. For various reasons random could not be available\n\t\t\t// https://github.com/docker/distribution/issues/782\n\t\t\tic.id = uuid.Generate().String()\n\t\t})\n\t\treturn ic.id\n\t}\n\n\treturn ic.Context.Value(key)\n}\n\nvar background = &instanceContext{\n\tContext: context.Background(),\n}\n\n// Background returns a non-nil, empty Context. The background context\n// provides a single key, \"instance.id\" that is globally unique to the\n// process.\nfunc Background() Context {\n\treturn background\n}\n\n// WithValue returns a copy of parent in which the value associated with key is\n// val. Use context Values only for request-scoped data that transits processes\n// and APIs, not for passing optional parameters to functions.\nfunc WithValue(parent Context, key, val interface{}) Context {\n\treturn context.WithValue(parent, key, val)\n}\n\n// stringMapContext is a simple context implementation that checks a map for a\n// key, falling back to a parent if not present.\ntype stringMapContext struct {\n\tcontext.Context\n\tm map[string]interface{}\n}\n\n// WithValues returns a context that proxies lookups through a map. Only\n// supports string keys.\nfunc WithValues(ctx context.Context, m map[string]interface{}) context.Context {\n\tmo := make(map[string]interface{}, len(m)) // make our own copy.\n\tfor k, v := range m {\n\t\tmo[k] = v\n\t}\n\n\treturn stringMapContext{\n\t\tContext: ctx,\n\t\tm:       mo,\n\t}\n}\n\nfunc (smc stringMapContext) Value(key interface{}) interface{} {\n\tif ks, ok := key.(string); ok {\n\t\tif v, ok := smc.m[ks]; ok {\n\t\t\treturn v\n\t\t}\n\t}\n\n\treturn smc.Context.Value(key)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/doc.go",
    "content": "// Package context provides several utilities for working with\n// golang.org/x/net/context in http requests. Primarily, the focus is on\n// logging relevant request information but this package is not limited to\n// that purpose.\n//\n// The easiest way to get started is to get the background context:\n//\n// \tctx := context.Background()\n//\n// The returned context should be passed around your application and be the\n// root of all other context instances. If the application has a version, this\n// line should be called before anything else:\n//\n// \tctx := context.WithVersion(context.Background(), version)\n//\n// The above will store the version in the context and will be available to\n// the logger.\n//\n// Logging\n//\n// The most useful aspect of this package is GetLogger. This function takes\n// any context.Context interface and returns the current logger from the\n// context. Canonical usage looks like this:\n//\n// \tGetLogger(ctx).Infof(\"something interesting happened\")\n//\n// GetLogger also takes optional key arguments. The keys will be looked up in\n// the context and reported with the logger. The following example would\n// return a logger that prints the version with each log message:\n//\n// \tctx := context.Context(context.Background(), \"version\", version)\n// \tGetLogger(ctx, \"version\").Infof(\"this log message has a version field\")\n//\n// The above would print out a log message like this:\n//\n// \tINFO[0000] this log message has a version field        version=v2.0.0-alpha.2.m\n//\n// When used with WithLogger, we gain the ability to decorate the context with\n// loggers that have information from disparate parts of the call stack.\n// Following from the version example, we can build a new context with the\n// configured logger such that we always print the version field:\n//\n// \tctx = WithLogger(ctx, GetLogger(ctx, \"version\"))\n//\n// Since the logger has been pushed to the context, we can now get the version\n// field for free with our log messages. Future calls to GetLogger on the new\n// context will have the version field:\n//\n// \tGetLogger(ctx).Infof(\"this log message has a version field\")\n//\n// This becomes more powerful when we start stacking loggers. Let's say we\n// have the version logger from above but also want a request id. Using the\n// context above, in our request scoped function, we place another logger in\n// the context:\n//\n// \tctx = context.WithValue(ctx, \"http.request.id\", \"unique id\") // called when building request context\n// \tctx = WithLogger(ctx, GetLogger(ctx, \"http.request.id\"))\n//\n// When GetLogger is called on the new context, \"http.request.id\" will be\n// included as a logger field, along with the original \"version\" field:\n//\n// \tINFO[0000] this log message has a version field        http.request.id=unique id version=v2.0.0-alpha.2.m\n//\n// Note that this only affects the new context, the previous context, with the\n// version field, can be used independently. Put another way, the new logger,\n// added to the request context, is unique to that context and can have\n// request scoped varaibles.\n//\n// HTTP Requests\n//\n// This package also contains several methods for working with http requests.\n// The concepts are very similar to those described above. We simply place the\n// request in the context using WithRequest. This makes the request variables\n// available. GetRequestLogger can then be called to get request specific\n// variables in a log line:\n//\n// \tctx = WithRequest(ctx, req)\n// \tGetRequestLogger(ctx).Infof(\"request variables\")\n//\n// Like above, if we want to include the request data in all log messages in\n// the context, we push the logger to a new context and use that one:\n//\n// \tctx = WithLogger(ctx, GetRequestLogger(ctx))\n//\n// The concept is fairly powerful and ensures that calls throughout the stack\n// can be traced in log messages. Using the fields like \"http.request.id\", one\n// can analyze call flow for a particular request with a simple grep of the\n// logs.\npackage context\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/http.go",
    "content": "package context\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"net/http\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/uuid\"\n\t\"github.com/gorilla/mux\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// Common errors used with this package.\nvar (\n\tErrNoRequestContext        = errors.New(\"no http request in context\")\n\tErrNoResponseWriterContext = errors.New(\"no http response in context\")\n)\n\nfunc parseIP(ipStr string) net.IP {\n\tip := net.ParseIP(ipStr)\n\tif ip == nil {\n\t\tlog.Warnf(\"invalid remote IP address: %q\", ipStr)\n\t}\n\treturn ip\n}\n\n// RemoteAddr extracts the remote address of the request, taking into\n// account proxy headers.\nfunc RemoteAddr(r *http.Request) string {\n\tif prior := r.Header.Get(\"X-Forwarded-For\"); prior != \"\" {\n\t\tproxies := strings.Split(prior, \",\")\n\t\tif len(proxies) > 0 {\n\t\t\tremoteAddr := strings.Trim(proxies[0], \" \")\n\t\t\tif parseIP(remoteAddr) != nil {\n\t\t\t\treturn remoteAddr\n\t\t\t}\n\t\t}\n\t}\n\t// X-Real-Ip is less supported, but worth checking in the\n\t// absence of X-Forwarded-For\n\tif realIP := r.Header.Get(\"X-Real-Ip\"); realIP != \"\" {\n\t\tif parseIP(realIP) != nil {\n\t\t\treturn realIP\n\t\t}\n\t}\n\n\treturn r.RemoteAddr\n}\n\n// RemoteIP extracts the remote IP of the request, taking into\n// account proxy headers.\nfunc RemoteIP(r *http.Request) string {\n\taddr := RemoteAddr(r)\n\n\t// Try parsing it as \"IP:port\"\n\tif ip, _, err := net.SplitHostPort(addr); err == nil {\n\t\treturn ip\n\t}\n\n\treturn addr\n}\n\n// WithRequest places the request on the context. The context of the request\n// is assigned a unique id, available at \"http.request.id\". The request itself\n// is available at \"http.request\". Other common attributes are available under\n// the prefix \"http.request.\". If a request is already present on the context,\n// this method will panic.\nfunc WithRequest(ctx Context, r *http.Request) Context {\n\tif ctx.Value(\"http.request\") != nil {\n\t\t// NOTE(stevvooe): This needs to be considered a programming error. It\n\t\t// is unlikely that we'd want to have more than one request in\n\t\t// context.\n\t\tpanic(\"only one request per context\")\n\t}\n\n\treturn &httpRequestContext{\n\t\tContext:   ctx,\n\t\tstartedAt: time.Now(),\n\t\tid:        uuid.Generate().String(),\n\t\tr:         r,\n\t}\n}\n\n// GetRequest returns the http request in the given context. Returns\n// ErrNoRequestContext if the context does not have an http request associated\n// with it.\nfunc GetRequest(ctx Context) (*http.Request, error) {\n\tif r, ok := ctx.Value(\"http.request\").(*http.Request); r != nil && ok {\n\t\treturn r, nil\n\t}\n\treturn nil, ErrNoRequestContext\n}\n\n// GetRequestID attempts to resolve the current request id, if possible. An\n// error is return if it is not available on the context.\nfunc GetRequestID(ctx Context) string {\n\treturn GetStringValue(ctx, \"http.request.id\")\n}\n\n// WithResponseWriter returns a new context and response writer that makes\n// interesting response statistics available within the context.\nfunc WithResponseWriter(ctx Context, w http.ResponseWriter) (Context, http.ResponseWriter) {\n\tirw := instrumentedResponseWriter{\n\t\tResponseWriter: w,\n\t\tContext:        ctx,\n\t}\n\n\tif closeNotifier, ok := w.(http.CloseNotifier); ok {\n\t\tirwCN := &instrumentedResponseWriterCN{\n\t\t\tinstrumentedResponseWriter: irw,\n\t\t\tCloseNotifier:              closeNotifier,\n\t\t}\n\n\t\treturn irwCN, irwCN\n\t}\n\n\treturn &irw, &irw\n}\n\n// GetResponseWriter returns the http.ResponseWriter from the provided\n// context. If not present, ErrNoResponseWriterContext is returned. The\n// returned instance provides instrumentation in the context.\nfunc GetResponseWriter(ctx Context) (http.ResponseWriter, error) {\n\tv := ctx.Value(\"http.response\")\n\n\trw, ok := v.(http.ResponseWriter)\n\tif !ok || rw == nil {\n\t\treturn nil, ErrNoResponseWriterContext\n\t}\n\n\treturn rw, nil\n}\n\n// getVarsFromRequest let's us change request vars implementation for testing\n// and maybe future changes.\nvar getVarsFromRequest = mux.Vars\n\n// WithVars extracts gorilla/mux vars and makes them available on the returned\n// context. Variables are available at keys with the prefix \"vars.\". For\n// example, if looking for the variable \"name\", it can be accessed as\n// \"vars.name\". Implementations that are accessing values need not know that\n// the underlying context is implemented with gorilla/mux vars.\nfunc WithVars(ctx Context, r *http.Request) Context {\n\treturn &muxVarsContext{\n\t\tContext: ctx,\n\t\tvars:    getVarsFromRequest(r),\n\t}\n}\n\n// GetRequestLogger returns a logger that contains fields from the request in\n// the current context. If the request is not available in the context, no\n// fields will display. Request loggers can safely be pushed onto the context.\nfunc GetRequestLogger(ctx Context) Logger {\n\treturn GetLogger(ctx,\n\t\t\"http.request.id\",\n\t\t\"http.request.method\",\n\t\t\"http.request.host\",\n\t\t\"http.request.uri\",\n\t\t\"http.request.referer\",\n\t\t\"http.request.useragent\",\n\t\t\"http.request.remoteaddr\",\n\t\t\"http.request.contenttype\")\n}\n\n// GetResponseLogger reads the current response stats and builds a logger.\n// Because the values are read at call time, pushing a logger returned from\n// this function on the context will lead to missing or invalid data. Only\n// call this at the end of a request, after the response has been written.\nfunc GetResponseLogger(ctx Context) Logger {\n\tl := getLogrusLogger(ctx,\n\t\t\"http.response.written\",\n\t\t\"http.response.status\",\n\t\t\"http.response.contenttype\")\n\n\tduration := Since(ctx, \"http.request.startedat\")\n\n\tif duration > 0 {\n\t\tl = l.WithField(\"http.response.duration\", duration.String())\n\t}\n\n\treturn l\n}\n\n// httpRequestContext makes information about a request available to context.\ntype httpRequestContext struct {\n\tContext\n\n\tstartedAt time.Time\n\tid        string\n\tr         *http.Request\n}\n\n// Value returns a keyed element of the request for use in the context. To get\n// the request itself, query \"request\". For other components, access them as\n// \"request.<component>\". For example, r.RequestURI\nfunc (ctx *httpRequestContext) Value(key interface{}) interface{} {\n\tif keyStr, ok := key.(string); ok {\n\t\tif keyStr == \"http.request\" {\n\t\t\treturn ctx.r\n\t\t}\n\n\t\tif !strings.HasPrefix(keyStr, \"http.request.\") {\n\t\t\tgoto fallback\n\t\t}\n\n\t\tparts := strings.Split(keyStr, \".\")\n\n\t\tif len(parts) != 3 {\n\t\t\tgoto fallback\n\t\t}\n\n\t\tswitch parts[2] {\n\t\tcase \"uri\":\n\t\t\treturn ctx.r.RequestURI\n\t\tcase \"remoteaddr\":\n\t\t\treturn RemoteAddr(ctx.r)\n\t\tcase \"method\":\n\t\t\treturn ctx.r.Method\n\t\tcase \"host\":\n\t\t\treturn ctx.r.Host\n\t\tcase \"referer\":\n\t\t\treferer := ctx.r.Referer()\n\t\t\tif referer != \"\" {\n\t\t\t\treturn referer\n\t\t\t}\n\t\tcase \"useragent\":\n\t\t\treturn ctx.r.UserAgent()\n\t\tcase \"id\":\n\t\t\treturn ctx.id\n\t\tcase \"startedat\":\n\t\t\treturn ctx.startedAt\n\t\tcase \"contenttype\":\n\t\t\tct := ctx.r.Header.Get(\"Content-Type\")\n\t\t\tif ct != \"\" {\n\t\t\t\treturn ct\n\t\t\t}\n\t\t}\n\t}\n\nfallback:\n\treturn ctx.Context.Value(key)\n}\n\ntype muxVarsContext struct {\n\tContext\n\tvars map[string]string\n}\n\nfunc (ctx *muxVarsContext) Value(key interface{}) interface{} {\n\tif keyStr, ok := key.(string); ok {\n\t\tif keyStr == \"vars\" {\n\t\t\treturn ctx.vars\n\t\t}\n\n\t\tif strings.HasPrefix(keyStr, \"vars.\") {\n\t\t\tkeyStr = strings.TrimPrefix(keyStr, \"vars.\")\n\t\t}\n\n\t\tif v, ok := ctx.vars[keyStr]; ok {\n\t\t\treturn v\n\t\t}\n\t}\n\n\treturn ctx.Context.Value(key)\n}\n\n// instrumentedResponseWriterCN provides response writer information in a\n// context. It implements http.CloseNotifier so that users can detect\n// early disconnects.\ntype instrumentedResponseWriterCN struct {\n\tinstrumentedResponseWriter\n\thttp.CloseNotifier\n}\n\n// instrumentedResponseWriter provides response writer information in a\n// context. This variant is only used in the case where CloseNotifier is not\n// implemented by the parent ResponseWriter.\ntype instrumentedResponseWriter struct {\n\thttp.ResponseWriter\n\tContext\n\n\tmu      sync.Mutex\n\tstatus  int\n\twritten int64\n}\n\nfunc (irw *instrumentedResponseWriter) Write(p []byte) (n int, err error) {\n\tn, err = irw.ResponseWriter.Write(p)\n\n\tirw.mu.Lock()\n\tirw.written += int64(n)\n\n\t// Guess the likely status if not set.\n\tif irw.status == 0 {\n\t\tirw.status = http.StatusOK\n\t}\n\n\tirw.mu.Unlock()\n\n\treturn\n}\n\nfunc (irw *instrumentedResponseWriter) WriteHeader(status int) {\n\tirw.ResponseWriter.WriteHeader(status)\n\n\tirw.mu.Lock()\n\tirw.status = status\n\tirw.mu.Unlock()\n}\n\nfunc (irw *instrumentedResponseWriter) Flush() {\n\tif flusher, ok := irw.ResponseWriter.(http.Flusher); ok {\n\t\tflusher.Flush()\n\t}\n}\n\nfunc (irw *instrumentedResponseWriter) Value(key interface{}) interface{} {\n\tif keyStr, ok := key.(string); ok {\n\t\tif keyStr == \"http.response\" {\n\t\t\treturn irw\n\t\t}\n\n\t\tif !strings.HasPrefix(keyStr, \"http.response.\") {\n\t\t\tgoto fallback\n\t\t}\n\n\t\tparts := strings.Split(keyStr, \".\")\n\n\t\tif len(parts) != 3 {\n\t\t\tgoto fallback\n\t\t}\n\n\t\tirw.mu.Lock()\n\t\tdefer irw.mu.Unlock()\n\n\t\tswitch parts[2] {\n\t\tcase \"written\":\n\t\t\treturn irw.written\n\t\tcase \"status\":\n\t\t\treturn irw.status\n\t\tcase \"contenttype\":\n\t\t\tcontentType := irw.Header().Get(\"Content-Type\")\n\t\t\tif contentType != \"\" {\n\t\t\t\treturn contentType\n\t\t\t}\n\t\t}\n\t}\n\nfallback:\n\treturn irw.Context.Value(key)\n}\n\nfunc (irw *instrumentedResponseWriterCN) Value(key interface{}) interface{} {\n\tif keyStr, ok := key.(string); ok {\n\t\tif keyStr == \"http.response\" {\n\t\t\treturn irw\n\t\t}\n\t}\n\n\treturn irw.instrumentedResponseWriter.Value(key)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/logger.go",
    "content": "package context\n\nimport (\n\t\"fmt\"\n\n\t\"runtime\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Logger provides a leveled-logging interface.\ntype Logger interface {\n\t// standard logger methods\n\tPrint(args ...interface{})\n\tPrintf(format string, args ...interface{})\n\tPrintln(args ...interface{})\n\n\tFatal(args ...interface{})\n\tFatalf(format string, args ...interface{})\n\tFatalln(args ...interface{})\n\n\tPanic(args ...interface{})\n\tPanicf(format string, args ...interface{})\n\tPanicln(args ...interface{})\n\n\t// Leveled methods, from logrus\n\tDebug(args ...interface{})\n\tDebugf(format string, args ...interface{})\n\tDebugln(args ...interface{})\n\n\tError(args ...interface{})\n\tErrorf(format string, args ...interface{})\n\tErrorln(args ...interface{})\n\n\tInfo(args ...interface{})\n\tInfof(format string, args ...interface{})\n\tInfoln(args ...interface{})\n\n\tWarn(args ...interface{})\n\tWarnf(format string, args ...interface{})\n\tWarnln(args ...interface{})\n}\n\n// WithLogger creates a new context with provided logger.\nfunc WithLogger(ctx Context, logger Logger) Context {\n\treturn WithValue(ctx, \"logger\", logger)\n}\n\n// GetLoggerWithField returns a logger instance with the specified field key\n// and value without affecting the context. Extra specified keys will be\n// resolved from the context.\nfunc GetLoggerWithField(ctx Context, key, value interface{}, keys ...interface{}) Logger {\n\treturn getLogrusLogger(ctx, keys...).WithField(fmt.Sprint(key), value)\n}\n\n// GetLoggerWithFields returns a logger instance with the specified fields\n// without affecting the context. Extra specified keys will be resolved from\n// the context.\nfunc GetLoggerWithFields(ctx Context, fields map[interface{}]interface{}, keys ...interface{}) Logger {\n\t// must convert from interface{} -> interface{} to string -> interface{} for logrus.\n\tlfields := make(logrus.Fields, len(fields))\n\tfor key, value := range fields {\n\t\tlfields[fmt.Sprint(key)] = value\n\t}\n\n\treturn getLogrusLogger(ctx, keys...).WithFields(lfields)\n}\n\n// GetLogger returns the logger from the current context, if present. If one\n// or more keys are provided, they will be resolved on the context and\n// included in the logger. While context.Value takes an interface, any key\n// argument passed to GetLogger will be passed to fmt.Sprint when expanded as\n// a logging key field. If context keys are integer constants, for example,\n// its recommended that a String method is implemented.\nfunc GetLogger(ctx Context, keys ...interface{}) Logger {\n\treturn getLogrusLogger(ctx, keys...)\n}\n\n// GetLogrusLogger returns the logrus logger for the context. If one more keys\n// are provided, they will be resolved on the context and included in the\n// logger. Only use this function if specific logrus functionality is\n// required.\nfunc getLogrusLogger(ctx Context, keys ...interface{}) *logrus.Entry {\n\tvar logger *logrus.Entry\n\n\t// Get a logger, if it is present.\n\tloggerInterface := ctx.Value(\"logger\")\n\tif loggerInterface != nil {\n\t\tif lgr, ok := loggerInterface.(*logrus.Entry); ok {\n\t\t\tlogger = lgr\n\t\t}\n\t}\n\n\tif logger == nil {\n\t\tfields := logrus.Fields{}\n\n\t\t// Fill in the instance id, if we have it.\n\t\tinstanceID := ctx.Value(\"instance.id\")\n\t\tif instanceID != nil {\n\t\t\tfields[\"instance.id\"] = instanceID\n\t\t}\n\n\t\tfields[\"go.version\"] = runtime.Version()\n\t\t// If no logger is found, just return the standard logger.\n\t\tlogger = logrus.StandardLogger().WithFields(fields)\n\t}\n\n\tfields := logrus.Fields{}\n\tfor _, key := range keys {\n\t\tv := ctx.Value(key)\n\t\tif v != nil {\n\t\t\tfields[fmt.Sprint(key)] = v\n\t\t}\n\t}\n\n\treturn logger.WithFields(fields)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/trace.go",
    "content": "package context\n\nimport (\n\t\"runtime\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/uuid\"\n)\n\n// WithTrace allocates a traced timing span in a new context. This allows a\n// caller to track the time between calling WithTrace and the returned done\n// function. When the done function is called, a log message is emitted with a\n// \"trace.duration\" field, corresponding to the elapsed time and a\n// \"trace.func\" field, corresponding to the function that called WithTrace.\n//\n// The logging keys \"trace.id\" and \"trace.parent.id\" are provided to implement\n// dapper-like tracing. This function should be complemented with a WithSpan\n// method that could be used for tracing distributed RPC calls.\n//\n// The main benefit of this function is to post-process log messages or\n// intercept them in a hook to provide timing data. Trace ids and parent ids\n// can also be linked to provide call tracing, if so required.\n//\n// Here is an example of the usage:\n//\n// \tfunc timedOperation(ctx Context) {\n// \t\tctx, done := WithTrace(ctx)\n// \t\tdefer done(\"this will be the log message\")\n// \t\t// ... function body ...\n// \t}\n//\n// If the function ran for roughly 1s, such a usage would emit a log message\n// as follows:\n//\n// \tINFO[0001] this will be the log message  trace.duration=1.004575763s trace.func=github.com/docker/distribution/context.traceOperation trace.id=<id> ...\n//\n// Notice that the function name is automatically resolved, along with the\n// package and a trace id is emitted that can be linked with parent ids.\nfunc WithTrace(ctx Context) (Context, func(format string, a ...interface{})) {\n\tif ctx == nil {\n\t\tctx = Background()\n\t}\n\n\tpc, file, line, _ := runtime.Caller(1)\n\tf := runtime.FuncForPC(pc)\n\tctx = &traced{\n\t\tContext: ctx,\n\t\tid:      uuid.Generate().String(),\n\t\tstart:   time.Now(),\n\t\tparent:  GetStringValue(ctx, \"trace.id\"),\n\t\tfnname:  f.Name(),\n\t\tfile:    file,\n\t\tline:    line,\n\t}\n\n\treturn ctx, func(format string, a ...interface{}) {\n\t\tGetLogger(ctx,\n\t\t\t\"trace.duration\",\n\t\t\t\"trace.id\",\n\t\t\t\"trace.parent.id\",\n\t\t\t\"trace.func\",\n\t\t\t\"trace.file\",\n\t\t\t\"trace.line\").\n\t\t\tDebugf(format, a...)\n\t}\n}\n\n// traced represents a context that is traced for function call timing. It\n// also provides fast lookup for the various attributes that are available on\n// the trace.\ntype traced struct {\n\tContext\n\tid     string\n\tparent string\n\tstart  time.Time\n\tfnname string\n\tfile   string\n\tline   int\n}\n\nfunc (ts *traced) Value(key interface{}) interface{} {\n\tswitch key {\n\tcase \"trace.start\":\n\t\treturn ts.start\n\tcase \"trace.duration\":\n\t\treturn time.Since(ts.start)\n\tcase \"trace.id\":\n\t\treturn ts.id\n\tcase \"trace.parent.id\":\n\t\tif ts.parent == \"\" {\n\t\t\treturn nil // must return nil to signal no parent.\n\t\t}\n\n\t\treturn ts.parent\n\tcase \"trace.func\":\n\t\treturn ts.fnname\n\tcase \"trace.file\":\n\t\treturn ts.file\n\tcase \"trace.line\":\n\t\treturn ts.line\n\t}\n\n\treturn ts.Context.Value(key)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/util.go",
    "content": "package context\n\nimport (\n\t\"time\"\n)\n\n// Since looks up key, which should be a time.Time, and returns the duration\n// since that time. If the key is not found, the value returned will be zero.\n// This is helpful when inferring metrics related to context execution times.\nfunc Since(ctx Context, key interface{}) time.Duration {\n\tif startedAt, ok := ctx.Value(key).(time.Time); ok {\n\t\treturn time.Since(startedAt)\n\t}\n\treturn 0\n}\n\n// GetStringValue returns a string value from the context. The empty string\n// will be returned if not found.\nfunc GetStringValue(ctx Context, key interface{}) (value string) {\n\tif valuev, ok := ctx.Value(key).(string); ok {\n\t\tvalue = valuev\n\t}\n\treturn value\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/context/version.go",
    "content": "package context\n\n// WithVersion stores the application version in the context. The new context\n// gets a logger to ensure log messages are marked with the application\n// version.\nfunc WithVersion(ctx Context, version string) Context {\n\tctx = WithValue(ctx, \"version\", version)\n\t// push a new logger onto the stack\n\treturn WithLogger(ctx, GetLogger(ctx, \"version\"))\n}\n\n// GetVersion returns the application version from the context. An empty\n// string may returned if the version was not set on the context.\nfunc GetVersion(ctx Context) string {\n\treturn GetStringValue(ctx, \"version\")\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/coverpkg.sh",
    "content": "#!/usr/bin/env bash\n# Given a subpackage and the containing package, figures out which packages\n# need to be passed to `go test -coverpkg`:  this includes all of the\n# subpackage's dependencies within the containing package, as well as the\n# subpackage itself.\nDEPENDENCIES=\"$(go list -f $'{{range $f := .Deps}}{{$f}}\\n{{end}}' ${1} | grep ${2} | grep -v github.com/docker/distribution/vendor)\"\necho \"${1} ${DEPENDENCIES}\" | xargs echo -n | tr ' ' ','\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/digest/digest.go",
    "content": "package digest\n\nimport (\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nconst (\n\t// DigestSha256EmptyTar is the canonical sha256 digest of empty data\n\tDigestSha256EmptyTar = \"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n)\n\n// Digest allows simple protection of hex formatted digest strings, prefixed\n// by their algorithm. Strings of type Digest have some guarantee of being in\n// the correct format and it provides quick access to the components of a\n// digest string.\n//\n// The following is an example of the contents of Digest types:\n//\n// \tsha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc\n//\n// This allows to abstract the digest behind this type and work only in those\n// terms.\ntype Digest string\n\n// NewDigest returns a Digest from alg and a hash.Hash object.\nfunc NewDigest(alg Algorithm, h hash.Hash) Digest {\n\treturn NewDigestFromBytes(alg, h.Sum(nil))\n}\n\n// NewDigestFromBytes returns a new digest from the byte contents of p.\n// Typically, this can come from hash.Hash.Sum(...) or xxx.SumXXX(...)\n// functions. This is also useful for rebuilding digests from binary\n// serializations.\nfunc NewDigestFromBytes(alg Algorithm, p []byte) Digest {\n\treturn Digest(fmt.Sprintf(\"%s:%x\", alg, p))\n}\n\n// NewDigestFromHex returns a Digest from alg and a the hex encoded digest.\nfunc NewDigestFromHex(alg, hex string) Digest {\n\treturn Digest(fmt.Sprintf(\"%s:%s\", alg, hex))\n}\n\n// DigestRegexp matches valid digest types.\nvar DigestRegexp = regexp.MustCompile(`[a-zA-Z0-9-_+.]+:[a-fA-F0-9]+`)\n\n// DigestRegexpAnchored matches valid digest types, anchored to the start and end of the match.\nvar DigestRegexpAnchored = regexp.MustCompile(`^` + DigestRegexp.String() + `$`)\n\nvar (\n\t// ErrDigestInvalidFormat returned when digest format invalid.\n\tErrDigestInvalidFormat = fmt.Errorf(\"invalid checksum digest format\")\n\n\t// ErrDigestInvalidLength returned when digest has invalid length.\n\tErrDigestInvalidLength = fmt.Errorf(\"invalid checksum digest length\")\n\n\t// ErrDigestUnsupported returned when the digest algorithm is unsupported.\n\tErrDigestUnsupported = fmt.Errorf(\"unsupported digest algorithm\")\n)\n\n// ParseDigest parses s and returns the validated digest object. An error will\n// be returned if the format is invalid.\nfunc ParseDigest(s string) (Digest, error) {\n\td := Digest(s)\n\n\treturn d, d.Validate()\n}\n\n// FromReader returns the most valid digest for the underlying content using\n// the canonical digest algorithm.\nfunc FromReader(rd io.Reader) (Digest, error) {\n\treturn Canonical.FromReader(rd)\n}\n\n// FromBytes digests the input and returns a Digest.\nfunc FromBytes(p []byte) Digest {\n\treturn Canonical.FromBytes(p)\n}\n\n// Validate checks that the contents of d is a valid digest, returning an\n// error if not.\nfunc (d Digest) Validate() error {\n\ts := string(d)\n\n\tif !DigestRegexpAnchored.MatchString(s) {\n\t\treturn ErrDigestInvalidFormat\n\t}\n\n\ti := strings.Index(s, \":\")\n\tif i < 0 {\n\t\treturn ErrDigestInvalidFormat\n\t}\n\n\t// case: \"sha256:\" with no hex.\n\tif i+1 == len(s) {\n\t\treturn ErrDigestInvalidFormat\n\t}\n\n\tswitch algorithm := Algorithm(s[:i]); algorithm {\n\tcase SHA256, SHA384, SHA512:\n\t\tif algorithm.Size()*2 != len(s[i+1:]) {\n\t\t\treturn ErrDigestInvalidLength\n\t\t}\n\t\tbreak\n\tdefault:\n\t\treturn ErrDigestUnsupported\n\t}\n\n\treturn nil\n}\n\n// Algorithm returns the algorithm portion of the digest. This will panic if\n// the underlying digest is not in a valid format.\nfunc (d Digest) Algorithm() Algorithm {\n\treturn Algorithm(d[:d.sepIndex()])\n}\n\n// Hex returns the hex digest portion of the digest. This will panic if the\n// underlying digest is not in a valid format.\nfunc (d Digest) Hex() string {\n\treturn string(d[d.sepIndex()+1:])\n}\n\nfunc (d Digest) String() string {\n\treturn string(d)\n}\n\nfunc (d Digest) sepIndex() int {\n\ti := strings.Index(string(d), \":\")\n\n\tif i < 0 {\n\t\tpanic(\"could not find ':' in digest: \" + d)\n\t}\n\n\treturn i\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/digest/digester.go",
    "content": "package digest\n\nimport (\n\t\"crypto\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n)\n\n// Algorithm identifies and implementation of a digester by an identifier.\n// Note the that this defines both the hash algorithm used and the string\n// encoding.\ntype Algorithm string\n\n// supported digest types\nconst (\n\tSHA256 Algorithm = \"sha256\" // sha256 with hex encoding\n\tSHA384 Algorithm = \"sha384\" // sha384 with hex encoding\n\tSHA512 Algorithm = \"sha512\" // sha512 with hex encoding\n\n\t// Canonical is the primary digest algorithm used with the distribution\n\t// project. Other digests may be used but this one is the primary storage\n\t// digest.\n\tCanonical = SHA256\n)\n\nvar (\n\t// TODO(stevvooe): Follow the pattern of the standard crypto package for\n\t// registration of digests. Effectively, we are a registerable set and\n\t// common symbol access.\n\n\t// algorithms maps values to hash.Hash implementations. Other algorithms\n\t// may be available but they cannot be calculated by the digest package.\n\talgorithms = map[Algorithm]crypto.Hash{\n\t\tSHA256: crypto.SHA256,\n\t\tSHA384: crypto.SHA384,\n\t\tSHA512: crypto.SHA512,\n\t}\n)\n\n// Available returns true if the digest type is available for use. If this\n// returns false, New and Hash will return nil.\nfunc (a Algorithm) Available() bool {\n\th, ok := algorithms[a]\n\tif !ok {\n\t\treturn false\n\t}\n\n\t// check availability of the hash, as well\n\treturn h.Available()\n}\n\nfunc (a Algorithm) String() string {\n\treturn string(a)\n}\n\n// Size returns number of bytes returned by the hash.\nfunc (a Algorithm) Size() int {\n\th, ok := algorithms[a]\n\tif !ok {\n\t\treturn 0\n\t}\n\treturn h.Size()\n}\n\n// Set implemented to allow use of Algorithm as a command line flag.\nfunc (a *Algorithm) Set(value string) error {\n\tif value == \"\" {\n\t\t*a = Canonical\n\t} else {\n\t\t// just do a type conversion, support is queried with Available.\n\t\t*a = Algorithm(value)\n\t}\n\n\treturn nil\n}\n\n// New returns a new digester for the specified algorithm. If the algorithm\n// does not have a digester implementation, nil will be returned. This can be\n// checked by calling Available before calling New.\nfunc (a Algorithm) New() Digester {\n\treturn &digester{\n\t\talg:  a,\n\t\thash: a.Hash(),\n\t}\n}\n\n// Hash returns a new hash as used by the algorithm. If not available, the\n// method will panic. Check Algorithm.Available() before calling.\nfunc (a Algorithm) Hash() hash.Hash {\n\tif !a.Available() {\n\t\t// NOTE(stevvooe): A missing hash is usually a programming error that\n\t\t// must be resolved at compile time. We don't import in the digest\n\t\t// package to allow users to choose their hash implementation (such as\n\t\t// when using stevvooe/resumable or a hardware accelerated package).\n\t\t//\n\t\t// Applications that may want to resolve the hash at runtime should\n\t\t// call Algorithm.Available before call Algorithm.Hash().\n\t\tpanic(fmt.Sprintf(\"%v not available (make sure it is imported)\", a))\n\t}\n\n\treturn algorithms[a].New()\n}\n\n// FromReader returns the digest of the reader using the algorithm.\nfunc (a Algorithm) FromReader(rd io.Reader) (Digest, error) {\n\tdigester := a.New()\n\n\tif _, err := io.Copy(digester.Hash(), rd); err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn digester.Digest(), nil\n}\n\n// FromBytes digests the input and returns a Digest.\nfunc (a Algorithm) FromBytes(p []byte) Digest {\n\tdigester := a.New()\n\n\tif _, err := digester.Hash().Write(p); err != nil {\n\t\t// Writes to a Hash should never fail. None of the existing\n\t\t// hash implementations in the stdlib or hashes vendored\n\t\t// here can return errors from Write. Having a panic in this\n\t\t// condition instead of having FromBytes return an error value\n\t\t// avoids unnecessary error handling paths in all callers.\n\t\tpanic(\"write to hash function returned error: \" + err.Error())\n\t}\n\n\treturn digester.Digest()\n}\n\n// TODO(stevvooe): Allow resolution of verifiers using the digest type and\n// this registration system.\n\n// Digester calculates the digest of written data. Writes should go directly\n// to the return value of Hash, while calling Digest will return the current\n// value of the digest.\ntype Digester interface {\n\tHash() hash.Hash // provides direct access to underlying hash instance.\n\tDigest() Digest\n}\n\n// digester provides a simple digester definition that embeds a hasher.\ntype digester struct {\n\talg  Algorithm\n\thash hash.Hash\n}\n\nfunc (d *digester) Hash() hash.Hash {\n\treturn d.hash\n}\n\nfunc (d *digester) Digest() Digest {\n\treturn NewDigest(d.alg, d.hash)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/digest/doc.go",
    "content": "// Package digest provides a generalized type to opaquely represent message\n// digests and their operations within the registry. The Digest type is\n// designed to serve as a flexible identifier in a content-addressable system.\n// More importantly, it provides tools and wrappers to work with\n// hash.Hash-based digests with little effort.\n//\n// Basics\n//\n// The format of a digest is simply a string with two parts, dubbed the\n// \"algorithm\" and the \"digest\", separated by a colon:\n//\n// \t<algorithm>:<digest>\n//\n// An example of a sha256 digest representation follows:\n//\n// \tsha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc\n//\n// In this case, the string \"sha256\" is the algorithm and the hex bytes are\n// the \"digest\".\n//\n// Because the Digest type is simply a string, once a valid Digest is\n// obtained, comparisons are cheap, quick and simple to express with the\n// standard equality operator.\n//\n// Verification\n//\n// The main benefit of using the Digest type is simple verification against a\n// given digest. The Verifier interface, modeled after the stdlib hash.Hash\n// interface, provides a common write sink for digest verification. After\n// writing is complete, calling the Verifier.Verified method will indicate\n// whether or not the stream of bytes matches the target digest.\n//\n// Missing Features\n//\n// In addition to the above, we intend to add the following features to this\n// package:\n//\n// 1. A Digester type that supports write sink digest calculation.\n//\n// 2. Suspend and resume of ongoing digest calculations to support efficient digest verification in the registry.\n//\npackage digest\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/digest/set.go",
    "content": "package digest\n\nimport (\n\t\"errors\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\t// ErrDigestNotFound is used when a matching digest\n\t// could not be found in a set.\n\tErrDigestNotFound = errors.New(\"digest not found\")\n\n\t// ErrDigestAmbiguous is used when multiple digests\n\t// are found in a set. None of the matching digests\n\t// should be considered valid matches.\n\tErrDigestAmbiguous = errors.New(\"ambiguous digest string\")\n)\n\n// Set is used to hold a unique set of digests which\n// may be easily referenced by easily  referenced by a string\n// representation of the digest as well as short representation.\n// The uniqueness of the short representation is based on other\n// digests in the set. If digests are omitted from this set,\n// collisions in a larger set may not be detected, therefore it\n// is important to always do short representation lookups on\n// the complete set of digests. To mitigate collisions, an\n// appropriately long short code should be used.\ntype Set struct {\n\tmutex   sync.RWMutex\n\tentries digestEntries\n}\n\n// NewSet creates an empty set of digests\n// which may have digests added.\nfunc NewSet() *Set {\n\treturn &Set{\n\t\tentries: digestEntries{},\n\t}\n}\n\n// checkShortMatch checks whether two digests match as either whole\n// values or short values. This function does not test equality,\n// rather whether the second value could match against the first\n// value.\nfunc checkShortMatch(alg Algorithm, hex, shortAlg, shortHex string) bool {\n\tif len(hex) == len(shortHex) {\n\t\tif hex != shortHex {\n\t\t\treturn false\n\t\t}\n\t\tif len(shortAlg) > 0 && string(alg) != shortAlg {\n\t\t\treturn false\n\t\t}\n\t} else if !strings.HasPrefix(hex, shortHex) {\n\t\treturn false\n\t} else if len(shortAlg) > 0 && string(alg) != shortAlg {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Lookup looks for a digest matching the given string representation.\n// If no digests could be found ErrDigestNotFound will be returned\n// with an empty digest value. If multiple matches are found\n// ErrDigestAmbiguous will be returned with an empty digest value.\nfunc (dst *Set) Lookup(d string) (Digest, error) {\n\tdst.mutex.RLock()\n\tdefer dst.mutex.RUnlock()\n\tif len(dst.entries) == 0 {\n\t\treturn \"\", ErrDigestNotFound\n\t}\n\tvar (\n\t\tsearchFunc func(int) bool\n\t\talg        Algorithm\n\t\thex        string\n\t)\n\tdgst, err := ParseDigest(d)\n\tif err == ErrDigestInvalidFormat {\n\t\thex = d\n\t\tsearchFunc = func(i int) bool {\n\t\t\treturn dst.entries[i].val >= d\n\t\t}\n\t} else {\n\t\thex = dgst.Hex()\n\t\talg = dgst.Algorithm()\n\t\tsearchFunc = func(i int) bool {\n\t\t\tif dst.entries[i].val == hex {\n\t\t\t\treturn dst.entries[i].alg >= alg\n\t\t\t}\n\t\t\treturn dst.entries[i].val >= hex\n\t\t}\n\t}\n\tidx := sort.Search(len(dst.entries), searchFunc)\n\tif idx == len(dst.entries) || !checkShortMatch(dst.entries[idx].alg, dst.entries[idx].val, string(alg), hex) {\n\t\treturn \"\", ErrDigestNotFound\n\t}\n\tif dst.entries[idx].alg == alg && dst.entries[idx].val == hex {\n\t\treturn dst.entries[idx].digest, nil\n\t}\n\tif idx+1 < len(dst.entries) && checkShortMatch(dst.entries[idx+1].alg, dst.entries[idx+1].val, string(alg), hex) {\n\t\treturn \"\", ErrDigestAmbiguous\n\t}\n\n\treturn dst.entries[idx].digest, nil\n}\n\n// Add adds the given digest to the set. An error will be returned\n// if the given digest is invalid. If the digest already exists in the\n// set, this operation will be a no-op.\nfunc (dst *Set) Add(d Digest) error {\n\tif err := d.Validate(); err != nil {\n\t\treturn err\n\t}\n\tdst.mutex.Lock()\n\tdefer dst.mutex.Unlock()\n\tentry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d}\n\tsearchFunc := func(i int) bool {\n\t\tif dst.entries[i].val == entry.val {\n\t\t\treturn dst.entries[i].alg >= entry.alg\n\t\t}\n\t\treturn dst.entries[i].val >= entry.val\n\t}\n\tidx := sort.Search(len(dst.entries), searchFunc)\n\tif idx == len(dst.entries) {\n\t\tdst.entries = append(dst.entries, entry)\n\t\treturn nil\n\t} else if dst.entries[idx].digest == d {\n\t\treturn nil\n\t}\n\n\tentries := append(dst.entries, nil)\n\tcopy(entries[idx+1:], entries[idx:len(entries)-1])\n\tentries[idx] = entry\n\tdst.entries = entries\n\treturn nil\n}\n\n// Remove removes the given digest from the set. An err will be\n// returned if the given digest is invalid. If the digest does\n// not exist in the set, this operation will be a no-op.\nfunc (dst *Set) Remove(d Digest) error {\n\tif err := d.Validate(); err != nil {\n\t\treturn err\n\t}\n\tdst.mutex.Lock()\n\tdefer dst.mutex.Unlock()\n\tentry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d}\n\tsearchFunc := func(i int) bool {\n\t\tif dst.entries[i].val == entry.val {\n\t\t\treturn dst.entries[i].alg >= entry.alg\n\t\t}\n\t\treturn dst.entries[i].val >= entry.val\n\t}\n\tidx := sort.Search(len(dst.entries), searchFunc)\n\t// Not found if idx is after or value at idx is not digest\n\tif idx == len(dst.entries) || dst.entries[idx].digest != d {\n\t\treturn nil\n\t}\n\n\tentries := dst.entries\n\tcopy(entries[idx:], entries[idx+1:])\n\tentries = entries[:len(entries)-1]\n\tdst.entries = entries\n\n\treturn nil\n}\n\n// All returns all the digests in the set\nfunc (dst *Set) All() []Digest {\n\tdst.mutex.RLock()\n\tdefer dst.mutex.RUnlock()\n\tretValues := make([]Digest, len(dst.entries))\n\tfor i := range dst.entries {\n\t\tretValues[i] = dst.entries[i].digest\n\t}\n\n\treturn retValues\n}\n\n// ShortCodeTable returns a map of Digest to unique short codes. The\n// length represents the minimum value, the maximum length may be the\n// entire value of digest if uniqueness cannot be achieved without the\n// full value. This function will attempt to make short codes as short\n// as possible to be unique.\nfunc ShortCodeTable(dst *Set, length int) map[Digest]string {\n\tdst.mutex.RLock()\n\tdefer dst.mutex.RUnlock()\n\tm := make(map[Digest]string, len(dst.entries))\n\tl := length\n\tresetIdx := 0\n\tfor i := 0; i < len(dst.entries); i++ {\n\t\tvar short string\n\t\textended := true\n\t\tfor extended {\n\t\t\textended = false\n\t\t\tif len(dst.entries[i].val) <= l {\n\t\t\t\tshort = dst.entries[i].digest.String()\n\t\t\t} else {\n\t\t\t\tshort = dst.entries[i].val[:l]\n\t\t\t\tfor j := i + 1; j < len(dst.entries); j++ {\n\t\t\t\t\tif checkShortMatch(dst.entries[j].alg, dst.entries[j].val, \"\", short) {\n\t\t\t\t\t\tif j > resetIdx {\n\t\t\t\t\t\t\tresetIdx = j\n\t\t\t\t\t\t}\n\t\t\t\t\t\textended = true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif extended {\n\t\t\t\t\tl++\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tm[dst.entries[i].digest] = short\n\t\tif i >= resetIdx {\n\t\t\tl = length\n\t\t}\n\t}\n\treturn m\n}\n\ntype digestEntry struct {\n\talg    Algorithm\n\tval    string\n\tdigest Digest\n}\n\ntype digestEntries []*digestEntry\n\nfunc (d digestEntries) Len() int {\n\treturn len(d)\n}\n\nfunc (d digestEntries) Less(i, j int) bool {\n\tif d[i].val != d[j].val {\n\t\treturn d[i].val < d[j].val\n\t}\n\treturn d[i].alg < d[j].alg\n}\n\nfunc (d digestEntries) Swap(i, j int) {\n\td[i], d[j] = d[j], d[i]\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/digest/verifiers.go",
    "content": "package digest\n\nimport (\n\t\"hash\"\n\t\"io\"\n)\n\n// Verifier presents a general verification interface to be used with message\n// digests and other byte stream verifications. Users instantiate a Verifier\n// from one of the various methods, write the data under test to it then check\n// the result with the Verified method.\ntype Verifier interface {\n\tio.Writer\n\n\t// Verified will return true if the content written to Verifier matches\n\t// the digest.\n\tVerified() bool\n}\n\n// NewDigestVerifier returns a verifier that compares the written bytes\n// against a passed in digest.\nfunc NewDigestVerifier(d Digest) (Verifier, error) {\n\tif err := d.Validate(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn hashVerifier{\n\t\thash:   d.Algorithm().Hash(),\n\t\tdigest: d,\n\t}, nil\n}\n\ntype hashVerifier struct {\n\tdigest Digest\n\thash   hash.Hash\n}\n\nfunc (hv hashVerifier) Write(p []byte) (n int, err error) {\n\treturn hv.hash.Write(p)\n}\n\nfunc (hv hashVerifier) Verified() bool {\n\treturn hv.digest == NewDigest(hv.digest.Algorithm(), hv.hash)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/doc.go",
    "content": "// Package distribution will define the interfaces for the components of\n// docker distribution. The goal is to allow users to reliably package, ship\n// and store content related to docker images.\n//\n// This is currently a work in progress. More details are available in the\n// README.md.\npackage distribution\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/errors.go",
    "content": "package distribution\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/digest\"\n)\n\n// ErrAccessDenied is returned when an access to a requested resource is\n// denied.\nvar ErrAccessDenied = errors.New(\"access denied\")\n\n// ErrManifestNotModified is returned when a conditional manifest GetByTag\n// returns nil due to the client indicating it has the latest version\nvar ErrManifestNotModified = errors.New(\"manifest not modified\")\n\n// ErrUnsupported is returned when an unimplemented or unsupported action is\n// performed\nvar ErrUnsupported = errors.New(\"operation unsupported\")\n\n// ErrTagUnknown is returned if the given tag is not known by the tag service\ntype ErrTagUnknown struct {\n\tTag string\n}\n\nfunc (err ErrTagUnknown) Error() string {\n\treturn fmt.Sprintf(\"unknown tag=%s\", err.Tag)\n}\n\n// ErrRepositoryUnknown is returned if the named repository is not known by\n// the registry.\ntype ErrRepositoryUnknown struct {\n\tName string\n}\n\nfunc (err ErrRepositoryUnknown) Error() string {\n\treturn fmt.Sprintf(\"unknown repository name=%s\", err.Name)\n}\n\n// ErrRepositoryNameInvalid should be used to denote an invalid repository\n// name. Reason may set, indicating the cause of invalidity.\ntype ErrRepositoryNameInvalid struct {\n\tName   string\n\tReason error\n}\n\nfunc (err ErrRepositoryNameInvalid) Error() string {\n\treturn fmt.Sprintf(\"repository name %q invalid: %v\", err.Name, err.Reason)\n}\n\n// ErrManifestUnknown is returned if the manifest is not known by the\n// registry.\ntype ErrManifestUnknown struct {\n\tName string\n\tTag  string\n}\n\nfunc (err ErrManifestUnknown) Error() string {\n\treturn fmt.Sprintf(\"unknown manifest name=%s tag=%s\", err.Name, err.Tag)\n}\n\n// ErrManifestUnknownRevision is returned when a manifest cannot be found by\n// revision within a repository.\ntype ErrManifestUnknownRevision struct {\n\tName     string\n\tRevision digest.Digest\n}\n\nfunc (err ErrManifestUnknownRevision) Error() string {\n\treturn fmt.Sprintf(\"unknown manifest name=%s revision=%s\", err.Name, err.Revision)\n}\n\n// ErrManifestUnverified is returned when the registry is unable to verify\n// the manifest.\ntype ErrManifestUnverified struct{}\n\nfunc (ErrManifestUnverified) Error() string {\n\treturn fmt.Sprintf(\"unverified manifest\")\n}\n\n// ErrManifestVerification provides a type to collect errors encountered\n// during manifest verification. Currently, it accepts errors of all types,\n// but it may be narrowed to those involving manifest verification.\ntype ErrManifestVerification []error\n\nfunc (errs ErrManifestVerification) Error() string {\n\tvar parts []string\n\tfor _, err := range errs {\n\t\tparts = append(parts, err.Error())\n\t}\n\n\treturn fmt.Sprintf(\"errors verifying manifest: %v\", strings.Join(parts, \",\"))\n}\n\n// ErrManifestBlobUnknown returned when a referenced blob cannot be found.\ntype ErrManifestBlobUnknown struct {\n\tDigest digest.Digest\n}\n\nfunc (err ErrManifestBlobUnknown) Error() string {\n\treturn fmt.Sprintf(\"unknown blob %v on manifest\", err.Digest)\n}\n\n// ErrManifestNameInvalid should be used to denote an invalid manifest\n// name. Reason may set, indicating the cause of invalidity.\ntype ErrManifestNameInvalid struct {\n\tName   string\n\tReason error\n}\n\nfunc (err ErrManifestNameInvalid) Error() string {\n\treturn fmt.Sprintf(\"manifest name %q invalid: %v\", err.Name, err.Reason)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/manifests.go",
    "content": "package distribution\n\nimport (\n\t\"fmt\"\n\t\"mime\"\n\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/digest\"\n)\n\n// Manifest represents a registry object specifying a set of\n// references and an optional target\ntype Manifest interface {\n\t// References returns a list of objects which make up this manifest.\n\t// The references are strictly ordered from base to head. A reference\n\t// is anything which can be represented by a distribution.Descriptor\n\tReferences() []Descriptor\n\n\t// Payload provides the serialized format of the manifest, in addition to\n\t// the mediatype.\n\tPayload() (mediatype string, payload []byte, err error)\n}\n\n// ManifestBuilder creates a manifest allowing one to include dependencies.\n// Instances can be obtained from a version-specific manifest package.  Manifest\n// specific data is passed into the function which creates the builder.\ntype ManifestBuilder interface {\n\t// Build creates the manifest from his builder.\n\tBuild(ctx context.Context) (Manifest, error)\n\n\t// References returns a list of objects which have been added to this\n\t// builder. The dependencies are returned in the order they were added,\n\t// which should be from base to head.\n\tReferences() []Descriptor\n\n\t// AppendReference includes the given object in the manifest after any\n\t// existing dependencies. If the add fails, such as when adding an\n\t// unsupported dependency, an error may be returned.\n\tAppendReference(dependency Describable) error\n}\n\n// ManifestService describes operations on image manifests.\ntype ManifestService interface {\n\t// Exists returns true if the manifest exists.\n\tExists(ctx context.Context, dgst digest.Digest) (bool, error)\n\n\t// Get retrieves the manifest specified by the given digest\n\tGet(ctx context.Context, dgst digest.Digest, options ...ManifestServiceOption) (Manifest, error)\n\n\t// Put creates or updates the given manifest returning the manifest digest\n\tPut(ctx context.Context, manifest Manifest, options ...ManifestServiceOption) (digest.Digest, error)\n\n\t// Delete removes the manifest specified by the given digest. Deleting\n\t// a manifest that doesn't exist will return ErrManifestNotFound\n\tDelete(ctx context.Context, dgst digest.Digest) error\n}\n\n// ManifestEnumerator enables iterating over manifests\ntype ManifestEnumerator interface {\n\t// Enumerate calls ingester for each manifest.\n\tEnumerate(ctx context.Context, ingester func(digest.Digest) error) error\n}\n\n// SignaturesGetter provides an interface for getting the signatures of a schema1 manifest. If the digest\n// referred to is not a schema1 manifest, an error should be returned.\ntype SignaturesGetter interface {\n\tGetSignatures(ctx context.Context, manifestDigest digest.Digest) ([]digest.Digest, error)\n}\n\n// Describable is an interface for descriptors\ntype Describable interface {\n\tDescriptor() Descriptor\n}\n\n// ManifestMediaTypes returns the supported media types for manifests.\nfunc ManifestMediaTypes() (mediaTypes []string) {\n\tfor t := range mappings {\n\t\tif t != \"\" {\n\t\t\tmediaTypes = append(mediaTypes, t)\n\t\t}\n\t}\n\treturn\n}\n\n// UnmarshalFunc implements manifest unmarshalling a given MediaType\ntype UnmarshalFunc func([]byte) (Manifest, Descriptor, error)\n\nvar mappings = make(map[string]UnmarshalFunc, 0)\n\n// UnmarshalManifest looks up manifest unmarshal functions based on\n// MediaType\nfunc UnmarshalManifest(ctHeader string, p []byte) (Manifest, Descriptor, error) {\n\t// Need to look up by the actual media type, not the raw contents of\n\t// the header. Strip semicolons and anything following them.\n\tvar mediatype string\n\tif ctHeader != \"\" {\n\t\tvar err error\n\t\tmediatype, _, err = mime.ParseMediaType(ctHeader)\n\t\tif err != nil {\n\t\t\treturn nil, Descriptor{}, err\n\t\t}\n\t}\n\n\tunmarshalFunc, ok := mappings[mediatype]\n\tif !ok {\n\t\tunmarshalFunc, ok = mappings[\"\"]\n\t\tif !ok {\n\t\t\treturn nil, Descriptor{}, fmt.Errorf(\"unsupported manifest mediatype and no default available: %s\", mediatype)\n\t\t}\n\t}\n\n\treturn unmarshalFunc(p)\n}\n\n// RegisterManifestSchema registers an UnmarshalFunc for a given schema type.  This\n// should be called from specific\nfunc RegisterManifestSchema(mediatype string, u UnmarshalFunc) error {\n\tif _, ok := mappings[mediatype]; ok {\n\t\treturn fmt.Errorf(\"manifest mediatype registration would overwrite existing: %s\", mediatype)\n\t}\n\tmappings[mediatype] = u\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/reference/reference.go",
    "content": "// Package reference provides a general type to represent any way of referencing images within the registry.\n// Its main purpose is to abstract tags and digests (content-addressable hash).\n//\n// Grammar\n//\n// \treference                       := name [ \":\" tag ] [ \"@\" digest ]\n//\tname                            := [hostname '/'] component ['/' component]*\n//\thostname                        := hostcomponent ['.' hostcomponent]* [':' port-number]\n//\thostcomponent                   := /([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])/\n//\tport-number                     := /[0-9]+/\n//\tcomponent                       := alpha-numeric [separator alpha-numeric]*\n// \talpha-numeric                   := /[a-z0-9]+/\n//\tseparator                       := /[_.]|__|[-]*/\n//\n//\ttag                             := /[\\w][\\w.-]{0,127}/\n//\n//\tdigest                          := digest-algorithm \":\" digest-hex\n//\tdigest-algorithm                := digest-algorithm-component [ digest-algorithm-separator digest-algorithm-component ]\n//\tdigest-algorithm-separator      := /[+.-_]/\n//\tdigest-algorithm-component      := /[A-Za-z][A-Za-z0-9]*/\n//\tdigest-hex                      := /[0-9a-fA-F]{32,}/ ; At least 128 bit digest value\npackage reference\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/docker/distribution/digest\"\n)\n\nconst (\n\t// NameTotalLengthMax is the maximum total number of characters in a repository name.\n\tNameTotalLengthMax = 255\n)\n\nvar (\n\t// ErrReferenceInvalidFormat represents an error while trying to parse a string as a reference.\n\tErrReferenceInvalidFormat = errors.New(\"invalid reference format\")\n\n\t// ErrTagInvalidFormat represents an error while trying to parse a string as a tag.\n\tErrTagInvalidFormat = errors.New(\"invalid tag format\")\n\n\t// ErrDigestInvalidFormat represents an error while trying to parse a string as a tag.\n\tErrDigestInvalidFormat = errors.New(\"invalid digest format\")\n\n\t// ErrNameEmpty is returned for empty, invalid repository names.\n\tErrNameEmpty = errors.New(\"repository name must have at least one component\")\n\n\t// ErrNameTooLong is returned when a repository name is longer than NameTotalLengthMax.\n\tErrNameTooLong = fmt.Errorf(\"repository name must not be more than %v characters\", NameTotalLengthMax)\n)\n\n// Reference is an opaque object reference identifier that may include\n// modifiers such as a hostname, name, tag, and digest.\ntype Reference interface {\n\t// String returns the full reference\n\tString() string\n}\n\n// Field provides a wrapper type for resolving correct reference types when\n// working with encoding.\ntype Field struct {\n\treference Reference\n}\n\n// AsField wraps a reference in a Field for encoding.\nfunc AsField(reference Reference) Field {\n\treturn Field{reference}\n}\n\n// Reference unwraps the reference type from the field to\n// return the Reference object. This object should be\n// of the appropriate type to further check for different\n// reference types.\nfunc (f Field) Reference() Reference {\n\treturn f.reference\n}\n\n// MarshalText serializes the field to byte text which\n// is the string of the reference.\nfunc (f Field) MarshalText() (p []byte, err error) {\n\treturn []byte(f.reference.String()), nil\n}\n\n// UnmarshalText parses text bytes by invoking the\n// reference parser to ensure the appropriately\n// typed reference object is wrapped by field.\nfunc (f *Field) UnmarshalText(p []byte) error {\n\tr, err := Parse(string(p))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tf.reference = r\n\treturn nil\n}\n\n// Named is an object with a full name\ntype Named interface {\n\tReference\n\tName() string\n}\n\n// Tagged is an object which has a tag\ntype Tagged interface {\n\tReference\n\tTag() string\n}\n\n// NamedTagged is an object including a name and tag.\ntype NamedTagged interface {\n\tNamed\n\tTag() string\n}\n\n// Digested is an object which has a digest\n// in which it can be referenced by\ntype Digested interface {\n\tReference\n\tDigest() digest.Digest\n}\n\n// Canonical reference is an object with a fully unique\n// name including a name with hostname and digest\ntype Canonical interface {\n\tNamed\n\tDigest() digest.Digest\n}\n\n// SplitHostname splits a named reference into a\n// hostname and name string. If no valid hostname is\n// found, the hostname is empty and the full value\n// is returned as name\nfunc SplitHostname(named Named) (string, string) {\n\tname := named.Name()\n\tmatch := anchoredNameRegexp.FindStringSubmatch(name)\n\tif match == nil || len(match) != 3 {\n\t\treturn \"\", name\n\t}\n\treturn match[1], match[2]\n}\n\n// Parse parses s and returns a syntactically valid Reference.\n// If an error was encountered it is returned, along with a nil Reference.\n// NOTE: Parse will not handle short digests.\nfunc Parse(s string) (Reference, error) {\n\tmatches := ReferenceRegexp.FindStringSubmatch(s)\n\tif matches == nil {\n\t\tif s == \"\" {\n\t\t\treturn nil, ErrNameEmpty\n\t\t}\n\t\t// TODO(dmcgowan): Provide more specific and helpful error\n\t\treturn nil, ErrReferenceInvalidFormat\n\t}\n\n\tif len(matches[1]) > NameTotalLengthMax {\n\t\treturn nil, ErrNameTooLong\n\t}\n\n\tref := reference{\n\t\tname: matches[1],\n\t\ttag:  matches[2],\n\t}\n\tif matches[3] != \"\" {\n\t\tvar err error\n\t\tref.digest, err = digest.ParseDigest(matches[3])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tr := getBestReferenceType(ref)\n\tif r == nil {\n\t\treturn nil, ErrNameEmpty\n\t}\n\n\treturn r, nil\n}\n\n// ParseNamed parses s and returns a syntactically valid reference implementing\n// the Named interface. The reference must have a name, otherwise an error is\n// returned.\n// If an error was encountered it is returned, along with a nil Reference.\n// NOTE: ParseNamed will not handle short digests.\nfunc ParseNamed(s string) (Named, error) {\n\tref, err := Parse(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnamed, isNamed := ref.(Named)\n\tif !isNamed {\n\t\treturn nil, fmt.Errorf(\"reference %s has no name\", ref.String())\n\t}\n\treturn named, nil\n}\n\n// WithName returns a named object representing the given string. If the input\n// is invalid ErrReferenceInvalidFormat will be returned.\nfunc WithName(name string) (Named, error) {\n\tif len(name) > NameTotalLengthMax {\n\t\treturn nil, ErrNameTooLong\n\t}\n\tif !anchoredNameRegexp.MatchString(name) {\n\t\treturn nil, ErrReferenceInvalidFormat\n\t}\n\treturn repository(name), nil\n}\n\n// WithTag combines the name from \"name\" and the tag from \"tag\" to form a\n// reference incorporating both the name and the tag.\nfunc WithTag(name Named, tag string) (NamedTagged, error) {\n\tif !anchoredTagRegexp.MatchString(tag) {\n\t\treturn nil, ErrTagInvalidFormat\n\t}\n\treturn taggedReference{\n\t\tname: name.Name(),\n\t\ttag:  tag,\n\t}, nil\n}\n\n// WithDigest combines the name from \"name\" and the digest from \"digest\" to form\n// a reference incorporating both the name and the digest.\nfunc WithDigest(name Named, digest digest.Digest) (Canonical, error) {\n\tif !anchoredDigestRegexp.MatchString(digest.String()) {\n\t\treturn nil, ErrDigestInvalidFormat\n\t}\n\treturn canonicalReference{\n\t\tname:   name.Name(),\n\t\tdigest: digest,\n\t}, nil\n}\n\nfunc getBestReferenceType(ref reference) Reference {\n\tif ref.name == \"\" {\n\t\t// Allow digest only references\n\t\tif ref.digest != \"\" {\n\t\t\treturn digestReference(ref.digest)\n\t\t}\n\t\treturn nil\n\t}\n\tif ref.tag == \"\" {\n\t\tif ref.digest != \"\" {\n\t\t\treturn canonicalReference{\n\t\t\t\tname:   ref.name,\n\t\t\t\tdigest: ref.digest,\n\t\t\t}\n\t\t}\n\t\treturn repository(ref.name)\n\t}\n\tif ref.digest == \"\" {\n\t\treturn taggedReference{\n\t\t\tname: ref.name,\n\t\t\ttag:  ref.tag,\n\t\t}\n\t}\n\n\treturn ref\n}\n\ntype reference struct {\n\tname   string\n\ttag    string\n\tdigest digest.Digest\n}\n\nfunc (r reference) String() string {\n\treturn r.name + \":\" + r.tag + \"@\" + r.digest.String()\n}\n\nfunc (r reference) Name() string {\n\treturn r.name\n}\n\nfunc (r reference) Tag() string {\n\treturn r.tag\n}\n\nfunc (r reference) Digest() digest.Digest {\n\treturn r.digest\n}\n\ntype repository string\n\nfunc (r repository) String() string {\n\treturn string(r)\n}\n\nfunc (r repository) Name() string {\n\treturn string(r)\n}\n\ntype digestReference digest.Digest\n\nfunc (d digestReference) String() string {\n\treturn d.String()\n}\n\nfunc (d digestReference) Digest() digest.Digest {\n\treturn digest.Digest(d)\n}\n\ntype taggedReference struct {\n\tname string\n\ttag  string\n}\n\nfunc (t taggedReference) String() string {\n\treturn t.name + \":\" + t.tag\n}\n\nfunc (t taggedReference) Name() string {\n\treturn t.name\n}\n\nfunc (t taggedReference) Tag() string {\n\treturn t.tag\n}\n\ntype canonicalReference struct {\n\tname   string\n\tdigest digest.Digest\n}\n\nfunc (c canonicalReference) String() string {\n\treturn c.name + \"@\" + c.digest.String()\n}\n\nfunc (c canonicalReference) Name() string {\n\treturn c.name\n}\n\nfunc (c canonicalReference) Digest() digest.Digest {\n\treturn c.digest\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/reference/regexp.go",
    "content": "package reference\n\nimport \"regexp\"\n\nvar (\n\t// alphaNumericRegexp defines the alpha numeric atom, typically a\n\t// component of names. This only allows lower case characters and digits.\n\talphaNumericRegexp = match(`[a-z0-9]+`)\n\n\t// separatorRegexp defines the separators allowed to be embedded in name\n\t// components. This allow one period, one or two underscore and multiple\n\t// dashes.\n\tseparatorRegexp = match(`(?:[._]|__|[-]*)`)\n\n\t// nameComponentRegexp restricts registry path component names to start\n\t// with at least one letter or number, with following parts able to be\n\t// separated by one period, one or two underscore and multiple dashes.\n\tnameComponentRegexp = expression(\n\t\talphaNumericRegexp,\n\t\toptional(repeated(separatorRegexp, alphaNumericRegexp)))\n\n\t// hostnameComponentRegexp restricts the registry hostname component of a\n\t// repository name to start with a component as defined by hostnameRegexp\n\t// and followed by an optional port.\n\thostnameComponentRegexp = match(`(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`)\n\n\t// hostnameRegexp defines the structure of potential hostname components\n\t// that may be part of image names. This is purposely a subset of what is\n\t// allowed by DNS to ensure backwards compatibility with Docker image\n\t// names.\n\thostnameRegexp = expression(\n\t\thostnameComponentRegexp,\n\t\toptional(repeated(literal(`.`), hostnameComponentRegexp)),\n\t\toptional(literal(`:`), match(`[0-9]+`)))\n\n\t// TagRegexp matches valid tag names. From docker/docker:graph/tags.go.\n\tTagRegexp = match(`[\\w][\\w.-]{0,127}`)\n\n\t// anchoredTagRegexp matches valid tag names, anchored at the start and\n\t// end of the matched string.\n\tanchoredTagRegexp = anchored(TagRegexp)\n\n\t// DigestRegexp matches valid digests.\n\tDigestRegexp = match(`[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}`)\n\n\t// anchoredDigestRegexp matches valid digests, anchored at the start and\n\t// end of the matched string.\n\tanchoredDigestRegexp = anchored(DigestRegexp)\n\n\t// NameRegexp is the format for the name component of references. The\n\t// regexp has capturing groups for the hostname and name part omitting\n\t// the separating forward slash from either.\n\tNameRegexp = expression(\n\t\toptional(hostnameRegexp, literal(`/`)),\n\t\tnameComponentRegexp,\n\t\toptional(repeated(literal(`/`), nameComponentRegexp)))\n\n\t// anchoredNameRegexp is used to parse a name value, capturing the\n\t// hostname and trailing components.\n\tanchoredNameRegexp = anchored(\n\t\toptional(capture(hostnameRegexp), literal(`/`)),\n\t\tcapture(nameComponentRegexp,\n\t\t\toptional(repeated(literal(`/`), nameComponentRegexp))))\n\n\t// ReferenceRegexp is the full supported format of a reference. The regexp\n\t// is anchored and has capturing groups for name, tag, and digest\n\t// components.\n\tReferenceRegexp = anchored(capture(NameRegexp),\n\t\toptional(literal(\":\"), capture(TagRegexp)),\n\t\toptional(literal(\"@\"), capture(DigestRegexp)))\n)\n\n// match compiles the string to a regular expression.\nvar match = regexp.MustCompile\n\n// literal compiles s into a literal regular expression, escaping any regexp\n// reserved characters.\nfunc literal(s string) *regexp.Regexp {\n\tre := match(regexp.QuoteMeta(s))\n\n\tif _, complete := re.LiteralPrefix(); !complete {\n\t\tpanic(\"must be a literal\")\n\t}\n\n\treturn re\n}\n\n// expression defines a full expression, where each regular expression must\n// follow the previous.\nfunc expression(res ...*regexp.Regexp) *regexp.Regexp {\n\tvar s string\n\tfor _, re := range res {\n\t\ts += re.String()\n\t}\n\n\treturn match(s)\n}\n\n// optional wraps the expression in a non-capturing group and makes the\n// production optional.\nfunc optional(res ...*regexp.Regexp) *regexp.Regexp {\n\treturn match(group(expression(res...)).String() + `?`)\n}\n\n// repeated wraps the regexp in a non-capturing group to get one or more\n// matches.\nfunc repeated(res ...*regexp.Regexp) *regexp.Regexp {\n\treturn match(group(expression(res...)).String() + `+`)\n}\n\n// group wraps the regexp in a non-capturing group.\nfunc group(res ...*regexp.Regexp) *regexp.Regexp {\n\treturn match(`(?:` + expression(res...).String() + `)`)\n}\n\n// capture wraps the expression in a capturing group.\nfunc capture(res ...*regexp.Regexp) *regexp.Regexp {\n\treturn match(`(` + expression(res...).String() + `)`)\n}\n\n// anchored anchors the regular expression by adding start and end delimiters.\nfunc anchored(res ...*regexp.Regexp) *regexp.Regexp {\n\treturn match(`^` + expression(res...).String() + `$`)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/errcode/errors.go",
    "content": "package errcode\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// ErrorCoder is the base interface for ErrorCode and Error allowing\n// users of each to just call ErrorCode to get the real ID of each\ntype ErrorCoder interface {\n\tErrorCode() ErrorCode\n}\n\n// ErrorCode represents the error type. The errors are serialized via strings\n// and the integer format may change and should *never* be exported.\ntype ErrorCode int\n\nvar _ error = ErrorCode(0)\n\n// ErrorCode just returns itself\nfunc (ec ErrorCode) ErrorCode() ErrorCode {\n\treturn ec\n}\n\n// Error returns the ID/Value\nfunc (ec ErrorCode) Error() string {\n\t// NOTE(stevvooe): Cannot use message here since it may have unpopulated args.\n\treturn strings.ToLower(strings.Replace(ec.String(), \"_\", \" \", -1))\n}\n\n// Descriptor returns the descriptor for the error code.\nfunc (ec ErrorCode) Descriptor() ErrorDescriptor {\n\td, ok := errorCodeToDescriptors[ec]\n\n\tif !ok {\n\t\treturn ErrorCodeUnknown.Descriptor()\n\t}\n\n\treturn d\n}\n\n// String returns the canonical identifier for this error code.\nfunc (ec ErrorCode) String() string {\n\treturn ec.Descriptor().Value\n}\n\n// Message returned the human-readable error message for this error code.\nfunc (ec ErrorCode) Message() string {\n\treturn ec.Descriptor().Message\n}\n\n// MarshalText encodes the receiver into UTF-8-encoded text and returns the\n// result.\nfunc (ec ErrorCode) MarshalText() (text []byte, err error) {\n\treturn []byte(ec.String()), nil\n}\n\n// UnmarshalText decodes the form generated by MarshalText.\nfunc (ec *ErrorCode) UnmarshalText(text []byte) error {\n\tdesc, ok := idToDescriptors[string(text)]\n\n\tif !ok {\n\t\tdesc = ErrorCodeUnknown.Descriptor()\n\t}\n\n\t*ec = desc.Code\n\n\treturn nil\n}\n\n// WithMessage creates a new Error struct based on the passed-in info and\n// overrides the Message property.\nfunc (ec ErrorCode) WithMessage(message string) Error {\n\treturn Error{\n\t\tCode:    ec,\n\t\tMessage: message,\n\t}\n}\n\n// WithDetail creates a new Error struct based on the passed-in info and\n// set the Detail property appropriately\nfunc (ec ErrorCode) WithDetail(detail interface{}) Error {\n\treturn Error{\n\t\tCode:    ec,\n\t\tMessage: ec.Message(),\n\t}.WithDetail(detail)\n}\n\n// WithArgs creates a new Error struct and sets the Args slice\nfunc (ec ErrorCode) WithArgs(args ...interface{}) Error {\n\treturn Error{\n\t\tCode:    ec,\n\t\tMessage: ec.Message(),\n\t}.WithArgs(args...)\n}\n\n// Error provides a wrapper around ErrorCode with extra Details provided.\ntype Error struct {\n\tCode    ErrorCode   `json:\"code\"`\n\tMessage string      `json:\"message\"`\n\tDetail  interface{} `json:\"detail,omitempty\"`\n\n\t// TODO(duglin): See if we need an \"args\" property so we can do the\n\t// variable substitution right before showing the message to the user\n}\n\nvar _ error = Error{}\n\n// ErrorCode returns the ID/Value of this Error\nfunc (e Error) ErrorCode() ErrorCode {\n\treturn e.Code\n}\n\n// Error returns a human readable representation of the error.\nfunc (e Error) Error() string {\n\treturn fmt.Sprintf(\"%s: %s\", e.Code.Error(), e.Message)\n}\n\n// WithDetail will return a new Error, based on the current one, but with\n// some Detail info added\nfunc (e Error) WithDetail(detail interface{}) Error {\n\treturn Error{\n\t\tCode:    e.Code,\n\t\tMessage: e.Message,\n\t\tDetail:  detail,\n\t}\n}\n\n// WithArgs uses the passed-in list of interface{} as the substitution\n// variables in the Error's Message string, but returns a new Error\nfunc (e Error) WithArgs(args ...interface{}) Error {\n\treturn Error{\n\t\tCode:    e.Code,\n\t\tMessage: fmt.Sprintf(e.Code.Message(), args...),\n\t\tDetail:  e.Detail,\n\t}\n}\n\n// ErrorDescriptor provides relevant information about a given error code.\ntype ErrorDescriptor struct {\n\t// Code is the error code that this descriptor describes.\n\tCode ErrorCode\n\n\t// Value provides a unique, string key, often captilized with\n\t// underscores, to identify the error code. This value is used as the\n\t// keyed value when serializing api errors.\n\tValue string\n\n\t// Message is a short, human readable decription of the error condition\n\t// included in API responses.\n\tMessage string\n\n\t// Description provides a complete account of the errors purpose, suitable\n\t// for use in documentation.\n\tDescription string\n\n\t// HTTPStatusCode provides the http status code that is associated with\n\t// this error condition.\n\tHTTPStatusCode int\n}\n\n// ParseErrorCode returns the value by the string error code.\n// `ErrorCodeUnknown` will be returned if the error is not known.\nfunc ParseErrorCode(value string) ErrorCode {\n\ted, ok := idToDescriptors[value]\n\tif ok {\n\t\treturn ed.Code\n\t}\n\n\treturn ErrorCodeUnknown\n}\n\n// Errors provides the envelope for multiple errors and a few sugar methods\n// for use within the application.\ntype Errors []error\n\nvar _ error = Errors{}\n\nfunc (errs Errors) Error() string {\n\tswitch len(errs) {\n\tcase 0:\n\t\treturn \"<nil>\"\n\tcase 1:\n\t\treturn errs[0].Error()\n\tdefault:\n\t\tmsg := \"errors:\\n\"\n\t\tfor _, err := range errs {\n\t\t\tmsg += err.Error() + \"\\n\"\n\t\t}\n\t\treturn msg\n\t}\n}\n\n// Len returns the current number of errors.\nfunc (errs Errors) Len() int {\n\treturn len(errs)\n}\n\n// MarshalJSON converts slice of error, ErrorCode or Error into a\n// slice of Error - then serializes\nfunc (errs Errors) MarshalJSON() ([]byte, error) {\n\tvar tmpErrs struct {\n\t\tErrors []Error `json:\"errors,omitempty\"`\n\t}\n\n\tfor _, daErr := range errs {\n\t\tvar err Error\n\n\t\tswitch daErr.(type) {\n\t\tcase ErrorCode:\n\t\t\terr = daErr.(ErrorCode).WithDetail(nil)\n\t\tcase Error:\n\t\t\terr = daErr.(Error)\n\t\tdefault:\n\t\t\terr = ErrorCodeUnknown.WithDetail(daErr)\n\n\t\t}\n\n\t\t// If the Error struct was setup and they forgot to set the\n\t\t// Message field (meaning its \"\") then grab it from the ErrCode\n\t\tmsg := err.Message\n\t\tif msg == \"\" {\n\t\t\tmsg = err.Code.Message()\n\t\t}\n\n\t\ttmpErrs.Errors = append(tmpErrs.Errors, Error{\n\t\t\tCode:    err.Code,\n\t\t\tMessage: msg,\n\t\t\tDetail:  err.Detail,\n\t\t})\n\t}\n\n\treturn json.Marshal(tmpErrs)\n}\n\n// UnmarshalJSON deserializes []Error and then converts it into slice of\n// Error or ErrorCode\nfunc (errs *Errors) UnmarshalJSON(data []byte) error {\n\tvar tmpErrs struct {\n\t\tErrors []Error\n\t}\n\n\tif err := json.Unmarshal(data, &tmpErrs); err != nil {\n\t\treturn err\n\t}\n\n\tvar newErrs Errors\n\tfor _, daErr := range tmpErrs.Errors {\n\t\t// If Message is empty or exactly matches the Code's message string\n\t\t// then just use the Code, no need for a full Error struct\n\t\tif daErr.Detail == nil && (daErr.Message == \"\" || daErr.Message == daErr.Code.Message()) {\n\t\t\t// Error's w/o details get converted to ErrorCode\n\t\t\tnewErrs = append(newErrs, daErr.Code)\n\t\t} else {\n\t\t\t// Error's w/ details are untouched\n\t\t\tnewErrs = append(newErrs, Error{\n\t\t\t\tCode:    daErr.Code,\n\t\t\t\tMessage: daErr.Message,\n\t\t\t\tDetail:  daErr.Detail,\n\t\t\t})\n\t\t}\n\t}\n\n\t*errs = newErrs\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/errcode/handler.go",
    "content": "package errcode\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n)\n\n// ServeJSON attempts to serve the errcode in a JSON envelope. It marshals err\n// and sets the content-type header to 'application/json'. It will handle\n// ErrorCoder and Errors, and if necessary will create an envelope.\nfunc ServeJSON(w http.ResponseWriter, err error) error {\n\tw.Header().Set(\"Content-Type\", \"application/json; charset=utf-8\")\n\tvar sc int\n\n\tswitch errs := err.(type) {\n\tcase Errors:\n\t\tif len(errs) < 1 {\n\t\t\tbreak\n\t\t}\n\n\t\tif err, ok := errs[0].(ErrorCoder); ok {\n\t\t\tsc = err.ErrorCode().Descriptor().HTTPStatusCode\n\t\t}\n\tcase ErrorCoder:\n\t\tsc = errs.ErrorCode().Descriptor().HTTPStatusCode\n\t\terr = Errors{err} // create an envelope.\n\tdefault:\n\t\t// We just have an unhandled error type, so just place in an envelope\n\t\t// and move along.\n\t\terr = Errors{err}\n\t}\n\n\tif sc == 0 {\n\t\tsc = http.StatusInternalServerError\n\t}\n\n\tw.WriteHeader(sc)\n\n\tif err := json.NewEncoder(w).Encode(err); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/errcode/register.go",
    "content": "package errcode\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"sort\"\n\t\"sync\"\n)\n\nvar (\n\terrorCodeToDescriptors = map[ErrorCode]ErrorDescriptor{}\n\tidToDescriptors        = map[string]ErrorDescriptor{}\n\tgroupToDescriptors     = map[string][]ErrorDescriptor{}\n)\n\nvar (\n\t// ErrorCodeUnknown is a generic error that can be used as a last\n\t// resort if there is no situation-specific error message that can be used\n\tErrorCodeUnknown = Register(\"errcode\", ErrorDescriptor{\n\t\tValue:   \"UNKNOWN\",\n\t\tMessage: \"unknown error\",\n\t\tDescription: `Generic error returned when the error does not have an\n\t\t\t                                            API classification.`,\n\t\tHTTPStatusCode: http.StatusInternalServerError,\n\t})\n\n\t// ErrorCodeUnsupported is returned when an operation is not supported.\n\tErrorCodeUnsupported = Register(\"errcode\", ErrorDescriptor{\n\t\tValue:   \"UNSUPPORTED\",\n\t\tMessage: \"The operation is unsupported.\",\n\t\tDescription: `The operation was unsupported due to a missing\n\t\timplementation or invalid set of parameters.`,\n\t\tHTTPStatusCode: http.StatusMethodNotAllowed,\n\t})\n\n\t// ErrorCodeUnauthorized is returned if a request requires\n\t// authentication.\n\tErrorCodeUnauthorized = Register(\"errcode\", ErrorDescriptor{\n\t\tValue:   \"UNAUTHORIZED\",\n\t\tMessage: \"authentication required\",\n\t\tDescription: `The access controller was unable to authenticate\n\t\tthe client. Often this will be accompanied by a\n\t\tWww-Authenticate HTTP response header indicating how to\n\t\tauthenticate.`,\n\t\tHTTPStatusCode: http.StatusUnauthorized,\n\t})\n\n\t// ErrorCodeDenied is returned if a client does not have sufficient\n\t// permission to perform an action.\n\tErrorCodeDenied = Register(\"errcode\", ErrorDescriptor{\n\t\tValue:   \"DENIED\",\n\t\tMessage: \"requested access to the resource is denied\",\n\t\tDescription: `The access controller denied access for the\n\t\toperation on a resource.`,\n\t\tHTTPStatusCode: http.StatusForbidden,\n\t})\n\n\t// ErrorCodeUnavailable provides a common error to report unavialability\n\t// of a service or endpoint.\n\tErrorCodeUnavailable = Register(\"errcode\", ErrorDescriptor{\n\t\tValue:          \"UNAVAILABLE\",\n\t\tMessage:        \"service unavailable\",\n\t\tDescription:    \"Returned when a service is not available\",\n\t\tHTTPStatusCode: http.StatusServiceUnavailable,\n\t})\n)\n\nvar nextCode = 1000\nvar registerLock sync.Mutex\n\n// Register will make the passed-in error known to the environment and\n// return a new ErrorCode\nfunc Register(group string, descriptor ErrorDescriptor) ErrorCode {\n\tregisterLock.Lock()\n\tdefer registerLock.Unlock()\n\n\tdescriptor.Code = ErrorCode(nextCode)\n\n\tif _, ok := idToDescriptors[descriptor.Value]; ok {\n\t\tpanic(fmt.Sprintf(\"ErrorValue %q is already registered\", descriptor.Value))\n\t}\n\tif _, ok := errorCodeToDescriptors[descriptor.Code]; ok {\n\t\tpanic(fmt.Sprintf(\"ErrorCode %v is already registered\", descriptor.Code))\n\t}\n\n\tgroupToDescriptors[group] = append(groupToDescriptors[group], descriptor)\n\terrorCodeToDescriptors[descriptor.Code] = descriptor\n\tidToDescriptors[descriptor.Value] = descriptor\n\n\tnextCode++\n\treturn descriptor.Code\n}\n\ntype byValue []ErrorDescriptor\n\nfunc (a byValue) Len() int           { return len(a) }\nfunc (a byValue) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a byValue) Less(i, j int) bool { return a[i].Value < a[j].Value }\n\n// GetGroupNames returns the list of Error group names that are registered\nfunc GetGroupNames() []string {\n\tkeys := []string{}\n\n\tfor k := range groupToDescriptors {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\treturn keys\n}\n\n// GetErrorCodeGroup returns the named group of error descriptors\nfunc GetErrorCodeGroup(name string) []ErrorDescriptor {\n\tdesc := groupToDescriptors[name]\n\tsort.Sort(byValue(desc))\n\treturn desc\n}\n\n// GetErrorAllDescriptors returns a slice of all ErrorDescriptors that are\n// registered, irrespective of what group they're in\nfunc GetErrorAllDescriptors() []ErrorDescriptor {\n\tresult := []ErrorDescriptor{}\n\n\tfor _, group := range GetGroupNames() {\n\t\tresult = append(result, GetErrorCodeGroup(group)...)\n\t}\n\tsort.Sort(byValue(result))\n\treturn result\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/v2/descriptors.go",
    "content": "package v2\n\nimport (\n\t\"net/http\"\n\t\"regexp\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/distribution/reference\"\n\t\"github.com/docker/distribution/registry/api/errcode\"\n)\n\nvar (\n\tnameParameterDescriptor = ParameterDescriptor{\n\t\tName:        \"name\",\n\t\tType:        \"string\",\n\t\tFormat:      reference.NameRegexp.String(),\n\t\tRequired:    true,\n\t\tDescription: `Name of the target repository.`,\n\t}\n\n\treferenceParameterDescriptor = ParameterDescriptor{\n\t\tName:        \"reference\",\n\t\tType:        \"string\",\n\t\tFormat:      reference.TagRegexp.String(),\n\t\tRequired:    true,\n\t\tDescription: `Tag or digest of the target manifest.`,\n\t}\n\n\tuuidParameterDescriptor = ParameterDescriptor{\n\t\tName:        \"uuid\",\n\t\tType:        \"opaque\",\n\t\tRequired:    true,\n\t\tDescription: \"A uuid identifying the upload. This field can accept characters that match `[a-zA-Z0-9-_.=]+`.\",\n\t}\n\n\tdigestPathParameter = ParameterDescriptor{\n\t\tName:        \"digest\",\n\t\tType:        \"path\",\n\t\tRequired:    true,\n\t\tFormat:      digest.DigestRegexp.String(),\n\t\tDescription: `Digest of desired blob.`,\n\t}\n\n\thostHeader = ParameterDescriptor{\n\t\tName:        \"Host\",\n\t\tType:        \"string\",\n\t\tDescription: \"Standard HTTP Host Header. Should be set to the registry host.\",\n\t\tFormat:      \"<registry host>\",\n\t\tExamples:    []string{\"registry-1.docker.io\"},\n\t}\n\n\tauthHeader = ParameterDescriptor{\n\t\tName:        \"Authorization\",\n\t\tType:        \"string\",\n\t\tDescription: \"An RFC7235 compliant authorization header.\",\n\t\tFormat:      \"<scheme> <token>\",\n\t\tExamples:    []string{\"Bearer dGhpcyBpcyBhIGZha2UgYmVhcmVyIHRva2VuIQ==\"},\n\t}\n\n\tauthChallengeHeader = ParameterDescriptor{\n\t\tName:        \"WWW-Authenticate\",\n\t\tType:        \"string\",\n\t\tDescription: \"An RFC7235 compliant authentication challenge header.\",\n\t\tFormat:      `<scheme> realm=\"<realm>\", ...\"`,\n\t\tExamples: []string{\n\t\t\t`Bearer realm=\"https://auth.docker.com/\", service=\"registry.docker.com\", scopes=\"repository:library/ubuntu:pull\"`,\n\t\t},\n\t}\n\n\tcontentLengthZeroHeader = ParameterDescriptor{\n\t\tName:        \"Content-Length\",\n\t\tDescription: \"The `Content-Length` header must be zero and the body must be empty.\",\n\t\tType:        \"integer\",\n\t\tFormat:      \"0\",\n\t}\n\n\tdockerUploadUUIDHeader = ParameterDescriptor{\n\t\tName:        \"Docker-Upload-UUID\",\n\t\tDescription: \"Identifies the docker upload uuid for the current request.\",\n\t\tType:        \"uuid\",\n\t\tFormat:      \"<uuid>\",\n\t}\n\n\tdigestHeader = ParameterDescriptor{\n\t\tName:        \"Docker-Content-Digest\",\n\t\tDescription: \"Digest of the targeted content for the request.\",\n\t\tType:        \"digest\",\n\t\tFormat:      \"<digest>\",\n\t}\n\n\tlinkHeader = ParameterDescriptor{\n\t\tName:        \"Link\",\n\t\tType:        \"link\",\n\t\tDescription: \"RFC5988 compliant rel='next' with URL to next result set, if available\",\n\t\tFormat:      `<<url>?n=<last n value>&last=<last entry from response>>; rel=\"next\"`,\n\t}\n\n\tpaginationParameters = []ParameterDescriptor{\n\t\t{\n\t\t\tName:        \"n\",\n\t\t\tType:        \"integer\",\n\t\t\tDescription: \"Limit the number of entries in each response. It not present, all entries will be returned.\",\n\t\t\tFormat:      \"<integer>\",\n\t\t\tRequired:    false,\n\t\t},\n\t\t{\n\t\t\tName:        \"last\",\n\t\t\tType:        \"string\",\n\t\t\tDescription: \"Result set will include values lexically after last.\",\n\t\t\tFormat:      \"<integer>\",\n\t\t\tRequired:    false,\n\t\t},\n\t}\n\n\tunauthorizedResponseDescriptor = ResponseDescriptor{\n\t\tName:        \"Authentication Required\",\n\t\tStatusCode:  http.StatusUnauthorized,\n\t\tDescription: \"The client is not authenticated.\",\n\t\tHeaders: []ParameterDescriptor{\n\t\t\tauthChallengeHeader,\n\t\t\t{\n\t\t\t\tName:        \"Content-Length\",\n\t\t\t\tType:        \"integer\",\n\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\tFormat:      \"<length>\",\n\t\t\t},\n\t\t},\n\t\tBody: BodyDescriptor{\n\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\tFormat:      errorsBody,\n\t\t},\n\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\terrcode.ErrorCodeUnauthorized,\n\t\t},\n\t}\n\n\trepositoryNotFoundResponseDescriptor = ResponseDescriptor{\n\t\tName:        \"No Such Repository Error\",\n\t\tStatusCode:  http.StatusNotFound,\n\t\tDescription: \"The repository is not known to the registry.\",\n\t\tHeaders: []ParameterDescriptor{\n\t\t\t{\n\t\t\t\tName:        \"Content-Length\",\n\t\t\t\tType:        \"integer\",\n\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\tFormat:      \"<length>\",\n\t\t\t},\n\t\t},\n\t\tBody: BodyDescriptor{\n\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\tFormat:      errorsBody,\n\t\t},\n\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\tErrorCodeNameUnknown,\n\t\t},\n\t}\n\n\tdeniedResponseDescriptor = ResponseDescriptor{\n\t\tName:        \"Access Denied\",\n\t\tStatusCode:  http.StatusForbidden,\n\t\tDescription: \"The client does not have required access to the repository.\",\n\t\tHeaders: []ParameterDescriptor{\n\t\t\t{\n\t\t\t\tName:        \"Content-Length\",\n\t\t\t\tType:        \"integer\",\n\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\tFormat:      \"<length>\",\n\t\t\t},\n\t\t},\n\t\tBody: BodyDescriptor{\n\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\tFormat:      errorsBody,\n\t\t},\n\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\terrcode.ErrorCodeDenied,\n\t\t},\n\t}\n)\n\nconst (\n\tmanifestBody = `{\n   \"name\": <name>,\n   \"tag\": <tag>,\n   \"fsLayers\": [\n      {\n         \"blobSum\": \"<digest>\"\n      },\n      ...\n    ]\n   ],\n   \"history\": <v1 images>,\n   \"signature\": <JWS>\n}`\n\n\terrorsBody = `{\n\t\"errors:\" [\n\t    {\n            \"code\": <error code>,\n            \"message\": \"<error message>\",\n            \"detail\": ...\n        },\n        ...\n    ]\n}`\n\n\tunauthorizedErrorsBody = `{\n\t\"errors:\" [\n\t    {\n            \"code\": \"UNAUTHORIZED\",\n            \"message\": \"access to the requested resource is not authorized\",\n            \"detail\": ...\n        },\n        ...\n    ]\n}`\n)\n\n// APIDescriptor exports descriptions of the layout of the v2 registry API.\nvar APIDescriptor = struct {\n\t// RouteDescriptors provides a list of the routes available in the API.\n\tRouteDescriptors []RouteDescriptor\n}{\n\tRouteDescriptors: routeDescriptors,\n}\n\n// RouteDescriptor describes a route specified by name.\ntype RouteDescriptor struct {\n\t// Name is the name of the route, as specified in RouteNameXXX exports.\n\t// These names a should be considered a unique reference for a route. If\n\t// the route is registered with gorilla, this is the name that will be\n\t// used.\n\tName string\n\n\t// Path is a gorilla/mux-compatible regexp that can be used to match the\n\t// route. For any incoming method and path, only one route descriptor\n\t// should match.\n\tPath string\n\n\t// Entity should be a short, human-readalbe description of the object\n\t// targeted by the endpoint.\n\tEntity string\n\n\t// Description should provide an accurate overview of the functionality\n\t// provided by the route.\n\tDescription string\n\n\t// Methods should describe the various HTTP methods that may be used on\n\t// this route, including request and response formats.\n\tMethods []MethodDescriptor\n}\n\n// MethodDescriptor provides a description of the requests that may be\n// conducted with the target method.\ntype MethodDescriptor struct {\n\n\t// Method is an HTTP method, such as GET, PUT or POST.\n\tMethod string\n\n\t// Description should provide an overview of the functionality provided by\n\t// the covered method, suitable for use in documentation. Use of markdown\n\t// here is encouraged.\n\tDescription string\n\n\t// Requests is a slice of request descriptors enumerating how this\n\t// endpoint may be used.\n\tRequests []RequestDescriptor\n}\n\n// RequestDescriptor covers a particular set of headers and parameters that\n// can be carried out with the parent method. Its most helpful to have one\n// RequestDescriptor per API use case.\ntype RequestDescriptor struct {\n\t// Name provides a short identifier for the request, usable as a title or\n\t// to provide quick context for the particular request.\n\tName string\n\n\t// Description should cover the requests purpose, covering any details for\n\t// this particular use case.\n\tDescription string\n\n\t// Headers describes headers that must be used with the HTTP request.\n\tHeaders []ParameterDescriptor\n\n\t// PathParameters enumerate the parameterized path components for the\n\t// given request, as defined in the route's regular expression.\n\tPathParameters []ParameterDescriptor\n\n\t// QueryParameters provides a list of query parameters for the given\n\t// request.\n\tQueryParameters []ParameterDescriptor\n\n\t// Body describes the format of the request body.\n\tBody BodyDescriptor\n\n\t// Successes enumerates the possible responses that are considered to be\n\t// the result of a successful request.\n\tSuccesses []ResponseDescriptor\n\n\t// Failures covers the possible failures from this particular request.\n\tFailures []ResponseDescriptor\n}\n\n// ResponseDescriptor describes the components of an API response.\ntype ResponseDescriptor struct {\n\t// Name provides a short identifier for the response, usable as a title or\n\t// to provide quick context for the particular response.\n\tName string\n\n\t// Description should provide a brief overview of the role of the\n\t// response.\n\tDescription string\n\n\t// StatusCode specifies the status received by this particular response.\n\tStatusCode int\n\n\t// Headers covers any headers that may be returned from the response.\n\tHeaders []ParameterDescriptor\n\n\t// Fields describes any fields that may be present in the response.\n\tFields []ParameterDescriptor\n\n\t// ErrorCodes enumerates the error codes that may be returned along with\n\t// the response.\n\tErrorCodes []errcode.ErrorCode\n\n\t// Body describes the body of the response, if any.\n\tBody BodyDescriptor\n}\n\n// BodyDescriptor describes a request body and its expected content type. For\n// the most  part, it should be example json or some placeholder for body\n// data in documentation.\ntype BodyDescriptor struct {\n\tContentType string\n\tFormat      string\n}\n\n// ParameterDescriptor describes the format of a request parameter, which may\n// be a header, path parameter or query parameter.\ntype ParameterDescriptor struct {\n\t// Name is the name of the parameter, either of the path component or\n\t// query parameter.\n\tName string\n\n\t// Type specifies the type of the parameter, such as string, integer, etc.\n\tType string\n\n\t// Description provides a human-readable description of the parameter.\n\tDescription string\n\n\t// Required means the field is required when set.\n\tRequired bool\n\n\t// Format is a specifying the string format accepted by this parameter.\n\tFormat string\n\n\t// Regexp is a compiled regular expression that can be used to validate\n\t// the contents of the parameter.\n\tRegexp *regexp.Regexp\n\n\t// Examples provides multiple examples for the values that might be valid\n\t// for this parameter.\n\tExamples []string\n}\n\nvar routeDescriptors = []RouteDescriptor{\n\t{\n\t\tName:        RouteNameBase,\n\t\tPath:        \"/v2/\",\n\t\tEntity:      \"Base\",\n\t\tDescription: `Base V2 API route. Typically, this can be used for lightweight version checks and to validate registry authentication.`,\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Check that the endpoint implements Docker Registry API V2.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The API implements V2 protocol and is accessible.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The registry does not implement the V2 API.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\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\t},\n\t{\n\t\tName:        RouteNameTags,\n\t\tPath:        \"/v2/{name:\" + reference.NameRegexp.String() + \"}/tags/list\",\n\t\tEntity:      \"Tags\",\n\t\tDescription: \"Retrieve information about tags.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Fetch the tags under the repository identified by `name`.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Tags\",\n\t\t\t\t\t\tDescription: \"Return all tags for the repository\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t\tDescription: \"A list of tags for the named repository.\",\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat: `{\n    \"name\": <name>,\n    \"tags\": [\n        <tag>,\n        ...\n    ]\n}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:            \"Tags Paginated\",\n\t\t\t\t\t\tDescription:     \"Return a portion of the tags for the specified repository.\",\n\t\t\t\t\t\tPathParameters:  []ParameterDescriptor{nameParameterDescriptor},\n\t\t\t\t\t\tQueryParameters: paginationParameters,\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t\tDescription: \"A list of tags for the named repository.\",\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlinkHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat: `{\n    \"name\": <name>,\n    \"tags\": [\n        <tag>,\n        ...\n    ],\n}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t},\n\t{\n\t\tName:        RouteNameManifest,\n\t\tPath:        \"/v2/{name:\" + reference.NameRegexp.String() + \"}/manifests/{reference:\" + reference.TagRegexp.String() + \"|\" + digest.DigestRegexp.String() + \"}\",\n\t\tEntity:      \"Manifest\",\n\t\tDescription: \"Create, update, delete and retrieve manifests.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Fetch the manifest identified by `name` and `reference` where `reference` can be a tag or digest. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\treferenceParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The manifest identified by `name` and `reference`. The contents can be used to identify and resolve resources required to run the specified image.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"<media type of manifest>\",\n\t\t\t\t\t\t\t\t\tFormat:      manifestBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The name or reference was invalid.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeTagInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t{\n\t\t\t\tMethod:      \"PUT\",\n\t\t\t\tDescription: \"Put the manifest identified by `name` and `reference` where `reference` can be a tag or digest.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\treferenceParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\tContentType: \"<media type of manifest>\",\n\t\t\t\t\t\t\tFormat:      manifestBody,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The manifest has been accepted by the registry and is stored under the specified `name` and `tag`.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusCreated,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The canonical location url of the uploaded manifest.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<url>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Invalid Manifest\",\n\t\t\t\t\t\t\t\tDescription: \"The received manifest was invalid in some way, as described by the error codes. The client should resolve the issue and retry the request.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeTagInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeManifestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeManifestUnverified,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Missing Layer(s)\",\n\t\t\t\t\t\t\t\tDescription: \"One or more layers may be missing during a manifest upload. If so, the missing layers will be enumerated in the error response.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat: `{\n    \"errors:\" [{\n            \"code\": \"BLOB_UNKNOWN\",\n            \"message\": \"blob unknown to registry\",\n            \"detail\": {\n                \"digest\": \"<digest>\"\n            }\n        },\n        ...\n    ]\n}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Not allowed\",\n\t\t\t\t\t\t\t\tDescription: \"Manifest put is not allowed because the registry is configured as a pull-through cache or for some other reason\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusMethodNotAllowed,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\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\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tMethod:      \"DELETE\",\n\t\t\t\tDescription: \"Delete the manifest identified by `name` and `reference`. Note that a manifest can _only_ be deleted by `digest`.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\treferenceParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode: http.StatusAccepted,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Invalid Name or Reference\",\n\t\t\t\t\t\t\t\tDescription: \"The specified `name` or `reference` were invalid and the delete was unable to proceed.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeTagInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Unknown Manifest\",\n\t\t\t\t\t\t\t\tDescription: \"The specified `name` or `reference` are unknown to the registry and the delete was unable to proceed. Clients can assume the manifest was already deleted if this response is returned.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameUnknown,\n\t\t\t\t\t\t\t\t\tErrorCodeManifestUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Not allowed\",\n\t\t\t\t\t\t\t\tDescription: \"Manifest delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusMethodNotAllowed,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\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\t},\n\t\t\t},\n\t\t},\n\t},\n\n\t{\n\t\tName:        RouteNameBlob,\n\t\tPath:        \"/v2/{name:\" + reference.NameRegexp.String() + \"}/blobs/{digest:\" + digest.DigestRegexp.String() + \"}\",\n\t\tEntity:      \"Blob\",\n\t\tDescription: \"Operations on blobs identified by `name` and `digest`. Used to fetch or delete layers by digest.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Retrieve the blob from the registry identified by `digest`. A `HEAD` request can also be issued to this endpoint to obtain resource information without receiving all data.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"Fetch Blob\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tdigestPathParameter,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob identified by `digest` is available. The blob content will be present in the body of the request.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The length of the requested blob content.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t\t\t\t\t\t\tFormat:      \"<blob binary data>\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob identified by `digest` is available at the provided location.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusTemporaryRedirect,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The location where the layer should be accessible.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<blob location>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob, identified by `name` and `digest`, is unknown to the registry.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameUnknown,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Fetch Blob Part\",\n\t\t\t\t\t\tDescription: \"This endpoint may also support RFC7233 compliant range requests. Support can be detected by issuing a HEAD request. If the header `Accept-Range: bytes` is returned, range requests can be used to fetch partial content.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Range\",\n\t\t\t\t\t\t\t\tType:        \"string\",\n\t\t\t\t\t\t\t\tDescription: \"HTTP Range header specifying blob chunk.\",\n\t\t\t\t\t\t\t\tFormat:      \"bytes=<start>-<end>\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tdigestPathParameter,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob identified by `digest` is available. The specified chunk of blob content will be present in the body of the request.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusPartialContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The length of the requested blob chunk.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Range\",\n\t\t\t\t\t\t\t\t\t\tType:        \"byte range\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Content range of blob chunk.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"bytes <start>-<end>/<size>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t\t\t\t\t\t\tFormat:      \"<blob binary data>\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was a problem with the request that needs to be addressed by the client, such as an invalid `name` or `tag`.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode: http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameUnknown,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The range specification cannot be satisfied for the requested content. This can happen when the range is not formatted correctly or if the range is outside of the valid size of the content.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusRequestedRangeNotSatisfiable,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t{\n\t\t\t\tMethod:      \"DELETE\",\n\t\t\t\tDescription: \"Delete the blob identified by `name` and `digest`\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tdigestPathParameter,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode: http.StatusAccepted,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"0\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:       \"Invalid Name or Digest\",\n\t\t\t\t\t\t\t\tStatusCode: http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob, identified by `name` and `digest`, is unknown to the registry.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameUnknown,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"Blob delete is not allowed because the registry is configured as a pull-through cache or `delete` has been disabled\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusMethodNotAllowed,\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// TODO(stevvooe): We may want to add a PUT request here to\n\t\t\t// kickoff an upload of a blob, integrated with the blob upload\n\t\t\t// API.\n\t\t},\n\t},\n\n\t{\n\t\tName:        RouteNameBlobUpload,\n\t\tPath:        \"/v2/{name:\" + reference.NameRegexp.String() + \"}/blobs/uploads/\",\n\t\tEntity:      \"Initiate Blob Upload\",\n\t\tDescription: \"Initiate a blob upload. This endpoint can be used to create resumable uploads or monolithic uploads.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"POST\",\n\t\t\t\tDescription: \"Initiate a resumable blob upload. If successful, an upload location will be provided to complete the upload. Optionally, if the `digest` parameter is present, the request body will be used to complete the upload in a single request.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Initiate Monolithic Blob Upload\",\n\t\t\t\t\t\tDescription: \"Upload a blob identified by the `digest` parameter in single request. This upload will not be resumable unless a recoverable error is returned.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:   \"Content-Length\",\n\t\t\t\t\t\t\t\tType:   \"integer\",\n\t\t\t\t\t\t\t\tFormat: \"<length of blob>\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tQueryParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"digest\",\n\t\t\t\t\t\t\t\tType:        \"query\",\n\t\t\t\t\t\t\t\tFormat:      \"<digest>\",\n\t\t\t\t\t\t\t\tRegexp:      digest.DigestRegexp,\n\t\t\t\t\t\t\t\tDescription: `Digest of uploaded blob. If present, the upload will be completed, in a single request, with contents of the request body as the resulting blob.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\tContentType: \"application/octect-stream\",\n\t\t\t\t\t\t\tFormat:      \"<binary data>\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob has been created in the registry and is available at the provided location.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusCreated,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:   \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:   \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat: \"<blob location>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:       \"Invalid Name or Digest\",\n\t\t\t\t\t\t\t\tStatusCode: http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Not allowed\",\n\t\t\t\t\t\t\t\tDescription: \"Blob upload is not allowed because the registry is configured as a pull-through cache or for some other reason\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusMethodNotAllowed,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Initiate Resumable Blob Upload\",\n\t\t\t\t\t\tDescription: \"Initiate a resumable blob upload with an empty request body.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload has been created. The `Location` header must be used to complete the upload. The response should be identical to a `GET` request on the contents of the returned `Location` header.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusAccepted,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"/v2/<name>/blobs/uploads/<uuid>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The location of the created upload. Clients should use the contents verbatim to complete the upload, adding parameters where required.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Range\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"0-0\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:       \"Invalid Name or Digest\",\n\t\t\t\t\t\t\t\tStatusCode: http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Mount Blob\",\n\t\t\t\t\t\tDescription: \"Mount a blob identified by the `mount` parameter from another repository.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tQueryParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"mount\",\n\t\t\t\t\t\t\t\tType:        \"query\",\n\t\t\t\t\t\t\t\tFormat:      \"<digest>\",\n\t\t\t\t\t\t\t\tRegexp:      digest.DigestRegexp,\n\t\t\t\t\t\t\t\tDescription: `Digest of blob to mount from the source repository.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"from\",\n\t\t\t\t\t\t\t\tType:        \"query\",\n\t\t\t\t\t\t\t\tFormat:      \"<repository name>\",\n\t\t\t\t\t\t\t\tRegexp:      reference.NameRegexp,\n\t\t\t\t\t\t\t\tDescription: `Name of the source repository.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The blob has been mounted in the repository and is available at the provided location.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusCreated,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:   \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:   \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat: \"<blob location>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:       \"Invalid Name or Digest\",\n\t\t\t\t\t\t\t\tStatusCode: http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Not allowed\",\n\t\t\t\t\t\t\t\tDescription: \"Blob mount is not allowed because the registry is configured as a pull-through cache or for some other reason\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusMethodNotAllowed,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t},\n\n\t{\n\t\tName:        RouteNameBlobUploadChunk,\n\t\tPath:        \"/v2/{name:\" + reference.NameRegexp.String() + \"}/blobs/uploads/{uuid:[a-zA-Z0-9-_.=]+}\",\n\t\tEntity:      \"Blob Upload\",\n\t\tDescription: \"Interact with blob uploads. Clients should never assemble URLs for this endpoint and should only take it through the `Location` header on related API requests. The `Location` header and its parameters should be preserved by clients, using the latest value returned via upload related API calls.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Retrieve status of upload identified by `uuid`. The primary purpose of this endpoint is to resolve the current status of a resumable upload.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tDescription: \"Retrieve the progress of the current upload, as reported by the `Range` header.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tuuidParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Upload Progress\",\n\t\t\t\t\t\t\t\tDescription: \"The upload is known and in progress. The last received offset is available in the `Range` header.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNoContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Range\",\n\t\t\t\t\t\t\t\t\t\tType:        \"header\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"0-<offset>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Range indicating the current progress of the upload.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was an error processing the upload and it must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload is unknown to the registry. The upload must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t{\n\t\t\t\tMethod:      \"PATCH\",\n\t\t\t\tDescription: \"Upload a chunk of data for the specified upload.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Stream upload\",\n\t\t\t\t\t\tDescription: \"Upload a stream of data to upload without completing the upload.\",\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tuuidParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t\t\t\t\tFormat:      \"<binary data>\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Data Accepted\",\n\t\t\t\t\t\t\t\tDescription: \"The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNoContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"/v2/<name>/blobs/uploads/<uuid>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Range\",\n\t\t\t\t\t\t\t\t\t\tType:        \"header\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"0-<offset>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Range indicating the current progress of the upload.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was an error processing the upload and it must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload is unknown to the registry. The upload must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Chunked upload\",\n\t\t\t\t\t\tDescription: \"Upload a chunk of data to specified upload without completing the upload. The data will be uploaded to the specified Content Range.\",\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tuuidParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Content-Range\",\n\t\t\t\t\t\t\t\tType:        \"header\",\n\t\t\t\t\t\t\t\tFormat:      \"<start of range>-<end of range, inclusive>\",\n\t\t\t\t\t\t\t\tRequired:    true,\n\t\t\t\t\t\t\t\tDescription: \"Range of bytes identifying the desired block of content represented by the body. Start must the end offset retrieved via status check plus one. Note that this is a non-standard use of the `Content-Range` header.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\tFormat:      \"<length of chunk>\",\n\t\t\t\t\t\t\t\tDescription: \"Length of the chunk being uploaded, corresponding the length of the request body.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t\t\t\t\tFormat:      \"<binary chunk>\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Chunk Accepted\",\n\t\t\t\t\t\t\t\tDescription: \"The chunk of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNoContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"/v2/<name>/blobs/uploads/<uuid>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The location of the upload. Clients should assume this changes after each request. Clients should use the contents verbatim to complete the upload, adding parameters where required.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Range\",\n\t\t\t\t\t\t\t\t\t\tType:        \"header\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"0-<offset>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Range indicating the current progress of the upload.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdockerUploadUUIDHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was an error processing the upload and it must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload is unknown to the registry. The upload must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The `Content-Range` specification cannot be accepted, either because it does not overlap with the current progress or it is invalid.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusRequestedRangeNotSatisfiable,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t{\n\t\t\t\tMethod:      \"PUT\",\n\t\t\t\tDescription: \"Complete the upload specified by `uuid`, optionally appending the body as the final chunk.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tDescription: \"Complete the upload, providing all the data in the body, if necessary. A request without a body will just complete the upload with previously uploaded content.\",\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\tFormat:      \"<length of data>\",\n\t\t\t\t\t\t\t\tDescription: \"Length of the data being uploaded, corresponding to the length of the request body. May be zero if no data is provided.\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tuuidParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tQueryParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"digest\",\n\t\t\t\t\t\t\t\tType:        \"string\",\n\t\t\t\t\t\t\t\tFormat:      \"<digest>\",\n\t\t\t\t\t\t\t\tRegexp:      digest.DigestRegexp,\n\t\t\t\t\t\t\t\tRequired:    true,\n\t\t\t\t\t\t\t\tDescription: `Digest of uploaded blob.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t\t\t\t\tFormat:      \"<binary data>\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Upload Complete\",\n\t\t\t\t\t\t\t\tDescription: \"The upload has been completed and accepted by the registry. The canonical location will be available in the `Location` header.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNoContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Location\",\n\t\t\t\t\t\t\t\t\t\tType:        \"url\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<blob location>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"The canonical location of the blob for retrieval\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Range\",\n\t\t\t\t\t\t\t\t\t\tType:        \"header\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<start of range>-<end of range, inclusive>\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Range of bytes identifying the desired block of content represented by the body. Start must match the end of offset retrieved via status check. Note that this is a non-standard use of the `Content-Range` header.\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t\tdigestHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"There was an error processing the upload and it must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeDigestInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadInvalid,\n\t\t\t\t\t\t\t\t\terrcode.ErrorCodeUnsupported,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload is unknown to the registry. The upload must be restarted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t{\n\t\t\t\tMethod:      \"DELETE\",\n\t\t\t\tDescription: \"Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tDescription: \"Cancel the upload specified by `uuid`.\",\n\t\t\t\t\t\tPathParameters: []ParameterDescriptor{\n\t\t\t\t\t\t\tnameParameterDescriptor,\n\t\t\t\t\t\t\tuuidParameterDescriptor,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\thostHeader,\n\t\t\t\t\t\t\tauthHeader,\n\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:        \"Upload Deleted\",\n\t\t\t\t\t\t\t\tDescription: \"The upload has been successfully deleted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNoContent,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\tcontentLengthZeroHeader,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFailures: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"An error was encountered processing the delete. The client may ignore this error.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusBadRequest,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeNameInvalid,\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadInvalid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"The upload is unknown to the registry. The client may ignore this error and assume the upload has been deleted.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusNotFound,\n\t\t\t\t\t\t\t\tErrorCodes: []errcode.ErrorCode{\n\t\t\t\t\t\t\t\t\tErrorCodeBlobUploadUnknown,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat:      errorsBody,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tunauthorizedResponseDescriptor,\n\t\t\t\t\t\t\trepositoryNotFoundResponseDescriptor,\n\t\t\t\t\t\t\tdeniedResponseDescriptor,\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\t},\n\t{\n\t\tName:        RouteNameCatalog,\n\t\tPath:        \"/v2/_catalog\",\n\t\tEntity:      \"Catalog\",\n\t\tDescription: \"List a set of available repositories in the local registry cluster. Does not provide any indication of what may be available upstream. Applications can only determine if a repository is available but not if it is not available.\",\n\t\tMethods: []MethodDescriptor{\n\t\t\t{\n\t\t\t\tMethod:      \"GET\",\n\t\t\t\tDescription: \"Retrieve a sorted, json list of repositories available in the registry.\",\n\t\t\t\tRequests: []RequestDescriptor{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:        \"Catalog Fetch Complete\",\n\t\t\t\t\t\tDescription: \"Request an unabridged list of repositories available.\",\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDescription: \"Returns the unabridged list of repositories as a json response.\",\n\t\t\t\t\t\t\t\tStatusCode:  http.StatusOK,\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat: `{\n\t\"repositories\": [\n\t\t<name>,\n\t\t...\n\t]\n}`,\n\t\t\t\t\t\t\t\t},\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\t\t{\n\t\t\t\t\t\tName:            \"Catalog Fetch Paginated\",\n\t\t\t\t\t\tDescription:     \"Return the specified portion of repositories.\",\n\t\t\t\t\t\tQueryParameters: paginationParameters,\n\t\t\t\t\t\tSuccesses: []ResponseDescriptor{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tStatusCode: http.StatusOK,\n\t\t\t\t\t\t\t\tBody: BodyDescriptor{\n\t\t\t\t\t\t\t\t\tContentType: \"application/json; charset=utf-8\",\n\t\t\t\t\t\t\t\t\tFormat: `{\n\t\"repositories\": [\n\t\t<name>,\n\t\t...\n\t]\n\t\"next\": \"<url>?last=<name>&n=<last value of n>\"\n}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaders: []ParameterDescriptor{\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tName:        \"Content-Length\",\n\t\t\t\t\t\t\t\t\t\tType:        \"integer\",\n\t\t\t\t\t\t\t\t\t\tDescription: \"Length of the JSON response body.\",\n\t\t\t\t\t\t\t\t\t\tFormat:      \"<length>\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlinkHeader,\n\t\t\t\t\t\t\t\t},\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\t},\n\t\t\t},\n\t\t},\n\t},\n}\n\nvar routeDescriptorsMap map[string]RouteDescriptor\n\nfunc init() {\n\trouteDescriptorsMap = make(map[string]RouteDescriptor, len(routeDescriptors))\n\n\tfor _, descriptor := range routeDescriptors {\n\t\trouteDescriptorsMap[descriptor.Name] = descriptor\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/v2/doc.go",
    "content": "// Package v2 describes routes, urls and the error codes used in the Docker\n// Registry JSON HTTP API V2. In addition to declarations, descriptors are\n// provided for routes and error codes that can be used for implementation and\n// automatically generating documentation.\n//\n// Definitions here are considered to be locked down for the V2 registry api.\n// Any changes must be considered carefully and should not proceed without a\n// change proposal in docker core.\npackage v2\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/v2/errors.go",
    "content": "package v2\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/docker/distribution/registry/api/errcode\"\n)\n\nconst errGroup = \"registry.api.v2\"\n\nvar (\n\t// ErrorCodeDigestInvalid is returned when uploading a blob if the\n\t// provided digest does not match the blob contents.\n\tErrorCodeDigestInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"DIGEST_INVALID\",\n\t\tMessage: \"provided digest did not match uploaded content\",\n\t\tDescription: `When a blob is uploaded, the registry will check that\n\t\tthe content matches the digest provided by the client. The error may\n\t\tinclude a detail structure with the key \"digest\", including the\n\t\tinvalid digest string. This error may also be returned when a manifest\n\t\tincludes an invalid layer digest.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeSizeInvalid is returned when uploading a blob if the provided\n\tErrorCodeSizeInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"SIZE_INVALID\",\n\t\tMessage: \"provided length did not match content length\",\n\t\tDescription: `When a layer is uploaded, the provided size will be\n\t\tchecked against the uploaded content. If they do not match, this error\n\t\twill be returned.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeNameInvalid is returned when the name in the manifest does not\n\t// match the provided name.\n\tErrorCodeNameInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"NAME_INVALID\",\n\t\tMessage: \"invalid repository name\",\n\t\tDescription: `Invalid repository name encountered either during\n\t\tmanifest validation or any API operation.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeTagInvalid is returned when the tag in the manifest does not\n\t// match the provided tag.\n\tErrorCodeTagInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"TAG_INVALID\",\n\t\tMessage: \"manifest tag did not match URI\",\n\t\tDescription: `During a manifest upload, if the tag in the manifest\n\t\tdoes not match the uri tag, this error will be returned.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeNameUnknown when the repository name is not known.\n\tErrorCodeNameUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"NAME_UNKNOWN\",\n\t\tMessage: \"repository name not known to registry\",\n\t\tDescription: `This is returned if the name used during an operation is\n\t\tunknown to the registry.`,\n\t\tHTTPStatusCode: http.StatusNotFound,\n\t})\n\n\t// ErrorCodeManifestUnknown returned when image manifest is unknown.\n\tErrorCodeManifestUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"MANIFEST_UNKNOWN\",\n\t\tMessage: \"manifest unknown\",\n\t\tDescription: `This error is returned when the manifest, identified by\n\t\tname and tag is unknown to the repository.`,\n\t\tHTTPStatusCode: http.StatusNotFound,\n\t})\n\n\t// ErrorCodeManifestInvalid returned when an image manifest is invalid,\n\t// typically during a PUT operation. This error encompasses all errors\n\t// encountered during manifest validation that aren't signature errors.\n\tErrorCodeManifestInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"MANIFEST_INVALID\",\n\t\tMessage: \"manifest invalid\",\n\t\tDescription: `During upload, manifests undergo several checks ensuring\n\t\tvalidity. If those checks fail, this error may be returned, unless a\n\t\tmore specific error is included. The detail will contain information\n\t\tthe failed validation.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeManifestUnverified is returned when the manifest fails\n\t// signature verification.\n\tErrorCodeManifestUnverified = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"MANIFEST_UNVERIFIED\",\n\t\tMessage: \"manifest failed signature verification\",\n\t\tDescription: `During manifest upload, if the manifest fails signature\n\t\tverification, this error will be returned.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeManifestBlobUnknown is returned when a manifest blob is\n\t// unknown to the registry.\n\tErrorCodeManifestBlobUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"MANIFEST_BLOB_UNKNOWN\",\n\t\tMessage: \"blob unknown to registry\",\n\t\tDescription: `This error may be returned when a manifest blob is \n\t\tunknown to the registry.`,\n\t\tHTTPStatusCode: http.StatusBadRequest,\n\t})\n\n\t// ErrorCodeBlobUnknown is returned when a blob is unknown to the\n\t// registry. This can happen when the manifest references a nonexistent\n\t// layer or the result is not found by a blob fetch.\n\tErrorCodeBlobUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"BLOB_UNKNOWN\",\n\t\tMessage: \"blob unknown to registry\",\n\t\tDescription: `This error may be returned when a blob is unknown to the\n\t\tregistry in a specified repository. This can be returned with a\n\t\tstandard get or if a manifest references an unknown layer during\n\t\tupload.`,\n\t\tHTTPStatusCode: http.StatusNotFound,\n\t})\n\n\t// ErrorCodeBlobUploadUnknown is returned when an upload is unknown.\n\tErrorCodeBlobUploadUnknown = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"BLOB_UPLOAD_UNKNOWN\",\n\t\tMessage: \"blob upload unknown to registry\",\n\t\tDescription: `If a blob upload has been cancelled or was never\n\t\tstarted, this error code may be returned.`,\n\t\tHTTPStatusCode: http.StatusNotFound,\n\t})\n\n\t// ErrorCodeBlobUploadInvalid is returned when an upload is invalid.\n\tErrorCodeBlobUploadInvalid = errcode.Register(errGroup, errcode.ErrorDescriptor{\n\t\tValue:   \"BLOB_UPLOAD_INVALID\",\n\t\tMessage: \"blob upload invalid\",\n\t\tDescription: `The blob upload encountered an error and can no\n\t\tlonger proceed.`,\n\t\tHTTPStatusCode: http.StatusNotFound,\n\t})\n)\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/v2/routes.go",
    "content": "package v2\n\nimport \"github.com/gorilla/mux\"\n\n// The following are definitions of the name under which all V2 routes are\n// registered. These symbols can be used to look up a route based on the name.\nconst (\n\tRouteNameBase            = \"base\"\n\tRouteNameManifest        = \"manifest\"\n\tRouteNameTags            = \"tags\"\n\tRouteNameBlob            = \"blob\"\n\tRouteNameBlobUpload      = \"blob-upload\"\n\tRouteNameBlobUploadChunk = \"blob-upload-chunk\"\n\tRouteNameCatalog         = \"catalog\"\n)\n\nvar allEndpoints = []string{\n\tRouteNameManifest,\n\tRouteNameCatalog,\n\tRouteNameTags,\n\tRouteNameBlob,\n\tRouteNameBlobUpload,\n\tRouteNameBlobUploadChunk,\n}\n\n// Router builds a gorilla router with named routes for the various API\n// methods. This can be used directly by both server implementations and\n// clients.\nfunc Router() *mux.Router {\n\treturn RouterWithPrefix(\"\")\n}\n\n// RouterWithPrefix builds a gorilla router with a configured prefix\n// on all routes.\nfunc RouterWithPrefix(prefix string) *mux.Router {\n\trootRouter := mux.NewRouter()\n\trouter := rootRouter\n\tif prefix != \"\" {\n\t\trouter = router.PathPrefix(prefix).Subrouter()\n\t}\n\n\trouter.StrictSlash(true)\n\n\tfor _, descriptor := range routeDescriptors {\n\t\trouter.Path(descriptor.Path).Name(descriptor.Name)\n\t}\n\n\treturn rootRouter\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/api/v2/urls.go",
    "content": "package v2\n\nimport (\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/reference\"\n\t\"github.com/gorilla/mux\"\n)\n\n// URLBuilder creates registry API urls from a single base endpoint. It can be\n// used to create urls for use in a registry client or server.\n//\n// All urls will be created from the given base, including the api version.\n// For example, if a root of \"/foo/\" is provided, urls generated will be fall\n// under \"/foo/v2/...\". Most application will only provide a schema, host and\n// port, such as \"https://localhost:5000/\".\ntype URLBuilder struct {\n\troot     *url.URL // url root (ie http://localhost/)\n\trouter   *mux.Router\n\trelative bool\n}\n\n// NewURLBuilder creates a URLBuilder with provided root url object.\nfunc NewURLBuilder(root *url.URL, relative bool) *URLBuilder {\n\treturn &URLBuilder{\n\t\troot:     root,\n\t\trouter:   Router(),\n\t\trelative: relative,\n\t}\n}\n\n// NewURLBuilderFromString workes identically to NewURLBuilder except it takes\n// a string argument for the root, returning an error if it is not a valid\n// url.\nfunc NewURLBuilderFromString(root string, relative bool) (*URLBuilder, error) {\n\tu, err := url.Parse(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewURLBuilder(u, relative), nil\n}\n\n// NewURLBuilderFromRequest uses information from an *http.Request to\n// construct the root url.\nfunc NewURLBuilderFromRequest(r *http.Request, relative bool) *URLBuilder {\n\tvar scheme string\n\n\tforwardedProto := r.Header.Get(\"X-Forwarded-Proto\")\n\n\tswitch {\n\tcase len(forwardedProto) > 0:\n\t\tscheme = forwardedProto\n\tcase r.TLS != nil:\n\t\tscheme = \"https\"\n\tcase len(r.URL.Scheme) > 0:\n\t\tscheme = r.URL.Scheme\n\tdefault:\n\t\tscheme = \"http\"\n\t}\n\n\thost := r.Host\n\tforwardedHost := r.Header.Get(\"X-Forwarded-Host\")\n\tif len(forwardedHost) > 0 {\n\t\t// According to the Apache mod_proxy docs, X-Forwarded-Host can be a\n\t\t// comma-separated list of hosts, to which each proxy appends the\n\t\t// requested host. We want to grab the first from this comma-separated\n\t\t// list.\n\t\thosts := strings.SplitN(forwardedHost, \",\", 2)\n\t\thost = strings.TrimSpace(hosts[0])\n\t}\n\n\tbasePath := routeDescriptorsMap[RouteNameBase].Path\n\n\trequestPath := r.URL.Path\n\tindex := strings.Index(requestPath, basePath)\n\n\tu := &url.URL{\n\t\tScheme: scheme,\n\t\tHost:   host,\n\t}\n\n\tif index > 0 {\n\t\t// N.B. index+1 is important because we want to include the trailing /\n\t\tu.Path = requestPath[0 : index+1]\n\t}\n\n\treturn NewURLBuilder(u, relative)\n}\n\n// BuildBaseURL constructs a base url for the API, typically just \"/v2/\".\nfunc (ub *URLBuilder) BuildBaseURL() (string, error) {\n\troute := ub.cloneRoute(RouteNameBase)\n\n\tbaseURL, err := route.URL()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn baseURL.String(), nil\n}\n\n// BuildCatalogURL constructs a url get a catalog of repositories\nfunc (ub *URLBuilder) BuildCatalogURL(values ...url.Values) (string, error) {\n\troute := ub.cloneRoute(RouteNameCatalog)\n\n\tcatalogURL, err := route.URL()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn appendValuesURL(catalogURL, values...).String(), nil\n}\n\n// BuildTagsURL constructs a url to list the tags in the named repository.\nfunc (ub *URLBuilder) BuildTagsURL(name reference.Named) (string, error) {\n\troute := ub.cloneRoute(RouteNameTags)\n\n\ttagsURL, err := route.URL(\"name\", name.Name())\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn tagsURL.String(), nil\n}\n\n// BuildManifestURL constructs a url for the manifest identified by name and\n// reference. The argument reference may be either a tag or digest.\nfunc (ub *URLBuilder) BuildManifestURL(ref reference.Named) (string, error) {\n\troute := ub.cloneRoute(RouteNameManifest)\n\n\ttagOrDigest := \"\"\n\tswitch v := ref.(type) {\n\tcase reference.Tagged:\n\t\ttagOrDigest = v.Tag()\n\tcase reference.Digested:\n\t\ttagOrDigest = v.Digest().String()\n\t}\n\n\tmanifestURL, err := route.URL(\"name\", ref.Name(), \"reference\", tagOrDigest)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn manifestURL.String(), nil\n}\n\n// BuildBlobURL constructs the url for the blob identified by name and dgst.\nfunc (ub *URLBuilder) BuildBlobURL(ref reference.Canonical) (string, error) {\n\troute := ub.cloneRoute(RouteNameBlob)\n\n\tlayerURL, err := route.URL(\"name\", ref.Name(), \"digest\", ref.Digest().String())\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn layerURL.String(), nil\n}\n\n// BuildBlobUploadURL constructs a url to begin a blob upload in the\n// repository identified by name.\nfunc (ub *URLBuilder) BuildBlobUploadURL(name reference.Named, values ...url.Values) (string, error) {\n\troute := ub.cloneRoute(RouteNameBlobUpload)\n\n\tuploadURL, err := route.URL(\"name\", name.Name())\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn appendValuesURL(uploadURL, values...).String(), nil\n}\n\n// BuildBlobUploadChunkURL constructs a url for the upload identified by uuid,\n// including any url values. This should generally not be used by clients, as\n// this url is provided by server implementations during the blob upload\n// process.\nfunc (ub *URLBuilder) BuildBlobUploadChunkURL(name reference.Named, uuid string, values ...url.Values) (string, error) {\n\troute := ub.cloneRoute(RouteNameBlobUploadChunk)\n\n\tuploadURL, err := route.URL(\"name\", name.Name(), \"uuid\", uuid)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn appendValuesURL(uploadURL, values...).String(), nil\n}\n\n// clondedRoute returns a clone of the named route from the router. Routes\n// must be cloned to avoid modifying them during url generation.\nfunc (ub *URLBuilder) cloneRoute(name string) clonedRoute {\n\troute := new(mux.Route)\n\troot := new(url.URL)\n\n\t*route = *ub.router.GetRoute(name) // clone the route\n\t*root = *ub.root\n\n\treturn clonedRoute{Route: route, root: root, relative: ub.relative}\n}\n\ntype clonedRoute struct {\n\t*mux.Route\n\troot     *url.URL\n\trelative bool\n}\n\nfunc (cr clonedRoute) URL(pairs ...string) (*url.URL, error) {\n\trouteURL, err := cr.Route.URL(pairs...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif cr.relative {\n\t\treturn routeURL, nil\n\t}\n\n\tif routeURL.Scheme == \"\" && routeURL.User == nil && routeURL.Host == \"\" {\n\t\trouteURL.Path = routeURL.Path[1:]\n\t}\n\n\turl := cr.root.ResolveReference(routeURL)\n\turl.Scheme = cr.root.Scheme\n\treturn url, nil\n}\n\n// appendValuesURL appends the parameters to the url.\nfunc appendValuesURL(u *url.URL, values ...url.Values) *url.URL {\n\tmerged := u.Query()\n\n\tfor _, v := range values {\n\t\tfor k, vv := range v {\n\t\t\tmerged[k] = append(merged[k], vv...)\n\t\t}\n\t}\n\n\tu.RawQuery = merged.Encode()\n\treturn u\n}\n\n// appendValues appends the parameters to the url. Panics if the string is not\n// a url.\nfunc appendValues(u string, values ...url.Values) string {\n\tup, err := url.Parse(u)\n\n\tif err != nil {\n\t\tpanic(err) // should never happen\n\t}\n\n\treturn appendValuesURL(up, values...).String()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/auth/api_version.go",
    "content": "package auth\n\nimport (\n\t\"net/http\"\n\t\"strings\"\n)\n\n// APIVersion represents a version of an API including its\n// type and version number.\ntype APIVersion struct {\n\t// Type refers to the name of a specific API specification\n\t// such as \"registry\"\n\tType string\n\n\t// Version is the version of the API specification implemented,\n\t// This may omit the revision number and only include\n\t// the major and minor version, such as \"2.0\"\n\tVersion string\n}\n\n// String returns the string formatted API Version\nfunc (v APIVersion) String() string {\n\treturn v.Type + \"/\" + v.Version\n}\n\n// APIVersions gets the API versions out of an HTTP response using the provided\n// version header as the key for the HTTP header.\nfunc APIVersions(resp *http.Response, versionHeader string) []APIVersion {\n\tversions := []APIVersion{}\n\tif versionHeader != \"\" {\n\t\tfor _, supportedVersions := range resp.Header[http.CanonicalHeaderKey(versionHeader)] {\n\t\t\tfor _, version := range strings.Fields(supportedVersions) {\n\t\t\t\tversions = append(versions, ParseAPIVersion(version))\n\t\t\t}\n\t\t}\n\t}\n\treturn versions\n}\n\n// ParseAPIVersion parses an API version string into an APIVersion\n// Format (Expected, not enforced):\n// API version string = <API type> '/' <API version>\n// API type = [a-z][a-z0-9]*\n// API version = [0-9]+(\\.[0-9]+)?\n// TODO(dmcgowan): Enforce format, add error condition, remove unknown type\nfunc ParseAPIVersion(versionStr string) APIVersion {\n\tidx := strings.IndexRune(versionStr, '/')\n\tif idx == -1 {\n\t\treturn APIVersion{\n\t\t\tType:    \"unknown\",\n\t\t\tVersion: versionStr,\n\t\t}\n\t}\n\treturn APIVersion{\n\t\tType:    strings.ToLower(versionStr[:idx]),\n\t\tVersion: versionStr[idx+1:],\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/auth/authchallenge.go",
    "content": "package auth\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n)\n\n// Challenge carries information from a WWW-Authenticate response header.\n// See RFC 2617.\ntype Challenge struct {\n\t// Scheme is the auth-scheme according to RFC 2617\n\tScheme string\n\n\t// Parameters are the auth-params according to RFC 2617\n\tParameters map[string]string\n}\n\n// ChallengeManager manages the challenges for endpoints.\n// The challenges are pulled out of HTTP responses. Only\n// responses which expect challenges should be added to\n// the manager, since a non-unauthorized request will be\n// viewed as not requiring challenges.\ntype ChallengeManager interface {\n\t// GetChallenges returns the challenges for the given\n\t// endpoint URL.\n\tGetChallenges(endpoint url.URL) ([]Challenge, error)\n\n\t// AddResponse adds the response to the challenge\n\t// manager. The challenges will be parsed out of\n\t// the WWW-Authenicate headers and added to the\n\t// URL which was produced the response. If the\n\t// response was authorized, any challenges for the\n\t// endpoint will be cleared.\n\tAddResponse(resp *http.Response) error\n}\n\n// NewSimpleChallengeManager returns an instance of\n// ChallengeManger which only maps endpoints to challenges\n// based on the responses which have been added the\n// manager. The simple manager will make no attempt to\n// perform requests on the endpoints or cache the responses\n// to a backend.\nfunc NewSimpleChallengeManager() ChallengeManager {\n\treturn simpleChallengeManager{}\n}\n\ntype simpleChallengeManager map[string][]Challenge\n\nfunc (m simpleChallengeManager) GetChallenges(endpoint url.URL) ([]Challenge, error) {\n\tendpoint.Host = strings.ToLower(endpoint.Host)\n\n\tchallenges := m[endpoint.String()]\n\treturn challenges, nil\n}\n\nfunc (m simpleChallengeManager) AddResponse(resp *http.Response) error {\n\tchallenges := ResponseChallenges(resp)\n\tif resp.Request == nil {\n\t\treturn fmt.Errorf(\"missing request reference\")\n\t}\n\turlCopy := url.URL{\n\t\tPath:   resp.Request.URL.Path,\n\t\tHost:   strings.ToLower(resp.Request.URL.Host),\n\t\tScheme: resp.Request.URL.Scheme,\n\t}\n\tm[urlCopy.String()] = challenges\n\treturn nil\n}\n\n// Octet types from RFC 2616.\ntype octetType byte\n\nvar octetTypes [256]octetType\n\nconst (\n\tisToken octetType = 1 << iota\n\tisSpace\n)\n\nfunc init() {\n\t// OCTET      = <any 8-bit sequence of data>\n\t// CHAR       = <any US-ASCII character (octets 0 - 127)>\n\t// CTL        = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n\t// CR         = <US-ASCII CR, carriage return (13)>\n\t// LF         = <US-ASCII LF, linefeed (10)>\n\t// SP         = <US-ASCII SP, space (32)>\n\t// HT         = <US-ASCII HT, horizontal-tab (9)>\n\t// <\">        = <US-ASCII double-quote mark (34)>\n\t// CRLF       = CR LF\n\t// LWS        = [CRLF] 1*( SP | HT )\n\t// TEXT       = <any OCTET except CTLs, but including LWS>\n\t// separators = \"(\" | \")\" | \"<\" | \">\" | \"@\" | \",\" | \";\" | \":\" | \"\\\" | <\">\n\t//              | \"/\" | \"[\" | \"]\" | \"?\" | \"=\" | \"{\" | \"}\" | SP | HT\n\t// token      = 1*<any CHAR except CTLs or separators>\n\t// qdtext     = <any TEXT except <\">>\n\n\tfor c := 0; c < 256; c++ {\n\t\tvar t octetType\n\t\tisCtl := c <= 31 || c == 127\n\t\tisChar := 0 <= c && c <= 127\n\t\tisSeparator := strings.IndexRune(\" \\t\\\"(),/:;<=>?@[]\\\\{}\", rune(c)) >= 0\n\t\tif strings.IndexRune(\" \\t\\r\\n\", rune(c)) >= 0 {\n\t\t\tt |= isSpace\n\t\t}\n\t\tif isChar && !isCtl && !isSeparator {\n\t\t\tt |= isToken\n\t\t}\n\t\toctetTypes[c] = t\n\t}\n}\n\n// ResponseChallenges returns a list of authorization challenges\n// for the given http Response. Challenges are only checked if\n// the response status code was a 401.\nfunc ResponseChallenges(resp *http.Response) []Challenge {\n\tif resp.StatusCode == http.StatusUnauthorized {\n\t\t// Parse the WWW-Authenticate Header and store the challenges\n\t\t// on this endpoint object.\n\t\treturn parseAuthHeader(resp.Header)\n\t}\n\n\treturn nil\n}\n\nfunc parseAuthHeader(header http.Header) []Challenge {\n\tchallenges := []Challenge{}\n\tfor _, h := range header[http.CanonicalHeaderKey(\"WWW-Authenticate\")] {\n\t\tv, p := parseValueAndParams(h)\n\t\tif v != \"\" {\n\t\t\tchallenges = append(challenges, Challenge{Scheme: v, Parameters: p})\n\t\t}\n\t}\n\treturn challenges\n}\n\nfunc parseValueAndParams(header string) (value string, params map[string]string) {\n\tparams = make(map[string]string)\n\tvalue, s := expectToken(header)\n\tif value == \"\" {\n\t\treturn\n\t}\n\tvalue = strings.ToLower(value)\n\ts = \",\" + skipSpace(s)\n\tfor strings.HasPrefix(s, \",\") {\n\t\tvar pkey string\n\t\tpkey, s = expectToken(skipSpace(s[1:]))\n\t\tif pkey == \"\" {\n\t\t\treturn\n\t\t}\n\t\tif !strings.HasPrefix(s, \"=\") {\n\t\t\treturn\n\t\t}\n\t\tvar pvalue string\n\t\tpvalue, s = expectTokenOrQuoted(s[1:])\n\t\tif pvalue == \"\" {\n\t\t\treturn\n\t\t}\n\t\tpkey = strings.ToLower(pkey)\n\t\tparams[pkey] = pvalue\n\t\ts = skipSpace(s)\n\t}\n\treturn\n}\n\nfunc skipSpace(s string) (rest string) {\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif octetTypes[s[i]]&isSpace == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn s[i:]\n}\n\nfunc expectToken(s string) (token, rest string) {\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif octetTypes[s[i]]&isToken == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn s[:i], s[i:]\n}\n\nfunc expectTokenOrQuoted(s string) (value string, rest string) {\n\tif !strings.HasPrefix(s, \"\\\"\") {\n\t\treturn expectToken(s)\n\t}\n\ts = s[1:]\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"':\n\t\t\treturn s[:i], s[i+1:]\n\t\tcase '\\\\':\n\t\t\tp := make([]byte, len(s)-1)\n\t\t\tj := copy(p, s[:i])\n\t\t\tescape := true\n\t\t\tfor i = i + 1; i < len(s); i++ {\n\t\t\t\tb := s[i]\n\t\t\t\tswitch {\n\t\t\t\tcase escape:\n\t\t\t\t\tescape = false\n\t\t\t\t\tp[j] = b\n\t\t\t\t\tj++\n\t\t\t\tcase b == '\\\\':\n\t\t\t\t\tescape = true\n\t\t\t\tcase b == '\"':\n\t\t\t\t\treturn string(p[:j]), s[i+1:]\n\t\t\t\tdefault:\n\t\t\t\t\tp[j] = b\n\t\t\t\t\tj++\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\", \"\"\n\t\t}\n\t}\n\treturn \"\", \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/auth/session.go",
    "content": "package auth\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/registry/client\"\n\t\"github.com/docker/distribution/registry/client/transport\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// ErrNoBasicAuthCredentials is returned if a request can't be authorized with\n\t// basic auth due to lack of credentials.\n\tErrNoBasicAuthCredentials = errors.New(\"no basic auth credentials\")\n\n\t// ErrNoToken is returned if a request is successful but the body does not\n\t// contain an authorization token.\n\tErrNoToken = errors.New(\"authorization server did not include a token in the response\")\n)\n\nconst defaultClientID = \"registry-client\"\n\n// AuthenticationHandler is an interface for authorizing a request from\n// params from a \"WWW-Authenicate\" header for a single scheme.\ntype AuthenticationHandler interface {\n\t// Scheme returns the scheme as expected from the \"WWW-Authenicate\" header.\n\tScheme() string\n\n\t// AuthorizeRequest adds the authorization header to a request (if needed)\n\t// using the parameters from \"WWW-Authenticate\" method. The parameters\n\t// values depend on the scheme.\n\tAuthorizeRequest(req *http.Request, params map[string]string) error\n}\n\n// CredentialStore is an interface for getting credentials for\n// a given URL\ntype CredentialStore interface {\n\t// Basic returns basic auth for the given URL\n\tBasic(*url.URL) (string, string)\n\n\t// RefreshToken returns a refresh token for the\n\t// given URL and service\n\tRefreshToken(*url.URL, string) string\n\n\t// SetRefreshToken sets the refresh token if none\n\t// is provided for the given url and service\n\tSetRefreshToken(realm *url.URL, service, token string)\n}\n\n// NewAuthorizer creates an authorizer which can handle multiple authentication\n// schemes. The handlers are tried in order, the higher priority authentication\n// methods should be first. The challengeMap holds a list of challenges for\n// a given root API endpoint (for example \"https://registry-1.docker.io/v2/\").\nfunc NewAuthorizer(manager ChallengeManager, handlers ...AuthenticationHandler) transport.RequestModifier {\n\treturn &endpointAuthorizer{\n\t\tchallenges: manager,\n\t\thandlers:   handlers,\n\t}\n}\n\ntype endpointAuthorizer struct {\n\tchallenges ChallengeManager\n\thandlers   []AuthenticationHandler\n\ttransport  http.RoundTripper\n}\n\nfunc (ea *endpointAuthorizer) ModifyRequest(req *http.Request) error {\n\tv2Root := strings.Index(req.URL.Path, \"/v2/\")\n\tif v2Root == -1 {\n\t\treturn nil\n\t}\n\n\tping := url.URL{\n\t\tHost:   req.URL.Host,\n\t\tScheme: req.URL.Scheme,\n\t\tPath:   req.URL.Path[:v2Root+4],\n\t}\n\n\tchallenges, err := ea.challenges.GetChallenges(ping)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(challenges) > 0 {\n\t\tfor _, handler := range ea.handlers {\n\t\t\tfor _, challenge := range challenges {\n\t\t\t\tif challenge.Scheme != handler.Scheme() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif err := handler.AuthorizeRequest(req, challenge.Parameters); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// This is the minimum duration a token can last (in seconds).\n// A token must not live less than 60 seconds because older versions\n// of the Docker client didn't read their expiration from the token\n// response and assumed 60 seconds.  So to remain compatible with\n// those implementations, a token must live at least this long.\nconst minimumTokenLifetimeSeconds = 60\n\n// Private interface for time used by this package to enable tests to provide their own implementation.\ntype clock interface {\n\tNow() time.Time\n}\n\ntype tokenHandler struct {\n\theader    http.Header\n\tcreds     CredentialStore\n\ttransport http.RoundTripper\n\tclock     clock\n\n\tofflineAccess bool\n\tforceOAuth    bool\n\tclientID      string\n\tscopes        []Scope\n\n\ttokenLock       sync.Mutex\n\ttokenCache      string\n\ttokenExpiration time.Time\n}\n\n// Scope is a type which is serializable to a string\n// using the allow scope grammar.\ntype Scope interface {\n\tString() string\n}\n\n// RepositoryScope represents a token scope for access\n// to a repository.\ntype RepositoryScope struct {\n\tRepository string\n\tActions    []string\n}\n\n// String returns the string representation of the repository\n// using the scope grammar\nfunc (rs RepositoryScope) String() string {\n\treturn fmt.Sprintf(\"repository:%s:%s\", rs.Repository, strings.Join(rs.Actions, \",\"))\n}\n\n// TokenHandlerOptions is used to configure a new token handler\ntype TokenHandlerOptions struct {\n\tTransport   http.RoundTripper\n\tCredentials CredentialStore\n\n\tOfflineAccess bool\n\tForceOAuth    bool\n\tClientID      string\n\tScopes        []Scope\n}\n\n// An implementation of clock for providing real time data.\ntype realClock struct{}\n\n// Now implements clock\nfunc (realClock) Now() time.Time { return time.Now() }\n\n// NewTokenHandler creates a new AuthenicationHandler which supports\n// fetching tokens from a remote token server.\nfunc NewTokenHandler(transport http.RoundTripper, creds CredentialStore, scope string, actions ...string) AuthenticationHandler {\n\t// Create options...\n\treturn NewTokenHandlerWithOptions(TokenHandlerOptions{\n\t\tTransport:   transport,\n\t\tCredentials: creds,\n\t\tScopes: []Scope{\n\t\t\tRepositoryScope{\n\t\t\t\tRepository: scope,\n\t\t\t\tActions:    actions,\n\t\t\t},\n\t\t},\n\t})\n}\n\n// NewTokenHandlerWithOptions creates a new token handler using the provided\n// options structure.\nfunc NewTokenHandlerWithOptions(options TokenHandlerOptions) AuthenticationHandler {\n\thandler := &tokenHandler{\n\t\ttransport:     options.Transport,\n\t\tcreds:         options.Credentials,\n\t\tofflineAccess: options.OfflineAccess,\n\t\tforceOAuth:    options.ForceOAuth,\n\t\tclientID:      options.ClientID,\n\t\tscopes:        options.Scopes,\n\t\tclock:         realClock{},\n\t}\n\n\treturn handler\n}\n\nfunc (th *tokenHandler) client() *http.Client {\n\treturn &http.Client{\n\t\tTransport: th.transport,\n\t\tTimeout:   15 * time.Second,\n\t}\n}\n\nfunc (th *tokenHandler) Scheme() string {\n\treturn \"bearer\"\n}\n\nfunc (th *tokenHandler) AuthorizeRequest(req *http.Request, params map[string]string) error {\n\tvar additionalScopes []string\n\tif fromParam := req.URL.Query().Get(\"from\"); fromParam != \"\" {\n\t\tadditionalScopes = append(additionalScopes, RepositoryScope{\n\t\t\tRepository: fromParam,\n\t\t\tActions:    []string{\"pull\"},\n\t\t}.String())\n\t}\n\n\ttoken, err := th.getToken(params, additionalScopes...)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treq.Header.Set(\"Authorization\", fmt.Sprintf(\"Bearer %s\", token))\n\n\treturn nil\n}\n\nfunc (th *tokenHandler) getToken(params map[string]string, additionalScopes ...string) (string, error) {\n\tth.tokenLock.Lock()\n\tdefer th.tokenLock.Unlock()\n\tscopes := make([]string, 0, len(th.scopes)+len(additionalScopes))\n\tfor _, scope := range th.scopes {\n\t\tscopes = append(scopes, scope.String())\n\t}\n\tvar addedScopes bool\n\tfor _, scope := range additionalScopes {\n\t\tscopes = append(scopes, scope)\n\t\taddedScopes = true\n\t}\n\n\tnow := th.clock.Now()\n\tif now.After(th.tokenExpiration) || addedScopes {\n\t\ttoken, expiration, err := th.fetchToken(params, scopes)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// do not update cache for added scope tokens\n\t\tif !addedScopes {\n\t\t\tth.tokenCache = token\n\t\t\tth.tokenExpiration = expiration\n\t\t}\n\n\t\treturn token, nil\n\t}\n\n\treturn th.tokenCache, nil\n}\n\ntype postTokenResponse struct {\n\tAccessToken  string    `json:\"access_token\"`\n\tRefreshToken string    `json:\"refresh_token\"`\n\tExpiresIn    int       `json:\"expires_in\"`\n\tIssuedAt     time.Time `json:\"issued_at\"`\n\tScope        string    `json:\"scope\"`\n}\n\nfunc (th *tokenHandler) fetchTokenWithOAuth(realm *url.URL, refreshToken, service string, scopes []string) (token string, expiration time.Time, err error) {\n\tform := url.Values{}\n\tform.Set(\"scope\", strings.Join(scopes, \" \"))\n\tform.Set(\"service\", service)\n\n\tclientID := th.clientID\n\tif clientID == \"\" {\n\t\t// Use default client, this is a required field\n\t\tclientID = defaultClientID\n\t}\n\tform.Set(\"client_id\", clientID)\n\n\tif refreshToken != \"\" {\n\t\tform.Set(\"grant_type\", \"refresh_token\")\n\t\tform.Set(\"refresh_token\", refreshToken)\n\t} else if th.creds != nil {\n\t\tform.Set(\"grant_type\", \"password\")\n\t\tusername, password := th.creds.Basic(realm)\n\t\tform.Set(\"username\", username)\n\t\tform.Set(\"password\", password)\n\n\t\t// attempt to get a refresh token\n\t\tform.Set(\"access_type\", \"offline\")\n\t} else {\n\t\t// refuse to do oauth without a grant type\n\t\treturn \"\", time.Time{}, fmt.Errorf(\"no supported grant type\")\n\t}\n\n\tresp, err := th.client().PostForm(realm.String(), form)\n\tif err != nil {\n\t\treturn \"\", time.Time{}, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif !client.SuccessStatus(resp.StatusCode) {\n\t\terr := client.HandleErrorResponse(resp)\n\t\treturn \"\", time.Time{}, err\n\t}\n\n\tdecoder := json.NewDecoder(resp.Body)\n\n\tvar tr postTokenResponse\n\tif err = decoder.Decode(&tr); err != nil {\n\t\treturn \"\", time.Time{}, fmt.Errorf(\"unable to decode token response: %s\", err)\n\t}\n\n\tif tr.RefreshToken != \"\" && tr.RefreshToken != refreshToken {\n\t\tth.creds.SetRefreshToken(realm, service, tr.RefreshToken)\n\t}\n\n\tif tr.ExpiresIn < minimumTokenLifetimeSeconds {\n\t\t// The default/minimum lifetime.\n\t\ttr.ExpiresIn = minimumTokenLifetimeSeconds\n\t\tlogrus.Debugf(\"Increasing token expiration to: %d seconds\", tr.ExpiresIn)\n\t}\n\n\tif tr.IssuedAt.IsZero() {\n\t\t// issued_at is optional in the token response.\n\t\ttr.IssuedAt = th.clock.Now().UTC()\n\t}\n\n\treturn tr.AccessToken, tr.IssuedAt.Add(time.Duration(tr.ExpiresIn) * time.Second), nil\n}\n\ntype getTokenResponse struct {\n\tToken        string    `json:\"token\"`\n\tAccessToken  string    `json:\"access_token\"`\n\tExpiresIn    int       `json:\"expires_in\"`\n\tIssuedAt     time.Time `json:\"issued_at\"`\n\tRefreshToken string    `json:\"refresh_token\"`\n}\n\nfunc (th *tokenHandler) fetchTokenWithBasicAuth(realm *url.URL, service string, scopes []string) (token string, expiration time.Time, err error) {\n\n\treq, err := http.NewRequest(\"GET\", realm.String(), nil)\n\tif err != nil {\n\t\treturn \"\", time.Time{}, err\n\t}\n\n\treqParams := req.URL.Query()\n\n\tif service != \"\" {\n\t\treqParams.Add(\"service\", service)\n\t}\n\n\tfor _, scope := range scopes {\n\t\treqParams.Add(\"scope\", scope)\n\t}\n\n\tif th.offlineAccess {\n\t\treqParams.Add(\"offline_token\", \"true\")\n\t\tclientID := th.clientID\n\t\tif clientID == \"\" {\n\t\t\tclientID = defaultClientID\n\t\t}\n\t\treqParams.Add(\"client_id\", clientID)\n\t}\n\n\tif th.creds != nil {\n\t\tusername, password := th.creds.Basic(realm)\n\t\tif username != \"\" && password != \"\" {\n\t\t\treqParams.Add(\"account\", username)\n\t\t\treq.SetBasicAuth(username, password)\n\t\t}\n\t}\n\n\treq.URL.RawQuery = reqParams.Encode()\n\n\tresp, err := th.client().Do(req)\n\tif err != nil {\n\t\treturn \"\", time.Time{}, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif !client.SuccessStatus(resp.StatusCode) {\n\t\terr := client.HandleErrorResponse(resp)\n\t\treturn \"\", time.Time{}, err\n\t}\n\n\tdecoder := json.NewDecoder(resp.Body)\n\n\tvar tr getTokenResponse\n\tif err = decoder.Decode(&tr); err != nil {\n\t\treturn \"\", time.Time{}, fmt.Errorf(\"unable to decode token response: %s\", err)\n\t}\n\n\tif tr.RefreshToken != \"\" && th.creds != nil {\n\t\tth.creds.SetRefreshToken(realm, service, tr.RefreshToken)\n\t}\n\n\t// `access_token` is equivalent to `token` and if both are specified\n\t// the choice is undefined.  Canonicalize `access_token` by sticking\n\t// things in `token`.\n\tif tr.AccessToken != \"\" {\n\t\ttr.Token = tr.AccessToken\n\t}\n\n\tif tr.Token == \"\" {\n\t\treturn \"\", time.Time{}, ErrNoToken\n\t}\n\n\tif tr.ExpiresIn < minimumTokenLifetimeSeconds {\n\t\t// The default/minimum lifetime.\n\t\ttr.ExpiresIn = minimumTokenLifetimeSeconds\n\t\tlogrus.Debugf(\"Increasing token expiration to: %d seconds\", tr.ExpiresIn)\n\t}\n\n\tif tr.IssuedAt.IsZero() {\n\t\t// issued_at is optional in the token response.\n\t\ttr.IssuedAt = th.clock.Now().UTC()\n\t}\n\n\treturn tr.Token, tr.IssuedAt.Add(time.Duration(tr.ExpiresIn) * time.Second), nil\n}\n\nfunc (th *tokenHandler) fetchToken(params map[string]string, scopes []string) (token string, expiration time.Time, err error) {\n\trealm, ok := params[\"realm\"]\n\tif !ok {\n\t\treturn \"\", time.Time{}, errors.New(\"no realm specified for token auth challenge\")\n\t}\n\n\t// TODO(dmcgowan): Handle empty scheme and relative realm\n\trealmURL, err := url.Parse(realm)\n\tif err != nil {\n\t\treturn \"\", time.Time{}, fmt.Errorf(\"invalid token auth challenge realm: %s\", err)\n\t}\n\n\tservice := params[\"service\"]\n\n\tvar refreshToken string\n\n\tif th.creds != nil {\n\t\trefreshToken = th.creds.RefreshToken(realmURL, service)\n\t}\n\n\tif refreshToken != \"\" || th.forceOAuth {\n\t\treturn th.fetchTokenWithOAuth(realmURL, refreshToken, service, scopes)\n\t}\n\n\treturn th.fetchTokenWithBasicAuth(realmURL, service, scopes)\n}\n\ntype basicHandler struct {\n\tcreds CredentialStore\n}\n\n// NewBasicHandler creaters a new authentiation handler which adds\n// basic authentication credentials to a request.\nfunc NewBasicHandler(creds CredentialStore) AuthenticationHandler {\n\treturn &basicHandler{\n\t\tcreds: creds,\n\t}\n}\n\nfunc (*basicHandler) Scheme() string {\n\treturn \"basic\"\n}\n\nfunc (bh *basicHandler) AuthorizeRequest(req *http.Request, params map[string]string) error {\n\tif bh.creds != nil {\n\t\tusername, password := bh.creds.Basic(req.URL)\n\t\tif username != \"\" && password != \"\" {\n\t\t\treq.SetBasicAuth(username, password)\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn ErrNoBasicAuthCredentials\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/blob_writer.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/docker/distribution\"\n\t\"github.com/docker/distribution/context\"\n)\n\ntype httpBlobUpload struct {\n\tstatter distribution.BlobStatter\n\tclient  *http.Client\n\n\tuuid      string\n\tstartedAt time.Time\n\n\tlocation string // always the last value of the location header.\n\toffset   int64\n\tclosed   bool\n}\n\nfunc (hbu *httpBlobUpload) Reader() (io.ReadCloser, error) {\n\tpanic(\"Not implemented\")\n}\n\nfunc (hbu *httpBlobUpload) handleErrorResponse(resp *http.Response) error {\n\tif resp.StatusCode == http.StatusNotFound {\n\t\treturn distribution.ErrBlobUploadUnknown\n\t}\n\treturn HandleErrorResponse(resp)\n}\n\nfunc (hbu *httpBlobUpload) ReadFrom(r io.Reader) (n int64, err error) {\n\treq, err := http.NewRequest(\"PATCH\", hbu.location, ioutil.NopCloser(r))\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer req.Body.Close()\n\n\tresp, err := hbu.client.Do(req)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif !SuccessStatus(resp.StatusCode) {\n\t\treturn 0, hbu.handleErrorResponse(resp)\n\t}\n\n\thbu.uuid = resp.Header.Get(\"Docker-Upload-UUID\")\n\thbu.location, err = sanitizeLocation(resp.Header.Get(\"Location\"), hbu.location)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\trng := resp.Header.Get(\"Range\")\n\tvar start, end int64\n\tif n, err := fmt.Sscanf(rng, \"%d-%d\", &start, &end); err != nil {\n\t\treturn 0, err\n\t} else if n != 2 || end < start {\n\t\treturn 0, fmt.Errorf(\"bad range format: %s\", rng)\n\t}\n\n\treturn (end - start + 1), nil\n\n}\n\nfunc (hbu *httpBlobUpload) Write(p []byte) (n int, err error) {\n\treq, err := http.NewRequest(\"PATCH\", hbu.location, bytes.NewReader(p))\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treq.Header.Set(\"Content-Range\", fmt.Sprintf(\"%d-%d\", hbu.offset, hbu.offset+int64(len(p)-1)))\n\treq.Header.Set(\"Content-Length\", fmt.Sprintf(\"%d\", len(p)))\n\treq.Header.Set(\"Content-Type\", \"application/octet-stream\")\n\n\tresp, err := hbu.client.Do(req)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif !SuccessStatus(resp.StatusCode) {\n\t\treturn 0, hbu.handleErrorResponse(resp)\n\t}\n\n\thbu.uuid = resp.Header.Get(\"Docker-Upload-UUID\")\n\thbu.location, err = sanitizeLocation(resp.Header.Get(\"Location\"), hbu.location)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\trng := resp.Header.Get(\"Range\")\n\tvar start, end int\n\tif n, err := fmt.Sscanf(rng, \"%d-%d\", &start, &end); err != nil {\n\t\treturn 0, err\n\t} else if n != 2 || end < start {\n\t\treturn 0, fmt.Errorf(\"bad range format: %s\", rng)\n\t}\n\n\treturn (end - start + 1), nil\n\n}\n\nfunc (hbu *httpBlobUpload) Size() int64 {\n\treturn hbu.offset\n}\n\nfunc (hbu *httpBlobUpload) ID() string {\n\treturn hbu.uuid\n}\n\nfunc (hbu *httpBlobUpload) StartedAt() time.Time {\n\treturn hbu.startedAt\n}\n\nfunc (hbu *httpBlobUpload) Commit(ctx context.Context, desc distribution.Descriptor) (distribution.Descriptor, error) {\n\t// TODO(dmcgowan): Check if already finished, if so just fetch\n\treq, err := http.NewRequest(\"PUT\", hbu.location, nil)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\n\tvalues := req.URL.Query()\n\tvalues.Set(\"digest\", desc.Digest.String())\n\treq.URL.RawQuery = values.Encode()\n\n\tresp, err := hbu.client.Do(req)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif !SuccessStatus(resp.StatusCode) {\n\t\treturn distribution.Descriptor{}, hbu.handleErrorResponse(resp)\n\t}\n\n\treturn hbu.statter.Stat(ctx, desc.Digest)\n}\n\nfunc (hbu *httpBlobUpload) Cancel(ctx context.Context) error {\n\treq, err := http.NewRequest(\"DELETE\", hbu.location, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tresp, err := hbu.client.Do(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\tif resp.StatusCode == http.StatusNotFound || SuccessStatus(resp.StatusCode) {\n\t\treturn nil\n\t}\n\treturn hbu.handleErrorResponse(resp)\n}\n\nfunc (hbu *httpBlobUpload) Close() error {\n\thbu.closed = true\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/errors.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\n\t\"github.com/docker/distribution/registry/api/errcode\"\n)\n\n// ErrNoErrorsInBody is returned when a HTTP response body parses to an empty\n// errcode.Errors slice.\nvar ErrNoErrorsInBody = errors.New(\"no error details found in HTTP response body\")\n\n// UnexpectedHTTPStatusError is returned when an unexpected HTTP status is\n// returned when making a registry api call.\ntype UnexpectedHTTPStatusError struct {\n\tStatus string\n}\n\nfunc (e *UnexpectedHTTPStatusError) Error() string {\n\treturn fmt.Sprintf(\"received unexpected HTTP status: %s\", e.Status)\n}\n\n// UnexpectedHTTPResponseError is returned when an expected HTTP status code\n// is returned, but the content was unexpected and failed to be parsed.\ntype UnexpectedHTTPResponseError struct {\n\tParseErr   error\n\tStatusCode int\n\tResponse   []byte\n}\n\nfunc (e *UnexpectedHTTPResponseError) Error() string {\n\treturn fmt.Sprintf(\"error parsing HTTP %d response body: %s: %q\", e.StatusCode, e.ParseErr.Error(), string(e.Response))\n}\n\nfunc parseHTTPErrorResponse(statusCode int, r io.Reader) error {\n\tvar errors errcode.Errors\n\tbody, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// For backward compatibility, handle irregularly formatted\n\t// messages that contain a \"details\" field.\n\tvar detailsErr struct {\n\t\tDetails string `json:\"details\"`\n\t}\n\terr = json.Unmarshal(body, &detailsErr)\n\tif err == nil && detailsErr.Details != \"\" {\n\t\tif statusCode == http.StatusUnauthorized {\n\t\t\treturn errcode.ErrorCodeUnauthorized.WithMessage(detailsErr.Details)\n\t\t}\n\t\treturn errcode.ErrorCodeUnknown.WithMessage(detailsErr.Details)\n\t}\n\n\tif err := json.Unmarshal(body, &errors); err != nil {\n\t\treturn &UnexpectedHTTPResponseError{\n\t\t\tParseErr:   err,\n\t\t\tStatusCode: statusCode,\n\t\t\tResponse:   body,\n\t\t}\n\t}\n\n\tif len(errors) == 0 {\n\t\t// If there was no error specified in the body, return\n\t\t// UnexpectedHTTPResponseError.\n\t\treturn &UnexpectedHTTPResponseError{\n\t\t\tParseErr:   ErrNoErrorsInBody,\n\t\t\tStatusCode: statusCode,\n\t\t\tResponse:   body,\n\t\t}\n\t}\n\n\treturn errors\n}\n\n// HandleErrorResponse returns error parsed from HTTP response for an\n// unsuccessful HTTP response code (in the range 400 - 499 inclusive). An\n// UnexpectedHTTPStatusError returned for response code outside of expected\n// range.\nfunc HandleErrorResponse(resp *http.Response) error {\n\tif resp.StatusCode == 401 {\n\t\terr := parseHTTPErrorResponse(resp.StatusCode, resp.Body)\n\t\tif uErr, ok := err.(*UnexpectedHTTPResponseError); ok {\n\t\t\treturn errcode.ErrorCodeUnauthorized.WithDetail(uErr.Response)\n\t\t}\n\t\treturn err\n\t}\n\tif resp.StatusCode >= 400 && resp.StatusCode < 500 {\n\t\treturn parseHTTPErrorResponse(resp.StatusCode, resp.Body)\n\t}\n\treturn &UnexpectedHTTPStatusError{Status: resp.Status}\n}\n\n// SuccessStatus returns true if the argument is a successful HTTP response\n// code (in the range 200 - 399 inclusive).\nfunc SuccessStatus(status int) bool {\n\treturn status >= 200 && status <= 399\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/repository.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/docker/distribution\"\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/distribution/reference\"\n\t\"github.com/docker/distribution/registry/api/v2\"\n\t\"github.com/docker/distribution/registry/client/transport\"\n\t\"github.com/docker/distribution/registry/storage/cache\"\n\t\"github.com/docker/distribution/registry/storage/cache/memory\"\n)\n\n// Registry provides an interface for calling Repositories, which returns a catalog of repositories.\ntype Registry interface {\n\tRepositories(ctx context.Context, repos []string, last string) (n int, err error)\n}\n\n// checkHTTPRedirect is a callback that can manipulate redirected HTTP\n// requests. It is used to preserve Accept and Range headers.\nfunc checkHTTPRedirect(req *http.Request, via []*http.Request) error {\n\tif len(via) >= 10 {\n\t\treturn errors.New(\"stopped after 10 redirects\")\n\t}\n\n\tif len(via) > 0 {\n\t\tfor headerName, headerVals := range via[0].Header {\n\t\t\tif headerName != \"Accept\" && headerName != \"Range\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, val := range headerVals {\n\t\t\t\t// Don't add to redirected request if redirected\n\t\t\t\t// request already has a header with the same\n\t\t\t\t// name and value.\n\t\t\t\thasValue := false\n\t\t\t\tfor _, existingVal := range req.Header[headerName] {\n\t\t\t\t\tif existingVal == val {\n\t\t\t\t\t\thasValue = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !hasValue {\n\t\t\t\t\treq.Header.Add(headerName, val)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// NewRegistry creates a registry namespace which can be used to get a listing of repositories\nfunc NewRegistry(ctx context.Context, baseURL string, transport http.RoundTripper) (Registry, error) {\n\tub, err := v2.NewURLBuilderFromString(baseURL, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tclient := &http.Client{\n\t\tTransport:     transport,\n\t\tTimeout:       1 * time.Minute,\n\t\tCheckRedirect: checkHTTPRedirect,\n\t}\n\n\treturn &registry{\n\t\tclient:  client,\n\t\tub:      ub,\n\t\tcontext: ctx,\n\t}, nil\n}\n\ntype registry struct {\n\tclient  *http.Client\n\tub      *v2.URLBuilder\n\tcontext context.Context\n}\n\n// Repositories returns a lexigraphically sorted catalog given a base URL.  The 'entries' slice will be filled up to the size\n// of the slice, starting at the value provided in 'last'.  The number of entries will be returned along with io.EOF if there\n// are no more entries\nfunc (r *registry) Repositories(ctx context.Context, entries []string, last string) (int, error) {\n\tvar numFilled int\n\tvar returnErr error\n\n\tvalues := buildCatalogValues(len(entries), last)\n\tu, err := r.ub.BuildCatalogURL(values)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tresp, err := r.client.Get(u)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\tvar ctlg struct {\n\t\t\tRepositories []string `json:\"repositories\"`\n\t\t}\n\t\tdecoder := json.NewDecoder(resp.Body)\n\n\t\tif err := decoder.Decode(&ctlg); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tfor cnt := range ctlg.Repositories {\n\t\t\tentries[cnt] = ctlg.Repositories[cnt]\n\t\t}\n\t\tnumFilled = len(ctlg.Repositories)\n\n\t\tlink := resp.Header.Get(\"Link\")\n\t\tif link == \"\" {\n\t\t\treturnErr = io.EOF\n\t\t}\n\t} else {\n\t\treturn 0, HandleErrorResponse(resp)\n\t}\n\n\treturn numFilled, returnErr\n}\n\n// NewRepository creates a new Repository for the given repository name and base URL.\nfunc NewRepository(ctx context.Context, name reference.Named, baseURL string, transport http.RoundTripper) (distribution.Repository, error) {\n\tub, err := v2.NewURLBuilderFromString(baseURL, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tclient := &http.Client{\n\t\tTransport:     transport,\n\t\tCheckRedirect: checkHTTPRedirect,\n\t\t// TODO(dmcgowan): create cookie jar\n\t}\n\n\treturn &repository{\n\t\tclient:  client,\n\t\tub:      ub,\n\t\tname:    name,\n\t\tcontext: ctx,\n\t}, nil\n}\n\ntype repository struct {\n\tclient  *http.Client\n\tub      *v2.URLBuilder\n\tcontext context.Context\n\tname    reference.Named\n}\n\nfunc (r *repository) Named() reference.Named {\n\treturn r.name\n}\n\nfunc (r *repository) Blobs(ctx context.Context) distribution.BlobStore {\n\tstatter := &blobStatter{\n\t\tname:   r.name,\n\t\tub:     r.ub,\n\t\tclient: r.client,\n\t}\n\treturn &blobs{\n\t\tname:    r.name,\n\t\tub:      r.ub,\n\t\tclient:  r.client,\n\t\tstatter: cache.NewCachedBlobStatter(memory.NewInMemoryBlobDescriptorCacheProvider(), statter),\n\t}\n}\n\nfunc (r *repository) Manifests(ctx context.Context, options ...distribution.ManifestServiceOption) (distribution.ManifestService, error) {\n\t// todo(richardscothern): options should be sent over the wire\n\treturn &manifests{\n\t\tname:   r.name,\n\t\tub:     r.ub,\n\t\tclient: r.client,\n\t\tetags:  make(map[string]string),\n\t}, nil\n}\n\nfunc (r *repository) Tags(ctx context.Context) distribution.TagService {\n\treturn &tags{\n\t\tclient:  r.client,\n\t\tub:      r.ub,\n\t\tcontext: r.context,\n\t\tname:    r.Named(),\n\t}\n}\n\n// tags implements remote tagging operations.\ntype tags struct {\n\tclient  *http.Client\n\tub      *v2.URLBuilder\n\tcontext context.Context\n\tname    reference.Named\n}\n\n// All returns all tags\nfunc (t *tags) All(ctx context.Context) ([]string, error) {\n\tvar tags []string\n\n\tu, err := t.ub.BuildTagsURL(t.name)\n\tif err != nil {\n\t\treturn tags, err\n\t}\n\n\tresp, err := t.client.Get(u)\n\tif err != nil {\n\t\treturn tags, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\tb, err := ioutil.ReadAll(resp.Body)\n\t\tif err != nil {\n\t\t\treturn tags, err\n\t\t}\n\n\t\ttagsResponse := struct {\n\t\t\tTags []string `json:\"tags\"`\n\t\t}{}\n\t\tif err := json.Unmarshal(b, &tagsResponse); err != nil {\n\t\t\treturn tags, err\n\t\t}\n\t\ttags = tagsResponse.Tags\n\t\treturn tags, nil\n\t}\n\treturn tags, HandleErrorResponse(resp)\n}\n\nfunc descriptorFromResponse(response *http.Response) (distribution.Descriptor, error) {\n\tdesc := distribution.Descriptor{}\n\theaders := response.Header\n\n\tctHeader := headers.Get(\"Content-Type\")\n\tif ctHeader == \"\" {\n\t\treturn distribution.Descriptor{}, errors.New(\"missing or empty Content-Type header\")\n\t}\n\tdesc.MediaType = ctHeader\n\n\tdigestHeader := headers.Get(\"Docker-Content-Digest\")\n\tif digestHeader == \"\" {\n\t\tbytes, err := ioutil.ReadAll(response.Body)\n\t\tif err != nil {\n\t\t\treturn distribution.Descriptor{}, err\n\t\t}\n\t\t_, desc, err := distribution.UnmarshalManifest(ctHeader, bytes)\n\t\tif err != nil {\n\t\t\treturn distribution.Descriptor{}, err\n\t\t}\n\t\treturn desc, nil\n\t}\n\n\tdgst, err := digest.ParseDigest(digestHeader)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdesc.Digest = dgst\n\n\tlengthHeader := headers.Get(\"Content-Length\")\n\tif lengthHeader == \"\" {\n\t\treturn distribution.Descriptor{}, errors.New(\"missing or empty Content-Length header\")\n\t}\n\tlength, err := strconv.ParseInt(lengthHeader, 10, 64)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdesc.Size = length\n\n\treturn desc, nil\n\n}\n\n// Get issues a HEAD request for a Manifest against its named endpoint in order\n// to construct a descriptor for the tag.  If the registry doesn't support HEADing\n// a manifest, fallback to GET.\nfunc (t *tags) Get(ctx context.Context, tag string) (distribution.Descriptor, error) {\n\tref, err := reference.WithTag(t.name, tag)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tu, err := t.ub.BuildManifestURL(ref)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\n\treq, err := http.NewRequest(\"HEAD\", u, nil)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\n\tfor _, t := range distribution.ManifestMediaTypes() {\n\t\treq.Header.Add(\"Accept\", t)\n\t}\n\n\tvar attempts int\n\tresp, err := t.client.Do(req)\ncheck:\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdefer resp.Body.Close()\n\n\tswitch {\n\tcase resp.StatusCode >= 200 && resp.StatusCode < 400:\n\t\treturn descriptorFromResponse(resp)\n\tcase resp.StatusCode == http.StatusMethodNotAllowed:\n\t\treq, err = http.NewRequest(\"GET\", u, nil)\n\t\tif err != nil {\n\t\t\treturn distribution.Descriptor{}, err\n\t\t}\n\n\t\tfor _, t := range distribution.ManifestMediaTypes() {\n\t\t\treq.Header.Add(\"Accept\", t)\n\t\t}\n\n\t\tresp, err = t.client.Do(req)\n\t\tattempts++\n\t\tif attempts > 1 {\n\t\t\treturn distribution.Descriptor{}, err\n\t\t}\n\t\tgoto check\n\tdefault:\n\t\treturn distribution.Descriptor{}, HandleErrorResponse(resp)\n\t}\n}\n\nfunc (t *tags) Lookup(ctx context.Context, digest distribution.Descriptor) ([]string, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (t *tags) Tag(ctx context.Context, tag string, desc distribution.Descriptor) error {\n\tpanic(\"not implemented\")\n}\n\nfunc (t *tags) Untag(ctx context.Context, tag string) error {\n\tpanic(\"not implemented\")\n}\n\ntype manifests struct {\n\tname   reference.Named\n\tub     *v2.URLBuilder\n\tclient *http.Client\n\tetags  map[string]string\n}\n\nfunc (ms *manifests) Exists(ctx context.Context, dgst digest.Digest) (bool, error) {\n\tref, err := reference.WithDigest(ms.name, dgst)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tu, err := ms.ub.BuildManifestURL(ref)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tresp, err := ms.client.Head(u)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\treturn true, nil\n\t} else if resp.StatusCode == http.StatusNotFound {\n\t\treturn false, nil\n\t}\n\treturn false, HandleErrorResponse(resp)\n}\n\n// AddEtagToTag allows a client to supply an eTag to Get which will be\n// used for a conditional HTTP request.  If the eTag matches, a nil manifest\n// and ErrManifestNotModified error will be returned. etag is automatically\n// quoted when added to this map.\nfunc AddEtagToTag(tag, etag string) distribution.ManifestServiceOption {\n\treturn etagOption{tag, etag}\n}\n\ntype etagOption struct{ tag, etag string }\n\nfunc (o etagOption) Apply(ms distribution.ManifestService) error {\n\tif ms, ok := ms.(*manifests); ok {\n\t\tms.etags[o.tag] = fmt.Sprintf(`\"%s\"`, o.etag)\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"etag options is a client-only option\")\n}\n\nfunc (ms *manifests) Get(ctx context.Context, dgst digest.Digest, options ...distribution.ManifestServiceOption) (distribution.Manifest, error) {\n\tvar (\n\t\tdigestOrTag string\n\t\tref         reference.Named\n\t\terr         error\n\t)\n\n\tfor _, option := range options {\n\t\tif opt, ok := option.(distribution.WithTagOption); ok {\n\t\t\tdigestOrTag = opt.Tag\n\t\t\tref, err = reference.WithTag(ms.name, opt.Tag)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t} else {\n\t\t\terr := option.Apply(ms)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\tif digestOrTag == \"\" {\n\t\tdigestOrTag = dgst.String()\n\t\tref, err = reference.WithDigest(ms.name, dgst)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tu, err := ms.ub.BuildManifestURL(ref)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treq, err := http.NewRequest(\"GET\", u, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, t := range distribution.ManifestMediaTypes() {\n\t\treq.Header.Add(\"Accept\", t)\n\t}\n\n\tif _, ok := ms.etags[digestOrTag]; ok {\n\t\treq.Header.Set(\"If-None-Match\", ms.etags[digestOrTag])\n\t}\n\n\tresp, err := ms.client.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode == http.StatusNotModified {\n\t\treturn nil, distribution.ErrManifestNotModified\n\t} else if SuccessStatus(resp.StatusCode) {\n\t\tmt := resp.Header.Get(\"Content-Type\")\n\t\tbody, err := ioutil.ReadAll(resp.Body)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm, _, err := distribution.UnmarshalManifest(mt, body)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn m, nil\n\t}\n\treturn nil, HandleErrorResponse(resp)\n}\n\n// Put puts a manifest.  A tag can be specified using an options parameter which uses some shared state to hold the\n// tag name in order to build the correct upload URL.\nfunc (ms *manifests) Put(ctx context.Context, m distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) {\n\tref := ms.name\n\tvar tagged bool\n\n\tfor _, option := range options {\n\t\tif opt, ok := option.(distribution.WithTagOption); ok {\n\t\t\tvar err error\n\t\t\tref, err = reference.WithTag(ref, opt.Tag)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\ttagged = true\n\t\t} else {\n\t\t\terr := option.Apply(ms)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t}\n\tmediaType, p, err := m.Payload()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif !tagged {\n\t\t// generate a canonical digest and Put by digest\n\t\t_, d, err := distribution.UnmarshalManifest(mediaType, p)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tref, err = reference.WithDigest(ref, d.Digest)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\tmanifestURL, err := ms.ub.BuildManifestURL(ref)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tputRequest, err := http.NewRequest(\"PUT\", manifestURL, bytes.NewReader(p))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tputRequest.Header.Set(\"Content-Type\", mediaType)\n\n\tresp, err := ms.client.Do(putRequest)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\tdgstHeader := resp.Header.Get(\"Docker-Content-Digest\")\n\t\tdgst, err := digest.ParseDigest(dgstHeader)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\treturn dgst, nil\n\t}\n\n\treturn \"\", HandleErrorResponse(resp)\n}\n\nfunc (ms *manifests) Delete(ctx context.Context, dgst digest.Digest) error {\n\tref, err := reference.WithDigest(ms.name, dgst)\n\tif err != nil {\n\t\treturn err\n\t}\n\tu, err := ms.ub.BuildManifestURL(ref)\n\tif err != nil {\n\t\treturn err\n\t}\n\treq, err := http.NewRequest(\"DELETE\", u, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := ms.client.Do(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\treturn nil\n\t}\n\treturn HandleErrorResponse(resp)\n}\n\n// todo(richardscothern): Restore interface and implementation with merge of #1050\n/*func (ms *manifests) Enumerate(ctx context.Context, manifests []distribution.Manifest, last distribution.Manifest) (n int, err error) {\n\tpanic(\"not supported\")\n}*/\n\ntype blobs struct {\n\tname   reference.Named\n\tub     *v2.URLBuilder\n\tclient *http.Client\n\n\tstatter distribution.BlobDescriptorService\n\tdistribution.BlobDeleter\n}\n\nfunc sanitizeLocation(location, base string) (string, error) {\n\tbaseURL, err := url.Parse(base)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tlocationURL, err := url.Parse(location)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn baseURL.ResolveReference(locationURL).String(), nil\n}\n\nfunc (bs *blobs) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\treturn bs.statter.Stat(ctx, dgst)\n\n}\n\nfunc (bs *blobs) Get(ctx context.Context, dgst digest.Digest) ([]byte, error) {\n\treader, err := bs.Open(ctx, dgst)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer reader.Close()\n\n\treturn ioutil.ReadAll(reader)\n}\n\nfunc (bs *blobs) Open(ctx context.Context, dgst digest.Digest) (distribution.ReadSeekCloser, error) {\n\tref, err := reference.WithDigest(bs.name, dgst)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tblobURL, err := bs.ub.BuildBlobURL(ref)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn transport.NewHTTPReadSeeker(bs.client, blobURL,\n\t\tfunc(resp *http.Response) error {\n\t\t\tif resp.StatusCode == http.StatusNotFound {\n\t\t\t\treturn distribution.ErrBlobUnknown\n\t\t\t}\n\t\t\treturn HandleErrorResponse(resp)\n\t\t}), nil\n}\n\nfunc (bs *blobs) ServeBlob(ctx context.Context, w http.ResponseWriter, r *http.Request, dgst digest.Digest) error {\n\tpanic(\"not implemented\")\n}\n\nfunc (bs *blobs) Put(ctx context.Context, mediaType string, p []byte) (distribution.Descriptor, error) {\n\twriter, err := bs.Create(ctx)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdgstr := digest.Canonical.New()\n\tn, err := io.Copy(writer, io.TeeReader(bytes.NewReader(p), dgstr.Hash()))\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tif n < int64(len(p)) {\n\t\treturn distribution.Descriptor{}, fmt.Errorf(\"short copy: wrote %d of %d\", n, len(p))\n\t}\n\n\tdesc := distribution.Descriptor{\n\t\tMediaType: mediaType,\n\t\tSize:      int64(len(p)),\n\t\tDigest:    dgstr.Digest(),\n\t}\n\n\treturn writer.Commit(ctx, desc)\n}\n\n// createOptions is a collection of blob creation modifiers relevant to general\n// blob storage intended to be configured by the BlobCreateOption.Apply method.\ntype createOptions struct {\n\tMount struct {\n\t\tShouldMount bool\n\t\tFrom        reference.Canonical\n\t}\n}\n\ntype optionFunc func(interface{}) error\n\nfunc (f optionFunc) Apply(v interface{}) error {\n\treturn f(v)\n}\n\n// WithMountFrom returns a BlobCreateOption which designates that the blob should be\n// mounted from the given canonical reference.\nfunc WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption {\n\treturn optionFunc(func(v interface{}) error {\n\t\topts, ok := v.(*createOptions)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"unexpected options type: %T\", v)\n\t\t}\n\n\t\topts.Mount.ShouldMount = true\n\t\topts.Mount.From = ref\n\n\t\treturn nil\n\t})\n}\n\nfunc (bs *blobs) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) {\n\tvar opts createOptions\n\n\tfor _, option := range options {\n\t\terr := option.Apply(&opts)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar values []url.Values\n\n\tif opts.Mount.ShouldMount {\n\t\tvalues = append(values, url.Values{\"from\": {opts.Mount.From.Name()}, \"mount\": {opts.Mount.From.Digest().String()}})\n\t}\n\n\tu, err := bs.ub.BuildBlobUploadURL(bs.name, values...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp, err := bs.client.Post(u, \"\", nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tswitch resp.StatusCode {\n\tcase http.StatusCreated:\n\t\tdesc, err := bs.statter.Stat(ctx, opts.Mount.From.Digest())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, distribution.ErrBlobMounted{From: opts.Mount.From, Descriptor: desc}\n\tcase http.StatusAccepted:\n\t\t// TODO(dmcgowan): Check for invalid UUID\n\t\tuuid := resp.Header.Get(\"Docker-Upload-UUID\")\n\t\tlocation, err := sanitizeLocation(resp.Header.Get(\"Location\"), u)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn &httpBlobUpload{\n\t\t\tstatter:   bs.statter,\n\t\t\tclient:    bs.client,\n\t\t\tuuid:      uuid,\n\t\t\tstartedAt: time.Now(),\n\t\t\tlocation:  location,\n\t\t}, nil\n\tdefault:\n\t\treturn nil, HandleErrorResponse(resp)\n\t}\n}\n\nfunc (bs *blobs) Resume(ctx context.Context, id string) (distribution.BlobWriter, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (bs *blobs) Delete(ctx context.Context, dgst digest.Digest) error {\n\treturn bs.statter.Clear(ctx, dgst)\n}\n\ntype blobStatter struct {\n\tname   reference.Named\n\tub     *v2.URLBuilder\n\tclient *http.Client\n}\n\nfunc (bs *blobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\tref, err := reference.WithDigest(bs.name, dgst)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tu, err := bs.ub.BuildBlobURL(ref)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\n\tresp, err := bs.client.Head(u)\n\tif err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\tlengthHeader := resp.Header.Get(\"Content-Length\")\n\t\tif lengthHeader == \"\" {\n\t\t\treturn distribution.Descriptor{}, fmt.Errorf(\"missing content-length header for request: %s\", u)\n\t\t}\n\n\t\tlength, err := strconv.ParseInt(lengthHeader, 10, 64)\n\t\tif err != nil {\n\t\t\treturn distribution.Descriptor{}, fmt.Errorf(\"error parsing content-length: %v\", err)\n\t\t}\n\n\t\treturn distribution.Descriptor{\n\t\t\tMediaType: resp.Header.Get(\"Content-Type\"),\n\t\t\tSize:      length,\n\t\t\tDigest:    dgst,\n\t\t}, nil\n\t} else if resp.StatusCode == http.StatusNotFound {\n\t\treturn distribution.Descriptor{}, distribution.ErrBlobUnknown\n\t}\n\treturn distribution.Descriptor{}, HandleErrorResponse(resp)\n}\n\nfunc buildCatalogValues(maxEntries int, last string) url.Values {\n\tvalues := url.Values{}\n\n\tif maxEntries > 0 {\n\t\tvalues.Add(\"n\", strconv.Itoa(maxEntries))\n\t}\n\n\tif last != \"\" {\n\t\tvalues.Add(\"last\", last)\n\t}\n\n\treturn values\n}\n\nfunc (bs *blobStatter) Clear(ctx context.Context, dgst digest.Digest) error {\n\tref, err := reference.WithDigest(bs.name, dgst)\n\tif err != nil {\n\t\treturn err\n\t}\n\tblobURL, err := bs.ub.BuildBlobURL(ref)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treq, err := http.NewRequest(\"DELETE\", blobURL, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := bs.client.Do(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\tif SuccessStatus(resp.StatusCode) {\n\t\treturn nil\n\t}\n\treturn HandleErrorResponse(resp)\n}\n\nfunc (bs *blobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/transport/http_reader.go",
    "content": "package transport\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"regexp\"\n\t\"strconv\"\n)\n\nvar (\n\tcontentRangeRegexp = regexp.MustCompile(`bytes ([0-9]+)-([0-9]+)/([0-9]+|\\\\*)`)\n\n\t// ErrWrongCodeForByteRange is returned if the client sends a request\n\t// with a Range header but the server returns a 2xx or 3xx code other\n\t// than 206 Partial Content.\n\tErrWrongCodeForByteRange = errors.New(\"expected HTTP 206 from byte range request\")\n)\n\n// ReadSeekCloser combines io.ReadSeeker with io.Closer.\ntype ReadSeekCloser interface {\n\tio.ReadSeeker\n\tio.Closer\n}\n\n// NewHTTPReadSeeker handles reading from an HTTP endpoint using a GET\n// request. When seeking and starting a read from a non-zero offset\n// the a \"Range\" header will be added which sets the offset.\n// TODO(dmcgowan): Move this into a separate utility package\nfunc NewHTTPReadSeeker(client *http.Client, url string, errorHandler func(*http.Response) error) ReadSeekCloser {\n\treturn &httpReadSeeker{\n\t\tclient:       client,\n\t\turl:          url,\n\t\terrorHandler: errorHandler,\n\t}\n}\n\ntype httpReadSeeker struct {\n\tclient *http.Client\n\turl    string\n\n\t// errorHandler creates an error from an unsuccessful HTTP response.\n\t// This allows the error to be created with the HTTP response body\n\t// without leaking the body through a returned error.\n\terrorHandler func(*http.Response) error\n\n\tsize int64\n\n\t// rc is the remote read closer.\n\trc io.ReadCloser\n\t// readerOffset tracks the offset as of the last read.\n\treaderOffset int64\n\t// seekOffset allows Seek to override the offset. Seek changes\n\t// seekOffset instead of changing readOffset directly so that\n\t// connection resets can be delayed and possibly avoided if the\n\t// seek is undone (i.e. seeking to the end and then back to the\n\t// beginning).\n\tseekOffset int64\n\terr        error\n}\n\nfunc (hrs *httpReadSeeker) Read(p []byte) (n int, err error) {\n\tif hrs.err != nil {\n\t\treturn 0, hrs.err\n\t}\n\n\t// If we sought to a different position, we need to reset the\n\t// connection. This logic is here instead of Seek so that if\n\t// a seek is undone before the next read, the connection doesn't\n\t// need to be closed and reopened. A common example of this is\n\t// seeking to the end to determine the length, and then seeking\n\t// back to the original position.\n\tif hrs.readerOffset != hrs.seekOffset {\n\t\thrs.reset()\n\t}\n\n\thrs.readerOffset = hrs.seekOffset\n\n\trd, err := hrs.reader()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn, err = rd.Read(p)\n\thrs.seekOffset += int64(n)\n\thrs.readerOffset += int64(n)\n\n\treturn n, err\n}\n\nfunc (hrs *httpReadSeeker) Seek(offset int64, whence int) (int64, error) {\n\tif hrs.err != nil {\n\t\treturn 0, hrs.err\n\t}\n\n\tlastReaderOffset := hrs.readerOffset\n\n\tif whence == os.SEEK_SET && hrs.rc == nil {\n\t\t// If no request has been made yet, and we are seeking to an\n\t\t// absolute position, set the read offset as well to avoid an\n\t\t// unnecessary request.\n\t\thrs.readerOffset = offset\n\t}\n\n\t_, err := hrs.reader()\n\tif err != nil {\n\t\thrs.readerOffset = lastReaderOffset\n\t\treturn 0, err\n\t}\n\n\tnewOffset := hrs.seekOffset\n\n\tswitch whence {\n\tcase os.SEEK_CUR:\n\t\tnewOffset += offset\n\tcase os.SEEK_END:\n\t\tif hrs.size < 0 {\n\t\t\treturn 0, errors.New(\"content length not known\")\n\t\t}\n\t\tnewOffset = hrs.size + offset\n\tcase os.SEEK_SET:\n\t\tnewOffset = offset\n\t}\n\n\tif newOffset < 0 {\n\t\terr = errors.New(\"cannot seek to negative position\")\n\t} else {\n\t\thrs.seekOffset = newOffset\n\t}\n\n\treturn hrs.seekOffset, err\n}\n\nfunc (hrs *httpReadSeeker) Close() error {\n\tif hrs.err != nil {\n\t\treturn hrs.err\n\t}\n\n\t// close and release reader chain\n\tif hrs.rc != nil {\n\t\thrs.rc.Close()\n\t}\n\n\thrs.rc = nil\n\n\thrs.err = errors.New(\"httpLayer: closed\")\n\n\treturn nil\n}\n\nfunc (hrs *httpReadSeeker) reset() {\n\tif hrs.err != nil {\n\t\treturn\n\t}\n\tif hrs.rc != nil {\n\t\thrs.rc.Close()\n\t\thrs.rc = nil\n\t}\n}\n\nfunc (hrs *httpReadSeeker) reader() (io.Reader, error) {\n\tif hrs.err != nil {\n\t\treturn nil, hrs.err\n\t}\n\n\tif hrs.rc != nil {\n\t\treturn hrs.rc, nil\n\t}\n\n\treq, err := http.NewRequest(\"GET\", hrs.url, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif hrs.readerOffset > 0 {\n\t\t// If we are at different offset, issue a range request from there.\n\t\treq.Header.Add(\"Range\", fmt.Sprintf(\"bytes=%d-\", hrs.readerOffset))\n\t\t// TODO: get context in here\n\t\t// context.GetLogger(hrs.context).Infof(\"Range: %s\", req.Header.Get(\"Range\"))\n\t}\n\n\tresp, err := hrs.client.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Normally would use client.SuccessStatus, but that would be a cyclic\n\t// import\n\tif resp.StatusCode >= 200 && resp.StatusCode <= 399 {\n\t\tif hrs.readerOffset > 0 {\n\t\t\tif resp.StatusCode != http.StatusPartialContent {\n\t\t\t\treturn nil, ErrWrongCodeForByteRange\n\t\t\t}\n\n\t\t\tcontentRange := resp.Header.Get(\"Content-Range\")\n\t\t\tif contentRange == \"\" {\n\t\t\t\treturn nil, errors.New(\"no Content-Range header found in HTTP 206 response\")\n\t\t\t}\n\n\t\t\tsubmatches := contentRangeRegexp.FindStringSubmatch(contentRange)\n\t\t\tif len(submatches) < 4 {\n\t\t\t\treturn nil, fmt.Errorf(\"could not parse Content-Range header: %s\", contentRange)\n\t\t\t}\n\n\t\t\tstartByte, err := strconv.ParseUint(submatches[1], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"could not parse start of range in Content-Range header: %s\", contentRange)\n\t\t\t}\n\n\t\t\tif startByte != uint64(hrs.readerOffset) {\n\t\t\t\treturn nil, fmt.Errorf(\"received Content-Range starting at offset %d instead of requested %d\", startByte, hrs.readerOffset)\n\t\t\t}\n\n\t\t\tendByte, err := strconv.ParseUint(submatches[2], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"could not parse end of range in Content-Range header: %s\", contentRange)\n\t\t\t}\n\n\t\t\tif submatches[3] == \"*\" {\n\t\t\t\thrs.size = -1\n\t\t\t} else {\n\t\t\t\tsize, err := strconv.ParseUint(submatches[3], 10, 64)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"could not parse total size in Content-Range header: %s\", contentRange)\n\t\t\t\t}\n\n\t\t\t\tif endByte+1 != size {\n\t\t\t\t\treturn nil, fmt.Errorf(\"range in Content-Range stops before the end of the content: %s\", contentRange)\n\t\t\t\t}\n\n\t\t\t\thrs.size = int64(size)\n\t\t\t}\n\t\t} else if resp.StatusCode == http.StatusOK {\n\t\t\thrs.size = resp.ContentLength\n\t\t} else {\n\t\t\thrs.size = -1\n\t\t}\n\t\thrs.rc = resp.Body\n\t} else {\n\t\tdefer resp.Body.Close()\n\t\tif hrs.errorHandler != nil {\n\t\t\treturn nil, hrs.errorHandler(resp)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"unexpected status resolving reader: %v\", resp.Status)\n\t}\n\n\treturn hrs.rc, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/client/transport/transport.go",
    "content": "package transport\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"sync\"\n)\n\n// RequestModifier represents an object which will do an inplace\n// modification of an HTTP request.\ntype RequestModifier interface {\n\tModifyRequest(*http.Request) error\n}\n\ntype headerModifier http.Header\n\n// NewHeaderRequestModifier returns a new RequestModifier which will\n// add the given headers to a request.\nfunc NewHeaderRequestModifier(header http.Header) RequestModifier {\n\treturn headerModifier(header)\n}\n\nfunc (h headerModifier) ModifyRequest(req *http.Request) error {\n\tfor k, s := range http.Header(h) {\n\t\treq.Header[k] = append(req.Header[k], s...)\n\t}\n\n\treturn nil\n}\n\n// NewTransport creates a new transport which will apply modifiers to\n// the request on a RoundTrip call.\nfunc NewTransport(base http.RoundTripper, modifiers ...RequestModifier) http.RoundTripper {\n\treturn &transport{\n\t\tModifiers: modifiers,\n\t\tBase:      base,\n\t}\n}\n\n// transport is an http.RoundTripper that makes HTTP requests after\n// copying and modifying the request\ntype transport struct {\n\tModifiers []RequestModifier\n\tBase      http.RoundTripper\n\n\tmu     sync.Mutex                      // guards modReq\n\tmodReq map[*http.Request]*http.Request // original -> modified\n}\n\n// RoundTrip authorizes and authenticates the request with an\n// access token. If no token exists or token is expired,\n// tries to refresh/fetch a new token.\nfunc (t *transport) RoundTrip(req *http.Request) (*http.Response, error) {\n\treq2 := cloneRequest(req)\n\tfor _, modifier := range t.Modifiers {\n\t\tif err := modifier.ModifyRequest(req2); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tt.setModReq(req, req2)\n\tres, err := t.base().RoundTrip(req2)\n\tif err != nil {\n\t\tt.setModReq(req, nil)\n\t\treturn nil, err\n\t}\n\tres.Body = &onEOFReader{\n\t\trc: res.Body,\n\t\tfn: func() { t.setModReq(req, nil) },\n\t}\n\treturn res, nil\n}\n\n// CancelRequest cancels an in-flight request by closing its connection.\nfunc (t *transport) CancelRequest(req *http.Request) {\n\ttype canceler interface {\n\t\tCancelRequest(*http.Request)\n\t}\n\tif cr, ok := t.base().(canceler); ok {\n\t\tt.mu.Lock()\n\t\tmodReq := t.modReq[req]\n\t\tdelete(t.modReq, req)\n\t\tt.mu.Unlock()\n\t\tcr.CancelRequest(modReq)\n\t}\n}\n\nfunc (t *transport) base() http.RoundTripper {\n\tif t.Base != nil {\n\t\treturn t.Base\n\t}\n\treturn http.DefaultTransport\n}\n\nfunc (t *transport) setModReq(orig, mod *http.Request) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.modReq == nil {\n\t\tt.modReq = make(map[*http.Request]*http.Request)\n\t}\n\tif mod == nil {\n\t\tdelete(t.modReq, orig)\n\t} else {\n\t\tt.modReq[orig] = mod\n\t}\n}\n\n// cloneRequest returns a clone of the provided *http.Request.\n// The clone is a shallow copy of the struct and its Header map.\nfunc cloneRequest(r *http.Request) *http.Request {\n\t// shallow copy of the struct\n\tr2 := new(http.Request)\n\t*r2 = *r\n\t// deep copy of the Header\n\tr2.Header = make(http.Header, len(r.Header))\n\tfor k, s := range r.Header {\n\t\tr2.Header[k] = append([]string(nil), s...)\n\t}\n\n\treturn r2\n}\n\ntype onEOFReader struct {\n\trc io.ReadCloser\n\tfn func()\n}\n\nfunc (r *onEOFReader) Read(p []byte) (n int, err error) {\n\tn, err = r.rc.Read(p)\n\tif err == io.EOF {\n\t\tr.runFunc()\n\t}\n\treturn\n}\n\nfunc (r *onEOFReader) Close() error {\n\terr := r.rc.Close()\n\tr.runFunc()\n\treturn err\n}\n\nfunc (r *onEOFReader) runFunc() {\n\tif fn := r.fn; fn != nil {\n\t\tfn()\n\t\tr.fn = nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/storage/cache/cache.go",
    "content": "// Package cache provides facilities to speed up access to the storage\n// backend.\npackage cache\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/docker/distribution\"\n)\n\n// BlobDescriptorCacheProvider provides repository scoped\n// BlobDescriptorService cache instances and a global descriptor cache.\ntype BlobDescriptorCacheProvider interface {\n\tdistribution.BlobDescriptorService\n\n\tRepositoryScoped(repo string) (distribution.BlobDescriptorService, error)\n}\n\n// ValidateDescriptor provides a helper function to ensure that caches have\n// common criteria for admitting descriptors.\nfunc ValidateDescriptor(desc distribution.Descriptor) error {\n\tif err := desc.Digest.Validate(); err != nil {\n\t\treturn err\n\t}\n\n\tif desc.Size < 0 {\n\t\treturn fmt.Errorf(\"cache: invalid length in descriptor: %v < 0\", desc.Size)\n\t}\n\n\tif desc.MediaType == \"\" {\n\t\treturn fmt.Errorf(\"cache: empty mediatype on descriptor: %v\", desc)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/storage/cache/cachedblobdescriptorstore.go",
    "content": "package cache\n\nimport (\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/digest\"\n\n\t\"github.com/docker/distribution\"\n)\n\n// Metrics is used to hold metric counters\n// related to the number of times a cache was\n// hit or missed.\ntype Metrics struct {\n\tRequests uint64\n\tHits     uint64\n\tMisses   uint64\n}\n\n// MetricsTracker represents a metric tracker\n// which simply counts the number of hits and misses.\ntype MetricsTracker interface {\n\tHit()\n\tMiss()\n\tMetrics() Metrics\n}\n\ntype cachedBlobStatter struct {\n\tcache   distribution.BlobDescriptorService\n\tbackend distribution.BlobDescriptorService\n\ttracker MetricsTracker\n}\n\n// NewCachedBlobStatter creates a new statter which prefers a cache and\n// falls back to a backend.\nfunc NewCachedBlobStatter(cache distribution.BlobDescriptorService, backend distribution.BlobDescriptorService) distribution.BlobDescriptorService {\n\treturn &cachedBlobStatter{\n\t\tcache:   cache,\n\t\tbackend: backend,\n\t}\n}\n\n// NewCachedBlobStatterWithMetrics creates a new statter which prefers a cache and\n// falls back to a backend. Hits and misses will send to the tracker.\nfunc NewCachedBlobStatterWithMetrics(cache distribution.BlobDescriptorService, backend distribution.BlobDescriptorService, tracker MetricsTracker) distribution.BlobStatter {\n\treturn &cachedBlobStatter{\n\t\tcache:   cache,\n\t\tbackend: backend,\n\t\ttracker: tracker,\n\t}\n}\n\nfunc (cbds *cachedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\tdesc, err := cbds.cache.Stat(ctx, dgst)\n\tif err != nil {\n\t\tif err != distribution.ErrBlobUnknown {\n\t\t\tcontext.GetLogger(ctx).Errorf(\"error retrieving descriptor from cache: %v\", err)\n\t\t}\n\n\t\tgoto fallback\n\t}\n\n\tif cbds.tracker != nil {\n\t\tcbds.tracker.Hit()\n\t}\n\treturn desc, nil\nfallback:\n\tif cbds.tracker != nil {\n\t\tcbds.tracker.Miss()\n\t}\n\tdesc, err = cbds.backend.Stat(ctx, dgst)\n\tif err != nil {\n\t\treturn desc, err\n\t}\n\n\tif err := cbds.cache.SetDescriptor(ctx, dgst, desc); err != nil {\n\t\tcontext.GetLogger(ctx).Errorf(\"error adding descriptor %v to cache: %v\", desc.Digest, err)\n\t}\n\n\treturn desc, err\n\n}\n\nfunc (cbds *cachedBlobStatter) Clear(ctx context.Context, dgst digest.Digest) error {\n\terr := cbds.cache.Clear(ctx, dgst)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cbds.backend.Clear(ctx, dgst)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (cbds *cachedBlobStatter) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error {\n\tif err := cbds.cache.SetDescriptor(ctx, dgst, desc); err != nil {\n\t\tcontext.GetLogger(ctx).Errorf(\"error adding descriptor %v to cache: %v\", desc.Digest, err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry/storage/cache/memory/memory.go",
    "content": "package memory\n\nimport (\n\t\"sync\"\n\n\t\"github.com/docker/distribution\"\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/distribution/reference\"\n\t\"github.com/docker/distribution/registry/storage/cache\"\n)\n\ntype inMemoryBlobDescriptorCacheProvider struct {\n\tglobal       *mapBlobDescriptorCache\n\trepositories map[string]*mapBlobDescriptorCache\n\tmu           sync.RWMutex\n}\n\n// NewInMemoryBlobDescriptorCacheProvider returns a new mapped-based cache for\n// storing blob descriptor data.\nfunc NewInMemoryBlobDescriptorCacheProvider() cache.BlobDescriptorCacheProvider {\n\treturn &inMemoryBlobDescriptorCacheProvider{\n\t\tglobal:       newMapBlobDescriptorCache(),\n\t\trepositories: make(map[string]*mapBlobDescriptorCache),\n\t}\n}\n\nfunc (imbdcp *inMemoryBlobDescriptorCacheProvider) RepositoryScoped(repo string) (distribution.BlobDescriptorService, error) {\n\tif _, err := reference.ParseNamed(repo); err != nil {\n\t\treturn nil, err\n\t}\n\n\timbdcp.mu.RLock()\n\tdefer imbdcp.mu.RUnlock()\n\n\treturn &repositoryScopedInMemoryBlobDescriptorCache{\n\t\trepo:       repo,\n\t\tparent:     imbdcp,\n\t\trepository: imbdcp.repositories[repo],\n\t}, nil\n}\n\nfunc (imbdcp *inMemoryBlobDescriptorCacheProvider) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\treturn imbdcp.global.Stat(ctx, dgst)\n}\n\nfunc (imbdcp *inMemoryBlobDescriptorCacheProvider) Clear(ctx context.Context, dgst digest.Digest) error {\n\treturn imbdcp.global.Clear(ctx, dgst)\n}\n\nfunc (imbdcp *inMemoryBlobDescriptorCacheProvider) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error {\n\t_, err := imbdcp.Stat(ctx, dgst)\n\tif err == distribution.ErrBlobUnknown {\n\n\t\tif dgst.Algorithm() != desc.Digest.Algorithm() && dgst != desc.Digest {\n\t\t\t// if the digests differ, set the other canonical mapping\n\t\t\tif err := imbdcp.global.SetDescriptor(ctx, desc.Digest, desc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\t// unknown, just set it\n\t\treturn imbdcp.global.SetDescriptor(ctx, dgst, desc)\n\t}\n\n\t// we already know it, do nothing\n\treturn err\n}\n\n// repositoryScopedInMemoryBlobDescriptorCache provides the request scoped\n// repository cache. Instances are not thread-safe but the delegated\n// operations are.\ntype repositoryScopedInMemoryBlobDescriptorCache struct {\n\trepo       string\n\tparent     *inMemoryBlobDescriptorCacheProvider // allows lazy allocation of repo's map\n\trepository *mapBlobDescriptorCache\n}\n\nfunc (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\tif rsimbdcp.repository == nil {\n\t\treturn distribution.Descriptor{}, distribution.ErrBlobUnknown\n\t}\n\n\treturn rsimbdcp.repository.Stat(ctx, dgst)\n}\n\nfunc (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) Clear(ctx context.Context, dgst digest.Digest) error {\n\tif rsimbdcp.repository == nil {\n\t\treturn distribution.ErrBlobUnknown\n\t}\n\n\treturn rsimbdcp.repository.Clear(ctx, dgst)\n}\n\nfunc (rsimbdcp *repositoryScopedInMemoryBlobDescriptorCache) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error {\n\tif rsimbdcp.repository == nil {\n\t\t// allocate map since we are setting it now.\n\t\trsimbdcp.parent.mu.Lock()\n\t\tvar ok bool\n\t\t// have to read back value since we may have allocated elsewhere.\n\t\trsimbdcp.repository, ok = rsimbdcp.parent.repositories[rsimbdcp.repo]\n\t\tif !ok {\n\t\t\trsimbdcp.repository = newMapBlobDescriptorCache()\n\t\t\trsimbdcp.parent.repositories[rsimbdcp.repo] = rsimbdcp.repository\n\t\t}\n\n\t\trsimbdcp.parent.mu.Unlock()\n\t}\n\n\tif err := rsimbdcp.repository.SetDescriptor(ctx, dgst, desc); err != nil {\n\t\treturn err\n\t}\n\n\treturn rsimbdcp.parent.SetDescriptor(ctx, dgst, desc)\n}\n\n// mapBlobDescriptorCache provides a simple map-based implementation of the\n// descriptor cache.\ntype mapBlobDescriptorCache struct {\n\tdescriptors map[digest.Digest]distribution.Descriptor\n\tmu          sync.RWMutex\n}\n\nvar _ distribution.BlobDescriptorService = &mapBlobDescriptorCache{}\n\nfunc newMapBlobDescriptorCache() *mapBlobDescriptorCache {\n\treturn &mapBlobDescriptorCache{\n\t\tdescriptors: make(map[digest.Digest]distribution.Descriptor),\n\t}\n}\n\nfunc (mbdc *mapBlobDescriptorCache) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) {\n\tif err := dgst.Validate(); err != nil {\n\t\treturn distribution.Descriptor{}, err\n\t}\n\n\tmbdc.mu.RLock()\n\tdefer mbdc.mu.RUnlock()\n\n\tdesc, ok := mbdc.descriptors[dgst]\n\tif !ok {\n\t\treturn distribution.Descriptor{}, distribution.ErrBlobUnknown\n\t}\n\n\treturn desc, nil\n}\n\nfunc (mbdc *mapBlobDescriptorCache) Clear(ctx context.Context, dgst digest.Digest) error {\n\tmbdc.mu.Lock()\n\tdefer mbdc.mu.Unlock()\n\n\tdelete(mbdc.descriptors, dgst)\n\treturn nil\n}\n\nfunc (mbdc *mapBlobDescriptorCache) SetDescriptor(ctx context.Context, dgst digest.Digest, desc distribution.Descriptor) error {\n\tif err := dgst.Validate(); err != nil {\n\t\treturn err\n\t}\n\n\tif err := cache.ValidateDescriptor(desc); err != nil {\n\t\treturn err\n\t}\n\n\tmbdc.mu.Lock()\n\tdefer mbdc.mu.Unlock()\n\n\tmbdc.descriptors[dgst] = desc\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/registry.go",
    "content": "package distribution\n\nimport (\n\t\"github.com/docker/distribution/context\"\n\t\"github.com/docker/distribution/reference\"\n)\n\n// Scope defines the set of items that match a namespace.\ntype Scope interface {\n\t// Contains returns true if the name belongs to the namespace.\n\tContains(name string) bool\n}\n\ntype fullScope struct{}\n\nfunc (f fullScope) Contains(string) bool {\n\treturn true\n}\n\n// GlobalScope represents the full namespace scope which contains\n// all other scopes.\nvar GlobalScope = Scope(fullScope{})\n\n// Namespace represents a collection of repositories, addressable by name.\n// Generally, a namespace is backed by a set of one or more services,\n// providing facilities such as registry access, trust, and indexing.\ntype Namespace interface {\n\t// Scope describes the names that can be used with this Namespace. The\n\t// global namespace will have a scope that matches all names. The scope\n\t// effectively provides an identity for the namespace.\n\tScope() Scope\n\n\t// Repository should return a reference to the named repository. The\n\t// registry may or may not have the repository but should always return a\n\t// reference.\n\tRepository(ctx context.Context, name reference.Named) (Repository, error)\n\n\t// Repositories fills 'repos' with a lexigraphically sorted catalog of repositories\n\t// up to the size of 'repos' and returns the value 'n' for the number of entries\n\t// which were filled.  'last' contains an offset in the catalog, and 'err' will be\n\t// set to io.EOF if there are no more entries to obtain.\n\tRepositories(ctx context.Context, repos []string, last string) (n int, err error)\n\n\t// Blobs returns a blob enumerator to access all blobs\n\tBlobs() BlobEnumerator\n\n\t// BlobStatter returns a BlobStatter to control\n\tBlobStatter() BlobStatter\n}\n\n// RepositoryEnumerator describes an operation to enumerate repositories\ntype RepositoryEnumerator interface {\n\tEnumerate(ctx context.Context, ingester func(string) error) error\n}\n\n// ManifestServiceOption is a function argument for Manifest Service methods\ntype ManifestServiceOption interface {\n\tApply(ManifestService) error\n}\n\n// WithTag allows a tag to be passed into Put\nfunc WithTag(tag string) ManifestServiceOption {\n\treturn WithTagOption{tag}\n}\n\n// WithTagOption holds a tag\ntype WithTagOption struct{ Tag string }\n\n// Apply conforms to the ManifestServiceOption interface\nfunc (o WithTagOption) Apply(m ManifestService) error {\n\t// no implementation\n\treturn nil\n}\n\n// Repository is a named collection of manifests and layers.\ntype Repository interface {\n\t// Named returns the name of the repository.\n\tNamed() reference.Named\n\n\t// Manifests returns a reference to this repository's manifest service.\n\t// with the supplied options applied.\n\tManifests(ctx context.Context, options ...ManifestServiceOption) (ManifestService, error)\n\n\t// Blobs returns a reference to this repository's blob service.\n\tBlobs(ctx context.Context) BlobStore\n\n\t// TODO(stevvooe): The above BlobStore return can probably be relaxed to\n\t// be a BlobService for use with clients. This will allow such\n\t// implementations to avoid implementing ServeBlob.\n\n\t// Tags returns a reference to this repositories tag service\n\tTags(ctx context.Context) TagService\n}\n\n// TODO(stevvooe): Must add close methods to all these. May want to change the\n// way instances are created to better reflect internal dependency\n// relationships.\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/tags.go",
    "content": "package distribution\n\nimport (\n\t\"github.com/docker/distribution/context\"\n)\n\n// TagService provides access to information about tagged objects.\ntype TagService interface {\n\t// Get retrieves the descriptor identified by the tag. Some\n\t// implementations may differentiate between \"trusted\" tags and\n\t// \"untrusted\" tags. If a tag is \"untrusted\", the mapping will be returned\n\t// as an ErrTagUntrusted error, with the target descriptor.\n\tGet(ctx context.Context, tag string) (Descriptor, error)\n\n\t// Tag associates the tag with the provided descriptor, updating the\n\t// current association, if needed.\n\tTag(ctx context.Context, tag string, desc Descriptor) error\n\n\t// Untag removes the given tag association\n\tUntag(ctx context.Context, tag string) error\n\n\t// All returns the set of tags managed by this tag service\n\tAll(ctx context.Context) ([]string, error)\n\n\t// Lookup returns the set of tags referencing the given digest.\n\tLookup(ctx context.Context, digest Descriptor) ([]string, error)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/distribution/uuid/uuid.go",
    "content": "// Package uuid provides simple UUID generation. Only version 4 style UUIDs\n// can be generated.\n//\n// Please see http://tools.ietf.org/html/rfc4122 for details on UUIDs.\npackage uuid\n\nimport (\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst (\n\t// Bits is the number of bits in a UUID\n\tBits = 128\n\n\t// Size is the number of bytes in a UUID\n\tSize = Bits / 8\n\n\tformat = \"%08x-%04x-%04x-%04x-%012x\"\n)\n\nvar (\n\t// ErrUUIDInvalid indicates a parsed string is not a valid uuid.\n\tErrUUIDInvalid = fmt.Errorf(\"invalid uuid\")\n\n\t// Loggerf can be used to override the default logging destination. Such\n\t// log messages in this library should be logged at warning or higher.\n\tLoggerf = func(format string, args ...interface{}) {}\n)\n\n// UUID represents a UUID value. UUIDs can be compared and set to other values\n// and accessed by byte.\ntype UUID [Size]byte\n\n// Generate creates a new, version 4 uuid.\nfunc Generate() (u UUID) {\n\tconst (\n\t\t// ensures we backoff for less than 450ms total. Use the following to\n\t\t// select new value, in units of 10ms:\n\t\t// \tn*(n+1)/2 = d -> n^2 + n - 2d -> n = (sqrt(8d + 1) - 1)/2\n\t\tmaxretries = 9\n\t\tbackoff    = time.Millisecond * 10\n\t)\n\n\tvar (\n\t\ttotalBackoff time.Duration\n\t\tcount        int\n\t\tretries      int\n\t)\n\n\tfor {\n\t\t// This should never block but the read may fail. Because of this,\n\t\t// we just try to read the random number generator until we get\n\t\t// something. This is a very rare condition but may happen.\n\t\tb := time.Duration(retries) * backoff\n\t\ttime.Sleep(b)\n\t\ttotalBackoff += b\n\n\t\tn, err := io.ReadFull(rand.Reader, u[count:])\n\t\tif err != nil {\n\t\t\tif retryOnError(err) && retries < maxretries {\n\t\t\t\tcount += n\n\t\t\t\tretries++\n\t\t\t\tLoggerf(\"error generating version 4 uuid, retrying: %v\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Any other errors represent a system problem. What did someone\n\t\t\t// do to /dev/urandom?\n\t\t\tpanic(fmt.Errorf(\"error reading random number generator, retried for %v: %v\", totalBackoff.String(), err))\n\t\t}\n\n\t\tbreak\n\t}\n\n\tu[6] = (u[6] & 0x0f) | 0x40 // set version byte\n\tu[8] = (u[8] & 0x3f) | 0x80 // set high order byte 0b10{8,9,a,b}\n\n\treturn u\n}\n\n// Parse attempts to extract a uuid from the string or returns an error.\nfunc Parse(s string) (u UUID, err error) {\n\tif len(s) != 36 {\n\t\treturn UUID{}, ErrUUIDInvalid\n\t}\n\n\t// create stack addresses for each section of the uuid.\n\tp := make([][]byte, 5)\n\n\tif _, err := fmt.Sscanf(s, format, &p[0], &p[1], &p[2], &p[3], &p[4]); err != nil {\n\t\treturn u, err\n\t}\n\n\tcopy(u[0:4], p[0])\n\tcopy(u[4:6], p[1])\n\tcopy(u[6:8], p[2])\n\tcopy(u[8:10], p[3])\n\tcopy(u[10:16], p[4])\n\n\treturn\n}\n\nfunc (u UUID) String() string {\n\treturn fmt.Sprintf(format, u[:4], u[4:6], u[6:8], u[8:10], u[10:])\n}\n\n// retryOnError tries to detect whether or not retrying would be fruitful.\nfunc retryOnError(err error) bool {\n\tswitch err := err.(type) {\n\tcase *os.PathError:\n\t\treturn retryOnError(err.Err) // unpack the target error\n\tcase syscall.Errno:\n\t\tif err == syscall.EPERM {\n\t\t\t// EPERM represents an entropy pool exhaustion, a condition under\n\t\t\t// which we backoff and retry.\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/.dockerignore",
    "content": "./bin\n./.dapper\n./dist\n./.trash-cache\n"
  },
  {
    "path": "vendor/github.com/docker/docker/.gitignore",
    "content": "/.dapper\n/bin\n*.swp\n/.trash-cache\n"
  },
  {
    "path": "vendor/github.com/docker/docker/Dockerfile.dapper",
    "content": "FROM ubuntu:16.04\n\n# Packaged dependencies\nRUN apt-get update && apt-get install -y \\\n\tapparmor \\\n\tcurl \\\n    ca-certificates \\\n    libc-dev \\\n    gcc \\\n\tgit \\\n\tiptables \\\n\tjq \\\n\tlibapparmor-dev \\\n\tlibcap-dev \\\n\tlibltdl-dev \\\n    libseccomp-dev \\\n\tnet-tools \\\n    iproute2 \\\n\tpkg-config \\\n\ttar \\\n    vim \\\n\t--no-install-recommends\n\n# Install go\nRUN curl -sLf https://storage.googleapis.com/golang/go1.9.7.linux-amd64.tar.gz | tar xzf - -C /usr/local\nENV GOPATH=/go\nENV PATH=/go/bin:/usr/local/go/bin:$PATH\n\n# Setup runc\nRUN ln -s /go/src/github.com/docker/docker/bin/docker /usr/local/bin/docker-runc\n\n# Add an unprivileged user to be used for tests which need it\nRUN groupadd -r docker\nRUN useradd --create-home --gid docker unprivilegeduser\n\n# Trash\nRUN go get github.com/rancher/trash\n\nENV DOCKER_BUILDTAGS apparmor seccomp selinux cgo daemon netgo\nENV DAPPER_SOURCE /go/src/github.com/docker/docker\nENV DAPPER_RUN_ARGS --privileged\nENV DAPPER_OUTPUT bin\nENV DAPPER_ENV TAG REPO\nENV TRASH_CACHE ${DAPPER_SOURCE}/.trash-cache\nENV PATH=${DAPPER_SOURCE}/bin:$PATH\n\nVOLUME /var/lib/docker\nWORKDIR /go/src/github.com/docker/docker\nENTRYPOINT [\"./scripts/entry\"]\n"
  },
  {
    "path": "vendor/github.com/docker/docker/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://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   Copyright 2013-2016 Docker, Inc.\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       https://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/docker/docker/Makefile",
    "content": "TARGETS := $(shell ls scripts)\n\n.dapper:\n\t@echo Downloading dapper\n\t@curl -sL https://releases.rancher.com/dapper/latest/dapper-`uname -s`-`uname -m` > .dapper.tmp\n\t@@chmod +x .dapper.tmp\n\t@./.dapper.tmp -v\n\t@mv .dapper.tmp .dapper\n\n$(TARGETS): .dapper\n\t./.dapper $@\n\ntrash: .dapper\n\t./.dapper -m bind trash\n\ntrash-keep: .dapper\n\t./.dapper -m bind trash -k\n\ndeps: trash\n\n.DEFAULT_GOAL := ci\n\n.PHONY: $(TARGETS)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/NOTICE",
    "content": "Docker\nCopyright 2012-2016 Docker, Inc.\n\nThis product includes software developed at Docker, Inc. (https://www.docker.com).\n\nThis product contains software (https://github.com/kr/pty) developed\nby Keith Rarick, licensed under the MIT License.\n\nThe following is courtesy of our legal counsel:\n\n\nUse and transfer of Docker may be subject to certain restrictions by the\nUnited States and other governments.\nIt is your responsibility to ensure that your use and/or transfer does not\nviolate applicable laws.\n\nFor more information, please see https://www.bis.doc.gov\n\nSee also https://www.apache.org/dev/crypto.html and/or seek legal counsel.\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/builder.go",
    "content": "// Package builder defines interfaces for any Docker builder to implement.\n//\n// Historically, only server-side Dockerfile interpreters existed.\n// This package allows for other implementations of Docker builders.\npackage builder\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/docker/docker/reference\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"golang.org/x/net/context\"\n)\n\nconst (\n\t// DefaultDockerfileName is the Default filename with Docker commands, read by docker build\n\tDefaultDockerfileName string = \"Dockerfile\"\n)\n\n// Context represents a file system tree.\ntype Context interface {\n\t// Close allows to signal that the filesystem tree won't be used anymore.\n\t// For Context implementations using a temporary directory, it is recommended to\n\t// delete the temporary directory in Close().\n\tClose() error\n\t// Stat returns an entry corresponding to path if any.\n\t// It is recommended to return an error if path was not found.\n\t// If path is a symlink it also returns the path to the target file.\n\tStat(path string) (string, FileInfo, error)\n\t// Open opens path from the context and returns a readable stream of it.\n\tOpen(path string) (io.ReadCloser, error)\n\t// Walk walks the tree of the context with the function passed to it.\n\tWalk(root string, walkFn WalkFunc) error\n}\n\n// WalkFunc is the type of the function called for each file or directory visited by Context.Walk().\ntype WalkFunc func(path string, fi FileInfo, err error) error\n\n// ModifiableContext represents a modifiable Context.\n// TODO: remove this interface once we can get rid of Remove()\ntype ModifiableContext interface {\n\tContext\n\t// Remove deletes the entry specified by `path`.\n\t// It is usual for directory entries to delete all its subentries.\n\tRemove(path string) error\n}\n\n// FileInfo extends os.FileInfo to allow retrieving an absolute path to the file.\n// TODO: remove this interface once pkg/archive exposes a walk function that Context can use.\ntype FileInfo interface {\n\tos.FileInfo\n\tPath() string\n}\n\n// PathFileInfo is a convenience struct that implements the FileInfo interface.\ntype PathFileInfo struct {\n\tos.FileInfo\n\t// FilePath holds the absolute path to the file.\n\tFilePath string\n\t// Name holds the basename for the file.\n\tFileName string\n}\n\n// Path returns the absolute path to the file.\nfunc (fi PathFileInfo) Path() string {\n\treturn fi.FilePath\n}\n\n// Name returns the basename of the file.\nfunc (fi PathFileInfo) Name() string {\n\tif fi.FileName != \"\" {\n\t\treturn fi.FileName\n\t}\n\treturn fi.FileInfo.Name()\n}\n\n// Hashed defines an extra method intended for implementations of os.FileInfo.\ntype Hashed interface {\n\t// Hash returns the hash of a file.\n\tHash() string\n\tSetHash(string)\n}\n\n// HashedFileInfo is a convenient struct that augments FileInfo with a field.\ntype HashedFileInfo struct {\n\tFileInfo\n\t// FileHash represents the hash of a file.\n\tFileHash string\n}\n\n// Hash returns the hash of a file.\nfunc (fi HashedFileInfo) Hash() string {\n\treturn fi.FileHash\n}\n\n// SetHash sets the hash of a file.\nfunc (fi *HashedFileInfo) SetHash(h string) {\n\tfi.FileHash = h\n}\n\n// Backend abstracts calls to a Docker Daemon.\ntype Backend interface {\n\t// TODO: use digest reference instead of name\n\n\t// GetImage looks up a Docker image referenced by `name`.\n\tGetImageOnBuild(name string) (Image, error)\n\t// Tag an image with newTag\n\tTagImage(newTag reference.Named, imageName string) error\n\t// Pull tells Docker to pull image referenced by `name`.\n\tPullOnBuild(ctx context.Context, name string, authConfigs map[string]types.AuthConfig, output io.Writer) (Image, error)\n\t// ContainerAttach attaches to container.\n\tContainerAttachRaw(cID string, stdin io.ReadCloser, stdout, stderr io.Writer, stream bool) error\n\t// ContainerCreate creates a new Docker container and returns potential warnings\n\tContainerCreate(types.ContainerCreateConfig) (types.ContainerCreateResponse, error)\n\t// ContainerRm removes a container specified by `id`.\n\tContainerRm(name string, config *types.ContainerRmConfig) error\n\t// Commit creates a new Docker image from an existing Docker container.\n\tCommit(string, *types.ContainerCommitConfig) (string, error)\n\t// Kill stops the container execution abruptly.\n\tContainerKill(containerID string, sig uint64) error\n\t// Start starts a new container\n\tContainerStart(containerID string, hostConfig *container.HostConfig) error\n\t// ContainerWait stops processing until the given container is stopped.\n\tContainerWait(containerID string, timeout time.Duration) (int, error)\n\t// ContainerUpdateCmd updates container.Path and container.Args\n\tContainerUpdateCmdOnBuild(containerID string, cmd []string) error\n\n\t// ContainerCopy copies/extracts a source FileInfo to a destination path inside a container\n\t// specified by a container object.\n\t// TODO: make an Extract method instead of passing `decompress`\n\t// TODO: do not pass a FileInfo, instead refactor the archive package to export a Walk function that can be used\n\t// with Context.Walk\n\t//ContainerCopy(name string, res string) (io.ReadCloser, error)\n\t// TODO: use copyBackend api\n\tCopyOnBuild(containerID string, destPath string, src FileInfo, decompress bool) error\n}\n\n// Image represents a Docker image used by the builder.\ntype Image interface {\n\tImageID() string\n\tRunConfig() *container.Config\n}\n\n// ImageCache abstracts an image cache store.\n// (parent image, child runconfig) -> child image\ntype ImageCache interface {\n\t// GetCachedImageOnBuild returns a reference to a cached image whose parent equals `parent`\n\t// and runconfig equals `cfg`. A cache miss is expected to return an empty ID and a nil error.\n\tGetCachedImageOnBuild(parentID string, cfg *container.Config) (imageID string, err error)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/context.go",
    "content": "package builder\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"github.com/docker/containerd/subreaper/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/fileutils\"\n\t\"github.com/docker/docker/pkg/gitutils\"\n\t\"github.com/docker/docker/pkg/httputils\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/docker/docker/pkg/progress\"\n\t\"github.com/docker/docker/pkg/streamformatter\"\n)\n\n// ValidateContextDirectory checks if all the contents of the directory\n// can be read and returns an error if some files can't be read\n// symlinks which point to non-existing files don't trigger an error\nfunc ValidateContextDirectory(srcPath string, excludes []string) error {\n\tcontextRoot, err := getContextRoot(srcPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn filepath.Walk(contextRoot, func(filePath string, f os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\tif os.IsPermission(err) {\n\t\t\t\treturn fmt.Errorf(\"can't stat '%s'\", filePath)\n\t\t\t}\n\t\t\tif os.IsNotExist(err) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\n\t\t// skip this directory/file if it's not in the path, it won't get added to the context\n\t\tif relFilePath, err := filepath.Rel(contextRoot, filePath); err != nil {\n\t\t\treturn err\n\t\t} else if skip, err := fileutils.Matches(relFilePath, excludes); err != nil {\n\t\t\treturn err\n\t\t} else if skip {\n\t\t\tif f.IsDir() {\n\t\t\t\treturn filepath.SkipDir\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\t// skip checking if symlinks point to non-existing files, such symlinks can be useful\n\t\t// also skip named pipes, because they hanging on open\n\t\tif f.Mode()&(os.ModeSymlink|os.ModeNamedPipe) != 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\tif !f.IsDir() {\n\t\t\tcurrentFile, err := os.Open(filePath)\n\t\t\tif err != nil && os.IsPermission(err) {\n\t\t\t\treturn fmt.Errorf(\"no permission to read from '%s'\", filePath)\n\t\t\t}\n\t\t\tcurrentFile.Close()\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// GetContextFromReader will read the contents of the given reader as either a\n// Dockerfile or tar archive. Returns a tar archive used as a context and a\n// path to the Dockerfile inside the tar.\nfunc GetContextFromReader(r io.ReadCloser, dockerfileName string) (out io.ReadCloser, relDockerfile string, err error) {\n\tbuf := bufio.NewReader(r)\n\n\tmagic, err := buf.Peek(archive.HeaderSize)\n\tif err != nil && err != io.EOF {\n\t\treturn nil, \"\", fmt.Errorf(\"failed to peek context header from STDIN: %v\", err)\n\t}\n\n\tif archive.IsArchive(magic) {\n\t\treturn ioutils.NewReadCloserWrapper(buf, func() error { return r.Close() }), dockerfileName, nil\n\t}\n\n\t// Input should be read as a Dockerfile.\n\ttmpDir, err := ioutil.TempDir(\"\", \"docker-build-context-\")\n\tif err != nil {\n\t\treturn nil, \"\", fmt.Errorf(\"unbale to create temporary context directory: %v\", err)\n\t}\n\n\tf, err := os.Create(filepath.Join(tmpDir, DefaultDockerfileName))\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\t_, err = io.Copy(f, buf)\n\tif err != nil {\n\t\tf.Close()\n\t\treturn nil, \"\", err\n\t}\n\n\tif err := f.Close(); err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tif err := r.Close(); err != nil {\n\t\treturn nil, \"\", err\n\t}\n\n\ttar, err := archive.Tar(tmpDir, archive.Uncompressed)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\n\treturn ioutils.NewReadCloserWrapper(tar, func() error {\n\t\terr := tar.Close()\n\t\tos.RemoveAll(tmpDir)\n\t\treturn err\n\t}), DefaultDockerfileName, nil\n\n}\n\n// GetContextFromGitURL uses a Git URL as context for a `docker build`. The\n// git repo is cloned into a temporary directory used as the context directory.\n// Returns the absolute path to the temporary context directory, the relative\n// path of the dockerfile in that context directory, and a non-nil error on\n// success.\nfunc GetContextFromGitURL(gitURL, dockerfileName string) (absContextDir, relDockerfile string, err error) {\n\tif _, err := exec.LookPath(\"git\"); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to find 'git': %v\", err)\n\t}\n\tif absContextDir, err = gitutils.Clone(gitURL); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to 'git clone' to temporary context directory: %v\", err)\n\t}\n\n\treturn getDockerfileRelPath(absContextDir, dockerfileName)\n}\n\n// GetContextFromURL uses a remote URL as context for a `docker build`. The\n// remote resource is downloaded as either a Dockerfile or a tar archive.\n// Returns the tar archive used for the context and a path of the\n// dockerfile inside the tar.\nfunc GetContextFromURL(out io.Writer, remoteURL, dockerfileName string) (io.ReadCloser, string, error) {\n\tresponse, err := httputils.Download(remoteURL)\n\tif err != nil {\n\t\treturn nil, \"\", fmt.Errorf(\"unable to download remote context %s: %v\", remoteURL, err)\n\t}\n\tprogressOutput := streamformatter.NewStreamFormatter().NewProgressOutput(out, true)\n\n\t// Pass the response body through a progress reader.\n\tprogReader := progress.NewProgressReader(response.Body, progressOutput, response.ContentLength, \"\", fmt.Sprintf(\"Downloading build context from remote url: %s\", remoteURL))\n\n\treturn GetContextFromReader(ioutils.NewReadCloserWrapper(progReader, func() error { return response.Body.Close() }), dockerfileName)\n}\n\n// GetContextFromLocalDir uses the given local directory as context for a\n// `docker build`. Returns the absolute path to the local context directory,\n// the relative path of the dockerfile in that context directory, and a non-nil\n// error on success.\nfunc GetContextFromLocalDir(localDir, dockerfileName string) (absContextDir, relDockerfile string, err error) {\n\t// When using a local context directory, when the Dockerfile is specified\n\t// with the `-f/--file` option then it is considered relative to the\n\t// current directory and not the context directory.\n\tif dockerfileName != \"\" {\n\t\tif dockerfileName, err = filepath.Abs(dockerfileName); err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"unable to get absolute path to Dockerfile: %v\", err)\n\t\t}\n\t}\n\n\treturn getDockerfileRelPath(localDir, dockerfileName)\n}\n\n// getDockerfileRelPath uses the given context directory for a `docker build`\n// and returns the absolute path to the context directory, the relative path of\n// the dockerfile in that context directory, and a non-nil error on success.\nfunc getDockerfileRelPath(givenContextDir, givenDockerfile string) (absContextDir, relDockerfile string, err error) {\n\tif absContextDir, err = filepath.Abs(givenContextDir); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to get absolute context directory: %v\", err)\n\t}\n\n\t// The context dir might be a symbolic link, so follow it to the actual\n\t// target directory.\n\t//\n\t// FIXME. We use isUNC (always false on non-Windows platforms) to workaround\n\t// an issue in golang. On Windows, EvalSymLinks does not work on UNC file\n\t// paths (those starting with \\\\). This hack means that when using links\n\t// on UNC paths, they will not be followed.\n\tif !isUNC(absContextDir) {\n\t\tabsContextDir, err = filepath.EvalSymlinks(absContextDir)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"unable to evaluate symlinks in context path: %v\", err)\n\t\t}\n\t}\n\n\tstat, err := os.Lstat(absContextDir)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to stat context directory %q: %v\", absContextDir, err)\n\t}\n\n\tif !stat.IsDir() {\n\t\treturn \"\", \"\", fmt.Errorf(\"context must be a directory: %s\", absContextDir)\n\t}\n\n\tabsDockerfile := givenDockerfile\n\tif absDockerfile == \"\" {\n\t\t// No -f/--file was specified so use the default relative to the\n\t\t// context directory.\n\t\tabsDockerfile = filepath.Join(absContextDir, DefaultDockerfileName)\n\n\t\t// Just to be nice ;-) look for 'dockerfile' too but only\n\t\t// use it if we found it, otherwise ignore this check\n\t\tif _, err = os.Lstat(absDockerfile); os.IsNotExist(err) {\n\t\t\taltPath := filepath.Join(absContextDir, strings.ToLower(DefaultDockerfileName))\n\t\t\tif _, err = os.Lstat(altPath); err == nil {\n\t\t\t\tabsDockerfile = altPath\n\t\t\t}\n\t\t}\n\t}\n\n\t// If not already an absolute path, the Dockerfile path should be joined to\n\t// the base directory.\n\tif !filepath.IsAbs(absDockerfile) {\n\t\tabsDockerfile = filepath.Join(absContextDir, absDockerfile)\n\t}\n\n\t// Evaluate symlinks in the path to the Dockerfile too.\n\t//\n\t// FIXME. We use isUNC (always false on non-Windows platforms) to workaround\n\t// an issue in golang. On Windows, EvalSymLinks does not work on UNC file\n\t// paths (those starting with \\\\). This hack means that when using links\n\t// on UNC paths, they will not be followed.\n\tif !isUNC(absDockerfile) {\n\t\tabsDockerfile, err = filepath.EvalSymlinks(absDockerfile)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"unable to evaluate symlinks in Dockerfile path: %v\", err)\n\t\t}\n\t}\n\n\tif _, err := os.Lstat(absDockerfile); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"Cannot locate Dockerfile: %q\", absDockerfile)\n\t\t}\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to stat Dockerfile: %v\", err)\n\t}\n\n\tif relDockerfile, err = filepath.Rel(absContextDir, absDockerfile); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to get relative Dockerfile path: %v\", err)\n\t}\n\n\tif strings.HasPrefix(relDockerfile, \"..\"+string(filepath.Separator)) {\n\t\treturn \"\", \"\", fmt.Errorf(\"The Dockerfile (%s) must be within the build context (%s)\", givenDockerfile, givenContextDir)\n\t}\n\n\treturn absContextDir, relDockerfile, nil\n}\n\n// isUNC returns true if the path is UNC (one starting \\\\). It always returns\n// false on Linux.\nfunc isUNC(path string) bool {\n\treturn runtime.GOOS == \"windows\" && strings.HasPrefix(path, `\\\\`)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/context_unix.go",
    "content": "// +build !windows\n\npackage builder\n\nimport (\n\t\"path/filepath\"\n)\n\nfunc getContextRoot(srcPath string) (string, error) {\n\treturn filepath.Join(srcPath, \".\"), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/dockerignore/dockerignore.go",
    "content": "package dockerignore\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// ReadAll reads a .dockerignore file and returns the list of file patterns\n// to ignore. Note this will trim whitespace from each line as well\n// as use GO's \"clean\" func to get the shortest/cleanest path for each.\nfunc ReadAll(reader io.ReadCloser) ([]string, error) {\n\tif reader == nil {\n\t\treturn nil, nil\n\t}\n\tdefer reader.Close()\n\tscanner := bufio.NewScanner(reader)\n\tvar excludes []string\n\n\tfor scanner.Scan() {\n\t\tpattern := strings.TrimSpace(scanner.Text())\n\t\tif pattern == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tpattern = filepath.Clean(pattern)\n\t\tpattern = filepath.ToSlash(pattern)\n\t\texcludes = append(excludes, pattern)\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"Error reading .dockerignore: %v\", err)\n\t}\n\treturn excludes, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/dockerignore.go",
    "content": "package builder\n\nimport (\n\t\"os\"\n\n\t\"github.com/docker/docker/builder/dockerignore\"\n\t\"github.com/docker/docker/pkg/fileutils\"\n)\n\n// DockerIgnoreContext wraps a ModifiableContext to add a method\n// for handling the .dockerignore file at the root of the context.\ntype DockerIgnoreContext struct {\n\tModifiableContext\n}\n\n// Process reads the .dockerignore file at the root of the embedded context.\n// If .dockerignore does not exist in the context, then nil is returned.\n//\n// It can take a list of files to be removed after .dockerignore is removed.\n// This is used for server-side implementations of builders that need to send\n// the .dockerignore file as well as the special files specified in filesToRemove,\n// but expect them to be excluded from the context after they were processed.\n//\n// For example, server-side Dockerfile builders are expected to pass in the name\n// of the Dockerfile to be removed after it was parsed.\n//\n// TODO: Don't require a ModifiableContext (use Context instead) and don't remove\n// files, instead handle a list of files to be excluded from the context.\nfunc (c DockerIgnoreContext) Process(filesToRemove []string) error {\n\tf, err := c.Open(\".dockerignore\")\n\t// Note that a missing .dockerignore file isn't treated as an error\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\texcludes, _ := dockerignore.ReadAll(f)\n\tfilesToRemove = append([]string{\".dockerignore\"}, filesToRemove...)\n\tfor _, fileToRemove := range filesToRemove {\n\t\trm, _ := fileutils.Matches(fileToRemove, excludes)\n\t\tif rm {\n\t\t\tc.Remove(fileToRemove)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/git.go",
    "content": "package builder\n\nimport (\n\t\"os\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/gitutils\"\n)\n\n// MakeGitContext returns a Context from gitURL that is cloned in a temporary directory.\nfunc MakeGitContext(gitURL string) (ModifiableContext, error) {\n\troot, err := gitutils.Clone(gitURL)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc, err := archive.Tar(root, archive.Uncompressed)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\t// TODO: print errors?\n\t\tc.Close()\n\t\tos.RemoveAll(root)\n\t}()\n\treturn MakeTarSumContext(c)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/remote.go",
    "content": "package builder\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"regexp\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/httputils\"\n\t\"github.com/docker/docker/pkg/urlutil\"\n)\n\n// When downloading remote contexts, limit the amount (in bytes)\n// to be read from the response body in order to detect its Content-Type\nconst maxPreambleLength = 100\n\nconst acceptableRemoteMIME = `(?:application/(?:(?:x\\-)?tar|octet\\-stream|((?:x\\-)?(?:gzip|bzip2?|xz)))|(?:text/plain))`\n\nvar mimeRe = regexp.MustCompile(acceptableRemoteMIME)\n\n// MakeRemoteContext downloads a context from remoteURL and returns it.\n//\n// If contentTypeHandlers is non-nil, then the Content-Type header is read along with a maximum of\n// maxPreambleLength bytes from the body to help detecting the MIME type.\n// Look at acceptableRemoteMIME for more details.\n//\n// If a match is found, then the body is sent to the contentType handler and a (potentially compressed) tar stream is expected\n// to be returned. If no match is found, it is assumed the body is a tar stream (compressed or not).\n// In either case, an (assumed) tar stream is passed to MakeTarSumContext whose result is returned.\nfunc MakeRemoteContext(remoteURL string, contentTypeHandlers map[string]func(io.ReadCloser) (io.ReadCloser, error)) (ModifiableContext, error) {\n\tf, err := httputils.Download(remoteURL)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error downloading remote context %s: %v\", remoteURL, err)\n\t}\n\tdefer f.Body.Close()\n\n\tvar contextReader io.ReadCloser\n\tif contentTypeHandlers != nil {\n\t\tcontentType := f.Header.Get(\"Content-Type\")\n\t\tclen := f.ContentLength\n\n\t\tcontentType, contextReader, err = inspectResponse(contentType, f.Body, clen)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Error detecting content type for remote %s: %v\", remoteURL, err)\n\t\t}\n\t\tdefer contextReader.Close()\n\n\t\t// This loop tries to find a content-type handler for the detected content-type.\n\t\t// If it could not find one from the caller-supplied map, it tries the empty content-type `\"\"`\n\t\t// which is interpreted as a fallback handler (usually used for raw tar contexts).\n\t\tfor _, ct := range []string{contentType, \"\"} {\n\t\t\tif fn, ok := contentTypeHandlers[ct]; ok {\n\t\t\t\tdefer contextReader.Close()\n\t\t\t\tif contextReader, err = fn(contextReader); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass through - this is a pre-packaged context, presumably\n\t// with a Dockerfile with the right name inside it.\n\treturn MakeTarSumContext(contextReader)\n}\n\n// DetectContextFromRemoteURL returns a context and in certain cases the name of the dockerfile to be used\n// irrespective of user input.\n// progressReader is only used if remoteURL is actually a URL (not empty, and not a Git endpoint).\nfunc DetectContextFromRemoteURL(r io.ReadCloser, remoteURL string, createProgressReader func(in io.ReadCloser) io.ReadCloser) (context ModifiableContext, dockerfileName string, err error) {\n\tswitch {\n\tcase remoteURL == \"\":\n\t\tcontext, err = MakeTarSumContext(r)\n\tcase urlutil.IsGitURL(remoteURL):\n\t\tcontext, err = MakeGitContext(remoteURL)\n\tcase urlutil.IsURL(remoteURL):\n\t\tcontext, err = MakeRemoteContext(remoteURL, map[string]func(io.ReadCloser) (io.ReadCloser, error){\n\t\t\thttputils.MimeTypes.TextPlain: func(rc io.ReadCloser) (io.ReadCloser, error) {\n\t\t\t\tdockerfile, err := ioutil.ReadAll(rc)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\t// dockerfileName is set to signal that the remote was interpreted as a single Dockerfile, in which case the caller\n\t\t\t\t// should use dockerfileName as the new name for the Dockerfile, irrespective of any other user input.\n\t\t\t\tdockerfileName = DefaultDockerfileName\n\n\t\t\t\t// TODO: return a context without tarsum\n\t\t\t\treturn archive.Generate(dockerfileName, string(dockerfile))\n\t\t\t},\n\t\t\t// fallback handler (tar context)\n\t\t\t\"\": func(rc io.ReadCloser) (io.ReadCloser, error) {\n\t\t\t\treturn createProgressReader(rc), nil\n\t\t\t},\n\t\t})\n\tdefault:\n\t\terr = fmt.Errorf(\"remoteURL (%s) could not be recognized as URL\", remoteURL)\n\t}\n\treturn\n}\n\n// inspectResponse looks into the http response data at r to determine whether its\n// content-type is on the list of acceptable content types for remote build contexts.\n// This function returns:\n//    - a string representation of the detected content-type\n//    - an io.Reader for the response body\n//    - an error value which will be non-nil either when something goes wrong while\n//      reading bytes from r or when the detected content-type is not acceptable.\nfunc inspectResponse(ct string, r io.ReadCloser, clen int64) (string, io.ReadCloser, error) {\n\tplen := clen\n\tif plen <= 0 || plen > maxPreambleLength {\n\t\tplen = maxPreambleLength\n\t}\n\n\tpreamble := make([]byte, plen, plen)\n\trlen, err := r.Read(preamble)\n\tif rlen == 0 {\n\t\treturn ct, r, errors.New(\"Empty response\")\n\t}\n\tif err != nil && err != io.EOF {\n\t\treturn ct, r, err\n\t}\n\n\tpreambleR := bytes.NewReader(preamble)\n\tbodyReader := ioutil.NopCloser(io.MultiReader(preambleR, r))\n\t// Some web servers will use application/octet-stream as the default\n\t// content type for files without an extension (e.g. 'Dockerfile')\n\t// so if we receive this value we better check for text content\n\tcontentType := ct\n\tif len(ct) == 0 || ct == httputils.MimeTypes.OctetStream {\n\t\tcontentType, _, err = httputils.DetectContentType(preamble)\n\t\tif err != nil {\n\t\t\treturn contentType, bodyReader, err\n\t\t}\n\t}\n\n\tcontentType = selectAcceptableMIME(contentType)\n\tvar cterr error\n\tif len(contentType) == 0 {\n\t\tcterr = fmt.Errorf(\"unsupported Content-Type %q\", ct)\n\t\tcontentType = ct\n\t}\n\n\treturn contentType, bodyReader, cterr\n}\n\nfunc selectAcceptableMIME(ct string) string {\n\treturn mimeRe.FindString(ct)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/builder/tarsum.go",
    "content": "package builder\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/chrootarchive\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/docker/docker/pkg/symlink\"\n\t\"github.com/docker/docker/pkg/tarsum\"\n)\n\ntype tarSumContext struct {\n\troot string\n\tsums tarsum.FileInfoSums\n}\n\nfunc (c *tarSumContext) Close() error {\n\treturn os.RemoveAll(c.root)\n}\n\nfunc convertPathError(err error, cleanpath string) error {\n\tif err, ok := err.(*os.PathError); ok {\n\t\terr.Path = cleanpath\n\t\treturn err\n\t}\n\treturn err\n}\n\nfunc (c *tarSumContext) Open(path string) (io.ReadCloser, error) {\n\tcleanpath, fullpath, err := c.normalize(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tr, err := os.Open(fullpath)\n\tif err != nil {\n\t\treturn nil, convertPathError(err, cleanpath)\n\t}\n\treturn r, nil\n}\n\nfunc (c *tarSumContext) Stat(path string) (string, FileInfo, error) {\n\tcleanpath, fullpath, err := c.normalize(path)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\tst, err := os.Lstat(fullpath)\n\tif err != nil {\n\t\treturn \"\", nil, convertPathError(err, cleanpath)\n\t}\n\n\trel, err := filepath.Rel(c.root, fullpath)\n\tif err != nil {\n\t\treturn \"\", nil, convertPathError(err, cleanpath)\n\t}\n\n\t// We set sum to path by default for the case where GetFile returns nil.\n\t// The usual case is if relative path is empty.\n\tsum := path\n\t// Use the checksum of the followed path(not the possible symlink) because\n\t// this is the file that is actually copied.\n\tif tsInfo := c.sums.GetFile(rel); tsInfo != nil {\n\t\tsum = tsInfo.Sum()\n\t}\n\tfi := &HashedFileInfo{PathFileInfo{st, fullpath, filepath.Base(cleanpath)}, sum}\n\treturn rel, fi, nil\n}\n\n// MakeTarSumContext returns a build Context from a tar stream.\n//\n// It extracts the tar stream to a temporary folder that is deleted as soon as\n// the Context is closed.\n// As the extraction happens, a tarsum is calculated for every file, and the set of\n// all those sums then becomes the source of truth for all operations on this Context.\n//\n// Closing tarStream has to be done by the caller.\nfunc MakeTarSumContext(tarStream io.Reader) (ModifiableContext, error) {\n\troot, err := ioutils.TempDir(\"\", \"docker-builder\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttsc := &tarSumContext{root: root}\n\n\t// Make sure we clean-up upon error.  In the happy case the caller\n\t// is expected to manage the clean-up\n\tdefer func() {\n\t\tif err != nil {\n\t\t\ttsc.Close()\n\t\t}\n\t}()\n\n\tdecompressedStream, err := archive.DecompressStream(tarStream)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsum, err := tarsum.NewTarSum(decompressedStream, true, tarsum.Version1)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := chrootarchive.Untar(sum, root, nil); err != nil {\n\t\treturn nil, err\n\t}\n\n\ttsc.sums = sum.GetSums()\n\n\treturn tsc, nil\n}\n\nfunc (c *tarSumContext) normalize(path string) (cleanpath, fullpath string, err error) {\n\tcleanpath = filepath.Clean(string(os.PathSeparator) + path)[1:]\n\tfullpath, err = symlink.FollowSymlinkInScope(filepath.Join(c.root, path), c.root)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"Forbidden path outside the build context: %s (%s)\", path, fullpath)\n\t}\n\t_, err = os.Lstat(fullpath)\n\tif err != nil {\n\t\treturn \"\", \"\", convertPathError(err, path)\n\t}\n\treturn\n}\n\nfunc (c *tarSumContext) Walk(root string, walkFn WalkFunc) error {\n\troot = filepath.Join(c.root, filepath.Join(string(filepath.Separator), root))\n\treturn filepath.Walk(root, func(fullpath string, info os.FileInfo, err error) error {\n\t\trel, err := filepath.Rel(c.root, fullpath)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif rel == \".\" {\n\t\t\treturn nil\n\t\t}\n\n\t\tsum := rel\n\t\tif tsInfo := c.sums.GetFile(rel); tsInfo != nil {\n\t\t\tsum = tsInfo.Sum()\n\t\t}\n\t\tfi := &HashedFileInfo{PathFileInfo{FileInfo: info, FilePath: fullpath}, sum}\n\t\tif err := walkFn(rel, fi, nil); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n\nfunc (c *tarSumContext) Remove(path string) error {\n\t_, fullpath, err := c.normalize(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn os.RemoveAll(fullpath)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/cliconfig/config.go",
    "content": "package cliconfig\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/homedir\"\n\t\"github.com/docker/engine-api/types\"\n)\n\nconst (\n\t// ConfigFileName is the name of config file\n\tConfigFileName = \"config.json\"\n\tconfigFileDir  = \".docker\"\n\toldConfigfile  = \".dockercfg\"\n\n\t// This constant is only used for really old config files when the\n\t// URL wasn't saved as part of the config file and it was just\n\t// assumed to be this value.\n\tdefaultIndexserver = \"https://index.docker.io/v1/\"\n)\n\nvar (\n\tconfigDir = os.Getenv(\"DOCKER_CONFIG\")\n)\n\nfunc init() {\n\tif configDir == \"\" {\n\t\tconfigDir = filepath.Join(homedir.Get(), configFileDir)\n\t}\n}\n\n// ConfigDir returns the directory the configuration file is stored in\nfunc ConfigDir() string {\n\treturn configDir\n}\n\n// SetConfigDir sets the directory the configuration file is stored in\nfunc SetConfigDir(dir string) {\n\tconfigDir = dir\n}\n\n// ConfigFile ~/.docker/config.json file info\ntype ConfigFile struct {\n\tAuthConfigs      map[string]types.AuthConfig `json:\"auths\"`\n\tHTTPHeaders      map[string]string           `json:\"HttpHeaders,omitempty\"`\n\tPsFormat         string                      `json:\"psFormat,omitempty\"`\n\tImagesFormat     string                      `json:\"imagesFormat,omitempty\"`\n\tDetachKeys       string                      `json:\"detachKeys,omitempty\"`\n\tCredentialsStore string                      `json:\"credsStore,omitempty\"`\n\tfilename         string                      // Note: not serialized - for internal use only\n}\n\n// NewConfigFile initializes an empty configuration file for the given filename 'fn'\nfunc NewConfigFile(fn string) *ConfigFile {\n\treturn &ConfigFile{\n\t\tAuthConfigs: make(map[string]types.AuthConfig),\n\t\tHTTPHeaders: make(map[string]string),\n\t\tfilename:    fn,\n\t}\n}\n\n// LegacyLoadFromReader reads the non-nested configuration data given and sets up the\n// auth config information with given directory and populates the receiver object\nfunc (configFile *ConfigFile) LegacyLoadFromReader(configData io.Reader) error {\n\tb, err := ioutil.ReadAll(configData)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := json.Unmarshal(b, &configFile.AuthConfigs); err != nil {\n\t\tarr := strings.Split(string(b), \"\\n\")\n\t\tif len(arr) < 2 {\n\t\t\treturn fmt.Errorf(\"The Auth config file is empty\")\n\t\t}\n\t\tauthConfig := types.AuthConfig{}\n\t\torigAuth := strings.Split(arr[0], \" = \")\n\t\tif len(origAuth) != 2 {\n\t\t\treturn fmt.Errorf(\"Invalid Auth config file\")\n\t\t}\n\t\tauthConfig.Username, authConfig.Password, err = decodeAuth(origAuth[1])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tauthConfig.ServerAddress = defaultIndexserver\n\t\tconfigFile.AuthConfigs[defaultIndexserver] = authConfig\n\t} else {\n\t\tfor k, authConfig := range configFile.AuthConfigs {\n\t\t\tauthConfig.Username, authConfig.Password, err = decodeAuth(authConfig.Auth)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tauthConfig.Auth = \"\"\n\t\t\tauthConfig.ServerAddress = k\n\t\t\tconfigFile.AuthConfigs[k] = authConfig\n\t\t}\n\t}\n\treturn nil\n}\n\n// LoadFromReader reads the configuration data given and sets up the auth config\n// information with given directory and populates the receiver object\nfunc (configFile *ConfigFile) LoadFromReader(configData io.Reader) error {\n\tif err := json.NewDecoder(configData).Decode(&configFile); err != nil {\n\t\treturn err\n\t}\n\tvar err error\n\tfor addr, ac := range configFile.AuthConfigs {\n\t\tac.Username, ac.Password, err = decodeAuth(ac.Auth)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tac.Auth = \"\"\n\t\tac.ServerAddress = addr\n\t\tconfigFile.AuthConfigs[addr] = ac\n\t}\n\treturn nil\n}\n\n// ContainsAuth returns whether there is authentication configured\n// in this file or not.\nfunc (configFile *ConfigFile) ContainsAuth() bool {\n\treturn configFile.CredentialsStore != \"\" ||\n\t\t(configFile.AuthConfigs != nil && len(configFile.AuthConfigs) > 0)\n}\n\n// LegacyLoadFromReader is a convenience function that creates a ConfigFile object from\n// a non-nested reader\nfunc LegacyLoadFromReader(configData io.Reader) (*ConfigFile, error) {\n\tconfigFile := ConfigFile{\n\t\tAuthConfigs: make(map[string]types.AuthConfig),\n\t}\n\terr := configFile.LegacyLoadFromReader(configData)\n\treturn &configFile, err\n}\n\n// LoadFromReader is a convenience function that creates a ConfigFile object from\n// a reader\nfunc LoadFromReader(configData io.Reader) (*ConfigFile, error) {\n\tconfigFile := ConfigFile{\n\t\tAuthConfigs: make(map[string]types.AuthConfig),\n\t}\n\terr := configFile.LoadFromReader(configData)\n\treturn &configFile, err\n}\n\n// Load reads the configuration files in the given directory, and sets up\n// the auth config information and return values.\n// FIXME: use the internal golang config parser\nfunc Load(configDir string) (*ConfigFile, error) {\n\tif configDir == \"\" {\n\t\tconfigDir = ConfigDir()\n\t}\n\n\tconfigFile := ConfigFile{\n\t\tAuthConfigs: make(map[string]types.AuthConfig),\n\t\tfilename:    filepath.Join(configDir, ConfigFileName),\n\t}\n\n\t// Try happy path first - latest config file\n\tif _, err := os.Stat(configFile.filename); err == nil {\n\t\tfile, err := os.Open(configFile.filename)\n\t\tif err != nil {\n\t\t\treturn &configFile, fmt.Errorf(\"%s - %v\", configFile.filename, err)\n\t\t}\n\t\tdefer file.Close()\n\t\terr = configFile.LoadFromReader(file)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"%s - %v\", configFile.filename, err)\n\t\t}\n\t\treturn &configFile, err\n\t} else if !os.IsNotExist(err) {\n\t\t// if file is there but we can't stat it for any reason other\n\t\t// than it doesn't exist then stop\n\t\treturn &configFile, fmt.Errorf(\"%s - %v\", configFile.filename, err)\n\t}\n\n\t// Can't find latest config file so check for the old one\n\tconfFile := filepath.Join(homedir.Get(), oldConfigfile)\n\tif _, err := os.Stat(confFile); err != nil {\n\t\treturn &configFile, nil //missing file is not an error\n\t}\n\tfile, err := os.Open(confFile)\n\tif err != nil {\n\t\treturn &configFile, fmt.Errorf(\"%s - %v\", confFile, err)\n\t}\n\tdefer file.Close()\n\terr = configFile.LegacyLoadFromReader(file)\n\tif err != nil {\n\t\treturn &configFile, fmt.Errorf(\"%s - %v\", confFile, err)\n\t}\n\n\tif configFile.HTTPHeaders == nil {\n\t\tconfigFile.HTTPHeaders = map[string]string{}\n\t}\n\treturn &configFile, nil\n}\n\n// SaveToWriter encodes and writes out all the authorization information to\n// the given writer\nfunc (configFile *ConfigFile) SaveToWriter(writer io.Writer) error {\n\t// Encode sensitive data into a new/temp struct\n\ttmpAuthConfigs := make(map[string]types.AuthConfig, len(configFile.AuthConfigs))\n\tfor k, authConfig := range configFile.AuthConfigs {\n\t\tauthCopy := authConfig\n\t\t// encode and save the authstring, while blanking out the original fields\n\t\tauthCopy.Auth = encodeAuth(&authCopy)\n\t\tauthCopy.Username = \"\"\n\t\tauthCopy.Password = \"\"\n\t\tauthCopy.ServerAddress = \"\"\n\t\ttmpAuthConfigs[k] = authCopy\n\t}\n\n\tsaveAuthConfigs := configFile.AuthConfigs\n\tconfigFile.AuthConfigs = tmpAuthConfigs\n\tdefer func() { configFile.AuthConfigs = saveAuthConfigs }()\n\n\tdata, err := json.MarshalIndent(configFile, \"\", \"\\t\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = writer.Write(data)\n\treturn err\n}\n\n// Save encodes and writes out all the authorization information\nfunc (configFile *ConfigFile) Save() error {\n\tif configFile.Filename() == \"\" {\n\t\treturn fmt.Errorf(\"Can't save config with empty filename\")\n\t}\n\n\tif err := os.MkdirAll(filepath.Dir(configFile.filename), 0700); err != nil {\n\t\treturn err\n\t}\n\tf, err := os.OpenFile(configFile.filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\treturn configFile.SaveToWriter(f)\n}\n\n// Filename returns the name of the configuration file\nfunc (configFile *ConfigFile) Filename() string {\n\treturn configFile.filename\n}\n\n// encodeAuth creates a base64 encoded string to containing authorization information\nfunc encodeAuth(authConfig *types.AuthConfig) string {\n\tif authConfig.Username == \"\" && authConfig.Password == \"\" {\n\t\treturn \"\"\n\t}\n\n\tauthStr := authConfig.Username + \":\" + authConfig.Password\n\tmsg := []byte(authStr)\n\tencoded := make([]byte, base64.StdEncoding.EncodedLen(len(msg)))\n\tbase64.StdEncoding.Encode(encoded, msg)\n\treturn string(encoded)\n}\n\n// decodeAuth decodes a base64 encoded string and returns username and password\nfunc decodeAuth(authStr string) (string, string, error) {\n\tif authStr == \"\" {\n\t\treturn \"\", \"\", nil\n\t}\n\n\tdecLen := base64.StdEncoding.DecodedLen(len(authStr))\n\tdecoded := make([]byte, decLen)\n\tauthByte := []byte(authStr)\n\tn, err := base64.StdEncoding.Decode(decoded, authByte)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\tif n > decLen {\n\t\treturn \"\", \"\", fmt.Errorf(\"Something went wrong decoding auth config\")\n\t}\n\tarr := strings.SplitN(string(decoded), \":\", 2)\n\tif len(arr) != 2 {\n\t\treturn \"\", \"\", fmt.Errorf(\"Invalid auth configuration file\")\n\t}\n\tpassword := strings.Trim(arr[1], \"\\x00\")\n\treturn arr[0], password, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/counter.go",
    "content": "package graphdriver\n\nimport \"sync\"\n\n// RefCounter is a generic counter for use by graphdriver Get/Put calls\ntype RefCounter struct {\n\tcounts map[string]int\n\tmu     sync.Mutex\n}\n\n// NewRefCounter returns a new RefCounter\nfunc NewRefCounter() *RefCounter {\n\treturn &RefCounter{counts: make(map[string]int)}\n}\n\n// Increment increaes the ref count for the given id and returns the current count\nfunc (c *RefCounter) Increment(id string) int {\n\tc.mu.Lock()\n\tc.counts[id]++\n\tcount := c.counts[id]\n\tc.mu.Unlock()\n\treturn count\n}\n\n// Decrement decreases the ref count for the given id and returns the current count\nfunc (c *RefCounter) Decrement(id string) int {\n\tc.mu.Lock()\n\tc.counts[id]--\n\tcount := c.counts[id]\n\tc.mu.Unlock()\n\treturn count\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/driver.go",
    "content": "package graphdriver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/vbatts/tar-split/tar/storage\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/idtools\"\n)\n\n// FsMagic unsigned id of the filesystem in use.\ntype FsMagic uint32\n\nconst (\n\t// FsMagicUnsupported is a predefined constant value other than a valid filesystem id.\n\tFsMagicUnsupported = FsMagic(0x00000000)\n)\n\nvar (\n\t// All registered drivers\n\tdrivers map[string]InitFunc\n\n\t// ErrNotSupported returned when driver is not supported.\n\tErrNotSupported = errors.New(\"driver not supported\")\n\t// ErrPrerequisites retuned when driver does not meet prerequisites.\n\tErrPrerequisites = errors.New(\"prerequisites for driver not satisfied (wrong filesystem?)\")\n\t// ErrIncompatibleFS returned when file system is not supported.\n\tErrIncompatibleFS = fmt.Errorf(\"backing file system is unsupported for this graph driver\")\n)\n\n// InitFunc initializes the storage driver.\ntype InitFunc func(root string, options []string, uidMaps, gidMaps []idtools.IDMap) (Driver, error)\n\n// ProtoDriver defines the basic capabilities of a driver.\n// This interface exists solely to be a minimum set of methods\n// for client code which choose not to implement the entire Driver\n// interface and use the NaiveDiffDriver wrapper constructor.\n//\n// Use of ProtoDriver directly by client code is not recommended.\ntype ProtoDriver interface {\n\t// String returns a string representation of this driver.\n\tString() string\n\t// Create creates a new, empty, filesystem layer with the\n\t// specified id and parent and mountLabel. Parent and mountLabel may be \"\".\n\tCreate(id, parent, mountLabel string) error\n\t// Remove attempts to remove the filesystem layer with this id.\n\tRemove(id string) error\n\t// Get returns the mountpoint for the layered filesystem referred\n\t// to by this id. You can optionally specify a mountLabel or \"\".\n\t// Returns the absolute path to the mounted layered filesystem.\n\tGet(id, mountLabel string) (dir string, err error)\n\t// Put releases the system resources for the specified id,\n\t// e.g, unmounting layered filesystem.\n\tPut(id string) error\n\t// Exists returns whether a filesystem layer with the specified\n\t// ID exists on this driver.\n\tExists(id string) bool\n\t// Status returns a set of key-value pairs which give low\n\t// level diagnostic status about this driver.\n\tStatus() [][2]string\n\t// Returns a set of key-value pairs which give low level information\n\t// about the image/container driver is managing.\n\tGetMetadata(id string) (map[string]string, error)\n\t// Cleanup performs necessary tasks to release resources\n\t// held by the driver, e.g., unmounting all layered filesystems\n\t// known to this driver.\n\tCleanup() error\n}\n\n// Driver is the interface for layered/snapshot file system drivers.\ntype Driver interface {\n\tProtoDriver\n\t// Diff produces an archive of the changes between the specified\n\t// layer and its parent layer which may be \"\".\n\tDiff(id, parent string) (archive.Archive, error)\n\t// Changes produces a list of changes between the specified layer\n\t// and its parent layer. If parent is \"\", then all changes will be ADD changes.\n\tChanges(id, parent string) ([]archive.Change, error)\n\t// ApplyDiff extracts the changeset from the given diff into the\n\t// layer with the specified id and parent, returning the size of the\n\t// new layer in bytes.\n\t// The archive.Reader must be an uncompressed stream.\n\tApplyDiff(id, parent string, diff archive.Reader) (size int64, err error)\n\t// DiffSize calculates the changes between the specified id\n\t// and its parent and returns the size in bytes of the changes\n\t// relative to its base filesystem directory.\n\tDiffSize(id, parent string) (size int64, err error)\n}\n\n// DiffGetterDriver is the interface for layered file system drivers that\n// provide a specialized function for getting file contents for tar-split.\ntype DiffGetterDriver interface {\n\tDriver\n\t// DiffGetter returns an interface to efficiently retrieve the contents\n\t// of files in a layer.\n\tDiffGetter(id string) (FileGetCloser, error)\n}\n\n// FileGetCloser extends the storage.FileGetter interface with a Close method\n// for cleaning up.\ntype FileGetCloser interface {\n\tstorage.FileGetter\n\t// Close cleans up any resources associated with the FileGetCloser.\n\tClose() error\n}\n\nfunc init() {\n\tdrivers = make(map[string]InitFunc)\n}\n\n// Register registers a InitFunc for the driver.\nfunc Register(name string, initFunc InitFunc) error {\n\tif _, exists := drivers[name]; exists {\n\t\treturn fmt.Errorf(\"Name already registered %s\", name)\n\t}\n\tdrivers[name] = initFunc\n\n\treturn nil\n}\n\n// GetDriver initializes and returns the registered driver\nfunc GetDriver(name, home string, options []string, uidMaps, gidMaps []idtools.IDMap) (Driver, error) {\n\tif initFunc, exists := drivers[name]; exists {\n\t\treturn initFunc(filepath.Join(home, name), options, uidMaps, gidMaps)\n\t}\n\tif pluginDriver, err := lookupPlugin(name, home, options); err == nil {\n\t\treturn pluginDriver, nil\n\t}\n\tlogrus.Errorf(\"Failed to GetDriver graph %s %s\", name, home)\n\treturn nil, ErrNotSupported\n}\n\n// getBuiltinDriver initializes and returns the registered driver, but does not try to load from plugins\nfunc getBuiltinDriver(name, home string, options []string, uidMaps, gidMaps []idtools.IDMap) (Driver, error) {\n\tif initFunc, exists := drivers[name]; exists {\n\t\treturn initFunc(filepath.Join(home, name), options, uidMaps, gidMaps)\n\t}\n\tlogrus.Errorf(\"Failed to built-in GetDriver graph %s %s\", name, home)\n\treturn nil, ErrNotSupported\n}\n\n// New creates the driver and initializes it at the specified root.\nfunc New(root string, name string, options []string, uidMaps, gidMaps []idtools.IDMap) (Driver, error) {\n\tif name != \"\" {\n\t\tlogrus.Debugf(\"[graphdriver] trying provided driver %q\", name) // so the logs show specified driver\n\t\treturn GetDriver(name, root, options, uidMaps, gidMaps)\n\t}\n\n\t// Guess for prior driver\n\tdriversMap := scanPriorDrivers(root)\n\tfor _, name := range priority {\n\t\tif name == \"vfs\" {\n\t\t\t// don't use vfs even if there is state present.\n\t\t\tcontinue\n\t\t}\n\t\tif _, prior := driversMap[name]; prior {\n\t\t\t// of the state found from prior drivers, check in order of our priority\n\t\t\t// which we would prefer\n\t\t\tdriver, err := getBuiltinDriver(name, root, options, uidMaps, gidMaps)\n\t\t\tif err != nil {\n\t\t\t\t// unlike below, we will return error here, because there is prior\n\t\t\t\t// state, and now it is no longer supported/prereq/compatible, so\n\t\t\t\t// something changed and needs attention. Otherwise the daemon's\n\t\t\t\t// images would just \"disappear\".\n\t\t\t\tlogrus.Errorf(\"[graphdriver] prior storage driver %q failed: %s\", name, err)\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\t// abort starting when there are other prior configured drivers\n\t\t\t// to ensure the user explicitly selects the driver to load\n\t\t\tif len(driversMap)-1 > 0 {\n\t\t\t\tvar driversSlice []string\n\t\t\t\tfor name := range driversMap {\n\t\t\t\t\tdriversSlice = append(driversSlice, name)\n\t\t\t\t}\n\n\t\t\t\treturn nil, fmt.Errorf(\"%q contains several valid graphdrivers: %s; Please cleanup or explicitly choose storage driver (-s <DRIVER>)\", root, strings.Join(driversSlice, \", \"))\n\t\t\t}\n\n\t\t\tlogrus.Infof(\"[graphdriver] using prior storage driver %q\", name)\n\t\t\treturn driver, nil\n\t\t}\n\t}\n\n\t// Check for priority drivers first\n\tfor _, name := range priority {\n\t\tdriver, err := getBuiltinDriver(name, root, options, uidMaps, gidMaps)\n\t\tif err != nil {\n\t\t\tif isDriverNotSupported(err) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\treturn driver, nil\n\t}\n\n\t// Check all registered drivers if no priority driver is found\n\tfor name, initFunc := range drivers {\n\t\tdriver, err := initFunc(filepath.Join(root, name), options, uidMaps, gidMaps)\n\t\tif err != nil {\n\t\t\tif isDriverNotSupported(err) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\treturn driver, nil\n\t}\n\treturn nil, fmt.Errorf(\"No supported storage backend found\")\n}\n\n// isDriverNotSupported returns true if the error initializing\n// the graph driver is a non-supported error.\nfunc isDriverNotSupported(err error) bool {\n\treturn err == ErrNotSupported || err == ErrPrerequisites || err == ErrIncompatibleFS\n}\n\n// scanPriorDrivers returns an un-ordered scan of directories of prior storage drivers\nfunc scanPriorDrivers(root string) map[string]bool {\n\tdriversMap := make(map[string]bool)\n\n\tfor driver := range drivers {\n\t\tp := filepath.Join(root, driver)\n\t\tif _, err := os.Stat(p); err == nil && driver != \"vfs\" {\n\t\t\tdriversMap[driver] = true\n\t\t}\n\t}\n\treturn driversMap\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/driver_freebsd.go",
    "content": "package graphdriver\n\nimport \"syscall\"\n\nvar (\n\t// Slice of drivers that should be used in an order\n\tpriority = []string{\n\t\t\"zfs\",\n\t}\n)\n\n// Mounted checks if the given path is mounted as the fs type\nfunc Mounted(fsType FsMagic, mountPath string) (bool, error) {\n\tvar buf syscall.Statfs_t\n\tif err := syscall.Statfs(mountPath, &buf); err != nil {\n\t\treturn false, err\n\t}\n\treturn FsMagic(buf.Type) == fsType, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/driver_linux.go",
    "content": "// +build linux\n\npackage graphdriver\n\nimport (\n\t\"path/filepath\"\n\t\"syscall\"\n)\n\nconst (\n\t// FsMagicAufs filesystem id for Aufs\n\tFsMagicAufs = FsMagic(0x61756673)\n\t// FsMagicBtrfs filesystem id for Btrfs\n\tFsMagicBtrfs = FsMagic(0x9123683E)\n\t// FsMagicCramfs filesystem id for Cramfs\n\tFsMagicCramfs = FsMagic(0x28cd3d45)\n\t// FsMagicExtfs filesystem id for Extfs\n\tFsMagicExtfs = FsMagic(0x0000EF53)\n\t// FsMagicF2fs filesystem id for F2fs\n\tFsMagicF2fs = FsMagic(0xF2F52010)\n\t// FsMagicGPFS filesystem id for GPFS\n\tFsMagicGPFS = FsMagic(0x47504653)\n\t// FsMagicJffs2Fs filesystem if for Jffs2Fs\n\tFsMagicJffs2Fs = FsMagic(0x000072b6)\n\t// FsMagicJfs filesystem id for Jfs\n\tFsMagicJfs = FsMagic(0x3153464a)\n\t// FsMagicNfsFs filesystem id for NfsFs\n\tFsMagicNfsFs = FsMagic(0x00006969)\n\t// FsMagicRAMFs filesystem id for RamFs\n\tFsMagicRAMFs = FsMagic(0x858458f6)\n\t// FsMagicReiserFs filesystem id for ReiserFs\n\tFsMagicReiserFs = FsMagic(0x52654973)\n\t// FsMagicSmbFs filesystem id for SmbFs\n\tFsMagicSmbFs = FsMagic(0x0000517B)\n\t// FsMagicSquashFs filesystem id for SquashFs\n\tFsMagicSquashFs = FsMagic(0x73717368)\n\t// FsMagicTmpFs filesystem id for TmpFs\n\tFsMagicTmpFs = FsMagic(0x01021994)\n\t// FsMagicVxFS filesystem id for VxFs\n\tFsMagicVxFS = FsMagic(0xa501fcf5)\n\t// FsMagicXfs filesystem id for Xfs\n\tFsMagicXfs = FsMagic(0x58465342)\n\t// FsMagicZfs filesystem id for Zfs\n\tFsMagicZfs = FsMagic(0x2fc12fc1)\n\t// FsMagicOverlay filesystem id for overlay\n\tFsMagicOverlay = FsMagic(0x794C7630)\n)\n\nvar (\n\t// Slice of drivers that should be used in an order\n\tpriority = []string{\n\t\t\"aufs\",\n\t\t\"btrfs\",\n\t\t\"zfs\",\n\t\t\"devicemapper\",\n\t\t\"overlay\",\n\t\t\"vfs\",\n\t}\n\n\t// FsNames maps filesystem id to name of the filesystem.\n\tFsNames = map[FsMagic]string{\n\t\tFsMagicAufs:        \"aufs\",\n\t\tFsMagicBtrfs:       \"btrfs\",\n\t\tFsMagicCramfs:      \"cramfs\",\n\t\tFsMagicExtfs:       \"extfs\",\n\t\tFsMagicF2fs:        \"f2fs\",\n\t\tFsMagicGPFS:        \"gpfs\",\n\t\tFsMagicJffs2Fs:     \"jffs2\",\n\t\tFsMagicJfs:         \"jfs\",\n\t\tFsMagicNfsFs:       \"nfs\",\n\t\tFsMagicRAMFs:       \"ramfs\",\n\t\tFsMagicReiserFs:    \"reiserfs\",\n\t\tFsMagicSmbFs:       \"smb\",\n\t\tFsMagicSquashFs:    \"squashfs\",\n\t\tFsMagicTmpFs:       \"tmpfs\",\n\t\tFsMagicUnsupported: \"unsupported\",\n\t\tFsMagicVxFS:        \"vxfs\",\n\t\tFsMagicXfs:         \"xfs\",\n\t\tFsMagicZfs:         \"zfs\",\n\t}\n)\n\n// GetFSMagic returns the filesystem id given the path.\nfunc GetFSMagic(rootpath string) (FsMagic, error) {\n\tvar buf syscall.Statfs_t\n\tif err := syscall.Statfs(filepath.Dir(rootpath), &buf); err != nil {\n\t\treturn 0, err\n\t}\n\treturn FsMagic(buf.Type), nil\n}\n\n// Mounted checks if the given path is mounted as the fs type\nfunc Mounted(fsType FsMagic, mountPath string) (bool, error) {\n\tvar buf syscall.Statfs_t\n\tif err := syscall.Statfs(mountPath, &buf); err != nil {\n\t\treturn false, err\n\t}\n\treturn FsMagic(buf.Type) == fsType, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/driver_unsupported.go",
    "content": "// +build !linux,!windows,!freebsd\n\npackage graphdriver\n\nvar (\n\t// Slice of drivers that should be used in an order\n\tpriority = []string{\n\t\t\"unsupported\",\n\t}\n)\n\n// GetFSMagic returns the filesystem id given the path.\nfunc GetFSMagic(rootpath string) (FsMagic, error) {\n\treturn FsMagicUnsupported, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/fsdiff.go",
    "content": "package graphdriver\n\nimport (\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/chrootarchive\"\n\t\"github.com/docker/docker/pkg/idtools\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n)\n\nvar (\n\t// ApplyUncompressedLayer defines the unpack method used by the graph\n\t// driver.\n\tApplyUncompressedLayer = chrootarchive.ApplyUncompressedLayer\n)\n\n// NaiveDiffDriver takes a ProtoDriver and adds the\n// capability of the Diffing methods which it may or may not\n// support on its own. See the comment on the exported\n// NewNaiveDiffDriver function below.\n// Notably, the AUFS driver doesn't need to be wrapped like this.\ntype NaiveDiffDriver struct {\n\tProtoDriver\n\tuidMaps []idtools.IDMap\n\tgidMaps []idtools.IDMap\n}\n\n// NewNaiveDiffDriver returns a fully functional driver that wraps the\n// given ProtoDriver and adds the capability of the following methods which\n// it may or may not support on its own:\n//     Diff(id, parent string) (archive.Archive, error)\n//     Changes(id, parent string) ([]archive.Change, error)\n//     ApplyDiff(id, parent string, diff archive.Reader) (size int64, err error)\n//     DiffSize(id, parent string) (size int64, err error)\nfunc NewNaiveDiffDriver(driver ProtoDriver, uidMaps, gidMaps []idtools.IDMap) Driver {\n\treturn &NaiveDiffDriver{ProtoDriver: driver,\n\t\tuidMaps: uidMaps,\n\t\tgidMaps: gidMaps}\n}\n\n// Diff produces an archive of the changes between the specified\n// layer and its parent layer which may be \"\".\nfunc (gdw *NaiveDiffDriver) Diff(id, parent string) (arch archive.Archive, err error) {\n\tdriver := gdw.ProtoDriver\n\n\tlayerFs, err := driver.Get(id, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tdriver.Put(id)\n\t\t}\n\t}()\n\n\tif parent == \"\" {\n\t\tarchive, err := archive.Tar(layerFs, archive.Uncompressed)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn ioutils.NewReadCloserWrapper(archive, func() error {\n\t\t\terr := archive.Close()\n\t\t\tdriver.Put(id)\n\t\t\treturn err\n\t\t}), nil\n\t}\n\n\tparentFs, err := driver.Get(parent, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer driver.Put(parent)\n\n\tchanges, err := archive.ChangesDirs(layerFs, parentFs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tarchive, err := archive.ExportChanges(layerFs, changes, gdw.uidMaps, gdw.gidMaps)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ioutils.NewReadCloserWrapper(archive, func() error {\n\t\terr := archive.Close()\n\t\tdriver.Put(id)\n\t\treturn err\n\t}), nil\n}\n\n// Changes produces a list of changes between the specified layer\n// and its parent layer. If parent is \"\", then all changes will be ADD changes.\nfunc (gdw *NaiveDiffDriver) Changes(id, parent string) ([]archive.Change, error) {\n\tdriver := gdw.ProtoDriver\n\n\tlayerFs, err := driver.Get(id, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer driver.Put(id)\n\n\tparentFs := \"\"\n\n\tif parent != \"\" {\n\t\tparentFs, err = driver.Get(parent, \"\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer driver.Put(parent)\n\t}\n\n\treturn archive.ChangesDirs(layerFs, parentFs)\n}\n\n// ApplyDiff extracts the changeset from the given diff into the\n// layer with the specified id and parent, returning the size of the\n// new layer in bytes.\nfunc (gdw *NaiveDiffDriver) ApplyDiff(id, parent string, diff archive.Reader) (size int64, err error) {\n\tdriver := gdw.ProtoDriver\n\n\t// Mount the root filesystem so we can apply the diff/layer.\n\tlayerFs, err := driver.Get(id, \"\")\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer driver.Put(id)\n\n\toptions := &archive.TarOptions{UIDMaps: gdw.uidMaps,\n\t\tGIDMaps: gdw.gidMaps}\n\tstart := time.Now().UTC()\n\tlogrus.Debugf(\"Start untar layer\")\n\tif size, err = ApplyUncompressedLayer(layerFs, diff, options); err != nil {\n\t\treturn\n\t}\n\tlogrus.Debugf(\"Untar time: %vs\", time.Now().UTC().Sub(start).Seconds())\n\n\treturn\n}\n\n// DiffSize calculates the changes between the specified layer\n// and its parent and returns the size in bytes of the changes\n// relative to its base filesystem directory.\nfunc (gdw *NaiveDiffDriver) DiffSize(id, parent string) (size int64, err error) {\n\tdriver := gdw.ProtoDriver\n\n\tchanges, err := gdw.Changes(id, parent)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tlayerFs, err := driver.Get(id, \"\")\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer driver.Put(id)\n\n\treturn archive.ChangesSize(layerFs, changes), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/plugin.go",
    "content": "// +build experimental\n\npackage graphdriver\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/docker/docker/pkg/plugins\"\n)\n\ntype pluginClient interface {\n\t// Call calls the specified method with the specified arguments for the plugin.\n\tCall(string, interface{}, interface{}) error\n\t// Stream calls the specified method with the specified arguments for the plugin and returns the response IO stream\n\tStream(string, interface{}) (io.ReadCloser, error)\n\t// SendFile calls the specified method, and passes through the IO stream\n\tSendFile(string, io.Reader, interface{}) error\n}\n\nfunc lookupPlugin(name, home string, opts []string) (Driver, error) {\n\tpl, err := plugins.Get(name, \"GraphDriver\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error looking up graphdriver plugin %s: %v\", name, err)\n\t}\n\treturn newPluginDriver(name, home, opts, pl.Client)\n}\n\nfunc newPluginDriver(name, home string, opts []string, c pluginClient) (Driver, error) {\n\tproxy := &graphDriverProxy{name, c}\n\treturn proxy, proxy.Init(home, opts)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/plugin_unsupported.go",
    "content": "// +build !experimental\n\npackage graphdriver\n\nfunc lookupPlugin(name, home string, opts []string) (Driver, error) {\n\treturn nil, ErrNotSupported\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/daemon/graphdriver/proxy.go",
    "content": "// +build experimental\n\npackage graphdriver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n)\n\ntype graphDriverProxy struct {\n\tname   string\n\tclient pluginClient\n}\n\ntype graphDriverRequest struct {\n\tID         string `json:\",omitempty\"`\n\tParent     string `json:\",omitempty\"`\n\tMountLabel string `json:\",omitempty\"`\n}\n\ntype graphDriverResponse struct {\n\tErr      string            `json:\",omitempty\"`\n\tDir      string            `json:\",omitempty\"`\n\tExists   bool              `json:\",omitempty\"`\n\tStatus   [][2]string       `json:\",omitempty\"`\n\tChanges  []archive.Change  `json:\",omitempty\"`\n\tSize     int64             `json:\",omitempty\"`\n\tMetadata map[string]string `json:\",omitempty\"`\n}\n\ntype graphDriverInitRequest struct {\n\tHome string\n\tOpts []string\n}\n\nfunc (d *graphDriverProxy) Init(home string, opts []string) error {\n\targs := &graphDriverInitRequest{\n\t\tHome: home,\n\t\tOpts: opts,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Init\", args, &ret); err != nil {\n\t\treturn err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn errors.New(ret.Err)\n\t}\n\treturn nil\n}\n\nfunc (d *graphDriverProxy) String() string {\n\treturn d.name\n}\n\nfunc (d *graphDriverProxy) Create(id, parent, mountLabel string) error {\n\targs := &graphDriverRequest{\n\t\tID:         id,\n\t\tParent:     parent,\n\t\tMountLabel: mountLabel,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Create\", args, &ret); err != nil {\n\t\treturn err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn errors.New(ret.Err)\n\t}\n\treturn nil\n}\n\nfunc (d *graphDriverProxy) Remove(id string) error {\n\targs := &graphDriverRequest{ID: id}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Remove\", args, &ret); err != nil {\n\t\treturn err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn errors.New(ret.Err)\n\t}\n\treturn nil\n}\n\nfunc (d *graphDriverProxy) Get(id, mountLabel string) (string, error) {\n\targs := &graphDriverRequest{\n\t\tID:         id,\n\t\tMountLabel: mountLabel,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Get\", args, &ret); err != nil {\n\t\treturn \"\", err\n\t}\n\tvar err error\n\tif ret.Err != \"\" {\n\t\terr = errors.New(ret.Err)\n\t}\n\treturn ret.Dir, err\n}\n\nfunc (d *graphDriverProxy) Put(id string) error {\n\targs := &graphDriverRequest{ID: id}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Put\", args, &ret); err != nil {\n\t\treturn err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn errors.New(ret.Err)\n\t}\n\treturn nil\n}\n\nfunc (d *graphDriverProxy) Exists(id string) bool {\n\targs := &graphDriverRequest{ID: id}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Exists\", args, &ret); err != nil {\n\t\treturn false\n\t}\n\treturn ret.Exists\n}\n\nfunc (d *graphDriverProxy) Status() [][2]string {\n\targs := &graphDriverRequest{}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Status\", args, &ret); err != nil {\n\t\treturn nil\n\t}\n\treturn ret.Status\n}\n\nfunc (d *graphDriverProxy) GetMetadata(id string) (map[string]string, error) {\n\targs := &graphDriverRequest{\n\t\tID: id,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.GetMetadata\", args, &ret); err != nil {\n\t\treturn nil, err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn nil, errors.New(ret.Err)\n\t}\n\treturn ret.Metadata, nil\n}\n\nfunc (d *graphDriverProxy) Cleanup() error {\n\targs := &graphDriverRequest{}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Cleanup\", args, &ret); err != nil {\n\t\treturn nil\n\t}\n\tif ret.Err != \"\" {\n\t\treturn errors.New(ret.Err)\n\t}\n\treturn nil\n}\n\nfunc (d *graphDriverProxy) Diff(id, parent string) (archive.Archive, error) {\n\targs := &graphDriverRequest{\n\t\tID:     id,\n\t\tParent: parent,\n\t}\n\tbody, err := d.client.Stream(\"GraphDriver.Diff\", args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn archive.Archive(body), nil\n}\n\nfunc (d *graphDriverProxy) Changes(id, parent string) ([]archive.Change, error) {\n\targs := &graphDriverRequest{\n\t\tID:     id,\n\t\tParent: parent,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.Changes\", args, &ret); err != nil {\n\t\treturn nil, err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn nil, errors.New(ret.Err)\n\t}\n\n\treturn ret.Changes, nil\n}\n\nfunc (d *graphDriverProxy) ApplyDiff(id, parent string, diff archive.Reader) (int64, error) {\n\tvar ret graphDriverResponse\n\tif err := d.client.SendFile(fmt.Sprintf(\"GraphDriver.ApplyDiff?id=%s&parent=%s\", id, parent), diff, &ret); err != nil {\n\t\treturn -1, err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn -1, errors.New(ret.Err)\n\t}\n\treturn ret.Size, nil\n}\n\nfunc (d *graphDriverProxy) DiffSize(id, parent string) (int64, error) {\n\targs := &graphDriverRequest{\n\t\tID:     id,\n\t\tParent: parent,\n\t}\n\tvar ret graphDriverResponse\n\tif err := d.client.Call(\"GraphDriver.DiffSize\", args, &ret); err != nil {\n\t\treturn -1, err\n\t}\n\tif ret.Err != \"\" {\n\t\treturn -1, errors.New(ret.Err)\n\t}\n\treturn ret.Size, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/fs.go",
    "content": "package image\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// IDWalkFunc is function called by StoreBackend.Walk\ntype IDWalkFunc func(id ID) error\n\n// StoreBackend provides interface for image.Store persistence\ntype StoreBackend interface {\n\tWalk(f IDWalkFunc) error\n\tGet(id ID) ([]byte, error)\n\tSet(data []byte) (ID, error)\n\tDelete(id ID) error\n\tSetMetadata(id ID, key string, data []byte) error\n\tGetMetadata(id ID, key string) ([]byte, error)\n\tDeleteMetadata(id ID, key string) error\n}\n\n// fs implements StoreBackend using the filesystem.\ntype fs struct {\n\tsync.RWMutex\n\troot string\n}\n\nconst (\n\tcontentDirName  = \"content\"\n\tmetadataDirName = \"metadata\"\n)\n\n// NewFSStoreBackend returns new filesystem based backend for image.Store\nfunc NewFSStoreBackend(root string) (StoreBackend, error) {\n\treturn newFSStore(root)\n}\n\nfunc newFSStore(root string) (*fs, error) {\n\ts := &fs{\n\t\troot: root,\n\t}\n\tif err := os.MkdirAll(filepath.Join(root, contentDirName, string(digest.Canonical)), 0700); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := os.MkdirAll(filepath.Join(root, metadataDirName, string(digest.Canonical)), 0700); err != nil {\n\t\treturn nil, err\n\t}\n\treturn s, nil\n}\n\nfunc (s *fs) contentFile(id ID) string {\n\tdgst := digest.Digest(id)\n\treturn filepath.Join(s.root, contentDirName, string(dgst.Algorithm()), dgst.Hex())\n}\n\nfunc (s *fs) metadataDir(id ID) string {\n\tdgst := digest.Digest(id)\n\treturn filepath.Join(s.root, metadataDirName, string(dgst.Algorithm()), dgst.Hex())\n}\n\n// Walk calls the supplied callback for each image ID in the storage backend.\nfunc (s *fs) Walk(f IDWalkFunc) error {\n\t// Only Canonical digest (sha256) is currently supported\n\ts.RLock()\n\tdir, err := ioutil.ReadDir(filepath.Join(s.root, contentDirName, string(digest.Canonical)))\n\ts.RUnlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, v := range dir {\n\t\tdgst := digest.NewDigestFromHex(string(digest.Canonical), v.Name())\n\t\tif err := dgst.Validate(); err != nil {\n\t\t\tlogrus.Debugf(\"Skipping invalid digest %s: %s\", dgst, err)\n\t\t\tcontinue\n\t\t}\n\t\tif err := f(ID(dgst)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Get returns the content stored under a given ID.\nfunc (s *fs) Get(id ID) ([]byte, error) {\n\ts.RLock()\n\tdefer s.RUnlock()\n\n\treturn s.get(id)\n}\n\nfunc (s *fs) get(id ID) ([]byte, error) {\n\tcontent, err := ioutil.ReadFile(s.contentFile(id))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// todo: maybe optional\n\tif ID(digest.FromBytes(content)) != id {\n\t\treturn nil, fmt.Errorf(\"failed to verify image: %v\", id)\n\t}\n\n\treturn content, nil\n}\n\n// Set stores content under a given ID.\nfunc (s *fs) Set(data []byte) (ID, error) {\n\ts.Lock()\n\tdefer s.Unlock()\n\n\tif len(data) == 0 {\n\t\treturn \"\", fmt.Errorf(\"Invalid empty data\")\n\t}\n\n\tid := ID(digest.FromBytes(data))\n\tfilePath := s.contentFile(id)\n\ttempFilePath := s.contentFile(id) + \".tmp\"\n\tif err := ioutil.WriteFile(tempFilePath, data, 0600); err != nil {\n\t\treturn \"\", err\n\t}\n\tif err := os.Rename(tempFilePath, filePath); err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn id, nil\n}\n\n// Delete removes content and metadata files associated with the ID.\nfunc (s *fs) Delete(id ID) error {\n\ts.Lock()\n\tdefer s.Unlock()\n\n\tif err := os.RemoveAll(s.metadataDir(id)); err != nil {\n\t\treturn err\n\t}\n\tif err := os.Remove(s.contentFile(id)); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// SetMetadata sets metadata for a given ID. It fails if there's no base file.\nfunc (s *fs) SetMetadata(id ID, key string, data []byte) error {\n\ts.Lock()\n\tdefer s.Unlock()\n\tif _, err := s.get(id); err != nil {\n\t\treturn err\n\t}\n\n\tbaseDir := filepath.Join(s.metadataDir(id))\n\tif err := os.MkdirAll(baseDir, 0700); err != nil {\n\t\treturn err\n\t}\n\tfilePath := filepath.Join(s.metadataDir(id), key)\n\ttempFilePath := filePath + \".tmp\"\n\tif err := ioutil.WriteFile(tempFilePath, data, 0600); err != nil {\n\t\treturn err\n\t}\n\treturn os.Rename(tempFilePath, filePath)\n}\n\n// GetMetadata returns metadata for a given ID.\nfunc (s *fs) GetMetadata(id ID, key string) ([]byte, error) {\n\ts.RLock()\n\tdefer s.RUnlock()\n\n\tif _, err := s.get(id); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ioutil.ReadFile(filepath.Join(s.metadataDir(id), key))\n}\n\n// DeleteMetadata removes the metadata associated with an ID.\nfunc (s *fs) DeleteMetadata(id ID, key string) error {\n\ts.Lock()\n\tdefer s.Unlock()\n\n\treturn os.RemoveAll(filepath.Join(s.metadataDir(id), key))\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/image.go",
    "content": "package image\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"io\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/engine-api/types/container\"\n)\n\n// ID is the content-addressable ID of an image.\ntype ID digest.Digest\n\nfunc (id ID) String() string {\n\treturn digest.Digest(id).String()\n}\n\n// V1Image stores the V1 image configuration.\ntype V1Image struct {\n\t// ID a unique 64 character identifier of the image\n\tID string `json:\"id,omitempty\"`\n\t// Parent id of the image\n\tParent string `json:\"parent,omitempty\"`\n\t// Comment user added comment\n\tComment string `json:\"comment,omitempty\"`\n\t// Created timestamp when image was created\n\tCreated time.Time `json:\"created\"`\n\t// Container is the id of the container used to commit\n\tContainer string `json:\"container,omitempty\"`\n\t// ContainerConfig is the configuration of the container that is committed into the image\n\tContainerConfig container.Config `json:\"container_config,omitempty\"`\n\t// DockerVersion specifies version on which image is built\n\tDockerVersion string `json:\"docker_version,omitempty\"`\n\t// Author of the image\n\tAuthor string `json:\"author,omitempty\"`\n\t// Config is the configuration of the container received from the client\n\tConfig *container.Config `json:\"config,omitempty\"`\n\t// Architecture is the hardware that the image is build and runs on\n\tArchitecture string `json:\"architecture,omitempty\"`\n\t// OS is the operating system used to build and run the image\n\tOS string `json:\"os,omitempty\"`\n\t// Size is the total size of the image including all layers it is composed of\n\tSize int64 `json:\",omitempty\"`\n}\n\n// Image stores the image configuration\ntype Image struct {\n\tV1Image\n\tParent  ID        `json:\"parent,omitempty\"`\n\tRootFS  *RootFS   `json:\"rootfs,omitempty\"`\n\tHistory []History `json:\"history,omitempty\"`\n\n\t// rawJSON caches the immutable JSON associated with this image.\n\trawJSON []byte\n\n\t// computedID is the ID computed from the hash of the image config.\n\t// Not to be confused with the legacy V1 ID in V1Image.\n\tcomputedID ID\n}\n\n// RawJSON returns the immutable JSON associated with the image.\nfunc (img *Image) RawJSON() []byte {\n\treturn img.rawJSON\n}\n\n// ID returns the image's content-addressable ID.\nfunc (img *Image) ID() ID {\n\treturn img.computedID\n}\n\n// ImageID stringizes ID.\nfunc (img *Image) ImageID() string {\n\treturn string(img.ID())\n}\n\n// RunConfig returns the image's container config.\nfunc (img *Image) RunConfig() *container.Config {\n\treturn img.Config\n}\n\n// MarshalJSON serializes the image to JSON. It sorts the top-level keys so\n// that JSON that's been manipulated by a push/pull cycle with a legacy\n// registry won't end up with a different key order.\nfunc (img *Image) MarshalJSON() ([]byte, error) {\n\ttype MarshalImage Image\n\n\tpass1, err := json.Marshal(MarshalImage(*img))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar c map[string]*json.RawMessage\n\tif err := json.Unmarshal(pass1, &c); err != nil {\n\t\treturn nil, err\n\t}\n\treturn json.Marshal(c)\n}\n\n// History stores build commands that were used to create an image\ntype History struct {\n\t// Created timestamp for build point\n\tCreated time.Time `json:\"created\"`\n\t// Author of the build point\n\tAuthor string `json:\"author,omitempty\"`\n\t// CreatedBy keeps the Dockerfile command used while building image.\n\tCreatedBy string `json:\"created_by,omitempty\"`\n\t// Comment is custom message set by the user when creating the image.\n\tComment string `json:\"comment,omitempty\"`\n\t// EmptyLayer is set to true if this history item did not generate a\n\t// layer. Otherwise, the history item is associated with the next\n\t// layer in the RootFS section.\n\tEmptyLayer bool `json:\"empty_layer,omitempty\"`\n}\n\n// Exporter provides interface for exporting and importing images\ntype Exporter interface {\n\tLoad(io.ReadCloser, io.Writer, bool) error\n\t// TODO: Load(net.Context, io.ReadCloser, <- chan StatusMessage) error\n\tSave([]string, io.Writer) error\n}\n\n// NewFromJSON creates an Image configuration from json.\nfunc NewFromJSON(src []byte) (*Image, error) {\n\timg := &Image{}\n\n\tif err := json.Unmarshal(src, img); err != nil {\n\t\treturn nil, err\n\t}\n\tif img.RootFS == nil {\n\t\treturn nil, errors.New(\"Invalid image JSON, no RootFS key.\")\n\t}\n\n\timg.rawJSON = src\n\n\treturn img, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/rootfs.go",
    "content": "package image\n\nimport \"github.com/docker/docker/layer\"\n\n// Append appends a new diffID to rootfs\nfunc (r *RootFS) Append(id layer.DiffID) {\n\tr.DiffIDs = append(r.DiffIDs, id)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/rootfs_unix.go",
    "content": "// +build !windows\n\npackage image\n\nimport \"github.com/docker/docker/layer\"\n\n// RootFS describes images root filesystem\n// This is currently a placeholder that only supports layers. In the future\n// this can be made into an interface that supports different implementations.\ntype RootFS struct {\n\tType    string         `json:\"type\"`\n\tDiffIDs []layer.DiffID `json:\"diff_ids,omitempty\"`\n}\n\n// ChainID returns the ChainID for the top layer in RootFS.\nfunc (r *RootFS) ChainID() layer.ChainID {\n\treturn layer.CreateChainID(r.DiffIDs)\n}\n\n// NewRootFS returns empty RootFS struct\nfunc NewRootFS() *RootFS {\n\treturn &RootFS{Type: \"layers\"}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/store.go",
    "content": "package image\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/layer\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Store is an interface for creating and accessing images\ntype Store interface {\n\tCreate(config []byte) (ID, error)\n\tGet(id ID) (*Image, error)\n\tDelete(id ID) ([]layer.Metadata, error)\n\tSearch(partialID string) (ID, error)\n\tSetParent(id ID, parent ID) error\n\tGetParent(id ID) (ID, error)\n\tChildren(id ID) []ID\n\tMap() map[ID]*Image\n\tHeads() map[ID]*Image\n}\n\n// LayerGetReleaser is a minimal interface for getting and releasing images.\ntype LayerGetReleaser interface {\n\tGet(layer.ChainID) (layer.Layer, error)\n\tRelease(layer.Layer) ([]layer.Metadata, error)\n}\n\ntype imageMeta struct {\n\tlayer    layer.Layer\n\tchildren map[ID]struct{}\n}\n\ntype store struct {\n\tsync.Mutex\n\tls        LayerGetReleaser\n\timages    map[ID]*imageMeta\n\tfs        StoreBackend\n\tdigestSet *digest.Set\n}\n\n// NewImageStore returns new store object for given layer store\nfunc NewImageStore(fs StoreBackend, ls LayerGetReleaser) (Store, error) {\n\tis := &store{\n\t\tls:        ls,\n\t\timages:    make(map[ID]*imageMeta),\n\t\tfs:        fs,\n\t\tdigestSet: digest.NewSet(),\n\t}\n\n\t// load all current images and retain layers\n\tif err := is.restore(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn is, nil\n}\n\nfunc (is *store) restore() error {\n\terr := is.fs.Walk(func(id ID) error {\n\t\timg, err := is.Get(id)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"invalid image %v, %v\", id, err)\n\t\t\treturn nil\n\t\t}\n\t\tvar l layer.Layer\n\t\tif chainID := img.RootFS.ChainID(); chainID != \"\" {\n\t\t\tl, err = is.ls.Get(chainID)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif err := is.digestSet.Add(digest.Digest(id)); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\timageMeta := &imageMeta{\n\t\t\tlayer:    l,\n\t\t\tchildren: make(map[ID]struct{}),\n\t\t}\n\n\t\tis.images[ID(id)] = imageMeta\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Second pass to fill in children maps\n\tfor id := range is.images {\n\t\tif parent, err := is.GetParent(id); err == nil {\n\t\t\tif parentMeta := is.images[parent]; parentMeta != nil {\n\t\t\t\tparentMeta.children[id] = struct{}{}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (is *store) Create(config []byte) (ID, error) {\n\tvar img Image\n\terr := json.Unmarshal(config, &img)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Must reject any config that references diffIDs from the history\n\t// which aren't among the rootfs layers.\n\trootFSLayers := make(map[layer.DiffID]struct{})\n\tfor _, diffID := range img.RootFS.DiffIDs {\n\t\trootFSLayers[diffID] = struct{}{}\n\t}\n\n\tlayerCounter := 0\n\tfor _, h := range img.History {\n\t\tif !h.EmptyLayer {\n\t\t\tlayerCounter++\n\t\t}\n\t}\n\tif layerCounter > len(img.RootFS.DiffIDs) {\n\t\treturn \"\", errors.New(\"too many non-empty layers in History section\")\n\t}\n\n\tdgst, err := is.fs.Set(config)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\timageID := ID(dgst)\n\n\tis.Lock()\n\tdefer is.Unlock()\n\n\tif _, exists := is.images[imageID]; exists {\n\t\treturn imageID, nil\n\t}\n\n\tlayerID := img.RootFS.ChainID()\n\n\tvar l layer.Layer\n\tif layerID != \"\" {\n\t\tl, err = is.ls.Get(layerID)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\n\timageMeta := &imageMeta{\n\t\tlayer:    l,\n\t\tchildren: make(map[ID]struct{}),\n\t}\n\n\tis.images[imageID] = imageMeta\n\tif err := is.digestSet.Add(digest.Digest(imageID)); err != nil {\n\t\tdelete(is.images, imageID)\n\t\treturn \"\", err\n\t}\n\n\treturn imageID, nil\n}\n\nfunc (is *store) Search(term string) (ID, error) {\n\tis.Lock()\n\tdefer is.Unlock()\n\n\tdgst, err := is.digestSet.Lookup(term)\n\tif err != nil {\n\t\tif err == digest.ErrDigestNotFound {\n\t\t\terr = fmt.Errorf(\"No such image: %s\", term)\n\t\t}\n\t\treturn \"\", err\n\t}\n\treturn ID(dgst), nil\n}\n\nfunc (is *store) Get(id ID) (*Image, error) {\n\t// todo: Check if image is in images\n\t// todo: Detect manual insertions and start using them\n\tconfig, err := is.fs.Get(id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\timg, err := NewFromJSON(config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\timg.computedID = id\n\n\timg.Parent, err = is.GetParent(id)\n\tif err != nil {\n\t\timg.Parent = \"\"\n\t}\n\n\treturn img, nil\n}\n\nfunc (is *store) Delete(id ID) ([]layer.Metadata, error) {\n\tis.Lock()\n\tdefer is.Unlock()\n\n\timageMeta := is.images[id]\n\tif imageMeta == nil {\n\t\treturn nil, fmt.Errorf(\"unrecognized image ID %s\", id.String())\n\t}\n\tfor id := range imageMeta.children {\n\t\tis.fs.DeleteMetadata(id, \"parent\")\n\t}\n\tif parent, err := is.GetParent(id); err == nil && is.images[parent] != nil {\n\t\tdelete(is.images[parent].children, id)\n\t}\n\n\tif err := is.digestSet.Remove(digest.Digest(id)); err != nil {\n\t\tlogrus.Errorf(\"error removing %s from digest set: %q\", id, err)\n\t}\n\tdelete(is.images, id)\n\tis.fs.Delete(id)\n\n\tif imageMeta.layer != nil {\n\t\treturn is.ls.Release(imageMeta.layer)\n\t}\n\treturn nil, nil\n}\n\nfunc (is *store) SetParent(id, parent ID) error {\n\tis.Lock()\n\tdefer is.Unlock()\n\tparentMeta := is.images[parent]\n\tif parentMeta == nil {\n\t\treturn fmt.Errorf(\"unknown parent image ID %s\", parent.String())\n\t}\n\tif parent, err := is.GetParent(id); err == nil && is.images[parent] != nil {\n\t\tdelete(is.images[parent].children, id)\n\t}\n\tparentMeta.children[id] = struct{}{}\n\treturn is.fs.SetMetadata(id, \"parent\", []byte(parent))\n}\n\nfunc (is *store) GetParent(id ID) (ID, error) {\n\td, err := is.fs.GetMetadata(id, \"parent\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ID(d), nil // todo: validate?\n}\n\nfunc (is *store) Children(id ID) []ID {\n\tis.Lock()\n\tdefer is.Unlock()\n\n\treturn is.children(id)\n}\n\nfunc (is *store) children(id ID) []ID {\n\tvar ids []ID\n\tif is.images[id] != nil {\n\t\tfor id := range is.images[id].children {\n\t\t\tids = append(ids, id)\n\t\t}\n\t}\n\treturn ids\n}\n\nfunc (is *store) Heads() map[ID]*Image {\n\treturn is.imagesMap(false)\n}\n\nfunc (is *store) Map() map[ID]*Image {\n\treturn is.imagesMap(true)\n}\n\nfunc (is *store) imagesMap(all bool) map[ID]*Image {\n\tis.Lock()\n\tdefer is.Unlock()\n\n\timages := make(map[ID]*Image)\n\n\tfor id := range is.images {\n\t\tif !all && len(is.children(id)) > 0 {\n\t\t\tcontinue\n\t\t}\n\t\timg, err := is.Get(id)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"invalid image access: %q, error: %q\", id, err)\n\t\t\tcontinue\n\t\t}\n\t\timages[id] = img\n\t}\n\treturn images\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/image/v1/imagev1.go",
    "content": "package v1\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/image\"\n\t\"github.com/docker/docker/layer\"\n\t\"github.com/docker/docker/pkg/version\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar validHex = regexp.MustCompile(`^([a-f0-9]{64})$`)\n\n// noFallbackMinVersion is the minimum version for which v1compatibility\n// information will not be marshaled through the Image struct to remove\n// blank fields.\nvar noFallbackMinVersion = version.Version(\"1.8.3\")\n\n// HistoryFromConfig creates a History struct from v1 configuration JSON\nfunc HistoryFromConfig(imageJSON []byte, emptyLayer bool) (image.History, error) {\n\th := image.History{}\n\tvar v1Image image.V1Image\n\tif err := json.Unmarshal(imageJSON, &v1Image); err != nil {\n\t\treturn h, err\n\t}\n\n\treturn image.History{\n\t\tAuthor:     v1Image.Author,\n\t\tCreated:    v1Image.Created,\n\t\tCreatedBy:  strings.Join(v1Image.ContainerConfig.Cmd, \" \"),\n\t\tComment:    v1Image.Comment,\n\t\tEmptyLayer: emptyLayer,\n\t}, nil\n}\n\n// CreateID creates an ID from v1 image, layerID and parent ID.\n// Used for backwards compatibility with old clients.\nfunc CreateID(v1Image image.V1Image, layerID layer.ChainID, parent digest.Digest) (digest.Digest, error) {\n\tv1Image.ID = \"\"\n\tv1JSON, err := json.Marshal(v1Image)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar config map[string]*json.RawMessage\n\tif err := json.Unmarshal(v1JSON, &config); err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// FIXME: note that this is slightly incompatible with RootFS logic\n\tconfig[\"layer_id\"] = rawJSON(layerID)\n\tif parent != \"\" {\n\t\tconfig[\"parent\"] = rawJSON(parent)\n\t}\n\n\tconfigJSON, err := json.Marshal(config)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tlogrus.Debugf(\"CreateV1ID %s\", configJSON)\n\n\treturn digest.FromBytes(configJSON), nil\n}\n\n// MakeConfigFromV1Config creates an image config from the legacy V1 config format.\nfunc MakeConfigFromV1Config(imageJSON []byte, rootfs *image.RootFS, history []image.History) ([]byte, error) {\n\tvar dver struct {\n\t\tDockerVersion string `json:\"docker_version\"`\n\t}\n\n\tif err := json.Unmarshal(imageJSON, &dver); err != nil {\n\t\treturn nil, err\n\t}\n\n\tuseFallback := version.Version(dver.DockerVersion).LessThan(noFallbackMinVersion)\n\n\tif useFallback {\n\t\tvar v1Image image.V1Image\n\t\terr := json.Unmarshal(imageJSON, &v1Image)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\timageJSON, err = json.Marshal(v1Image)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar c map[string]*json.RawMessage\n\tif err := json.Unmarshal(imageJSON, &c); err != nil {\n\t\treturn nil, err\n\t}\n\n\tdelete(c, \"id\")\n\tdelete(c, \"parent\")\n\tdelete(c, \"Size\") // Size is calculated from data on disk and is inconsistent\n\tdelete(c, \"parent_id\")\n\tdelete(c, \"layer_id\")\n\tdelete(c, \"throwaway\")\n\n\tc[\"rootfs\"] = rawJSON(rootfs)\n\tc[\"history\"] = rawJSON(history)\n\n\treturn json.Marshal(c)\n}\n\n// MakeV1ConfigFromConfig creates an legacy V1 image config from an Image struct\nfunc MakeV1ConfigFromConfig(img *image.Image, v1ID, parentV1ID string, throwaway bool) ([]byte, error) {\n\t// Top-level v1compatibility string should be a modified version of the\n\t// image config.\n\tvar configAsMap map[string]*json.RawMessage\n\tif err := json.Unmarshal(img.RawJSON(), &configAsMap); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Delete fields that didn't exist in old manifest\n\tdelete(configAsMap, \"rootfs\")\n\tdelete(configAsMap, \"history\")\n\tconfigAsMap[\"id\"] = rawJSON(v1ID)\n\tif parentV1ID != \"\" {\n\t\tconfigAsMap[\"parent\"] = rawJSON(parentV1ID)\n\t}\n\tif throwaway {\n\t\tconfigAsMap[\"throwaway\"] = rawJSON(true)\n\t}\n\n\treturn json.Marshal(configAsMap)\n}\n\nfunc rawJSON(value interface{}) *json.RawMessage {\n\tjsonval, err := json.Marshal(value)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn (*json.RawMessage)(&jsonval)\n}\n\n// ValidateID checks whether an ID string is a valid image ID.\nfunc ValidateID(id string) error {\n\tif ok := validHex.MatchString(id); !ok {\n\t\treturn fmt.Errorf(\"image ID %q is invalid\", id)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/empty.go",
    "content": "package layer\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"io\"\n\t\"io/ioutil\"\n)\n\n// DigestSHA256EmptyTar is the canonical sha256 digest of empty tar file -\n// (1024 NULL bytes)\nconst DigestSHA256EmptyTar = DiffID(\"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef\")\n\ntype emptyLayer struct{}\n\n// EmptyLayer is a layer that corresponds to empty tar.\nvar EmptyLayer = &emptyLayer{}\n\nfunc (el *emptyLayer) TarStream() (io.ReadCloser, error) {\n\tbuf := new(bytes.Buffer)\n\ttarWriter := tar.NewWriter(buf)\n\ttarWriter.Close()\n\treturn ioutil.NopCloser(buf), nil\n}\n\nfunc (el *emptyLayer) ChainID() ChainID {\n\treturn ChainID(DigestSHA256EmptyTar)\n}\n\nfunc (el *emptyLayer) DiffID() DiffID {\n\treturn DigestSHA256EmptyTar\n}\n\nfunc (el *emptyLayer) Parent() Layer {\n\treturn nil\n}\n\nfunc (el *emptyLayer) Size() (size int64, err error) {\n\treturn 0, nil\n}\n\nfunc (el *emptyLayer) DiffSize() (size int64, err error) {\n\treturn 0, nil\n}\n\nfunc (el *emptyLayer) Metadata() (map[string]string, error) {\n\treturn make(map[string]string), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/filestore.go",
    "content": "package layer\n\nimport (\n\t\"compress/gzip\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tstringIDRegexp      = regexp.MustCompile(`^[a-f0-9]{64}(-init)?$`)\n\tsupportedAlgorithms = []digest.Algorithm{\n\t\tdigest.SHA256,\n\t\t// digest.SHA384, // Currently not used\n\t\t// digest.SHA512, // Currently not used\n\t}\n)\n\ntype fileMetadataStore struct {\n\troot string\n}\n\ntype fileMetadataTransaction struct {\n\tstore *fileMetadataStore\n\troot  string\n}\n\n// NewFSMetadataStore returns an instance of a metadata store\n// which is backed by files on disk using the provided root\n// as the root of metadata files.\nfunc NewFSMetadataStore(root string) (MetadataStore, error) {\n\tif err := os.MkdirAll(root, 0700); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &fileMetadataStore{\n\t\troot: root,\n\t}, nil\n}\n\nfunc (fms *fileMetadataStore) getLayerDirectory(layer ChainID) string {\n\tdgst := digest.Digest(layer)\n\treturn filepath.Join(fms.root, string(dgst.Algorithm()), dgst.Hex())\n}\n\nfunc (fms *fileMetadataStore) getLayerFilename(layer ChainID, filename string) string {\n\treturn filepath.Join(fms.getLayerDirectory(layer), filename)\n}\n\nfunc (fms *fileMetadataStore) getMountDirectory(mount string) string {\n\treturn filepath.Join(fms.root, \"mounts\", mount)\n}\n\nfunc (fms *fileMetadataStore) getMountFilename(mount, filename string) string {\n\treturn filepath.Join(fms.getMountDirectory(mount), filename)\n}\n\nfunc (fms *fileMetadataStore) StartTransaction() (MetadataTransaction, error) {\n\ttmpDir := filepath.Join(fms.root, \"tmp\")\n\tif err := os.MkdirAll(tmpDir, 0755); err != nil {\n\t\treturn nil, err\n\t}\n\n\ttd, err := ioutil.TempDir(tmpDir, \"layer-\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Create a new tempdir\n\treturn &fileMetadataTransaction{\n\t\tstore: fms,\n\t\troot:  td,\n\t}, nil\n}\n\nfunc (fm *fileMetadataTransaction) SetSize(size int64) error {\n\tcontent := fmt.Sprintf(\"%d\", size)\n\treturn ioutil.WriteFile(filepath.Join(fm.root, \"size\"), []byte(content), 0644)\n}\n\nfunc (fm *fileMetadataTransaction) SetParent(parent ChainID) error {\n\treturn ioutil.WriteFile(filepath.Join(fm.root, \"parent\"), []byte(digest.Digest(parent).String()), 0644)\n}\n\nfunc (fm *fileMetadataTransaction) SetDiffID(diff DiffID) error {\n\treturn ioutil.WriteFile(filepath.Join(fm.root, \"diff\"), []byte(digest.Digest(diff).String()), 0644)\n}\n\nfunc (fm *fileMetadataTransaction) SetCacheID(cacheID string) error {\n\treturn ioutil.WriteFile(filepath.Join(fm.root, \"cache-id\"), []byte(cacheID), 0644)\n}\n\nfunc (fm *fileMetadataTransaction) TarSplitWriter(compressInput bool) (io.WriteCloser, error) {\n\tf, err := os.OpenFile(filepath.Join(fm.root, \"tar-split.json.gz\"), os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar wc io.WriteCloser\n\tif compressInput {\n\t\twc = gzip.NewWriter(f)\n\t} else {\n\t\twc = f\n\t}\n\n\treturn ioutils.NewWriteCloserWrapper(wc, func() error {\n\t\twc.Close()\n\t\treturn f.Close()\n\t}), nil\n}\n\nfunc (fm *fileMetadataTransaction) Commit(layer ChainID) error {\n\tfinalDir := fm.store.getLayerDirectory(layer)\n\tif err := os.MkdirAll(filepath.Dir(finalDir), 0755); err != nil {\n\t\treturn err\n\t}\n\treturn os.Rename(fm.root, finalDir)\n}\n\nfunc (fm *fileMetadataTransaction) Cancel() error {\n\treturn os.RemoveAll(fm.root)\n}\n\nfunc (fm *fileMetadataTransaction) String() string {\n\treturn fm.root\n}\n\nfunc (fms *fileMetadataStore) GetSize(layer ChainID) (int64, error) {\n\tcontent, err := ioutil.ReadFile(fms.getLayerFilename(layer, \"size\"))\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tsize, err := strconv.ParseInt(string(content), 10, 64)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn size, nil\n}\n\nfunc (fms *fileMetadataStore) GetParent(layer ChainID) (ChainID, error) {\n\tcontent, err := ioutil.ReadFile(fms.getLayerFilename(layer, \"parent\"))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn \"\", nil\n\t\t}\n\t\treturn \"\", err\n\t}\n\n\tdgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ChainID(dgst), nil\n}\n\nfunc (fms *fileMetadataStore) GetDiffID(layer ChainID) (DiffID, error) {\n\tcontent, err := ioutil.ReadFile(fms.getLayerFilename(layer, \"diff\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tdgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn DiffID(dgst), nil\n}\n\nfunc (fms *fileMetadataStore) GetCacheID(layer ChainID) (string, error) {\n\tcontentBytes, err := ioutil.ReadFile(fms.getLayerFilename(layer, \"cache-id\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tcontent := strings.TrimSpace(string(contentBytes))\n\n\tif !stringIDRegexp.MatchString(content) {\n\t\treturn \"\", errors.New(\"invalid cache id value\")\n\t}\n\n\treturn content, nil\n}\n\nfunc (fms *fileMetadataStore) TarSplitReader(layer ChainID) (io.ReadCloser, error) {\n\tfz, err := os.Open(fms.getLayerFilename(layer, \"tar-split.json.gz\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tf, err := gzip.NewReader(fz)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ioutils.NewReadCloserWrapper(f, func() error {\n\t\tf.Close()\n\t\treturn fz.Close()\n\t}), nil\n}\n\nfunc (fms *fileMetadataStore) SetMountID(mount string, mountID string) error {\n\tif err := os.MkdirAll(fms.getMountDirectory(mount), 0755); err != nil {\n\t\treturn err\n\t}\n\treturn ioutil.WriteFile(fms.getMountFilename(mount, \"mount-id\"), []byte(mountID), 0644)\n}\n\nfunc (fms *fileMetadataStore) SetInitID(mount string, init string) error {\n\tif err := os.MkdirAll(fms.getMountDirectory(mount), 0755); err != nil {\n\t\treturn err\n\t}\n\treturn ioutil.WriteFile(fms.getMountFilename(mount, \"init-id\"), []byte(init), 0644)\n}\n\nfunc (fms *fileMetadataStore) SetMountParent(mount string, parent ChainID) error {\n\tif err := os.MkdirAll(fms.getMountDirectory(mount), 0755); err != nil {\n\t\treturn err\n\t}\n\treturn ioutil.WriteFile(fms.getMountFilename(mount, \"parent\"), []byte(digest.Digest(parent).String()), 0644)\n}\n\nfunc (fms *fileMetadataStore) GetMountID(mount string) (string, error) {\n\tcontentBytes, err := ioutil.ReadFile(fms.getMountFilename(mount, \"mount-id\"))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tcontent := strings.TrimSpace(string(contentBytes))\n\n\tif !stringIDRegexp.MatchString(content) {\n\t\treturn \"\", errors.New(\"invalid mount id value\")\n\t}\n\n\treturn content, nil\n}\n\nfunc (fms *fileMetadataStore) GetInitID(mount string) (string, error) {\n\tcontentBytes, err := ioutil.ReadFile(fms.getMountFilename(mount, \"init-id\"))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn \"\", nil\n\t\t}\n\t\treturn \"\", err\n\t}\n\tcontent := strings.TrimSpace(string(contentBytes))\n\n\tif !stringIDRegexp.MatchString(content) {\n\t\treturn \"\", errors.New(\"invalid init id value\")\n\t}\n\n\treturn content, nil\n}\n\nfunc (fms *fileMetadataStore) GetMountParent(mount string) (ChainID, error) {\n\tcontent, err := ioutil.ReadFile(fms.getMountFilename(mount, \"parent\"))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn \"\", nil\n\t\t}\n\t\treturn \"\", err\n\t}\n\n\tdgst, err := digest.ParseDigest(strings.TrimSpace(string(content)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ChainID(dgst), nil\n}\n\nfunc (fms *fileMetadataStore) List() ([]ChainID, []string, error) {\n\tvar ids []ChainID\n\tfor _, algorithm := range supportedAlgorithms {\n\t\tfileInfos, err := ioutil.ReadDir(filepath.Join(fms.root, string(algorithm)))\n\t\tif err != nil {\n\t\t\tif os.IsNotExist(err) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\tfor _, fi := range fileInfos {\n\t\t\tif fi.IsDir() && fi.Name() != \"mounts\" {\n\t\t\t\tdgst := digest.NewDigestFromHex(string(algorithm), fi.Name())\n\t\t\t\tif err := dgst.Validate(); err != nil {\n\t\t\t\t\tlogrus.Debugf(\"Ignoring invalid digest %s:%s\", algorithm, fi.Name())\n\t\t\t\t} else {\n\t\t\t\t\tids = append(ids, ChainID(dgst))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfileInfos, err := ioutil.ReadDir(filepath.Join(fms.root, \"mounts\"))\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn ids, []string{}, nil\n\t\t}\n\t\treturn nil, nil, err\n\t}\n\n\tvar mounts []string\n\tfor _, fi := range fileInfos {\n\t\tif fi.IsDir() {\n\t\t\tmounts = append(mounts, fi.Name())\n\t\t}\n\t}\n\n\treturn ids, mounts, nil\n}\n\nfunc (fms *fileMetadataStore) Remove(layer ChainID) error {\n\treturn os.RemoveAll(fms.getLayerDirectory(layer))\n}\n\nfunc (fms *fileMetadataStore) RemoveMount(mount string) error {\n\treturn os.RemoveAll(fms.getMountDirectory(mount))\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/layer.go",
    "content": "// Package layer is package for managing read-only\n// and read-write mounts on the union file system\n// driver. Read-only mounts are referenced using a\n// content hash and are protected from mutation in\n// the exposed interface. The tar format is used\n// to create read-only layers and export both\n// read-only and writable layers. The exported\n// tar data for a read-only layer should match\n// the tar used to create the layer.\npackage layer\n\nimport (\n\t\"errors\"\n\t\"io\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// ErrLayerDoesNotExist is used when an operation is\n\t// attempted on a layer which does not exist.\n\tErrLayerDoesNotExist = errors.New(\"layer does not exist\")\n\n\t// ErrLayerNotRetained is used when a release is\n\t// attempted on a layer which is not retained.\n\tErrLayerNotRetained = errors.New(\"layer not retained\")\n\n\t// ErrMountDoesNotExist is used when an operation is\n\t// attempted on a mount layer which does not exist.\n\tErrMountDoesNotExist = errors.New(\"mount does not exist\")\n\n\t// ErrMountNameConflict is used when a mount is attempted\n\t// to be created but there is already a mount with the name\n\t// used for creation.\n\tErrMountNameConflict = errors.New(\"mount already exists with name\")\n\n\t// ErrActiveMount is used when an operation on a\n\t// mount is attempted but the layer is still\n\t// mounted and the operation cannot be performed.\n\tErrActiveMount = errors.New(\"mount still active\")\n\n\t// ErrNotMounted is used when requesting an active\n\t// mount but the layer is not mounted.\n\tErrNotMounted = errors.New(\"not mounted\")\n\n\t// ErrMaxDepthExceeded is used when a layer is attempted\n\t// to be created which would result in a layer depth\n\t// greater than the 125 max.\n\tErrMaxDepthExceeded = errors.New(\"max depth exceeded\")\n\n\t// ErrNotSupported is used when the action is not supppoted\n\t// on the current platform\n\tErrNotSupported = errors.New(\"not support on this platform\")\n)\n\n// ChainID is the content-addressable ID of a layer.\ntype ChainID digest.Digest\n\n// String returns a string rendition of a layer ID\nfunc (id ChainID) String() string {\n\treturn string(id)\n}\n\n// DiffID is the hash of an individual layer tar.\ntype DiffID digest.Digest\n\n// String returns a string rendition of a layer DiffID\nfunc (diffID DiffID) String() string {\n\treturn string(diffID)\n}\n\n// TarStreamer represents an object which may\n// have its contents exported as a tar stream.\ntype TarStreamer interface {\n\t// TarStream returns a tar archive stream\n\t// for the contents of a layer.\n\tTarStream() (io.ReadCloser, error)\n}\n\n// Layer represents a read-only layer\ntype Layer interface {\n\tTarStreamer\n\n\t// ChainID returns the content hash of the entire layer chain. The hash\n\t// chain is made up of DiffID of top layer and all of its parents.\n\tChainID() ChainID\n\n\t// DiffID returns the content hash of the layer\n\t// tar stream used to create this layer.\n\tDiffID() DiffID\n\n\t// Parent returns the next layer in the layer chain.\n\tParent() Layer\n\n\t// Size returns the size of the entire layer chain. The size\n\t// is calculated from the total size of all files in the layers.\n\tSize() (int64, error)\n\n\t// DiffSize returns the size difference of the top layer\n\t// from parent layer.\n\tDiffSize() (int64, error)\n\n\t// Metadata returns the low level storage metadata associated\n\t// with layer.\n\tMetadata() (map[string]string, error)\n}\n\n// RWLayer represents a layer which is\n// read and writable\ntype RWLayer interface {\n\tTarStreamer\n\n\t// Name of mounted layer\n\tName() string\n\n\t// Parent returns the layer which the writable\n\t// layer was created from.\n\tParent() Layer\n\n\t// Mount mounts the RWLayer and returns the filesystem path\n\t// the to the writable layer.\n\tMount(mountLabel string) (string, error)\n\n\t// Unmount unmounts the RWLayer. This should be called\n\t// for every mount. If there are multiple mount calls\n\t// this operation will only decrement the internal mount counter.\n\tUnmount() error\n\n\t// Size represents the size of the writable layer\n\t// as calculated by the total size of the files\n\t// changed in the mutable layer.\n\tSize() (int64, error)\n\n\t// Changes returns the set of changes for the mutable layer\n\t// from the base layer.\n\tChanges() ([]archive.Change, error)\n\n\t// Metadata returns the low level metadata for the mutable layer\n\tMetadata() (map[string]string, error)\n}\n\n// Metadata holds information about a\n// read-only layer\ntype Metadata struct {\n\t// ChainID is the content hash of the layer\n\tChainID ChainID\n\n\t// DiffID is the hash of the tar data used to\n\t// create the layer\n\tDiffID DiffID\n\n\t// Size is the size of the layer and all parents\n\tSize int64\n\n\t// DiffSize is the size of the top layer\n\tDiffSize int64\n}\n\n// MountInit is a function to initialize a\n// writable mount. Changes made here will\n// not be included in the Tar stream of the\n// RWLayer.\ntype MountInit func(root string) error\n\n// Store represents a backend for managing both\n// read-only and read-write layers.\ntype Store interface {\n\tRegister(io.Reader, ChainID) (Layer, error)\n\tGet(ChainID) (Layer, error)\n\tRelease(Layer) ([]Metadata, error)\n\n\tCreateRWLayer(id string, parent ChainID, mountLabel string, initFunc MountInit) (RWLayer, error)\n\tGetRWLayer(id string) (RWLayer, error)\n\tGetMountID(id string) (string, error)\n\tReinitRWLayer(l RWLayer) error\n\tReleaseRWLayer(RWLayer) ([]Metadata, error)\n\n\tCleanup() error\n\tDriverStatus() [][2]string\n\tDriverName() string\n}\n\n// MetadataTransaction represents functions for setting layer metadata\n// with a single transaction.\ntype MetadataTransaction interface {\n\tSetSize(int64) error\n\tSetParent(parent ChainID) error\n\tSetDiffID(DiffID) error\n\tSetCacheID(string) error\n\tTarSplitWriter(compressInput bool) (io.WriteCloser, error)\n\n\tCommit(ChainID) error\n\tCancel() error\n\tString() string\n}\n\n// MetadataStore represents a backend for persisting\n// metadata about layers and providing the metadata\n// for restoring a Store.\ntype MetadataStore interface {\n\t// StartTransaction starts an update for new metadata\n\t// which will be used to represent an ID on commit.\n\tStartTransaction() (MetadataTransaction, error)\n\n\tGetSize(ChainID) (int64, error)\n\tGetParent(ChainID) (ChainID, error)\n\tGetDiffID(ChainID) (DiffID, error)\n\tGetCacheID(ChainID) (string, error)\n\tTarSplitReader(ChainID) (io.ReadCloser, error)\n\n\tSetMountID(string, string) error\n\tSetInitID(string, string) error\n\tSetMountParent(string, ChainID) error\n\n\tGetMountID(string) (string, error)\n\tGetInitID(string) (string, error)\n\tGetMountParent(string) (ChainID, error)\n\n\t// List returns the full list of referenced\n\t// read-only and read-write layers\n\tList() ([]ChainID, []string, error)\n\n\tRemove(ChainID) error\n\tRemoveMount(string) error\n}\n\n// CreateChainID returns ID for a layerDigest slice\nfunc CreateChainID(dgsts []DiffID) ChainID {\n\treturn createChainIDFromParent(\"\", dgsts...)\n}\n\nfunc createChainIDFromParent(parent ChainID, dgsts ...DiffID) ChainID {\n\tif len(dgsts) == 0 {\n\t\treturn parent\n\t}\n\tif parent == \"\" {\n\t\treturn createChainIDFromParent(ChainID(dgsts[0]), dgsts[1:]...)\n\t}\n\t// H = \"H(n-1) SHA256(n)\"\n\tdgst := digest.FromBytes([]byte(string(parent) + \" \" + string(dgsts[0])))\n\treturn createChainIDFromParent(ChainID(dgst), dgsts[1:]...)\n}\n\n// ReleaseAndLog releases the provided layer from the given layer\n// store, logging any error and release metadata\nfunc ReleaseAndLog(ls Store, l Layer) {\n\tmetadata, err := ls.Release(l)\n\tif err != nil {\n\t\tlogrus.Errorf(\"Error releasing layer %s: %v\", l.ChainID(), err)\n\t}\n\tLogReleaseMetadata(metadata)\n}\n\n// LogReleaseMetadata logs a metadata array, uses this to\n// ensure consistent logging for release metadata\nfunc LogReleaseMetadata(metadatas []Metadata) {\n\tfor _, metadata := range metadatas {\n\t\tlogrus.Infof(\"Layer %s cleaned up\", metadata.ChainID)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/layer_store.go",
    "content": "package layer\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"sync\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/daemon/graphdriver\"\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/idtools\"\n\t\"github.com/docker/docker/pkg/stringid\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/vbatts/tar-split/tar/asm\"\n\t\"github.com/vbatts/tar-split/tar/storage\"\n)\n\n// maxLayerDepth represents the maximum number of\n// layers which can be chained together. 125 was\n// chosen to account for the 127 max in some\n// graphdrivers plus the 2 additional layers\n// used to create a rwlayer.\nconst maxLayerDepth = 125\n\ntype layerStore struct {\n\tstore  MetadataStore\n\tdriver graphdriver.Driver\n\n\tlayerMap map[ChainID]*roLayer\n\tlayerL   sync.Mutex\n\n\tmounts map[string]*mountedLayer\n\tmountL sync.Mutex\n}\n\n// StoreOptions are the options used to create a new Store instance\ntype StoreOptions struct {\n\tStorePath                 string\n\tMetadataStorePathTemplate string\n\tGraphDriver               string\n\tGraphDriverOptions        []string\n\tUIDMaps                   []idtools.IDMap\n\tGIDMaps                   []idtools.IDMap\n}\n\n// NewStoreFromOptions creates a new Store instance\nfunc NewStoreFromOptions(options StoreOptions) (Store, error) {\n\tdriver, err := graphdriver.New(\n\t\toptions.StorePath,\n\t\toptions.GraphDriver,\n\t\toptions.GraphDriverOptions,\n\t\toptions.UIDMaps,\n\t\toptions.GIDMaps)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error initializing graphdriver: %v\", err)\n\t}\n\tlogrus.Debugf(\"Using graph driver %s\", driver)\n\n\tfms, err := NewFSMetadataStore(fmt.Sprintf(options.MetadataStorePathTemplate, driver))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewStoreFromGraphDriver(fms, driver)\n}\n\n// NewStoreFromGraphDriver creates a new Store instance using the provided\n// metadata store and graph driver. The metadata store will be used to restore\n// the Store.\nfunc NewStoreFromGraphDriver(store MetadataStore, driver graphdriver.Driver) (Store, error) {\n\tls := &layerStore{\n\t\tstore:    store,\n\t\tdriver:   driver,\n\t\tlayerMap: map[ChainID]*roLayer{},\n\t\tmounts:   map[string]*mountedLayer{},\n\t}\n\n\tids, mounts, err := store.List()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, id := range ids {\n\t\tl, err := ls.loadLayer(id)\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"Failed to load layer %s: %s\", id, err)\n\t\t\tcontinue\n\t\t}\n\t\tif l.parent != nil {\n\t\t\tl.parent.referenceCount++\n\t\t}\n\t}\n\n\tfor _, mount := range mounts {\n\t\tif err := ls.loadMount(mount); err != nil {\n\t\t\tlogrus.Debugf(\"Failed to load mount %s: %s\", mount, err)\n\t\t}\n\t}\n\n\treturn ls, nil\n}\n\nfunc (ls *layerStore) loadLayer(layer ChainID) (*roLayer, error) {\n\tcl, ok := ls.layerMap[layer]\n\tif ok {\n\t\treturn cl, nil\n\t}\n\n\tdiff, err := ls.store.GetDiffID(layer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get diff id for %s: %s\", layer, err)\n\t}\n\n\tsize, err := ls.store.GetSize(layer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get size for %s: %s\", layer, err)\n\t}\n\n\tcacheID, err := ls.store.GetCacheID(layer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get cache id for %s: %s\", layer, err)\n\t}\n\n\tparent, err := ls.store.GetParent(layer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get parent for %s: %s\", layer, err)\n\t}\n\n\tcl = &roLayer{\n\t\tchainID:    layer,\n\t\tdiffID:     diff,\n\t\tsize:       size,\n\t\tcacheID:    cacheID,\n\t\tlayerStore: ls,\n\t\treferences: map[Layer]struct{}{},\n\t}\n\n\tif parent != \"\" {\n\t\tp, err := ls.loadLayer(parent)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcl.parent = p\n\t}\n\n\tls.layerMap[cl.chainID] = cl\n\n\treturn cl, nil\n}\n\nfunc (ls *layerStore) loadMount(mount string) error {\n\tif _, ok := ls.mounts[mount]; ok {\n\t\treturn nil\n\t}\n\n\tmountID, err := ls.store.GetMountID(mount)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tinitID, err := ls.store.GetInitID(mount)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tparent, err := ls.store.GetMountParent(mount)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tml := &mountedLayer{\n\t\tname:       mount,\n\t\tmountID:    mountID,\n\t\tinitID:     initID,\n\t\tlayerStore: ls,\n\t\treferences: map[RWLayer]*referencedRWLayer{},\n\t}\n\n\tif parent != \"\" {\n\t\tp, err := ls.loadLayer(parent)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tml.parent = p\n\n\t\tp.referenceCount++\n\t}\n\n\tls.mounts[ml.name] = ml\n\n\treturn nil\n}\n\nfunc (ls *layerStore) applyTar(tx MetadataTransaction, ts io.Reader, parent string, layer *roLayer) error {\n\tdigester := digest.Canonical.New()\n\ttr := io.TeeReader(ts, digester.Hash())\n\n\ttsw, err := tx.TarSplitWriter(true)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmetaPacker := storage.NewJSONPacker(tsw)\n\tdefer tsw.Close()\n\n\t// we're passing nil here for the file putter, because the ApplyDiff will\n\t// handle the extraction of the archive\n\trdr, err := asm.NewInputTarStream(tr, metaPacker, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tapplySize, err := ls.driver.ApplyDiff(layer.cacheID, parent, archive.Reader(rdr))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Discard trailing data but ensure metadata is picked up to reconstruct stream\n\tio.Copy(ioutil.Discard, rdr) // ignore error as reader may be closed\n\n\tlayer.size = applySize\n\tlayer.diffID = DiffID(digester.Digest())\n\n\tlogrus.Debugf(\"Applied tar %s to %s, size: %d\", layer.diffID, layer.cacheID, applySize)\n\n\treturn nil\n}\n\nfunc (ls *layerStore) Register(ts io.Reader, parent ChainID) (Layer, error) {\n\t// err is used to hold the error which will always trigger\n\t// cleanup of creates sources but may not be an error returned\n\t// to the caller (already exists).\n\tvar err error\n\tvar pid string\n\tvar p *roLayer\n\tif string(parent) != \"\" {\n\t\tp = ls.get(parent)\n\t\tif p == nil {\n\t\t\treturn nil, ErrLayerDoesNotExist\n\t\t}\n\t\tpid = p.cacheID\n\t\t// Release parent chain if error\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tls.layerL.Lock()\n\t\t\t\tls.releaseLayer(p)\n\t\t\t\tls.layerL.Unlock()\n\t\t\t}\n\t\t}()\n\t\tif p.depth() >= maxLayerDepth {\n\t\t\terr = ErrMaxDepthExceeded\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Create new roLayer\n\tlayer := &roLayer{\n\t\tparent:         p,\n\t\tcacheID:        stringid.GenerateRandomID(),\n\t\treferenceCount: 1,\n\t\tlayerStore:     ls,\n\t\treferences:     map[Layer]struct{}{},\n\t}\n\n\tif err = ls.driver.Create(layer.cacheID, pid, \"\"); err != nil {\n\t\treturn nil, err\n\t}\n\n\ttx, err := ls.store.StartTransaction()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"Cleaning up layer %s: %v\", layer.cacheID, err)\n\t\t\tif err := ls.driver.Remove(layer.cacheID); err != nil {\n\t\t\t\tlogrus.Errorf(\"Error cleaning up cache layer %s: %v\", layer.cacheID, err)\n\t\t\t}\n\t\t\tif err := tx.Cancel(); err != nil {\n\t\t\t\tlogrus.Errorf(\"Error canceling metadata transaction %q: %s\", tx.String(), err)\n\t\t\t}\n\t\t}\n\t}()\n\n\tif err = ls.applyTar(tx, ts, pid, layer); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif layer.parent == nil {\n\t\tlayer.chainID = ChainID(layer.diffID)\n\t} else {\n\t\tlayer.chainID = createChainIDFromParent(layer.parent.chainID, layer.diffID)\n\t}\n\n\tif err = storeLayer(tx, layer); err != nil {\n\t\treturn nil, err\n\t}\n\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\n\tif existingLayer := ls.getWithoutLock(layer.chainID); existingLayer != nil {\n\t\t// Set error for cleanup, but do not return the error\n\t\terr = errors.New(\"layer already exists\")\n\t\treturn existingLayer.getReference(), nil\n\t}\n\n\tif err = tx.Commit(layer.chainID); err != nil {\n\t\treturn nil, err\n\t}\n\n\tls.layerMap[layer.chainID] = layer\n\n\treturn layer.getReference(), nil\n}\n\nfunc (ls *layerStore) getWithoutLock(layer ChainID) *roLayer {\n\tl, ok := ls.layerMap[layer]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tl.referenceCount++\n\n\treturn l\n}\n\nfunc (ls *layerStore) get(l ChainID) *roLayer {\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\treturn ls.getWithoutLock(l)\n}\n\nfunc (ls *layerStore) Get(l ChainID) (Layer, error) {\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\n\tlayer := ls.getWithoutLock(l)\n\tif layer == nil {\n\t\treturn nil, ErrLayerDoesNotExist\n\t}\n\n\treturn layer.getReference(), nil\n}\n\nfunc (ls *layerStore) deleteLayer(layer *roLayer, metadata *Metadata) error {\n\terr := ls.driver.Remove(layer.cacheID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = ls.store.Remove(layer.chainID)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmetadata.DiffID = layer.diffID\n\tmetadata.ChainID = layer.chainID\n\tmetadata.Size, err = layer.Size()\n\tif err != nil {\n\t\treturn err\n\t}\n\tmetadata.DiffSize = layer.size\n\n\treturn nil\n}\n\nfunc (ls *layerStore) releaseLayer(l *roLayer) ([]Metadata, error) {\n\tdepth := 0\n\tremoved := []Metadata{}\n\tfor {\n\t\tif l.referenceCount == 0 {\n\t\t\tpanic(\"layer not retained\")\n\t\t}\n\t\tl.referenceCount--\n\t\tif l.referenceCount != 0 {\n\t\t\treturn removed, nil\n\t\t}\n\n\t\tif len(removed) == 0 && depth > 0 {\n\t\t\tpanic(\"cannot remove layer with child\")\n\t\t}\n\t\tif l.hasReferences() {\n\t\t\tpanic(\"cannot delete referenced layer\")\n\t\t}\n\t\tvar metadata Metadata\n\t\tif err := ls.deleteLayer(l, &metadata); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdelete(ls.layerMap, l.chainID)\n\t\tremoved = append(removed, metadata)\n\n\t\tif l.parent == nil {\n\t\t\treturn removed, nil\n\t\t}\n\n\t\tdepth++\n\t\tl = l.parent\n\t}\n}\n\nfunc (ls *layerStore) Release(l Layer) ([]Metadata, error) {\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\tlayer, ok := ls.layerMap[l.ChainID()]\n\tif !ok {\n\t\treturn []Metadata{}, nil\n\t}\n\tif !layer.hasReference(l) {\n\t\treturn nil, ErrLayerNotRetained\n\t}\n\n\tlayer.deleteReference(l)\n\n\treturn ls.releaseLayer(layer)\n}\n\nfunc (ls *layerStore) CreateRWLayer(name string, parent ChainID, mountLabel string, initFunc MountInit) (RWLayer, error) {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\tm, ok := ls.mounts[name]\n\tif ok {\n\t\treturn nil, ErrMountNameConflict\n\t}\n\n\tvar err error\n\tvar pid string\n\tvar p *roLayer\n\tif string(parent) != \"\" {\n\t\tp = ls.get(parent)\n\t\tif p == nil {\n\t\t\treturn nil, ErrLayerDoesNotExist\n\t\t}\n\t\tpid = p.cacheID\n\n\t\t// Release parent chain if error\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tls.layerL.Lock()\n\t\t\t\tls.releaseLayer(p)\n\t\t\t\tls.layerL.Unlock()\n\t\t\t}\n\t\t}()\n\t}\n\n\tm = &mountedLayer{\n\t\tname:       name,\n\t\tparent:     p,\n\t\tmountID:    ls.mountID(name),\n\t\tlayerStore: ls,\n\t\treferences: map[RWLayer]*referencedRWLayer{},\n\t}\n\n\tif initFunc != nil {\n\t\tpid, err = ls.initMount(m.mountID, pid, mountLabel, initFunc)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm.initID = pid\n\t}\n\n\tif err = ls.driver.Create(m.mountID, pid, \"\"); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = ls.saveMount(m); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn m.getReference(), nil\n}\n\nfunc (ls *layerStore) GetRWLayer(id string) (RWLayer, error) {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\tmount, ok := ls.mounts[id]\n\tif !ok {\n\t\treturn nil, ErrMountDoesNotExist\n\t}\n\n\treturn mount.getReference(), nil\n}\n\nfunc (ls *layerStore) GetMountID(id string) (string, error) {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\tmount, ok := ls.mounts[id]\n\tif !ok {\n\t\treturn \"\", ErrMountDoesNotExist\n\t}\n\tlogrus.Debugf(\"GetMountID id: %s -> mountID: %s\", id, mount.mountID)\n\n\treturn mount.mountID, nil\n}\n\n// ReinitRWLayer reinitializes a given mount to the layerstore, specifically\n// initializing the usage count. It should strictly only be used in the\n// daemon's restore path to restore state of live containers.\nfunc (ls *layerStore) ReinitRWLayer(l RWLayer) error {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\n\tm, ok := ls.mounts[l.Name()]\n\tif !ok {\n\t\treturn ErrMountDoesNotExist\n\t}\n\n\tif err := m.incActivityCount(l); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (ls *layerStore) ReleaseRWLayer(l RWLayer) ([]Metadata, error) {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\tm, ok := ls.mounts[l.Name()]\n\tif !ok {\n\t\treturn []Metadata{}, nil\n\t}\n\n\tif err := m.deleteReference(l); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif m.hasReferences() {\n\t\treturn []Metadata{}, nil\n\t}\n\n\tif err := ls.driver.Remove(m.mountID); err != nil {\n\t\tlogrus.Errorf(\"Error removing mounted layer %s: %s\", m.name, err)\n\t\tm.retakeReference(l)\n\t\treturn nil, err\n\t}\n\n\tif m.initID != \"\" {\n\t\tif err := ls.driver.Remove(m.initID); err != nil {\n\t\t\tlogrus.Errorf(\"Error removing init layer %s: %s\", m.name, err)\n\t\t\tm.retakeReference(l)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := ls.store.RemoveMount(m.name); err != nil {\n\t\tlogrus.Errorf(\"Error removing mount metadata: %s: %s\", m.name, err)\n\t\tm.retakeReference(l)\n\t\treturn nil, err\n\t}\n\n\tdelete(ls.mounts, m.Name())\n\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\tif m.parent != nil {\n\t\treturn ls.releaseLayer(m.parent)\n\t}\n\n\treturn []Metadata{}, nil\n}\n\nfunc (ls *layerStore) saveMount(mount *mountedLayer) error {\n\tif err := ls.store.SetMountID(mount.name, mount.mountID); err != nil {\n\t\treturn err\n\t}\n\n\tif mount.initID != \"\" {\n\t\tif err := ls.store.SetInitID(mount.name, mount.initID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif mount.parent != nil {\n\t\tif err := ls.store.SetMountParent(mount.name, mount.parent.chainID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tls.mounts[mount.name] = mount\n\n\treturn nil\n}\n\nfunc (ls *layerStore) initMount(graphID, parent, mountLabel string, initFunc MountInit) (string, error) {\n\t// Use \"<graph-id>-init\" to maintain compatibility with graph drivers\n\t// which are expecting this layer with this special name. If all\n\t// graph drivers can be updated to not rely on knowing about this layer\n\t// then the initID should be randomly generated.\n\tinitID := fmt.Sprintf(\"%s-init\", graphID)\n\n\tif err := ls.driver.Create(initID, parent, mountLabel); err != nil {\n\t\treturn \"\", err\n\t}\n\tp, err := ls.driver.Get(initID, \"\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif err := initFunc(p); err != nil {\n\t\tls.driver.Put(initID)\n\t\treturn \"\", err\n\t}\n\n\tif err := ls.driver.Put(initID); err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn initID, nil\n}\n\nfunc (ls *layerStore) assembleTarTo(graphID string, metadata io.ReadCloser, size *int64, w io.Writer) error {\n\tdiffDriver, ok := ls.driver.(graphdriver.DiffGetterDriver)\n\tif !ok {\n\t\tdiffDriver = &naiveDiffPathDriver{ls.driver}\n\t}\n\n\tdefer metadata.Close()\n\n\t// get our relative path to the container\n\tfileGetCloser, err := diffDriver.DiffGetter(graphID)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer fileGetCloser.Close()\n\n\tmetaUnpacker := storage.NewJSONUnpacker(metadata)\n\tupackerCounter := &unpackSizeCounter{metaUnpacker, size}\n\tlogrus.Debugf(\"Assembling tar data for %s\", graphID)\n\treturn asm.WriteOutputTarStream(fileGetCloser, upackerCounter, w)\n}\n\nfunc (ls *layerStore) Cleanup() error {\n\treturn ls.driver.Cleanup()\n}\n\nfunc (ls *layerStore) DriverStatus() [][2]string {\n\treturn ls.driver.Status()\n}\n\nfunc (ls *layerStore) DriverName() string {\n\treturn ls.driver.String()\n}\n\ntype naiveDiffPathDriver struct {\n\tgraphdriver.Driver\n}\n\ntype fileGetPutter struct {\n\tstorage.FileGetter\n\tdriver graphdriver.Driver\n\tid     string\n}\n\nfunc (w *fileGetPutter) Close() error {\n\treturn w.driver.Put(w.id)\n}\n\nfunc (n *naiveDiffPathDriver) DiffGetter(id string) (graphdriver.FileGetCloser, error) {\n\tp, err := n.Driver.Get(id, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &fileGetPutter{storage.NewPathFileGetter(p), n.Driver, id}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/layer_unix.go",
    "content": "// +build linux freebsd darwin openbsd\n\npackage layer\n\nimport \"github.com/docker/docker/pkg/stringid\"\n\nfunc (ls *layerStore) mountID(name string) string {\n\treturn stringid.GenerateRandomID()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/migration.go",
    "content": "package layer\n\nimport (\n\t\"compress/gzip\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/vbatts/tar-split/tar/asm\"\n\t\"github.com/vbatts/tar-split/tar/storage\"\n)\n\n// CreateRWLayerByGraphID creates a RWLayer in the layer store using\n// the provided name with the given graphID. To get the RWLayer\n// after migration the layer may be retrieved by the given name.\nfunc (ls *layerStore) CreateRWLayerByGraphID(name string, graphID string, parent ChainID) (err error) {\n\tls.mountL.Lock()\n\tdefer ls.mountL.Unlock()\n\tm, ok := ls.mounts[name]\n\tif ok {\n\t\tif m.parent.chainID != parent {\n\t\t\treturn errors.New(\"name conflict, mismatched parent\")\n\t\t}\n\t\tif m.mountID != graphID {\n\t\t\treturn errors.New(\"mount already exists\")\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tif !ls.driver.Exists(graphID) {\n\t\treturn fmt.Errorf(\"graph ID does not exist: %q\", graphID)\n\t}\n\n\tvar p *roLayer\n\tif string(parent) != \"\" {\n\t\tp = ls.get(parent)\n\t\tif p == nil {\n\t\t\treturn ErrLayerDoesNotExist\n\t\t}\n\n\t\t// Release parent chain if error\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tls.layerL.Lock()\n\t\t\t\tls.releaseLayer(p)\n\t\t\t\tls.layerL.Unlock()\n\t\t\t}\n\t\t}()\n\t}\n\n\t// TODO: Ensure graphID has correct parent\n\n\tm = &mountedLayer{\n\t\tname:       name,\n\t\tparent:     p,\n\t\tmountID:    graphID,\n\t\tlayerStore: ls,\n\t\treferences: map[RWLayer]*referencedRWLayer{},\n\t}\n\n\t// Check for existing init layer\n\tinitID := fmt.Sprintf(\"%s-init\", graphID)\n\tif ls.driver.Exists(initID) {\n\t\tm.initID = initID\n\t}\n\n\tif err = ls.saveMount(m); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (ls *layerStore) ChecksumForGraphID(id, parent, oldTarDataPath, newTarDataPath string) (diffID DiffID, size int64, err error) {\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"could not get checksum for %q with tar-split: %q\", id, err)\n\t\t\tdiffID, size, err = ls.checksumForGraphIDNoTarsplit(id, parent, newTarDataPath)\n\t\t}\n\t}()\n\n\tif oldTarDataPath == \"\" {\n\t\terr = errors.New(\"no tar-split file\")\n\t\treturn\n\t}\n\n\ttarDataFile, err := os.Open(oldTarDataPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer tarDataFile.Close()\n\tuncompressed, err := gzip.NewReader(tarDataFile)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdgst := digest.Canonical.New()\n\terr = ls.assembleTarTo(id, uncompressed, &size, dgst.Hash())\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdiffID = DiffID(dgst.Digest())\n\terr = os.RemoveAll(newTarDataPath)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = os.Link(oldTarDataPath, newTarDataPath)\n\n\treturn\n}\n\nfunc (ls *layerStore) checksumForGraphIDNoTarsplit(id, parent, newTarDataPath string) (diffID DiffID, size int64, err error) {\n\trawarchive, err := ls.driver.Diff(id, parent)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer rawarchive.Close()\n\n\tf, err := os.Create(newTarDataPath)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer f.Close()\n\tmfz := gzip.NewWriter(f)\n\tdefer mfz.Close()\n\tmetaPacker := storage.NewJSONPacker(mfz)\n\n\tpackerCounter := &packSizeCounter{metaPacker, &size}\n\n\tarchive, err := asm.NewInputTarStream(rawarchive, packerCounter, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\tdgst, err := digest.FromReader(archive)\n\tif err != nil {\n\t\treturn\n\t}\n\tdiffID = DiffID(dgst)\n\treturn\n}\n\nfunc (ls *layerStore) RegisterByGraphID(graphID string, parent ChainID, diffID DiffID, tarDataFile string, size int64) (Layer, error) {\n\t// err is used to hold the error which will always trigger\n\t// cleanup of creates sources but may not be an error returned\n\t// to the caller (already exists).\n\tvar err error\n\tvar p *roLayer\n\tif string(parent) != \"\" {\n\t\tp = ls.get(parent)\n\t\tif p == nil {\n\t\t\treturn nil, ErrLayerDoesNotExist\n\t\t}\n\n\t\t// Release parent chain if error\n\t\tdefer func() {\n\t\t\tif err != nil {\n\t\t\t\tls.layerL.Lock()\n\t\t\t\tls.releaseLayer(p)\n\t\t\t\tls.layerL.Unlock()\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Create new roLayer\n\tlayer := &roLayer{\n\t\tparent:         p,\n\t\tcacheID:        graphID,\n\t\treferenceCount: 1,\n\t\tlayerStore:     ls,\n\t\treferences:     map[Layer]struct{}{},\n\t\tdiffID:         diffID,\n\t\tsize:           size,\n\t\tchainID:        createChainIDFromParent(parent, diffID),\n\t}\n\n\tls.layerL.Lock()\n\tdefer ls.layerL.Unlock()\n\n\tif existingLayer := ls.getWithoutLock(layer.chainID); existingLayer != nil {\n\t\t// Set error for cleanup, but do not return\n\t\terr = errors.New(\"layer already exists\")\n\t\treturn existingLayer.getReference(), nil\n\t}\n\n\ttx, err := ls.store.StartTransaction()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"Cleaning up transaction after failed migration for %s: %v\", graphID, err)\n\t\t\tif err := tx.Cancel(); err != nil {\n\t\t\t\tlogrus.Errorf(\"Error canceling metadata transaction %q: %s\", tx.String(), err)\n\t\t\t}\n\t\t}\n\t}()\n\n\ttsw, err := tx.TarSplitWriter(false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer tsw.Close()\n\ttdf, err := os.Open(tarDataFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer tdf.Close()\n\t_, err = io.Copy(tsw, tdf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = storeLayer(tx, layer); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = tx.Commit(layer.chainID); err != nil {\n\t\treturn nil, err\n\t}\n\n\tls.layerMap[layer.chainID] = layer\n\n\treturn layer.getReference(), nil\n}\n\ntype unpackSizeCounter struct {\n\tunpacker storage.Unpacker\n\tsize     *int64\n}\n\nfunc (u *unpackSizeCounter) Next() (*storage.Entry, error) {\n\te, err := u.unpacker.Next()\n\tif err == nil && u.size != nil {\n\t\t*u.size += e.Size\n\t}\n\treturn e, err\n}\n\ntype packSizeCounter struct {\n\tpacker storage.Packer\n\tsize   *int64\n}\n\nfunc (p *packSizeCounter) AddEntry(e storage.Entry) (int, error) {\n\tn, err := p.packer.AddEntry(e)\n\tif err == nil && p.size != nil {\n\t\t*p.size += e.Size\n\t}\n\treturn n, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/mounted_layer.go",
    "content": "package layer\n\nimport (\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n)\n\ntype mountedLayer struct {\n\tname       string\n\tmountID    string\n\tinitID     string\n\tparent     *roLayer\n\tpath       string\n\tlayerStore *layerStore\n\n\treferences map[RWLayer]*referencedRWLayer\n}\n\nfunc (ml *mountedLayer) cacheParent() string {\n\tif ml.initID != \"\" {\n\t\treturn ml.initID\n\t}\n\tif ml.parent != nil {\n\t\treturn ml.parent.cacheID\n\t}\n\treturn \"\"\n}\n\nfunc (ml *mountedLayer) TarStream() (io.ReadCloser, error) {\n\tarchiver, err := ml.layerStore.driver.Diff(ml.mountID, ml.cacheParent())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn archiver, nil\n}\n\nfunc (ml *mountedLayer) Name() string {\n\treturn ml.name\n}\n\nfunc (ml *mountedLayer) Parent() Layer {\n\tif ml.parent != nil {\n\t\treturn ml.parent\n\t}\n\n\t// Return a nil interface instead of an interface wrapping a nil\n\t// pointer.\n\treturn nil\n}\n\nfunc (ml *mountedLayer) Mount(mountLabel string) (string, error) {\n\treturn ml.layerStore.driver.Get(ml.mountID, mountLabel)\n}\n\nfunc (ml *mountedLayer) Unmount() error {\n\treturn ml.layerStore.driver.Put(ml.mountID)\n}\n\nfunc (ml *mountedLayer) Size() (int64, error) {\n\treturn ml.layerStore.driver.DiffSize(ml.mountID, ml.cacheParent())\n}\n\nfunc (ml *mountedLayer) Changes() ([]archive.Change, error) {\n\treturn ml.layerStore.driver.Changes(ml.mountID, ml.cacheParent())\n}\n\nfunc (ml *mountedLayer) Metadata() (map[string]string, error) {\n\treturn ml.layerStore.driver.GetMetadata(ml.mountID)\n}\n\nfunc (ml *mountedLayer) getReference() RWLayer {\n\tref := &referencedRWLayer{\n\t\tmountedLayer: ml,\n\t}\n\tml.references[ref] = ref\n\n\treturn ref\n}\n\nfunc (ml *mountedLayer) hasReferences() bool {\n\treturn len(ml.references) > 0\n}\n\nfunc (ml *mountedLayer) incActivityCount(ref RWLayer) error {\n\trl, ok := ml.references[ref]\n\tif !ok {\n\t\treturn ErrLayerNotRetained\n\t}\n\n\tif err := rl.acquire(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (ml *mountedLayer) deleteReference(ref RWLayer) error {\n\trl, ok := ml.references[ref]\n\tif !ok {\n\t\treturn ErrLayerNotRetained\n\t}\n\n\tif err := rl.release(); err != nil {\n\t\treturn err\n\t}\n\tdelete(ml.references, ref)\n\n\treturn nil\n}\n\nfunc (ml *mountedLayer) retakeReference(r RWLayer) {\n\tif ref, ok := r.(*referencedRWLayer); ok {\n\t\tref.activityCount = 0\n\t\tml.references[ref] = ref\n\t}\n}\n\ntype referencedRWLayer struct {\n\t*mountedLayer\n\n\tactivityL     sync.Mutex\n\tactivityCount int\n}\n\nfunc (rl *referencedRWLayer) acquire() error {\n\trl.activityL.Lock()\n\tdefer rl.activityL.Unlock()\n\n\trl.activityCount++\n\n\treturn nil\n}\n\nfunc (rl *referencedRWLayer) release() error {\n\trl.activityL.Lock()\n\tdefer rl.activityL.Unlock()\n\n\tif rl.activityCount > 0 {\n\t\treturn ErrActiveMount\n\t}\n\n\trl.activityCount = -1\n\n\treturn nil\n}\n\nfunc (rl *referencedRWLayer) Mount(mountLabel string) (string, error) {\n\trl.activityL.Lock()\n\tdefer rl.activityL.Unlock()\n\n\tif rl.activityCount == -1 {\n\t\treturn \"\", ErrLayerNotRetained\n\t}\n\n\tif rl.activityCount > 0 {\n\t\trl.activityCount++\n\t\treturn rl.path, nil\n\t}\n\n\tm, err := rl.mountedLayer.Mount(mountLabel)\n\tif err == nil {\n\t\trl.activityCount++\n\t\trl.path = m\n\t}\n\treturn m, err\n}\n\n// Unmount decrements the activity count and unmounts the underlying layer\n// Callers should only call `Unmount` once per call to `Mount`, even on error.\nfunc (rl *referencedRWLayer) Unmount() error {\n\trl.activityL.Lock()\n\tdefer rl.activityL.Unlock()\n\n\tif rl.activityCount == 0 {\n\t\treturn ErrNotMounted\n\t}\n\tif rl.activityCount == -1 {\n\t\treturn ErrLayerNotRetained\n\t}\n\n\trl.activityCount--\n\tif rl.activityCount > 0 {\n\t\treturn nil\n\t}\n\n\treturn rl.mountedLayer.Unmount()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/layer/ro_layer.go",
    "content": "package layer\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/docker/distribution/digest\"\n)\n\ntype roLayer struct {\n\tchainID    ChainID\n\tdiffID     DiffID\n\tparent     *roLayer\n\tcacheID    string\n\tsize       int64\n\tlayerStore *layerStore\n\n\treferenceCount int\n\treferences     map[Layer]struct{}\n}\n\nfunc (rl *roLayer) TarStream() (io.ReadCloser, error) {\n\tr, err := rl.layerStore.store.TarSplitReader(rl.chainID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpr, pw := io.Pipe()\n\tgo func() {\n\t\terr := rl.layerStore.assembleTarTo(rl.cacheID, r, nil, pw)\n\t\tif err != nil {\n\t\t\tpw.CloseWithError(err)\n\t\t} else {\n\t\t\tpw.Close()\n\t\t}\n\t}()\n\trc, err := newVerifiedReadCloser(pr, digest.Digest(rl.diffID))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn rc, nil\n}\n\nfunc (rl *roLayer) ChainID() ChainID {\n\treturn rl.chainID\n}\n\nfunc (rl *roLayer) DiffID() DiffID {\n\treturn rl.diffID\n}\n\nfunc (rl *roLayer) Parent() Layer {\n\tif rl.parent == nil {\n\t\treturn nil\n\t}\n\treturn rl.parent\n}\n\nfunc (rl *roLayer) Size() (size int64, err error) {\n\tif rl.parent != nil {\n\t\tsize, err = rl.parent.Size()\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn size + rl.size, nil\n}\n\nfunc (rl *roLayer) DiffSize() (size int64, err error) {\n\treturn rl.size, nil\n}\n\nfunc (rl *roLayer) Metadata() (map[string]string, error) {\n\treturn rl.layerStore.driver.GetMetadata(rl.cacheID)\n}\n\ntype referencedCacheLayer struct {\n\t*roLayer\n}\n\nfunc (rl *roLayer) getReference() Layer {\n\tref := &referencedCacheLayer{\n\t\troLayer: rl,\n\t}\n\trl.references[ref] = struct{}{}\n\n\treturn ref\n}\n\nfunc (rl *roLayer) hasReference(ref Layer) bool {\n\t_, ok := rl.references[ref]\n\treturn ok\n}\n\nfunc (rl *roLayer) hasReferences() bool {\n\treturn len(rl.references) > 0\n}\n\nfunc (rl *roLayer) deleteReference(ref Layer) {\n\tdelete(rl.references, ref)\n}\n\nfunc (rl *roLayer) depth() int {\n\tif rl.parent == nil {\n\t\treturn 1\n\t}\n\treturn rl.parent.depth() + 1\n}\n\nfunc storeLayer(tx MetadataTransaction, layer *roLayer) error {\n\tif err := tx.SetDiffID(layer.diffID); err != nil {\n\t\treturn err\n\t}\n\tif err := tx.SetSize(layer.size); err != nil {\n\t\treturn err\n\t}\n\tif err := tx.SetCacheID(layer.cacheID); err != nil {\n\t\treturn err\n\t}\n\tif layer.parent != nil {\n\t\tif err := tx.SetParent(layer.parent.chainID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc newVerifiedReadCloser(rc io.ReadCloser, dgst digest.Digest) (io.ReadCloser, error) {\n\tverifier, err := digest.NewDigestVerifier(dgst)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &verifiedReadCloser{\n\t\trc:       rc,\n\t\tdgst:     dgst,\n\t\tverifier: verifier,\n\t}, nil\n}\n\ntype verifiedReadCloser struct {\n\trc       io.ReadCloser\n\tdgst     digest.Digest\n\tverifier digest.Verifier\n}\n\nfunc (vrc *verifiedReadCloser) Read(p []byte) (n int, err error) {\n\tn, err = vrc.rc.Read(p)\n\tif n > 0 {\n\t\tif n, err := vrc.verifier.Write(p[:n]); err != nil {\n\t\t\treturn n, err\n\t\t}\n\t}\n\tif err == io.EOF {\n\t\tif !vrc.verifier.Verified() {\n\t\t\terr = fmt.Errorf(\"could not verify layer data for: %s. This may be because internal files in the layer store were modified. Re-pulling or rebuilding this image may resolve the issue\", vrc.dgst)\n\t\t}\n\t}\n\treturn\n}\nfunc (vrc *verifiedReadCloser) Close() error {\n\treturn vrc.rc.Close()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/opts/hosts.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar (\n\t// DefaultHTTPPort Default HTTP Port used if only the protocol is provided to -H flag e.g. docker daemon -H tcp://\n\t// These are the IANA registered port numbers for use with Docker\n\t// see http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=docker\n\tDefaultHTTPPort = 2375 // Default HTTP Port\n\t// DefaultTLSHTTPPort Default HTTP Port used when TLS enabled\n\tDefaultTLSHTTPPort = 2376 // Default TLS encrypted HTTP Port\n\t// DefaultUnixSocket Path for the unix socket.\n\t// Docker daemon by default always listens on the default unix socket\n\tDefaultUnixSocket = \"/var/run/docker.sock\"\n\t// DefaultTCPHost constant defines the default host string used by docker on Windows\n\tDefaultTCPHost = fmt.Sprintf(\"tcp://%s:%d\", DefaultHTTPHost, DefaultHTTPPort)\n\t// DefaultTLSHost constant defines the default host string used by docker for TLS sockets\n\tDefaultTLSHost = fmt.Sprintf(\"tcp://%s:%d\", DefaultHTTPHost, DefaultTLSHTTPPort)\n\t// DefaultNamedPipe defines the default named pipe used by docker on Windows\n\tDefaultNamedPipe = `//./pipe/docker_engine`\n)\n\n// ValidateHost validates that the specified string is a valid host and returns it.\nfunc ValidateHost(val string) (string, error) {\n\thost := strings.TrimSpace(val)\n\t// The empty string means default and is not handled by parseDockerDaemonHost\n\tif host != \"\" {\n\t\t_, err := parseDockerDaemonHost(host)\n\t\tif err != nil {\n\t\t\treturn val, err\n\t\t}\n\t}\n\t// Note: unlike most flag validators, we don't return the mutated value here\n\t//       we need to know what the user entered later (using ParseHost) to adjust for tls\n\treturn val, nil\n}\n\n// ParseHost and set defaults for a Daemon host string\nfunc ParseHost(defaultToTLS bool, val string) (string, error) {\n\thost := strings.TrimSpace(val)\n\tif host == \"\" {\n\t\tif defaultToTLS {\n\t\t\thost = DefaultTLSHost\n\t\t} else {\n\t\t\thost = DefaultHost\n\t\t}\n\t} else {\n\t\tvar err error\n\t\thost, err = parseDockerDaemonHost(host)\n\t\tif err != nil {\n\t\t\treturn val, err\n\t\t}\n\t}\n\treturn host, nil\n}\n\n// parseDockerDaemonHost parses the specified address and returns an address that will be used as the host.\n// Depending of the address specified, this may return one of the global Default* strings defined in hosts.go.\nfunc parseDockerDaemonHost(addr string) (string, error) {\n\taddrParts := strings.Split(addr, \"://\")\n\tif len(addrParts) == 1 && addrParts[0] != \"\" {\n\t\taddrParts = []string{\"tcp\", addrParts[0]}\n\t}\n\n\tswitch addrParts[0] {\n\tcase \"tcp\":\n\t\treturn parseTCPAddr(addrParts[1], DefaultTCPHost)\n\tcase \"unix\":\n\t\treturn parseSimpleProtoAddr(\"unix\", addrParts[1], DefaultUnixSocket)\n\tcase \"npipe\":\n\t\treturn parseSimpleProtoAddr(\"npipe\", addrParts[1], DefaultNamedPipe)\n\tcase \"fd\":\n\t\treturn addr, nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"Invalid bind address format: %s\", addr)\n\t}\n}\n\n// parseSimpleProtoAddr parses and validates that the specified address is a valid\n// socket address for simple protocols like unix and npipe. It returns a formatted\n// socket address, either using the address parsed from addr, or the contents of\n// defaultAddr if addr is a blank string.\nfunc parseSimpleProtoAddr(proto, addr, defaultAddr string) (string, error) {\n\taddr = strings.TrimPrefix(addr, proto+\"://\")\n\tif strings.Contains(addr, \"://\") {\n\t\treturn \"\", fmt.Errorf(\"Invalid proto, expected %s: %s\", proto, addr)\n\t}\n\tif addr == \"\" {\n\t\taddr = defaultAddr\n\t}\n\treturn fmt.Sprintf(\"%s://%s\", proto, addr), nil\n}\n\n// parseTCPAddr parses and validates that the specified address is a valid TCP\n// address. It returns a formatted TCP address, either using the address parsed\n// from tryAddr, or the contents of defaultAddr if tryAddr is a blank string.\n// tryAddr is expected to have already been Trim()'d\n// defaultAddr must be in the full `tcp://host:port` form\nfunc parseTCPAddr(tryAddr string, defaultAddr string) (string, error) {\n\tif tryAddr == \"\" || tryAddr == \"tcp://\" {\n\t\treturn defaultAddr, nil\n\t}\n\taddr := strings.TrimPrefix(tryAddr, \"tcp://\")\n\tif strings.Contains(addr, \"://\") || addr == \"\" {\n\t\treturn \"\", fmt.Errorf(\"Invalid proto, expected tcp: %s\", tryAddr)\n\t}\n\n\tdefaultAddr = strings.TrimPrefix(defaultAddr, \"tcp://\")\n\tdefaultHost, defaultPort, err := net.SplitHostPort(defaultAddr)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// url.Parse fails for trailing colon on IPv6 brackets on Go 1.5, but\n\t// not 1.4. See https://github.com/golang/go/issues/12200 and\n\t// https://github.com/golang/go/issues/6530.\n\tif strings.HasSuffix(addr, \"]:\") {\n\t\taddr += defaultPort\n\t}\n\n\tu, err := url.Parse(\"tcp://\" + addr)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\thost, port, err := net.SplitHostPort(u.Host)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"Invalid bind address format: %s\", tryAddr)\n\t}\n\n\tif host == \"\" {\n\t\thost = defaultHost\n\t}\n\tif port == \"\" {\n\t\tport = defaultPort\n\t}\n\tp, err := strconv.Atoi(port)\n\tif err != nil && p == 0 {\n\t\treturn \"\", fmt.Errorf(\"Invalid bind address format: %s\", tryAddr)\n\t}\n\n\treturn fmt.Sprintf(\"tcp://%s%s\", net.JoinHostPort(host, port), u.Path), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/opts/hosts_unix.go",
    "content": "// +build !windows\n\npackage opts\n\nimport \"fmt\"\n\n// DefaultHost constant defines the default host string used by docker on other hosts than Windows\nvar DefaultHost = fmt.Sprintf(\"unix://%s\", DefaultUnixSocket)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/opts/ip.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// IPOpt holds an IP. It is used to store values from CLI flags.\ntype IPOpt struct {\n\t*net.IP\n}\n\n// NewIPOpt creates a new IPOpt from a reference net.IP and a\n// string representation of an IP. If the string is not a valid\n// IP it will fallback to the specified reference.\nfunc NewIPOpt(ref *net.IP, defaultVal string) *IPOpt {\n\to := &IPOpt{\n\t\tIP: ref,\n\t}\n\to.Set(defaultVal)\n\treturn o\n}\n\n// Set sets an IPv4 or IPv6 address from a given string. If the given\n// string is not parseable as an IP address it returns an error.\nfunc (o *IPOpt) Set(val string) error {\n\tip := net.ParseIP(val)\n\tif ip == nil {\n\t\treturn fmt.Errorf(\"%s is not an ip address\", val)\n\t}\n\t*o.IP = ip\n\treturn nil\n}\n\n// String returns the IP address stored in the IPOpt. If stored IP is a\n// nil pointer, it returns an empty string.\nfunc (o *IPOpt) String() string {\n\tif *o.IP == nil {\n\t\treturn \"\"\n\t}\n\treturn o.IP.String()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/opts/opts.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\talphaRegexp  = regexp.MustCompile(`[a-zA-Z]`)\n\tdomainRegexp = regexp.MustCompile(`^(:?(:?[a-zA-Z0-9]|(:?[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]))(:?\\.(:?[a-zA-Z0-9]|(:?[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])))*)\\.?\\s*$`)\n)\n\n// ListOpts holds a list of values and a validation function.\ntype ListOpts struct {\n\tvalues    *[]string\n\tvalidator ValidatorFctType\n}\n\n// NewListOpts creates a new ListOpts with the specified validator.\nfunc NewListOpts(validator ValidatorFctType) ListOpts {\n\tvar values []string\n\treturn *NewListOptsRef(&values, validator)\n}\n\n// NewListOptsRef creates a new ListOpts with the specified values and validator.\nfunc NewListOptsRef(values *[]string, validator ValidatorFctType) *ListOpts {\n\treturn &ListOpts{\n\t\tvalues:    values,\n\t\tvalidator: validator,\n\t}\n}\n\nfunc (opts *ListOpts) String() string {\n\treturn fmt.Sprintf(\"%v\", []string((*opts.values)))\n}\n\n// Set validates if needed the input value and add it to the\n// internal slice.\nfunc (opts *ListOpts) Set(value string) error {\n\tif opts.validator != nil {\n\t\tv, err := opts.validator(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalue = v\n\t}\n\t(*opts.values) = append((*opts.values), value)\n\treturn nil\n}\n\n// Delete removes the specified element from the slice.\nfunc (opts *ListOpts) Delete(key string) {\n\tfor i, k := range *opts.values {\n\t\tif k == key {\n\t\t\t(*opts.values) = append((*opts.values)[:i], (*opts.values)[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// GetMap returns the content of values in a map in order to avoid\n// duplicates.\nfunc (opts *ListOpts) GetMap() map[string]struct{} {\n\tret := make(map[string]struct{})\n\tfor _, k := range *opts.values {\n\t\tret[k] = struct{}{}\n\t}\n\treturn ret\n}\n\n// GetAll returns the values of slice.\nfunc (opts *ListOpts) GetAll() []string {\n\treturn (*opts.values)\n}\n\n// GetAllOrEmpty returns the values of the slice\n// or an empty slice when there are no values.\nfunc (opts *ListOpts) GetAllOrEmpty() []string {\n\tv := *opts.values\n\tif v == nil {\n\t\treturn make([]string, 0)\n\t}\n\treturn v\n}\n\n// Get checks the existence of the specified key.\nfunc (opts *ListOpts) Get(key string) bool {\n\tfor _, k := range *opts.values {\n\t\tif k == key {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Len returns the amount of element in the slice.\nfunc (opts *ListOpts) Len() int {\n\treturn len((*opts.values))\n}\n\n// NamedOption is an interface that list and map options\n// with names implement.\ntype NamedOption interface {\n\tName() string\n}\n\n// NamedListOpts is a ListOpts with a configuration name.\n// This struct is useful to keep reference to the assigned\n// field name in the internal configuration struct.\ntype NamedListOpts struct {\n\tname string\n\tListOpts\n}\n\nvar _ NamedOption = &NamedListOpts{}\n\n// NewNamedListOptsRef creates a reference to a new NamedListOpts struct.\nfunc NewNamedListOptsRef(name string, values *[]string, validator ValidatorFctType) *NamedListOpts {\n\treturn &NamedListOpts{\n\t\tname:     name,\n\t\tListOpts: *NewListOptsRef(values, validator),\n\t}\n}\n\n// Name returns the name of the NamedListOpts in the configuration.\nfunc (o *NamedListOpts) Name() string {\n\treturn o.name\n}\n\n//MapOpts holds a map of values and a validation function.\ntype MapOpts struct {\n\tvalues    map[string]string\n\tvalidator ValidatorFctType\n}\n\n// Set validates if needed the input value and add it to the\n// internal map, by splitting on '='.\nfunc (opts *MapOpts) Set(value string) error {\n\tif opts.validator != nil {\n\t\tv, err := opts.validator(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalue = v\n\t}\n\tvals := strings.SplitN(value, \"=\", 2)\n\tif len(vals) == 1 {\n\t\t(opts.values)[vals[0]] = \"\"\n\t} else {\n\t\t(opts.values)[vals[0]] = vals[1]\n\t}\n\treturn nil\n}\n\n// GetAll returns the values of MapOpts as a map.\nfunc (opts *MapOpts) GetAll() map[string]string {\n\treturn opts.values\n}\n\nfunc (opts *MapOpts) String() string {\n\treturn fmt.Sprintf(\"%v\", map[string]string((opts.values)))\n}\n\n// NewMapOpts creates a new MapOpts with the specified map of values and a validator.\nfunc NewMapOpts(values map[string]string, validator ValidatorFctType) *MapOpts {\n\tif values == nil {\n\t\tvalues = make(map[string]string)\n\t}\n\treturn &MapOpts{\n\t\tvalues:    values,\n\t\tvalidator: validator,\n\t}\n}\n\n// NamedMapOpts is a MapOpts struct with a configuration name.\n// This struct is useful to keep reference to the assigned\n// field name in the internal configuration struct.\ntype NamedMapOpts struct {\n\tname string\n\tMapOpts\n}\n\nvar _ NamedOption = &NamedMapOpts{}\n\n// NewNamedMapOpts creates a reference to a new NamedMapOpts struct.\nfunc NewNamedMapOpts(name string, values map[string]string, validator ValidatorFctType) *NamedMapOpts {\n\treturn &NamedMapOpts{\n\t\tname:    name,\n\t\tMapOpts: *NewMapOpts(values, validator),\n\t}\n}\n\n// Name returns the name of the NamedMapOpts in the configuration.\nfunc (o *NamedMapOpts) Name() string {\n\treturn o.name\n}\n\n// ValidatorFctType defines a validator function that returns a validated string and/or an error.\ntype ValidatorFctType func(val string) (string, error)\n\n// ValidatorFctListType defines a validator function that returns a validated list of string and/or an error\ntype ValidatorFctListType func(val string) ([]string, error)\n\n// ValidateIPAddress validates an Ip address.\nfunc ValidateIPAddress(val string) (string, error) {\n\tvar ip = net.ParseIP(strings.TrimSpace(val))\n\tif ip != nil {\n\t\treturn ip.String(), nil\n\t}\n\treturn \"\", fmt.Errorf(\"%s is not an ip address\", val)\n}\n\n// ValidateDNSSearch validates domain for resolvconf search configuration.\n// A zero length domain is represented by a dot (.).\nfunc ValidateDNSSearch(val string) (string, error) {\n\tif val = strings.Trim(val, \" \"); val == \".\" {\n\t\treturn val, nil\n\t}\n\treturn validateDomain(val)\n}\n\nfunc validateDomain(val string) (string, error) {\n\tif alphaRegexp.FindString(val) == \"\" {\n\t\treturn \"\", fmt.Errorf(\"%s is not a valid domain\", val)\n\t}\n\tns := domainRegexp.FindSubmatch([]byte(val))\n\tif len(ns) > 0 && len(ns[1]) < 255 {\n\t\treturn string(ns[1]), nil\n\t}\n\treturn \"\", fmt.Errorf(\"%s is not a valid domain\", val)\n}\n\n// ValidateLabel validates that the specified string is a valid label, and returns it.\n// Labels are in the form on key=value.\nfunc ValidateLabel(val string) (string, error) {\n\tif strings.Count(val, \"=\") < 1 {\n\t\treturn \"\", fmt.Errorf(\"bad attribute format: %s\", val)\n\t}\n\treturn val, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/opts/opts_unix.go",
    "content": "// +build !windows\n\npackage opts\n\n// DefaultHTTPHost Default HTTP Host used if only port is provided to -H flag e.g. docker daemon -H tcp://:8080\nconst DefaultHTTPHost = \"localhost\"\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/README.md",
    "content": "pkg/ is a collection of utility packages used by the Docker project without being specific to its internals.\n\nUtility packages are kept separate from the docker core codebase to keep it as small and concise as possible.\nIf some utilities grow larger and their APIs stabilize, they may be moved to their own repository under the\nDocker organization, to facilitate re-use by other projects. However that is not the priority.\n\nThe directory `pkg` is named after the same directory in the camlistore project. Since Brad is a core\nGo maintainer, we thought it made sense to copy his methods for organizing Go code :) Thanks Brad!\n\nBecause utility packages are small and neatly separated from the rest of the codebase, they are a good\nplace to start for aspiring maintainers and contributors. Get in touch if you want to help maintain them!\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/README.md",
    "content": "This code provides helper functions for dealing with archive files.\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/archive.go",
    "content": "package archive\n\nimport (\n\t\"archive/tar\"\n\t\"bufio\"\n\t\"bytes\"\n\t\"compress/bzip2\"\n\t\"compress/gzip\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/docker/containerd/subreaper/exec\"\n\n\t\"github.com/docker/docker/pkg/fileutils\"\n\t\"github.com/docker/docker/pkg/idtools\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/docker/docker/pkg/pools\"\n\t\"github.com/docker/docker/pkg/promise\"\n\t\"github.com/docker/docker/pkg/system\"\n\t\"github.com/sirupsen/logrus\"\n)\n\ntype (\n\t// Archive is a type of io.ReadCloser which has two interfaces Read and Closer.\n\tArchive io.ReadCloser\n\t// Reader is a type of io.Reader.\n\tReader io.Reader\n\t// Compression is the state represents if compressed or not.\n\tCompression int\n\t// TarChownOptions wraps the chown options UID and GID.\n\tTarChownOptions struct {\n\t\tUID, GID int\n\t}\n\t// TarOptions wraps the tar options.\n\tTarOptions struct {\n\t\tIncludeFiles     []string\n\t\tExcludePatterns  []string\n\t\tCompression      Compression\n\t\tNoLchown         bool\n\t\tUIDMaps          []idtools.IDMap\n\t\tGIDMaps          []idtools.IDMap\n\t\tChownOpts        *TarChownOptions\n\t\tIncludeSourceDir bool\n\t\t// When unpacking, specifies whether overwriting a directory with a\n\t\t// non-directory is allowed and vice versa.\n\t\tNoOverwriteDirNonDir bool\n\t\t// For each include when creating an archive, the included name will be\n\t\t// replaced with the matching name from this map.\n\t\tRebaseNames map[string]string\n\t}\n\n\t// Archiver allows the reuse of most utility functions of this package\n\t// with a pluggable Untar function. Also, to facilitate the passing of\n\t// specific id mappings for untar, an archiver can be created with maps\n\t// which will then be passed to Untar operations\n\tArchiver struct {\n\t\tUntar   func(io.Reader, string, *TarOptions) error\n\t\tUIDMaps []idtools.IDMap\n\t\tGIDMaps []idtools.IDMap\n\t}\n\n\t// breakoutError is used to differentiate errors related to breaking out\n\t// When testing archive breakout in the unit tests, this error is expected\n\t// in order for the test to pass.\n\tbreakoutError error\n)\n\nvar (\n\t// ErrNotImplemented is the error message of function not implemented.\n\tErrNotImplemented = errors.New(\"Function not implemented\")\n\tdefaultArchiver   = &Archiver{Untar: Untar, UIDMaps: nil, GIDMaps: nil}\n)\n\nconst (\n\t// HeaderSize is the size in bytes of a tar header\n\tHeaderSize = 512\n)\n\nconst (\n\t// Uncompressed represents the uncompressed.\n\tUncompressed Compression = iota\n\t// Bzip2 is bzip2 compression algorithm.\n\tBzip2\n\t// Gzip is gzip compression algorithm.\n\tGzip\n\t// Xz is xz compression algorithm.\n\tXz\n)\n\n// IsArchive checks for the magic bytes of a tar or any supported compression\n// algorithm.\nfunc IsArchive(header []byte) bool {\n\tcompression := DetectCompression(header)\n\tif compression != Uncompressed {\n\t\treturn true\n\t}\n\tr := tar.NewReader(bytes.NewBuffer(header))\n\t_, err := r.Next()\n\treturn err == nil\n}\n\n// IsArchivePath checks if the (possibly compressed) file at the given path\n// starts with a tar file header.\nfunc IsArchivePath(path string) bool {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn false\n\t}\n\tdefer file.Close()\n\trdr, err := DecompressStream(file)\n\tif err != nil {\n\t\treturn false\n\t}\n\tr := tar.NewReader(rdr)\n\t_, err = r.Next()\n\treturn err == nil\n}\n\n// DetectCompression detects the compression algorithm of the source.\nfunc DetectCompression(source []byte) Compression {\n\tfor compression, m := range map[Compression][]byte{\n\t\tBzip2: {0x42, 0x5A, 0x68},\n\t\tGzip:  {0x1F, 0x8B, 0x08},\n\t\tXz:    {0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00},\n\t} {\n\t\tif len(source) < len(m) {\n\t\t\tlogrus.Debugf(\"Len too short\")\n\t\t\tcontinue\n\t\t}\n\t\tif bytes.Compare(m, source[:len(m)]) == 0 {\n\t\t\treturn compression\n\t\t}\n\t}\n\treturn Uncompressed\n}\n\nfunc xzDecompress(archive io.Reader) (io.ReadCloser, <-chan struct{}, error) {\n\targs := []string{\"xz\", \"-d\", \"-c\", \"-q\"}\n\n\treturn cmdStream(exec.Command(args[0], args[1:]...), archive)\n}\n\n// DecompressStream decompress the archive and returns a ReaderCloser with the decompressed archive.\nfunc DecompressStream(archive io.Reader) (io.ReadCloser, error) {\n\tp := pools.BufioReader32KPool\n\tbuf := p.Get(archive)\n\tbs, err := buf.Peek(10)\n\tif err != nil && err != io.EOF {\n\t\t// Note: we'll ignore any io.EOF error because there are some odd\n\t\t// cases where the layer.tar file will be empty (zero bytes) and\n\t\t// that results in an io.EOF from the Peek() call. So, in those\n\t\t// cases we'll just treat it as a non-compressed stream and\n\t\t// that means just create an empty layer.\n\t\t// See Issue 18170\n\t\treturn nil, err\n\t}\n\n\tcompression := DetectCompression(bs)\n\tswitch compression {\n\tcase Uncompressed:\n\t\treadBufWrapper := p.NewReadCloserWrapper(buf, buf)\n\t\treturn readBufWrapper, nil\n\tcase Gzip:\n\t\tgzReader, err := gzip.NewReader(buf)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treadBufWrapper := p.NewReadCloserWrapper(buf, gzReader)\n\t\treturn readBufWrapper, nil\n\tcase Bzip2:\n\t\tbz2Reader := bzip2.NewReader(buf)\n\t\treadBufWrapper := p.NewReadCloserWrapper(buf, bz2Reader)\n\t\treturn readBufWrapper, nil\n\tcase Xz:\n\t\txzReader, chdone, err := xzDecompress(buf)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treadBufWrapper := p.NewReadCloserWrapper(buf, xzReader)\n\t\treturn ioutils.NewReadCloserWrapper(readBufWrapper, func() error {\n\t\t\t<-chdone\n\t\t\treturn readBufWrapper.Close()\n\t\t}), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported compression format %s\", (&compression).Extension())\n\t}\n}\n\n// CompressStream compresses the dest with specified compression algorithm.\nfunc CompressStream(dest io.WriteCloser, compression Compression) (io.WriteCloser, error) {\n\tp := pools.BufioWriter32KPool\n\tbuf := p.Get(dest)\n\tswitch compression {\n\tcase Uncompressed:\n\t\twriteBufWrapper := p.NewWriteCloserWrapper(buf, buf)\n\t\treturn writeBufWrapper, nil\n\tcase Gzip:\n\t\tgzWriter := gzip.NewWriter(dest)\n\t\twriteBufWrapper := p.NewWriteCloserWrapper(buf, gzWriter)\n\t\treturn writeBufWrapper, nil\n\tcase Bzip2, Xz:\n\t\t// archive/bzip2 does not support writing, and there is no xz support at all\n\t\t// However, this is not a problem as docker only currently generates gzipped tars\n\t\treturn nil, fmt.Errorf(\"Unsupported compression format %s\", (&compression).Extension())\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported compression format %s\", (&compression).Extension())\n\t}\n}\n\n// Extension returns the extension of a file that uses the specified compression algorithm.\nfunc (compression *Compression) Extension() string {\n\tswitch *compression {\n\tcase Uncompressed:\n\t\treturn \"tar\"\n\tcase Bzip2:\n\t\treturn \"tar.bz2\"\n\tcase Gzip:\n\t\treturn \"tar.gz\"\n\tcase Xz:\n\t\treturn \"tar.xz\"\n\t}\n\treturn \"\"\n}\n\ntype tarAppender struct {\n\tTarWriter *tar.Writer\n\tBuffer    *bufio.Writer\n\n\t// for hardlink mapping\n\tSeenFiles map[uint64]string\n\tUIDMaps   []idtools.IDMap\n\tGIDMaps   []idtools.IDMap\n}\n\n// canonicalTarName provides a platform-independent and consistent posix-style\n//path for files and directories to be archived regardless of the platform.\nfunc canonicalTarName(name string, isDir bool) (string, error) {\n\tname, err := CanonicalTarNameForPath(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// suffix with '/' for directories\n\tif isDir && !strings.HasSuffix(name, \"/\") {\n\t\tname += \"/\"\n\t}\n\treturn name, nil\n}\n\nfunc (ta *tarAppender) addTarFile(path, name string) error {\n\tfi, err := os.Lstat(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlink := \"\"\n\tif fi.Mode()&os.ModeSymlink != 0 {\n\t\tif link, err = os.Readlink(path); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\thdr, err := tar.FileInfoHeader(fi, link)\n\tif err != nil {\n\t\treturn err\n\t}\n\thdr.Mode = int64(chmodTarEntry(os.FileMode(hdr.Mode)))\n\n\tname, err = canonicalTarName(name, fi.IsDir())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"tar: cannot canonicalize path: %v\", err)\n\t}\n\thdr.Name = name\n\n\tinode, err := setHeaderForSpecialDevice(hdr, ta, name, fi.Sys())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// if it's not a directory and has more than 1 link,\n\t// it's hardlinked, so set the type flag accordingly\n\tif !fi.IsDir() && hasHardlinks(fi) {\n\t\t// a link should have a name that it links too\n\t\t// and that linked name should be first in the tar archive\n\t\tif oldpath, ok := ta.SeenFiles[inode]; ok {\n\t\t\thdr.Typeflag = tar.TypeLink\n\t\t\thdr.Linkname = oldpath\n\t\t\thdr.Size = 0 // This Must be here for the writer math to add up!\n\t\t} else {\n\t\t\tta.SeenFiles[inode] = name\n\t\t}\n\t}\n\n\tcapability, _ := system.Lgetxattr(path, \"security.capability\")\n\tif capability != nil {\n\t\thdr.Xattrs = make(map[string]string)\n\t\thdr.Xattrs[\"security.capability\"] = string(capability)\n\t}\n\n\t//handle re-mapping container ID mappings back to host ID mappings before\n\t//writing tar headers/files. We skip whiteout files because they were written\n\t//by the kernel and already have proper ownership relative to the host\n\tif !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && (ta.UIDMaps != nil || ta.GIDMaps != nil) {\n\t\tuid, gid, err := getFileUIDGID(fi.Sys())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\txUID, err := idtools.ToContainer(uid, ta.UIDMaps)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\txGID, err := idtools.ToContainer(gid, ta.GIDMaps)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thdr.Uid = xUID\n\t\thdr.Gid = xGID\n\t}\n\n\tif err := ta.TarWriter.WriteHeader(hdr); err != nil {\n\t\treturn err\n\t}\n\n\tif hdr.Typeflag == tar.TypeReg {\n\t\tfile, err := os.Open(path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tta.Buffer.Reset(ta.TarWriter)\n\t\tdefer ta.Buffer.Reset(nil)\n\t\t_, err = io.Copy(ta.Buffer, file)\n\t\tfile.Close()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = ta.Buffer.Flush()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, Lchown bool, chownOpts *TarChownOptions) error {\n\t// hdr.Mode is in linux format, which we can use for sycalls,\n\t// but for os.Foo() calls we need the mode converted to os.FileMode,\n\t// so use hdrInfo.Mode() (they differ for e.g. setuid bits)\n\thdrInfo := hdr.FileInfo()\n\n\tswitch hdr.Typeflag {\n\tcase tar.TypeDir:\n\t\t// Create directory unless it exists as a directory already.\n\t\t// In that case we just want to merge the two\n\t\tif fi, err := os.Lstat(path); !(err == nil && fi.IsDir()) {\n\t\t\tif err := os.Mkdir(path, hdrInfo.Mode()); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\tcase tar.TypeReg, tar.TypeRegA:\n\t\t// Source is regular file\n\t\tfile, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, hdrInfo.Mode())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := io.Copy(file, reader); err != nil {\n\t\t\tfile.Close()\n\t\t\treturn err\n\t\t}\n\t\tfile.Close()\n\n\tcase tar.TypeBlock, tar.TypeChar, tar.TypeFifo:\n\t\t// Handle this is an OS-specific way\n\t\tif err := handleTarTypeBlockCharFifo(hdr, path); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tcase tar.TypeLink:\n\t\ttargetPath := filepath.Join(extractDir, hdr.Linkname)\n\t\t// check for hardlink breakout\n\t\tif !strings.HasPrefix(targetPath, extractDir) {\n\t\t\treturn breakoutError(fmt.Errorf(\"invalid hardlink %q -> %q\", targetPath, hdr.Linkname))\n\t\t}\n\t\tif err := os.Link(targetPath, path); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tcase tar.TypeSymlink:\n\t\t// \tpath \t\t\t\t-> hdr.Linkname = targetPath\n\t\t// e.g. /extractDir/path/to/symlink \t-> ../2/file\t= /extractDir/path/2/file\n\t\ttargetPath := filepath.Join(filepath.Dir(path), hdr.Linkname)\n\n\t\t// the reason we don't need to check symlinks in the path (with FollowSymlinkInScope) is because\n\t\t// that symlink would first have to be created, which would be caught earlier, at this very check:\n\t\tif !strings.HasPrefix(targetPath, extractDir) {\n\t\t\treturn breakoutError(fmt.Errorf(\"invalid symlink %q -> %q\", path, hdr.Linkname))\n\t\t}\n\t\tif err := os.Symlink(hdr.Linkname, path); err != nil {\n\t\t\treturn err\n\t\t}\n\n\tcase tar.TypeXGlobalHeader:\n\t\tlogrus.Debugf(\"PAX Global Extended Headers found and ignored\")\n\t\treturn nil\n\n\tdefault:\n\t\treturn fmt.Errorf(\"Unhandled tar header type %d\\n\", hdr.Typeflag)\n\t}\n\n\t// Lchown is not supported on Windows.\n\tif Lchown && runtime.GOOS != \"windows\" {\n\t\tif chownOpts == nil {\n\t\t\tchownOpts = &TarChownOptions{UID: hdr.Uid, GID: hdr.Gid}\n\t\t}\n\t\tif err := os.Lchown(path, chownOpts.UID, chownOpts.GID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor key, value := range hdr.Xattrs {\n\t\tif err := system.Lsetxattr(path, key, []byte(value), 0); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// There is no LChmod, so ignore mode for symlink. Also, this\n\t// must happen after chown, as that can modify the file mode\n\tif err := handleLChmod(hdr, path, hdrInfo); err != nil {\n\t\treturn err\n\t}\n\n\taTime := hdr.AccessTime\n\tif aTime.Before(hdr.ModTime) {\n\t\t// Last access time should never be before last modified time.\n\t\taTime = hdr.ModTime\n\t}\n\n\t// system.Chtimes doesn't support a NOFOLLOW flag atm\n\tif hdr.Typeflag == tar.TypeLink {\n\t\tif fi, err := os.Lstat(hdr.Linkname); err == nil && (fi.Mode()&os.ModeSymlink == 0) {\n\t\t\tif err := system.Chtimes(path, aTime, hdr.ModTime); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else if hdr.Typeflag != tar.TypeSymlink {\n\t\tif err := system.Chtimes(path, aTime, hdr.ModTime); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tts := []syscall.Timespec{timeToTimespec(aTime), timeToTimespec(hdr.ModTime)}\n\t\tif err := system.LUtimesNano(path, ts); err != nil && err != system.ErrNotSupportedPlatform {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Tar creates an archive from the directory at `path`, and returns it as a\n// stream of bytes.\nfunc Tar(path string, compression Compression) (io.ReadCloser, error) {\n\treturn TarWithOptions(path, &TarOptions{Compression: compression})\n}\n\n// TarWithOptions creates an archive from the directory at `path`, only including files whose relative\n// paths are included in `options.IncludeFiles` (if non-nil) or not in `options.ExcludePatterns`.\nfunc TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error) {\n\n\t// Fix the source path to work with long path names. This is a no-op\n\t// on platforms other than Windows.\n\tsrcPath = fixVolumePathPrefix(srcPath)\n\n\tpatterns, patDirs, exceptions, err := fileutils.CleanPatterns(options.ExcludePatterns)\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpipeReader, pipeWriter := io.Pipe()\n\n\tcompressWriter, err := CompressStream(pipeWriter, options.Compression)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tgo func() {\n\t\tta := &tarAppender{\n\t\t\tTarWriter: tar.NewWriter(compressWriter),\n\t\t\tBuffer:    pools.BufioWriter32KPool.Get(nil),\n\t\t\tSeenFiles: make(map[uint64]string),\n\t\t\tUIDMaps:   options.UIDMaps,\n\t\t\tGIDMaps:   options.GIDMaps,\n\t\t}\n\n\t\tdefer func() {\n\t\t\t// Make sure to check the error on Close.\n\t\t\tif err := ta.TarWriter.Close(); err != nil {\n\t\t\t\tlogrus.Errorf(\"Can't close tar writer: %s\", err)\n\t\t\t}\n\t\t\tif err := compressWriter.Close(); err != nil {\n\t\t\t\tlogrus.Errorf(\"Can't close compress writer: %s\", err)\n\t\t\t}\n\t\t\tif err := pipeWriter.Close(); err != nil {\n\t\t\t\tlogrus.Errorf(\"Can't close pipe writer: %s\", err)\n\t\t\t}\n\t\t}()\n\n\t\t// this buffer is needed for the duration of this piped stream\n\t\tdefer pools.BufioWriter32KPool.Put(ta.Buffer)\n\n\t\t// In general we log errors here but ignore them because\n\t\t// during e.g. a diff operation the container can continue\n\t\t// mutating the filesystem and we can see transient errors\n\t\t// from this\n\n\t\tstat, err := os.Lstat(srcPath)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif !stat.IsDir() {\n\t\t\t// We can't later join a non-dir with any includes because the\n\t\t\t// 'walk' will error if \"file/.\" is stat-ed and \"file\" is not a\n\t\t\t// directory. So, we must split the source path and use the\n\t\t\t// basename as the include.\n\t\t\tif len(options.IncludeFiles) > 0 {\n\t\t\t\tlogrus.Warn(\"Tar: Can't archive a file with includes\")\n\t\t\t}\n\n\t\t\tdir, base := SplitPathDirEntry(srcPath)\n\t\t\tsrcPath = dir\n\t\t\toptions.IncludeFiles = []string{base}\n\t\t}\n\n\t\tif len(options.IncludeFiles) == 0 {\n\t\t\toptions.IncludeFiles = []string{\".\"}\n\t\t}\n\n\t\tseen := make(map[string]bool)\n\n\t\tfor _, include := range options.IncludeFiles {\n\t\t\trebaseName := options.RebaseNames[include]\n\n\t\t\twalkRoot := getWalkRoot(srcPath, include)\n\t\t\tfilepath.Walk(walkRoot, func(filePath string, f os.FileInfo, err error) error {\n\t\t\t\tif err != nil {\n\t\t\t\t\tlogrus.Errorf(\"Tar: Can't stat file %s to tar: %s\", srcPath, err)\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\n\t\t\t\trelFilePath, err := filepath.Rel(srcPath, filePath)\n\t\t\t\tif err != nil || (!options.IncludeSourceDir && relFilePath == \".\" && f.IsDir()) {\n\t\t\t\t\t// Error getting relative path OR we are looking\n\t\t\t\t\t// at the source directory path. Skip in both situations.\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\n\t\t\t\tif options.IncludeSourceDir && include == \".\" && relFilePath != \".\" {\n\t\t\t\t\trelFilePath = strings.Join([]string{\".\", relFilePath}, string(filepath.Separator))\n\t\t\t\t}\n\n\t\t\t\tskip := false\n\n\t\t\t\t// If \"include\" is an exact match for the current file\n\t\t\t\t// then even if there's an \"excludePatterns\" pattern that\n\t\t\t\t// matches it, don't skip it. IOW, assume an explicit 'include'\n\t\t\t\t// is asking for that file no matter what - which is true\n\t\t\t\t// for some files, like .dockerignore and Dockerfile (sometimes)\n\t\t\t\tif include != relFilePath {\n\t\t\t\t\tskip, err = fileutils.OptimizedMatches(relFilePath, patterns, patDirs)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlogrus.Errorf(\"Error matching %s: %v\", relFilePath, err)\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif skip {\n\t\t\t\t\t// If we want to skip this file and its a directory\n\t\t\t\t\t// then we should first check to see if there's an\n\t\t\t\t\t// excludes pattern (eg !dir/file) that starts with this\n\t\t\t\t\t// dir. If so then we can't skip this dir.\n\n\t\t\t\t\t// Its not a dir then so we can just return/skip.\n\t\t\t\t\tif !f.IsDir() {\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\n\t\t\t\t\t// No exceptions (!...) in patterns so just skip dir\n\t\t\t\t\tif !exceptions {\n\t\t\t\t\t\treturn filepath.SkipDir\n\t\t\t\t\t}\n\n\t\t\t\t\tdirSlash := relFilePath + string(filepath.Separator)\n\n\t\t\t\t\tfor _, pat := range patterns {\n\t\t\t\t\t\tif pat[0] != '!' {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpat = pat[1:] + string(filepath.Separator)\n\t\t\t\t\t\tif strings.HasPrefix(pat, dirSlash) {\n\t\t\t\t\t\t\t// found a match - so can't skip this dir\n\t\t\t\t\t\t\treturn nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// No matching exclusion dir so just skip dir\n\t\t\t\t\treturn filepath.SkipDir\n\t\t\t\t}\n\n\t\t\t\tif seen[relFilePath] {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tseen[relFilePath] = true\n\n\t\t\t\t// Rename the base resource.\n\t\t\t\tif rebaseName != \"\" {\n\t\t\t\t\tvar replacement string\n\t\t\t\t\tif rebaseName != string(filepath.Separator) {\n\t\t\t\t\t\t// Special case the root directory to replace with an\n\t\t\t\t\t\t// empty string instead so that we don't end up with\n\t\t\t\t\t\t// double slashes in the paths.\n\t\t\t\t\t\treplacement = rebaseName\n\t\t\t\t\t}\n\n\t\t\t\t\trelFilePath = strings.Replace(relFilePath, include, replacement, 1)\n\t\t\t\t}\n\n\t\t\t\tif err := ta.addTarFile(filePath, relFilePath); err != nil {\n\t\t\t\t\tlogrus.Errorf(\"Can't add file %s to tar: %s\", filePath, err)\n\t\t\t\t\t// if pipe is broken, stop writting tar stream to it\n\t\t\t\t\tif err == io.ErrClosedPipe {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t})\n\t\t}\n\t}()\n\n\treturn pipeReader, nil\n}\n\n// Unpack unpacks the decompressedArchive to dest with options.\nfunc Unpack(decompressedArchive io.Reader, dest string, options *TarOptions) error {\n\ttr := tar.NewReader(decompressedArchive)\n\ttrBuf := pools.BufioReader32KPool.Get(nil)\n\tdefer pools.BufioReader32KPool.Put(trBuf)\n\n\tvar dirs []*tar.Header\n\tremappedRootUID, remappedRootGID, err := idtools.GetRootUIDGID(options.UIDMaps, options.GIDMaps)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Iterate through the files in the archive.\nloop:\n\tfor {\n\t\thdr, err := tr.Next()\n\t\tif err == io.EOF {\n\t\t\t// end of tar archive\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Normalize name, for safety and for a simple is-root check\n\t\t// This keeps \"../\" as-is, but normalizes \"/../\" to \"/\". Or Windows:\n\t\t// This keeps \"..\\\" as-is, but normalizes \"\\..\\\" to \"\\\".\n\t\thdr.Name = filepath.Clean(hdr.Name)\n\n\t\tfor _, exclude := range options.ExcludePatterns {\n\t\t\tif strings.HasPrefix(hdr.Name, exclude) {\n\t\t\t\tcontinue loop\n\t\t\t}\n\t\t}\n\n\t\t// After calling filepath.Clean(hdr.Name) above, hdr.Name will now be in\n\t\t// the filepath format for the OS on which the daemon is running. Hence\n\t\t// the check for a slash-suffix MUST be done in an OS-agnostic way.\n\t\tif !strings.HasSuffix(hdr.Name, string(os.PathSeparator)) {\n\t\t\t// Not the root directory, ensure that the parent directory exists\n\t\t\tparent := filepath.Dir(hdr.Name)\n\t\t\tparentPath := filepath.Join(dest, parent)\n\t\t\tif _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {\n\t\t\t\terr = idtools.MkdirAllNewAs(parentPath, 0777, remappedRootUID, remappedRootGID)\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\n\t\tpath := filepath.Join(dest, hdr.Name)\n\t\trel, err := filepath.Rel(dest, path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif strings.HasPrefix(rel, \"..\"+string(os.PathSeparator)) {\n\t\t\treturn breakoutError(fmt.Errorf(\"%q is outside of %q\", hdr.Name, dest))\n\t\t}\n\n\t\t// If path exits we almost always just want to remove and replace it\n\t\t// The only exception is when it is a directory *and* the file from\n\t\t// the layer is also a directory. Then we want to merge them (i.e.\n\t\t// just apply the metadata from the layer).\n\t\tif fi, err := os.Lstat(path); err == nil {\n\t\t\tif options.NoOverwriteDirNonDir && fi.IsDir() && hdr.Typeflag != tar.TypeDir {\n\t\t\t\t// If NoOverwriteDirNonDir is true then we cannot replace\n\t\t\t\t// an existing directory with a non-directory from the archive.\n\t\t\t\treturn fmt.Errorf(\"cannot overwrite directory %q with non-directory %q\", path, dest)\n\t\t\t}\n\n\t\t\tif options.NoOverwriteDirNonDir && !fi.IsDir() && hdr.Typeflag == tar.TypeDir {\n\t\t\t\t// If NoOverwriteDirNonDir is true then we cannot replace\n\t\t\t\t// an existing non-directory with a directory from the archive.\n\t\t\t\treturn fmt.Errorf(\"cannot overwrite non-directory %q with directory %q\", path, dest)\n\t\t\t}\n\n\t\t\tif fi.IsDir() && hdr.Name == \".\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif !(fi.IsDir() && hdr.Typeflag == tar.TypeDir) {\n\t\t\t\tif err := os.RemoveAll(path); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttrBuf.Reset(tr)\n\n\t\t// if the options contain a uid & gid maps, convert header uid/gid\n\t\t// entries using the maps such that lchown sets the proper mapped\n\t\t// uid/gid after writing the file. We only perform this mapping if\n\t\t// the file isn't already owned by the remapped root UID or GID, as\n\t\t// that specific uid/gid has no mapping from container -> host, and\n\t\t// those files already have the proper ownership for inside the\n\t\t// container.\n\t\tif hdr.Uid != remappedRootUID {\n\t\t\txUID, err := idtools.ToHost(hdr.Uid, options.UIDMaps)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Uid = xUID\n\t\t}\n\t\tif hdr.Gid != remappedRootGID {\n\t\t\txGID, err := idtools.ToHost(hdr.Gid, options.GIDMaps)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Gid = xGID\n\t\t}\n\n\t\tif err := createTarFile(path, dest, hdr, trBuf, !options.NoLchown, options.ChownOpts); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Directory mtimes must be handled at the end to avoid further\n\t\t// file creation in them to modify the directory mtime\n\t\tif hdr.Typeflag == tar.TypeDir {\n\t\t\tdirs = append(dirs, hdr)\n\t\t}\n\t}\n\n\tfor _, hdr := range dirs {\n\t\tpath := filepath.Join(dest, hdr.Name)\n\n\t\tif err := system.Chtimes(path, hdr.AccessTime, hdr.ModTime); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Untar reads a stream of bytes from `archive`, parses it as a tar archive,\n// and unpacks it into the directory at `dest`.\n// The archive may be compressed with one of the following algorithms:\n//  identity (uncompressed), gzip, bzip2, xz.\n// FIXME: specify behavior when target path exists vs. doesn't exist.\nfunc Untar(tarArchive io.Reader, dest string, options *TarOptions) error {\n\treturn untarHandler(tarArchive, dest, options, true)\n}\n\n// UntarUncompressed reads a stream of bytes from `archive`, parses it as a tar archive,\n// and unpacks it into the directory at `dest`.\n// The archive must be an uncompressed stream.\nfunc UntarUncompressed(tarArchive io.Reader, dest string, options *TarOptions) error {\n\treturn untarHandler(tarArchive, dest, options, false)\n}\n\n// Handler for teasing out the automatic decompression\nfunc untarHandler(tarArchive io.Reader, dest string, options *TarOptions, decompress bool) error {\n\tif tarArchive == nil {\n\t\treturn fmt.Errorf(\"Empty archive\")\n\t}\n\tdest = filepath.Clean(dest)\n\tif options == nil {\n\t\toptions = &TarOptions{}\n\t}\n\tif options.ExcludePatterns == nil {\n\t\toptions.ExcludePatterns = []string{}\n\t}\n\n\tr := tarArchive\n\tif decompress {\n\t\tdecompressedArchive, err := DecompressStream(tarArchive)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer decompressedArchive.Close()\n\t\tr = decompressedArchive\n\t}\n\n\treturn Unpack(r, dest, options)\n}\n\n// TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other.\n// If either Tar or Untar fails, TarUntar aborts and returns the error.\nfunc (archiver *Archiver) TarUntar(src, dst string) error {\n\tlogrus.Debugf(\"TarUntar(%s %s)\", src, dst)\n\tarchive, err := TarWithOptions(src, &TarOptions{Compression: Uncompressed})\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer archive.Close()\n\n\tvar options *TarOptions\n\tif archiver.UIDMaps != nil || archiver.GIDMaps != nil {\n\t\toptions = &TarOptions{\n\t\t\tUIDMaps: archiver.UIDMaps,\n\t\t\tGIDMaps: archiver.GIDMaps,\n\t\t}\n\t}\n\treturn archiver.Untar(archive, dst, options)\n}\n\n// TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other.\n// If either Tar or Untar fails, TarUntar aborts and returns the error.\nfunc TarUntar(src, dst string) error {\n\treturn defaultArchiver.TarUntar(src, dst)\n}\n\n// UntarPath untar a file from path to a destination, src is the source tar file path.\nfunc (archiver *Archiver) UntarPath(src, dst string) error {\n\tarchive, err := os.Open(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer archive.Close()\n\tvar options *TarOptions\n\tif archiver.UIDMaps != nil || archiver.GIDMaps != nil {\n\t\toptions = &TarOptions{\n\t\t\tUIDMaps: archiver.UIDMaps,\n\t\t\tGIDMaps: archiver.GIDMaps,\n\t\t}\n\t}\n\treturn archiver.Untar(archive, dst, options)\n}\n\n// UntarPath is a convenience function which looks for an archive\n// at filesystem path `src`, and unpacks it at `dst`.\nfunc UntarPath(src, dst string) error {\n\treturn defaultArchiver.UntarPath(src, dst)\n}\n\n// CopyWithTar creates a tar archive of filesystem path `src`, and\n// unpacks it at filesystem path `dst`.\n// The archive is streamed directly with fixed buffering and no\n// intermediary disk IO.\nfunc (archiver *Archiver) CopyWithTar(src, dst string) error {\n\tsrcSt, err := os.Stat(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !srcSt.IsDir() {\n\t\treturn archiver.CopyFileWithTar(src, dst)\n\t}\n\n\t// if this archiver is set up with ID mapping we need to create\n\t// the new destination directory with the remapped root UID/GID pair\n\t// as owner\n\trootUID, rootGID, err := idtools.GetRootUIDGID(archiver.UIDMaps, archiver.GIDMaps)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Create dst, copy src's content into it\n\tlogrus.Debugf(\"Creating dest directory: %s\", dst)\n\tif err := idtools.MkdirAllNewAs(dst, 0755, rootUID, rootGID); err != nil {\n\t\treturn err\n\t}\n\tlogrus.Debugf(\"Calling TarUntar(%s, %s)\", src, dst)\n\treturn archiver.TarUntar(src, dst)\n}\n\n// CopyWithTar creates a tar archive of filesystem path `src`, and\n// unpacks it at filesystem path `dst`.\n// The archive is streamed directly with fixed buffering and no\n// intermediary disk IO.\nfunc CopyWithTar(src, dst string) error {\n\treturn defaultArchiver.CopyWithTar(src, dst)\n}\n\n// CopyFileWithTar emulates the behavior of the 'cp' command-line\n// for a single file. It copies a regular file from path `src` to\n// path `dst`, and preserves all its metadata.\nfunc (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) {\n\tlogrus.Debugf(\"CopyFileWithTar(%s, %s)\", src, dst)\n\tsrcSt, err := os.Stat(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif srcSt.IsDir() {\n\t\treturn fmt.Errorf(\"Can't copy a directory\")\n\t}\n\n\t// Clean up the trailing slash. This must be done in an operating\n\t// system specific manner.\n\tif dst[len(dst)-1] == os.PathSeparator {\n\t\tdst = filepath.Join(dst, filepath.Base(src))\n\t}\n\t// Create the holding directory if necessary\n\tif err := system.MkdirAll(filepath.Dir(dst), 0700); err != nil {\n\t\treturn err\n\t}\n\n\tr, w := io.Pipe()\n\terrC := promise.Go(func() error {\n\t\tdefer w.Close()\n\n\t\tsrcF, err := os.Open(src)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer srcF.Close()\n\n\t\thdr, err := tar.FileInfoHeader(srcSt, \"\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thdr.Name = filepath.Base(dst)\n\t\thdr.Mode = int64(chmodTarEntry(os.FileMode(hdr.Mode)))\n\n\t\tremappedRootUID, remappedRootGID, err := idtools.GetRootUIDGID(archiver.UIDMaps, archiver.GIDMaps)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// only perform mapping if the file being copied isn't already owned by the\n\t\t// uid or gid of the remapped root in the container\n\t\tif remappedRootUID != hdr.Uid {\n\t\t\txUID, err := idtools.ToHost(hdr.Uid, archiver.UIDMaps)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Uid = xUID\n\t\t}\n\t\tif remappedRootGID != hdr.Gid {\n\t\t\txGID, err := idtools.ToHost(hdr.Gid, archiver.GIDMaps)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Gid = xGID\n\t\t}\n\n\t\ttw := tar.NewWriter(w)\n\t\tdefer tw.Close()\n\t\tif err := tw.WriteHeader(hdr); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := io.Copy(tw, srcF); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n\tdefer func() {\n\t\tif er := <-errC; err != nil {\n\t\t\terr = er\n\t\t}\n\t}()\n\n\terr = archiver.Untar(r, filepath.Dir(dst), nil)\n\tif err != nil {\n\t\tr.CloseWithError(err)\n\t}\n\treturn err\n}\n\n// CopyFileWithTar emulates the behavior of the 'cp' command-line\n// for a single file. It copies a regular file from path `src` to\n// path `dst`, and preserves all its metadata.\n//\n// Destination handling is in an operating specific manner depending\n// where the daemon is running. If `dst` ends with a trailing slash\n// the final destination path will be `dst/base(src)`  (Linux) or\n// `dst\\base(src)` (Windows).\nfunc CopyFileWithTar(src, dst string) (err error) {\n\treturn defaultArchiver.CopyFileWithTar(src, dst)\n}\n\n// cmdStream executes a command, and returns its stdout as a stream.\n// If the command fails to run or doesn't complete successfully, an error\n// will be returned, including anything written on stderr.\nfunc cmdStream(cmd *exec.Cmd, input io.Reader) (io.ReadCloser, <-chan struct{}, error) {\n\tchdone := make(chan struct{})\n\tcmd.Stdin = input\n\tpipeR, pipeW := io.Pipe()\n\tcmd.Stdout = pipeW\n\tvar errBuf bytes.Buffer\n\tcmd.Stderr = &errBuf\n\n\t// Run the command and return the pipe\n\tif err := cmd.Start(); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// Copy stdout to the returned pipe\n\tgo func() {\n\t\tif err := cmd.Wait(); err != nil {\n\t\t\tpipeW.CloseWithError(fmt.Errorf(\"%s: %s\", err, errBuf.String()))\n\t\t} else {\n\t\t\tpipeW.Close()\n\t\t}\n\t\tclose(chdone)\n\t}()\n\n\treturn pipeR, chdone, nil\n}\n\n// NewTempArchive reads the content of src into a temporary file, and returns the contents\n// of that file as an archive. The archive can only be read once - as soon as reading completes,\n// the file will be deleted.\nfunc NewTempArchive(src Archive, dir string) (*TempArchive, error) {\n\tf, err := ioutil.TempFile(dir, \"\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif _, err := io.Copy(f, src); err != nil {\n\t\treturn nil, err\n\t}\n\tif _, err := f.Seek(0, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tst, err := f.Stat()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsize := st.Size()\n\treturn &TempArchive{File: f, Size: size}, nil\n}\n\n// TempArchive is a temporary archive. The archive can only be read once - as soon as reading completes,\n// the file will be deleted.\ntype TempArchive struct {\n\t*os.File\n\tSize   int64 // Pre-computed from Stat().Size() as a convenience\n\tread   int64\n\tclosed bool\n}\n\n// Close closes the underlying file if it's still open, or does a no-op\n// to allow callers to try to close the TempArchive multiple times safely.\nfunc (archive *TempArchive) Close() error {\n\tif archive.closed {\n\t\treturn nil\n\t}\n\n\tarchive.closed = true\n\n\treturn archive.File.Close()\n}\n\nfunc (archive *TempArchive) Read(data []byte) (int, error) {\n\tn, err := archive.File.Read(data)\n\tarchive.read += int64(n)\n\tif err != nil || archive.read == archive.Size {\n\t\tarchive.Close()\n\t\tos.Remove(archive.File.Name())\n\t}\n\treturn n, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/archive_unix.go",
    "content": "// +build !windows\n\npackage archive\n\nimport (\n\t\"archive/tar\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\n// fixVolumePathPrefix does platform specific processing to ensure that if\n// the path being passed in is not in a volume path format, convert it to one.\nfunc fixVolumePathPrefix(srcPath string) string {\n\treturn srcPath\n}\n\n// getWalkRoot calculates the root path when performing a TarWithOptions.\n// We use a separate function as this is platform specific. On Linux, we\n// can't use filepath.Join(srcPath,include) because this will clean away\n// a trailing \".\" or \"/\" which may be important.\nfunc getWalkRoot(srcPath string, include string) string {\n\treturn srcPath + string(filepath.Separator) + include\n}\n\n// CanonicalTarNameForPath returns platform-specific filepath\n// to canonical posix-style path for tar archival. p is relative\n// path.\nfunc CanonicalTarNameForPath(p string) (string, error) {\n\treturn p, nil // already unix-style\n}\n\n// chmodTarEntry is used to adjust the file permissions used in tar header based\n// on the platform the archival is done.\n\nfunc chmodTarEntry(perm os.FileMode) os.FileMode {\n\treturn perm // noop for unix as golang APIs provide perm bits correctly\n}\n\nfunc setHeaderForSpecialDevice(hdr *tar.Header, ta *tarAppender, name string, stat interface{}) (inode uint64, err error) {\n\ts, ok := stat.(*syscall.Stat_t)\n\n\tif !ok {\n\t\terr = errors.New(\"cannot convert stat value to syscall.Stat_t\")\n\t\treturn\n\t}\n\n\tinode = uint64(s.Ino)\n\n\t// Currently go does not fill in the major/minors\n\tif s.Mode&syscall.S_IFBLK != 0 ||\n\t\ts.Mode&syscall.S_IFCHR != 0 {\n\t\thdr.Devmajor = int64(major(uint64(s.Rdev)))\n\t\thdr.Devminor = int64(minor(uint64(s.Rdev)))\n\t}\n\n\treturn\n}\n\nfunc getFileUIDGID(stat interface{}) (int, int, error) {\n\ts, ok := stat.(*syscall.Stat_t)\n\n\tif !ok {\n\t\treturn -1, -1, errors.New(\"cannot convert stat value to syscall.Stat_t\")\n\t}\n\treturn int(s.Uid), int(s.Gid), nil\n}\n\nfunc major(device uint64) uint64 {\n\treturn (device >> 8) & 0xfff\n}\n\nfunc minor(device uint64) uint64 {\n\treturn (device & 0xff) | ((device >> 12) & 0xfff00)\n}\n\n// handleTarTypeBlockCharFifo is an OS-specific helper function used by\n// createTarFile to handle the following types of header: Block; Char; Fifo\nfunc handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error {\n\tmode := uint32(hdr.Mode & 07777)\n\tswitch hdr.Typeflag {\n\tcase tar.TypeBlock:\n\t\tmode |= syscall.S_IFBLK\n\tcase tar.TypeChar:\n\t\tmode |= syscall.S_IFCHR\n\tcase tar.TypeFifo:\n\t\tmode |= syscall.S_IFIFO\n\t}\n\n\tif err := system.Mknod(path, mode, int(system.Mkdev(hdr.Devmajor, hdr.Devminor))); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error {\n\tif hdr.Typeflag == tar.TypeLink {\n\t\tif fi, err := os.Lstat(hdr.Linkname); err == nil && (fi.Mode()&os.ModeSymlink == 0) {\n\t\t\tif err := os.Chmod(path, hdrInfo.Mode()); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else if hdr.Typeflag != tar.TypeSymlink {\n\t\tif err := os.Chmod(path, hdrInfo.Mode()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/changes.go",
    "content": "package archive\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/docker/docker/pkg/idtools\"\n\t\"github.com/docker/docker/pkg/pools\"\n\t\"github.com/docker/docker/pkg/system\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// ChangeType represents the change type.\ntype ChangeType int\n\nconst (\n\t// ChangeModify represents the modify operation.\n\tChangeModify = iota\n\t// ChangeAdd represents the add operation.\n\tChangeAdd\n\t// ChangeDelete represents the delete operation.\n\tChangeDelete\n)\n\nfunc (c ChangeType) String() string {\n\tswitch c {\n\tcase ChangeModify:\n\t\treturn \"C\"\n\tcase ChangeAdd:\n\t\treturn \"A\"\n\tcase ChangeDelete:\n\t\treturn \"D\"\n\t}\n\treturn \"\"\n}\n\n// Change represents a change, it wraps the change type and path.\n// It describes changes of the files in the path respect to the\n// parent layers. The change could be modify, add, delete.\n// This is used for layer diff.\ntype Change struct {\n\tPath string\n\tKind ChangeType\n}\n\nfunc (change *Change) String() string {\n\treturn fmt.Sprintf(\"%s %s\", change.Kind, change.Path)\n}\n\n// for sort.Sort\ntype changesByPath []Change\n\nfunc (c changesByPath) Less(i, j int) bool { return c[i].Path < c[j].Path }\nfunc (c changesByPath) Len() int           { return len(c) }\nfunc (c changesByPath) Swap(i, j int)      { c[j], c[i] = c[i], c[j] }\n\n// Gnu tar and the go tar writer don't have sub-second mtime\n// precision, which is problematic when we apply changes via tar\n// files, we handle this by comparing for exact times, *or* same\n// second count and either a or b having exactly 0 nanoseconds\nfunc sameFsTime(a, b time.Time) bool {\n\treturn a == b ||\n\t\t(a.Unix() == b.Unix() &&\n\t\t\t(a.Nanosecond() == 0 || b.Nanosecond() == 0))\n}\n\nfunc sameFsTimeSpec(a, b syscall.Timespec) bool {\n\treturn a.Sec == b.Sec &&\n\t\t(a.Nsec == b.Nsec || a.Nsec == 0 || b.Nsec == 0)\n}\n\n// Changes walks the path rw and determines changes for the files in the path,\n// with respect to the parent layers\nfunc Changes(layers []string, rw string) ([]Change, error) {\n\tvar (\n\t\tchanges     []Change\n\t\tchangedDirs = make(map[string]struct{})\n\t)\n\n\terr := filepath.Walk(rw, func(path string, f os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Rebase path\n\t\tpath, err = filepath.Rel(rw, path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// As this runs on the daemon side, file paths are OS specific.\n\t\tpath = filepath.Join(string(os.PathSeparator), path)\n\n\t\t// Skip root\n\t\tif path == string(os.PathSeparator) {\n\t\t\treturn nil\n\t\t}\n\n\t\t// Skip AUFS metadata\n\t\tif matched, err := filepath.Match(string(os.PathSeparator)+WhiteoutMetaPrefix+\"*\", path); err != nil || matched {\n\t\t\treturn err\n\t\t}\n\n\t\tchange := Change{\n\t\t\tPath: path,\n\t\t}\n\n\t\t// Find out what kind of modification happened\n\t\tfile := filepath.Base(path)\n\t\t// If there is a whiteout, then the file was removed\n\t\tif strings.HasPrefix(file, WhiteoutPrefix) {\n\t\t\toriginalFile := file[len(WhiteoutPrefix):]\n\t\t\tchange.Path = filepath.Join(filepath.Dir(path), originalFile)\n\t\t\tchange.Kind = ChangeDelete\n\t\t} else {\n\t\t\t// Otherwise, the file was added\n\t\t\tchange.Kind = ChangeAdd\n\n\t\t\t// ...Unless it already existed in a top layer, in which case, it's a modification\n\t\t\tfor _, layer := range layers {\n\t\t\t\tstat, err := os.Stat(filepath.Join(layer, path))\n\t\t\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\t// The file existed in the top layer, so that's a modification\n\n\t\t\t\t\t// However, if it's a directory, maybe it wasn't actually modified.\n\t\t\t\t\t// If you modify /foo/bar/baz, then /foo will be part of the changed files only because it's the parent of bar\n\t\t\t\t\tif stat.IsDir() && f.IsDir() {\n\t\t\t\t\t\tif f.Size() == stat.Size() && f.Mode() == stat.Mode() && sameFsTime(f.ModTime(), stat.ModTime()) {\n\t\t\t\t\t\t\t// Both directories are the same, don't record the change\n\t\t\t\t\t\t\treturn nil\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchange.Kind = ChangeModify\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If /foo/bar/file.txt is modified, then /foo/bar must be part of the changed files.\n\t\t// This block is here to ensure the change is recorded even if the\n\t\t// modify time, mode and size of the parent directory in the rw and ro layers are all equal.\n\t\t// Check https://github.com/docker/docker/pull/13590 for details.\n\t\tif f.IsDir() {\n\t\t\tchangedDirs[path] = struct{}{}\n\t\t}\n\t\tif change.Kind == ChangeAdd || change.Kind == ChangeDelete {\n\t\t\tparent := filepath.Dir(path)\n\t\t\tif _, ok := changedDirs[parent]; !ok && parent != \"/\" {\n\t\t\t\tchanges = append(changes, Change{Path: parent, Kind: ChangeModify})\n\t\t\t\tchangedDirs[parent] = struct{}{}\n\t\t\t}\n\t\t}\n\n\t\t// Record change\n\t\tchanges = append(changes, change)\n\t\treturn nil\n\t})\n\tif err != nil && !os.IsNotExist(err) {\n\t\treturn nil, err\n\t}\n\treturn changes, nil\n}\n\n// FileInfo describes the information of a file.\ntype FileInfo struct {\n\tparent     *FileInfo\n\tname       string\n\tstat       *system.StatT\n\tchildren   map[string]*FileInfo\n\tcapability []byte\n\tadded      bool\n}\n\n// LookUp looks up the file information of a file.\nfunc (info *FileInfo) LookUp(path string) *FileInfo {\n\t// As this runs on the daemon side, file paths are OS specific.\n\tparent := info\n\tif path == string(os.PathSeparator) {\n\t\treturn info\n\t}\n\n\tpathElements := strings.Split(path, string(os.PathSeparator))\n\tfor _, elem := range pathElements {\n\t\tif elem != \"\" {\n\t\t\tchild := parent.children[elem]\n\t\t\tif child == nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tparent = child\n\t\t}\n\t}\n\treturn parent\n}\n\nfunc (info *FileInfo) path() string {\n\tif info.parent == nil {\n\t\t// As this runs on the daemon side, file paths are OS specific.\n\t\treturn string(os.PathSeparator)\n\t}\n\treturn filepath.Join(info.parent.path(), info.name)\n}\n\nfunc (info *FileInfo) addChanges(oldInfo *FileInfo, changes *[]Change) {\n\n\tsizeAtEntry := len(*changes)\n\n\tif oldInfo == nil {\n\t\t// add\n\t\tchange := Change{\n\t\t\tPath: info.path(),\n\t\t\tKind: ChangeAdd,\n\t\t}\n\t\t*changes = append(*changes, change)\n\t\tinfo.added = true\n\t}\n\n\t// We make a copy so we can modify it to detect additions\n\t// also, we only recurse on the old dir if the new info is a directory\n\t// otherwise any previous delete/change is considered recursive\n\toldChildren := make(map[string]*FileInfo)\n\tif oldInfo != nil && info.isDir() {\n\t\tfor k, v := range oldInfo.children {\n\t\t\toldChildren[k] = v\n\t\t}\n\t}\n\n\tfor name, newChild := range info.children {\n\t\toldChild, _ := oldChildren[name]\n\t\tif oldChild != nil {\n\t\t\t// change?\n\t\t\toldStat := oldChild.stat\n\t\t\tnewStat := newChild.stat\n\t\t\t// Note: We can't compare inode or ctime or blocksize here, because these change\n\t\t\t// when copying a file into a container. However, that is not generally a problem\n\t\t\t// because any content change will change mtime, and any status change should\n\t\t\t// be visible when actually comparing the stat fields. The only time this\n\t\t\t// breaks down is if some code intentionally hides a change by setting\n\t\t\t// back mtime\n\t\t\tif statDifferent(oldStat, newStat) ||\n\t\t\t\tbytes.Compare(oldChild.capability, newChild.capability) != 0 {\n\t\t\t\tchange := Change{\n\t\t\t\t\tPath: newChild.path(),\n\t\t\t\t\tKind: ChangeModify,\n\t\t\t\t}\n\t\t\t\t*changes = append(*changes, change)\n\t\t\t\tnewChild.added = true\n\t\t\t}\n\n\t\t\t// Remove from copy so we can detect deletions\n\t\t\tdelete(oldChildren, name)\n\t\t}\n\n\t\tnewChild.addChanges(oldChild, changes)\n\t}\n\tfor _, oldChild := range oldChildren {\n\t\t// delete\n\t\tchange := Change{\n\t\t\tPath: oldChild.path(),\n\t\t\tKind: ChangeDelete,\n\t\t}\n\t\t*changes = append(*changes, change)\n\t}\n\n\t// If there were changes inside this directory, we need to add it, even if the directory\n\t// itself wasn't changed. This is needed to properly save and restore filesystem permissions.\n\t// As this runs on the daemon side, file paths are OS specific.\n\tif len(*changes) > sizeAtEntry && info.isDir() && !info.added && info.path() != string(os.PathSeparator) {\n\t\tchange := Change{\n\t\t\tPath: info.path(),\n\t\t\tKind: ChangeModify,\n\t\t}\n\t\t// Let's insert the directory entry before the recently added entries located inside this dir\n\t\t*changes = append(*changes, change) // just to resize the slice, will be overwritten\n\t\tcopy((*changes)[sizeAtEntry+1:], (*changes)[sizeAtEntry:])\n\t\t(*changes)[sizeAtEntry] = change\n\t}\n\n}\n\n// Changes add changes to file information.\nfunc (info *FileInfo) Changes(oldInfo *FileInfo) []Change {\n\tvar changes []Change\n\n\tinfo.addChanges(oldInfo, &changes)\n\n\treturn changes\n}\n\nfunc newRootFileInfo() *FileInfo {\n\t// As this runs on the daemon side, file paths are OS specific.\n\troot := &FileInfo{\n\t\tname:     string(os.PathSeparator),\n\t\tchildren: make(map[string]*FileInfo),\n\t}\n\treturn root\n}\n\n// ChangesDirs compares two directories and generates an array of Change objects describing the changes.\n// If oldDir is \"\", then all files in newDir will be Add-Changes.\nfunc ChangesDirs(newDir, oldDir string) ([]Change, error) {\n\tvar (\n\t\toldRoot, newRoot *FileInfo\n\t)\n\tif oldDir == \"\" {\n\t\temptyDir, err := ioutil.TempDir(\"\", \"empty\")\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer os.Remove(emptyDir)\n\t\toldDir = emptyDir\n\t}\n\toldRoot, newRoot, err := collectFileInfoForChanges(oldDir, newDir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn newRoot.Changes(oldRoot), nil\n}\n\n// ChangesSize calculates the size in bytes of the provided changes, based on newDir.\nfunc ChangesSize(newDir string, changes []Change) int64 {\n\tvar (\n\t\tsize int64\n\t\tsf   = make(map[uint64]struct{})\n\t)\n\tfor _, change := range changes {\n\t\tif change.Kind == ChangeModify || change.Kind == ChangeAdd {\n\t\t\tfile := filepath.Join(newDir, change.Path)\n\t\t\tfileInfo, err := os.Lstat(file)\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Errorf(\"Can not stat %q: %s\", file, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif fileInfo != nil && !fileInfo.IsDir() {\n\t\t\t\tif hasHardlinks(fileInfo) {\n\t\t\t\t\tinode := getIno(fileInfo)\n\t\t\t\t\tif _, ok := sf[inode]; !ok {\n\t\t\t\t\t\tsize += fileInfo.Size()\n\t\t\t\t\t\tsf[inode] = struct{}{}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsize += fileInfo.Size()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn size\n}\n\n// ExportChanges produces an Archive from the provided changes, relative to dir.\nfunc ExportChanges(dir string, changes []Change, uidMaps, gidMaps []idtools.IDMap) (Archive, error) {\n\treader, writer := io.Pipe()\n\tgo func() {\n\t\tta := &tarAppender{\n\t\t\tTarWriter: tar.NewWriter(writer),\n\t\t\tBuffer:    pools.BufioWriter32KPool.Get(nil),\n\t\t\tSeenFiles: make(map[uint64]string),\n\t\t\tUIDMaps:   uidMaps,\n\t\t\tGIDMaps:   gidMaps,\n\t\t}\n\t\t// this buffer is needed for the duration of this piped stream\n\t\tdefer pools.BufioWriter32KPool.Put(ta.Buffer)\n\n\t\tsort.Sort(changesByPath(changes))\n\n\t\t// In general we log errors here but ignore them because\n\t\t// during e.g. a diff operation the container can continue\n\t\t// mutating the filesystem and we can see transient errors\n\t\t// from this\n\t\tfor _, change := range changes {\n\t\t\tif change.Kind == ChangeDelete {\n\t\t\t\twhiteOutDir := filepath.Dir(change.Path)\n\t\t\t\twhiteOutBase := filepath.Base(change.Path)\n\t\t\t\twhiteOut := filepath.Join(whiteOutDir, WhiteoutPrefix+whiteOutBase)\n\t\t\t\ttimestamp := time.Now()\n\t\t\t\thdr := &tar.Header{\n\t\t\t\t\tName:       whiteOut[1:],\n\t\t\t\t\tSize:       0,\n\t\t\t\t\tModTime:    timestamp,\n\t\t\t\t\tAccessTime: timestamp,\n\t\t\t\t\tChangeTime: timestamp,\n\t\t\t\t}\n\t\t\t\tif err := ta.TarWriter.WriteHeader(hdr); err != nil {\n\t\t\t\t\tlogrus.Debugf(\"Can't write whiteout header: %s\", err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpath := filepath.Join(dir, change.Path)\n\t\t\t\tif err := ta.addTarFile(path, change.Path[1:]); err != nil {\n\t\t\t\t\tlogrus.Debugf(\"Can't add file %s to tar: %s\", path, err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Make sure to check the error on Close.\n\t\tif err := ta.TarWriter.Close(); err != nil {\n\t\t\tlogrus.Debugf(\"Can't close layer: %s\", err)\n\t\t}\n\t\tif err := writer.Close(); err != nil {\n\t\t\tlogrus.Debugf(\"failed close Changes writer: %s\", err)\n\t\t}\n\t}()\n\treturn reader, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/changes_linux.go",
    "content": "package archive\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\n// walker is used to implement collectFileInfoForChanges on linux. Where this\n// method in general returns the entire contents of two directory trees, we\n// optimize some FS calls out on linux. In particular, we take advantage of the\n// fact that getdents(2) returns the inode of each file in the directory being\n// walked, which, when walking two trees in parallel to generate a list of\n// changes, can be used to prune subtrees without ever having to lstat(2) them\n// directly. Eliminating stat calls in this way can save up to seconds on large\n// images.\ntype walker struct {\n\tdir1  string\n\tdir2  string\n\troot1 *FileInfo\n\troot2 *FileInfo\n}\n\n// collectFileInfoForChanges returns a complete representation of the trees\n// rooted at dir1 and dir2, with one important exception: any subtree or\n// leaf where the inode and device numbers are an exact match between dir1\n// and dir2 will be pruned from the results. This method is *only* to be used\n// to generating a list of changes between the two directories, as it does not\n// reflect the full contents.\nfunc collectFileInfoForChanges(dir1, dir2 string) (*FileInfo, *FileInfo, error) {\n\tw := &walker{\n\t\tdir1:  dir1,\n\t\tdir2:  dir2,\n\t\troot1: newRootFileInfo(),\n\t\troot2: newRootFileInfo(),\n\t}\n\n\ti1, err := os.Lstat(w.dir1)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\ti2, err := os.Lstat(w.dir2)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := w.walk(\"/\", i1, i2); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn w.root1, w.root2, nil\n}\n\n// Given a FileInfo, its path info, and a reference to the root of the tree\n// being constructed, register this file with the tree.\nfunc walkchunk(path string, fi os.FileInfo, dir string, root *FileInfo) error {\n\tif fi == nil {\n\t\treturn nil\n\t}\n\tparent := root.LookUp(filepath.Dir(path))\n\tif parent == nil {\n\t\treturn fmt.Errorf(\"collectFileInfoForChanges: Unexpectedly no parent for %s\", path)\n\t}\n\tinfo := &FileInfo{\n\t\tname:     filepath.Base(path),\n\t\tchildren: make(map[string]*FileInfo),\n\t\tparent:   parent,\n\t}\n\tcpath := filepath.Join(dir, path)\n\tstat, err := system.FromStatT(fi.Sys().(*syscall.Stat_t))\n\tif err != nil {\n\t\treturn err\n\t}\n\tinfo.stat = stat\n\tinfo.capability, _ = system.Lgetxattr(cpath, \"security.capability\") // lgetxattr(2): fs access\n\tparent.children[info.name] = info\n\treturn nil\n}\n\n// Walk a subtree rooted at the same path in both trees being iterated. For\n// example, /docker/overlay/1234/a/b/c/d and /docker/overlay/8888/a/b/c/d\nfunc (w *walker) walk(path string, i1, i2 os.FileInfo) (err error) {\n\t// Register these nodes with the return trees, unless we're still at the\n\t// (already-created) roots:\n\tif path != \"/\" {\n\t\tif err := walkchunk(path, i1, w.dir1, w.root1); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := walkchunk(path, i2, w.dir2, w.root2); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tis1Dir := i1 != nil && i1.IsDir()\n\tis2Dir := i2 != nil && i2.IsDir()\n\n\tsameDevice := false\n\tif i1 != nil && i2 != nil {\n\t\tsi1 := i1.Sys().(*syscall.Stat_t)\n\t\tsi2 := i2.Sys().(*syscall.Stat_t)\n\t\tif si1.Dev == si2.Dev {\n\t\t\tsameDevice = true\n\t\t}\n\t}\n\n\t// If these files are both non-existent, or leaves (non-dirs), we are done.\n\tif !is1Dir && !is2Dir {\n\t\treturn nil\n\t}\n\n\t// Fetch the names of all the files contained in both directories being walked:\n\tvar names1, names2 []nameIno\n\tif is1Dir {\n\t\tnames1, err = readdirnames(filepath.Join(w.dir1, path)) // getdents(2): fs access\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif is2Dir {\n\t\tnames2, err = readdirnames(filepath.Join(w.dir2, path)) // getdents(2): fs access\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// We have lists of the files contained in both parallel directories, sorted\n\t// in the same order. Walk them in parallel, generating a unique merged list\n\t// of all items present in either or both directories.\n\tvar names []string\n\tix1 := 0\n\tix2 := 0\n\n\tfor {\n\t\tif ix1 >= len(names1) {\n\t\t\tbreak\n\t\t}\n\t\tif ix2 >= len(names2) {\n\t\t\tbreak\n\t\t}\n\n\t\tni1 := names1[ix1]\n\t\tni2 := names2[ix2]\n\n\t\tswitch bytes.Compare([]byte(ni1.name), []byte(ni2.name)) {\n\t\tcase -1: // ni1 < ni2 -- advance ni1\n\t\t\t// we will not encounter ni1 in names2\n\t\t\tnames = append(names, ni1.name)\n\t\t\tix1++\n\t\tcase 0: // ni1 == ni2\n\t\t\tif ni1.ino != ni2.ino || !sameDevice {\n\t\t\t\tnames = append(names, ni1.name)\n\t\t\t}\n\t\t\tix1++\n\t\t\tix2++\n\t\tcase 1: // ni1 > ni2 -- advance ni2\n\t\t\t// we will not encounter ni2 in names1\n\t\t\tnames = append(names, ni2.name)\n\t\t\tix2++\n\t\t}\n\t}\n\tfor ix1 < len(names1) {\n\t\tnames = append(names, names1[ix1].name)\n\t\tix1++\n\t}\n\tfor ix2 < len(names2) {\n\t\tnames = append(names, names2[ix2].name)\n\t\tix2++\n\t}\n\n\t// For each of the names present in either or both of the directories being\n\t// iterated, stat the name under each root, and recurse the pair of them:\n\tfor _, name := range names {\n\t\tfname := filepath.Join(path, name)\n\t\tvar cInfo1, cInfo2 os.FileInfo\n\t\tif is1Dir {\n\t\t\tcInfo1, err = os.Lstat(filepath.Join(w.dir1, fname)) // lstat(2): fs access\n\t\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif is2Dir {\n\t\t\tcInfo2, err = os.Lstat(filepath.Join(w.dir2, fname)) // lstat(2): fs access\n\t\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif err = w.walk(fname, cInfo1, cInfo2); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// {name,inode} pairs used to support the early-pruning logic of the walker type\ntype nameIno struct {\n\tname string\n\tino  uint64\n}\n\ntype nameInoSlice []nameIno\n\nfunc (s nameInoSlice) Len() int           { return len(s) }\nfunc (s nameInoSlice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }\nfunc (s nameInoSlice) Less(i, j int) bool { return s[i].name < s[j].name }\n\n// readdirnames is a hacked-apart version of the Go stdlib code, exposing inode\n// numbers further up the stack when reading directory contents. Unlike\n// os.Readdirnames, which returns a list of filenames, this function returns a\n// list of {filename,inode} pairs.\nfunc readdirnames(dirname string) (names []nameIno, err error) {\n\tvar (\n\t\tsize = 100\n\t\tbuf  = make([]byte, 4096)\n\t\tnbuf int\n\t\tbufp int\n\t\tnb   int\n\t)\n\n\tf, err := os.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tnames = make([]nameIno, 0, size) // Empty with room to grow.\n\tfor {\n\t\t// Refill the buffer if necessary\n\t\tif bufp >= nbuf {\n\t\t\tbufp = 0\n\t\t\tnbuf, err = syscall.ReadDirent(int(f.Fd()), buf) // getdents on linux\n\t\t\tif nbuf < 0 {\n\t\t\t\tnbuf = 0\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn nil, os.NewSyscallError(\"readdirent\", err)\n\t\t\t}\n\t\t\tif nbuf <= 0 {\n\t\t\t\tbreak // EOF\n\t\t\t}\n\t\t}\n\n\t\t// Drain the buffer\n\t\tnb, names = parseDirent(buf[bufp:nbuf], names)\n\t\tbufp += nb\n\t}\n\n\tsl := nameInoSlice(names)\n\tsort.Sort(sl)\n\treturn sl, nil\n}\n\n// parseDirent is a minor modification of syscall.ParseDirent (linux version)\n// which returns {name,inode} pairs instead of just names.\nfunc parseDirent(buf []byte, names []nameIno) (consumed int, newnames []nameIno) {\n\toriglen := len(buf)\n\tfor len(buf) > 0 {\n\t\tdirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0]))\n\t\tbuf = buf[dirent.Reclen:]\n\t\tif dirent.Ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))\n\t\tvar name = string(bytes[0:clen(bytes[:])])\n\t\tif name == \".\" || name == \"..\" { // Useless names\n\t\t\tcontinue\n\t\t}\n\t\tnames = append(names, nameIno{name, dirent.Ino})\n\t}\n\treturn origlen - len(buf), names\n}\n\nfunc clen(n []byte) int {\n\tfor i := 0; i < len(n); i++ {\n\t\tif n[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(n)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/changes_other.go",
    "content": "// +build !linux\n\npackage archive\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\nfunc collectFileInfoForChanges(oldDir, newDir string) (*FileInfo, *FileInfo, error) {\n\tvar (\n\t\toldRoot, newRoot *FileInfo\n\t\terr1, err2       error\n\t\terrs             = make(chan error, 2)\n\t)\n\tgo func() {\n\t\toldRoot, err1 = collectFileInfo(oldDir)\n\t\terrs <- err1\n\t}()\n\tgo func() {\n\t\tnewRoot, err2 = collectFileInfo(newDir)\n\t\terrs <- err2\n\t}()\n\n\t// block until both routines have returned\n\tfor i := 0; i < 2; i++ {\n\t\tif err := <-errs; err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\treturn oldRoot, newRoot, nil\n}\n\nfunc collectFileInfo(sourceDir string) (*FileInfo, error) {\n\troot := newRootFileInfo()\n\n\terr := filepath.Walk(sourceDir, func(path string, f os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Rebase path\n\t\trelPath, err := filepath.Rel(sourceDir, path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// As this runs on the daemon side, file paths are OS specific.\n\t\trelPath = filepath.Join(string(os.PathSeparator), relPath)\n\n\t\t// See https://github.com/golang/go/issues/9168 - bug in filepath.Join.\n\t\t// Temporary workaround. If the returned path starts with two backslashes,\n\t\t// trim it down to a single backslash. Only relevant on Windows.\n\t\tif runtime.GOOS == \"windows\" {\n\t\t\tif strings.HasPrefix(relPath, `\\\\`) {\n\t\t\t\trelPath = relPath[1:]\n\t\t\t}\n\t\t}\n\n\t\tif relPath == string(os.PathSeparator) {\n\t\t\treturn nil\n\t\t}\n\n\t\tparent := root.LookUp(filepath.Dir(relPath))\n\t\tif parent == nil {\n\t\t\treturn fmt.Errorf(\"collectFileInfo: Unexpectedly no parent for %s\", relPath)\n\t\t}\n\n\t\tinfo := &FileInfo{\n\t\t\tname:     filepath.Base(relPath),\n\t\t\tchildren: make(map[string]*FileInfo),\n\t\t\tparent:   parent,\n\t\t}\n\n\t\ts, err := system.Lstat(path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinfo.stat = s\n\n\t\tinfo.capability, _ = system.Lgetxattr(path, \"security.capability\")\n\n\t\tparent.children[info.name] = info\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn root, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/changes_unix.go",
    "content": "// +build !windows\n\npackage archive\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\nfunc statDifferent(oldStat *system.StatT, newStat *system.StatT) bool {\n\t// Don't look at size for dirs, its not a good measure of change\n\tif oldStat.Mode() != newStat.Mode() ||\n\t\toldStat.UID() != newStat.UID() ||\n\t\toldStat.GID() != newStat.GID() ||\n\t\toldStat.Rdev() != newStat.Rdev() ||\n\t\t// Don't look at size for dirs, its not a good measure of change\n\t\t(oldStat.Mode()&syscall.S_IFDIR != syscall.S_IFDIR &&\n\t\t\t(!sameFsTimeSpec(oldStat.Mtim(), newStat.Mtim()) || (oldStat.Size() != newStat.Size()))) {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (info *FileInfo) isDir() bool {\n\treturn info.parent == nil || info.stat.Mode()&syscall.S_IFDIR != 0\n}\n\nfunc getIno(fi os.FileInfo) uint64 {\n\treturn uint64(fi.Sys().(*syscall.Stat_t).Ino)\n}\n\nfunc hasHardlinks(fi os.FileInfo) bool {\n\treturn fi.Sys().(*syscall.Stat_t).Nlink > 1\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/copy.go",
    "content": "package archive\n\nimport (\n\t\"archive/tar\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/system\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Errors used or returned by this file.\nvar (\n\tErrNotDirectory      = errors.New(\"not a directory\")\n\tErrDirNotExists      = errors.New(\"no such directory\")\n\tErrCannotCopyDir     = errors.New(\"cannot copy directory\")\n\tErrInvalidCopySource = errors.New(\"invalid copy source content\")\n)\n\n// PreserveTrailingDotOrSeparator returns the given cleaned path (after\n// processing using any utility functions from the path or filepath stdlib\n// packages) and appends a trailing `/.` or `/` if its corresponding  original\n// path (from before being processed by utility functions from the path or\n// filepath stdlib packages) ends with a trailing `/.` or `/`. If the cleaned\n// path already ends in a `.` path segment, then another is not added. If the\n// clean path already ends in a path separator, then another is not added.\nfunc PreserveTrailingDotOrSeparator(cleanedPath, originalPath string) string {\n\t// Ensure paths are in platform semantics\n\tcleanedPath = normalizePath(cleanedPath)\n\toriginalPath = normalizePath(originalPath)\n\n\tif !specifiesCurrentDir(cleanedPath) && specifiesCurrentDir(originalPath) {\n\t\tif !hasTrailingPathSeparator(cleanedPath) {\n\t\t\t// Add a separator if it doesn't already end with one (a cleaned\n\t\t\t// path would only end in a separator if it is the root).\n\t\t\tcleanedPath += string(filepath.Separator)\n\t\t}\n\t\tcleanedPath += \".\"\n\t}\n\n\tif !hasTrailingPathSeparator(cleanedPath) && hasTrailingPathSeparator(originalPath) {\n\t\tcleanedPath += string(filepath.Separator)\n\t}\n\n\treturn cleanedPath\n}\n\n// assertsDirectory returns whether the given path is\n// asserted to be a directory, i.e., the path ends with\n// a trailing '/' or `/.`, assuming a path separator of `/`.\nfunc assertsDirectory(path string) bool {\n\treturn hasTrailingPathSeparator(path) || specifiesCurrentDir(path)\n}\n\n// hasTrailingPathSeparator returns whether the given\n// path ends with the system's path separator character.\nfunc hasTrailingPathSeparator(path string) bool {\n\treturn len(path) > 0 && os.IsPathSeparator(path[len(path)-1])\n}\n\n// specifiesCurrentDir returns whether the given path specifies\n// a \"current directory\", i.e., the last path segment is `.`.\nfunc specifiesCurrentDir(path string) bool {\n\treturn filepath.Base(path) == \".\"\n}\n\n// SplitPathDirEntry splits the given path between its directory name and its\n// basename by first cleaning the path but preserves a trailing \".\" if the\n// original path specified the current directory.\nfunc SplitPathDirEntry(path string) (dir, base string) {\n\tcleanedPath := filepath.Clean(normalizePath(path))\n\n\tif specifiesCurrentDir(path) {\n\t\tcleanedPath += string(filepath.Separator) + \".\"\n\t}\n\n\treturn filepath.Dir(cleanedPath), filepath.Base(cleanedPath)\n}\n\n// TarResource archives the resource described by the given CopyInfo to a Tar\n// archive. A non-nil error is returned if sourcePath does not exist or is\n// asserted to be a directory but exists as another type of file.\n//\n// This function acts as a convenient wrapper around TarWithOptions, which\n// requires a directory as the source path. TarResource accepts either a\n// directory or a file path and correctly sets the Tar options.\nfunc TarResource(sourceInfo CopyInfo) (content Archive, err error) {\n\treturn TarResourceRebase(sourceInfo.Path, sourceInfo.RebaseName)\n}\n\n// TarResourceRebase is like TarResource but renames the first path element of\n// items in the resulting tar archive to match the given rebaseName if not \"\".\nfunc TarResourceRebase(sourcePath, rebaseName string) (content Archive, err error) {\n\tsourcePath = normalizePath(sourcePath)\n\tif _, err = os.Lstat(sourcePath); err != nil {\n\t\t// Catches the case where the source does not exist or is not a\n\t\t// directory if asserted to be a directory, as this also causes an\n\t\t// error.\n\t\treturn\n\t}\n\n\t// Separate the source path between it's directory and\n\t// the entry in that directory which we are archiving.\n\tsourceDir, sourceBase := SplitPathDirEntry(sourcePath)\n\n\tfilter := []string{sourceBase}\n\n\tlogrus.Debugf(\"copying %q from %q\", sourceBase, sourceDir)\n\n\treturn TarWithOptions(sourceDir, &TarOptions{\n\t\tCompression:      Uncompressed,\n\t\tIncludeFiles:     filter,\n\t\tIncludeSourceDir: true,\n\t\tRebaseNames: map[string]string{\n\t\t\tsourceBase: rebaseName,\n\t\t},\n\t})\n}\n\n// CopyInfo holds basic info about the source\n// or destination path of a copy operation.\ntype CopyInfo struct {\n\tPath       string\n\tExists     bool\n\tIsDir      bool\n\tRebaseName string\n}\n\n// CopyInfoSourcePath stats the given path to create a CopyInfo\n// struct representing that resource for the source of an archive copy\n// operation. The given path should be an absolute local path. A source path\n// has all symlinks evaluated that appear before the last path separator (\"/\"\n// on Unix). As it is to be a copy source, the path must exist.\nfunc CopyInfoSourcePath(path string, followLink bool) (CopyInfo, error) {\n\t// normalize the file path and then evaluate the symbol link\n\t// we will use the target file instead of the symbol link if\n\t// followLink is set\n\tpath = normalizePath(path)\n\n\tresolvedPath, rebaseName, err := ResolveHostSourcePath(path, followLink)\n\tif err != nil {\n\t\treturn CopyInfo{}, err\n\t}\n\n\tstat, err := os.Lstat(resolvedPath)\n\tif err != nil {\n\t\treturn CopyInfo{}, err\n\t}\n\n\treturn CopyInfo{\n\t\tPath:       resolvedPath,\n\t\tExists:     true,\n\t\tIsDir:      stat.IsDir(),\n\t\tRebaseName: rebaseName,\n\t}, nil\n}\n\n// CopyInfoDestinationPath stats the given path to create a CopyInfo\n// struct representing that resource for the destination of an archive copy\n// operation. The given path should be an absolute local path.\nfunc CopyInfoDestinationPath(path string) (info CopyInfo, err error) {\n\tmaxSymlinkIter := 10 // filepath.EvalSymlinks uses 255, but 10 already seems like a lot.\n\tpath = normalizePath(path)\n\toriginalPath := path\n\n\tstat, err := os.Lstat(path)\n\n\tif err == nil && stat.Mode()&os.ModeSymlink == 0 {\n\t\t// The path exists and is not a symlink.\n\t\treturn CopyInfo{\n\t\t\tPath:   path,\n\t\t\tExists: true,\n\t\t\tIsDir:  stat.IsDir(),\n\t\t}, nil\n\t}\n\n\t// While the path is a symlink.\n\tfor n := 0; err == nil && stat.Mode()&os.ModeSymlink != 0; n++ {\n\t\tif n > maxSymlinkIter {\n\t\t\t// Don't follow symlinks more than this arbitrary number of times.\n\t\t\treturn CopyInfo{}, errors.New(\"too many symlinks in \" + originalPath)\n\t\t}\n\n\t\t// The path is a symbolic link. We need to evaluate it so that the\n\t\t// destination of the copy operation is the link target and not the\n\t\t// link itself. This is notably different than CopyInfoSourcePath which\n\t\t// only evaluates symlinks before the last appearing path separator.\n\t\t// Also note that it is okay if the last path element is a broken\n\t\t// symlink as the copy operation should create the target.\n\t\tvar linkTarget string\n\n\t\tlinkTarget, err = os.Readlink(path)\n\t\tif err != nil {\n\t\t\treturn CopyInfo{}, err\n\t\t}\n\n\t\tif !system.IsAbs(linkTarget) {\n\t\t\t// Join with the parent directory.\n\t\t\tdstParent, _ := SplitPathDirEntry(path)\n\t\t\tlinkTarget = filepath.Join(dstParent, linkTarget)\n\t\t}\n\n\t\tpath = linkTarget\n\t\tstat, err = os.Lstat(path)\n\t}\n\n\tif err != nil {\n\t\t// It's okay if the destination path doesn't exist. We can still\n\t\t// continue the copy operation if the parent directory exists.\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn CopyInfo{}, err\n\t\t}\n\n\t\t// Ensure destination parent dir exists.\n\t\tdstParent, _ := SplitPathDirEntry(path)\n\n\t\tparentDirStat, err := os.Lstat(dstParent)\n\t\tif err != nil {\n\t\t\treturn CopyInfo{}, err\n\t\t}\n\t\tif !parentDirStat.IsDir() {\n\t\t\treturn CopyInfo{}, ErrNotDirectory\n\t\t}\n\n\t\treturn CopyInfo{Path: path}, nil\n\t}\n\n\t// The path exists after resolving symlinks.\n\treturn CopyInfo{\n\t\tPath:   path,\n\t\tExists: true,\n\t\tIsDir:  stat.IsDir(),\n\t}, nil\n}\n\n// PrepareArchiveCopy prepares the given srcContent archive, which should\n// contain the archived resource described by srcInfo, to the destination\n// described by dstInfo. Returns the possibly modified content archive along\n// with the path to the destination directory which it should be extracted to.\nfunc PrepareArchiveCopy(srcContent Reader, srcInfo, dstInfo CopyInfo) (dstDir string, content Archive, err error) {\n\t// Ensure in platform semantics\n\tsrcInfo.Path = normalizePath(srcInfo.Path)\n\tdstInfo.Path = normalizePath(dstInfo.Path)\n\n\t// Separate the destination path between its directory and base\n\t// components in case the source archive contents need to be rebased.\n\tdstDir, dstBase := SplitPathDirEntry(dstInfo.Path)\n\t_, srcBase := SplitPathDirEntry(srcInfo.Path)\n\n\tswitch {\n\tcase dstInfo.Exists && dstInfo.IsDir:\n\t\t// The destination exists as a directory. No alteration\n\t\t// to srcContent is needed as its contents can be\n\t\t// simply extracted to the destination directory.\n\t\treturn dstInfo.Path, ioutil.NopCloser(srcContent), nil\n\tcase dstInfo.Exists && srcInfo.IsDir:\n\t\t// The destination exists as some type of file and the source\n\t\t// content is a directory. This is an error condition since\n\t\t// you cannot copy a directory to an existing file location.\n\t\treturn \"\", nil, ErrCannotCopyDir\n\tcase dstInfo.Exists:\n\t\t// The destination exists as some type of file and the source content\n\t\t// is also a file. The source content entry will have to be renamed to\n\t\t// have a basename which matches the destination path's basename.\n\t\tif len(srcInfo.RebaseName) != 0 {\n\t\t\tsrcBase = srcInfo.RebaseName\n\t\t}\n\t\treturn dstDir, RebaseArchiveEntries(srcContent, srcBase, dstBase), nil\n\tcase srcInfo.IsDir:\n\t\t// The destination does not exist and the source content is an archive\n\t\t// of a directory. The archive should be extracted to the parent of\n\t\t// the destination path instead, and when it is, the directory that is\n\t\t// created as a result should take the name of the destination path.\n\t\t// The source content entries will have to be renamed to have a\n\t\t// basename which matches the destination path's basename.\n\t\tif len(srcInfo.RebaseName) != 0 {\n\t\t\tsrcBase = srcInfo.RebaseName\n\t\t}\n\t\treturn dstDir, RebaseArchiveEntries(srcContent, srcBase, dstBase), nil\n\tcase assertsDirectory(dstInfo.Path):\n\t\t// The destination does not exist and is asserted to be created as a\n\t\t// directory, but the source content is not a directory. This is an\n\t\t// error condition since you cannot create a directory from a file\n\t\t// source.\n\t\treturn \"\", nil, ErrDirNotExists\n\tdefault:\n\t\t// The last remaining case is when the destination does not exist, is\n\t\t// not asserted to be a directory, and the source content is not an\n\t\t// archive of a directory. It this case, the destination file will need\n\t\t// to be created when the archive is extracted and the source content\n\t\t// entry will have to be renamed to have a basename which matches the\n\t\t// destination path's basename.\n\t\tif len(srcInfo.RebaseName) != 0 {\n\t\t\tsrcBase = srcInfo.RebaseName\n\t\t}\n\t\treturn dstDir, RebaseArchiveEntries(srcContent, srcBase, dstBase), nil\n\t}\n\n}\n\n// RebaseArchiveEntries rewrites the given srcContent archive replacing\n// an occurrence of oldBase with newBase at the beginning of entry names.\nfunc RebaseArchiveEntries(srcContent Reader, oldBase, newBase string) Archive {\n\tif oldBase == string(os.PathSeparator) {\n\t\t// If oldBase specifies the root directory, use an empty string as\n\t\t// oldBase instead so that newBase doesn't replace the path separator\n\t\t// that all paths will start with.\n\t\toldBase = \"\"\n\t}\n\n\trebased, w := io.Pipe()\n\n\tgo func() {\n\t\tsrcTar := tar.NewReader(srcContent)\n\t\trebasedTar := tar.NewWriter(w)\n\n\t\tfor {\n\t\t\thdr, err := srcTar.Next()\n\t\t\tif err == io.EOF {\n\t\t\t\t// Signals end of archive.\n\t\t\t\trebasedTar.Close()\n\t\t\t\tw.Close()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tw.CloseWithError(err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\thdr.Name = strings.Replace(hdr.Name, oldBase, newBase, 1)\n\n\t\t\tif err = rebasedTar.WriteHeader(hdr); err != nil {\n\t\t\t\tw.CloseWithError(err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif _, err = io.Copy(rebasedTar, srcTar); err != nil {\n\t\t\t\tw.CloseWithError(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn rebased\n}\n\n// CopyResource performs an archive copy from the given source path to the\n// given destination path. The source path MUST exist and the destination\n// path's parent directory must exist.\nfunc CopyResource(srcPath, dstPath string, followLink bool) error {\n\tvar (\n\t\tsrcInfo CopyInfo\n\t\terr     error\n\t)\n\n\t// Ensure in platform semantics\n\tsrcPath = normalizePath(srcPath)\n\tdstPath = normalizePath(dstPath)\n\n\t// Clean the source and destination paths.\n\tsrcPath = PreserveTrailingDotOrSeparator(filepath.Clean(srcPath), srcPath)\n\tdstPath = PreserveTrailingDotOrSeparator(filepath.Clean(dstPath), dstPath)\n\n\tif srcInfo, err = CopyInfoSourcePath(srcPath, followLink); err != nil {\n\t\treturn err\n\t}\n\n\tcontent, err := TarResource(srcInfo)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer content.Close()\n\n\treturn CopyTo(content, srcInfo, dstPath)\n}\n\n// CopyTo handles extracting the given content whose\n// entries should be sourced from srcInfo to dstPath.\nfunc CopyTo(content Reader, srcInfo CopyInfo, dstPath string) error {\n\t// The destination path need not exist, but CopyInfoDestinationPath will\n\t// ensure that at least the parent directory exists.\n\tdstInfo, err := CopyInfoDestinationPath(normalizePath(dstPath))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdstDir, copyArchive, err := PrepareArchiveCopy(content, srcInfo, dstInfo)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer copyArchive.Close()\n\n\toptions := &TarOptions{\n\t\tNoLchown:             true,\n\t\tNoOverwriteDirNonDir: true,\n\t}\n\n\treturn Untar(copyArchive, dstDir, options)\n}\n\n// ResolveHostSourcePath decides real path need to be copied with parameters such as\n// whether to follow symbol link or not, if followLink is true, resolvedPath will return\n// link target of any symbol link file, else it will only resolve symlink of directory\n// but return symbol link file itself without resolving.\nfunc ResolveHostSourcePath(path string, followLink bool) (resolvedPath, rebaseName string, err error) {\n\tif followLink {\n\t\tresolvedPath, err = filepath.EvalSymlinks(path)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tresolvedPath, rebaseName = GetRebaseName(path, resolvedPath)\n\t} else {\n\t\tdirPath, basePath := filepath.Split(path)\n\n\t\t// if not follow symbol link, then resolve symbol link of parent dir\n\t\tvar resolvedDirPath string\n\t\tresolvedDirPath, err = filepath.EvalSymlinks(dirPath)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\t// resolvedDirPath will have been cleaned (no trailing path separators) so\n\t\t// we can manually join it with the base path element.\n\t\tresolvedPath = resolvedDirPath + string(filepath.Separator) + basePath\n\t\tif hasTrailingPathSeparator(path) && filepath.Base(path) != filepath.Base(resolvedPath) {\n\t\t\trebaseName = filepath.Base(path)\n\t\t}\n\t}\n\treturn resolvedPath, rebaseName, nil\n}\n\n// GetRebaseName normalizes and compares path and resolvedPath,\n// return completed resolved path and rebased file name\nfunc GetRebaseName(path, resolvedPath string) (string, string) {\n\t// linkTarget will have been cleaned (no trailing path separators and dot) so\n\t// we can manually join it with them\n\tvar rebaseName string\n\tif specifiesCurrentDir(path) && !specifiesCurrentDir(resolvedPath) {\n\t\tresolvedPath += string(filepath.Separator) + \".\"\n\t}\n\n\tif hasTrailingPathSeparator(path) && !hasTrailingPathSeparator(resolvedPath) {\n\t\tresolvedPath += string(filepath.Separator)\n\t}\n\n\tif filepath.Base(path) != filepath.Base(resolvedPath) {\n\t\t// In the case where the path had a trailing separator and a symlink\n\t\t// evaluation has changed the last path component, we will need to\n\t\t// rebase the name in the archive that is being copied to match the\n\t\t// originally requested name.\n\t\trebaseName = filepath.Base(path)\n\t}\n\treturn resolvedPath, rebaseName\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/copy_unix.go",
    "content": "// +build !windows\n\npackage archive\n\nimport (\n\t\"path/filepath\"\n)\n\nfunc normalizePath(path string) string {\n\treturn filepath.ToSlash(path)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/diff.go",
    "content": "package archive\n\nimport (\n\t\"archive/tar\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/idtools\"\n\t\"github.com/docker/docker/pkg/pools\"\n\t\"github.com/docker/docker/pkg/system\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// UnpackLayer unpack `layer` to a `dest`. The stream `layer` can be\n// compressed or uncompressed.\n// Returns the size in bytes of the contents of the layer.\nfunc UnpackLayer(dest string, layer Reader, options *TarOptions) (size int64, err error) {\n\ttr := tar.NewReader(layer)\n\ttrBuf := pools.BufioReader32KPool.Get(tr)\n\tdefer pools.BufioReader32KPool.Put(trBuf)\n\n\tvar dirs []*tar.Header\n\tunpackedPaths := make(map[string]struct{})\n\n\tif options == nil {\n\t\toptions = &TarOptions{}\n\t}\n\tif options.ExcludePatterns == nil {\n\t\toptions.ExcludePatterns = []string{}\n\t}\n\tremappedRootUID, remappedRootGID, err := idtools.GetRootUIDGID(options.UIDMaps, options.GIDMaps)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\taufsTempdir := \"\"\n\taufsHardlinks := make(map[string]*tar.Header)\n\n\tif options == nil {\n\t\toptions = &TarOptions{}\n\t}\n\t// Iterate through the files in the archive.\n\tfor {\n\t\thdr, err := tr.Next()\n\t\tif err == io.EOF {\n\t\t\t// end of tar archive\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tsize += hdr.Size\n\n\t\t// Normalize name, for safety and for a simple is-root check\n\t\thdr.Name = filepath.Clean(hdr.Name)\n\n\t\t// Windows does not support filenames with colons in them. Ignore\n\t\t// these files. This is not a problem though (although it might\n\t\t// appear that it is). Let's suppose a client is running docker pull.\n\t\t// The daemon it points to is Windows. Would it make sense for the\n\t\t// client to be doing a docker pull Ubuntu for example (which has files\n\t\t// with colons in the name under /usr/share/man/man3)? No, absolutely\n\t\t// not as it would really only make sense that they were pulling a\n\t\t// Windows image. However, for development, it is necessary to be able\n\t\t// to pull Linux images which are in the repository.\n\t\t//\n\t\t// TODO Windows. Once the registry is aware of what images are Windows-\n\t\t// specific or Linux-specific, this warning should be changed to an error\n\t\t// to cater for the situation where someone does manage to upload a Linux\n\t\t// image but have it tagged as Windows inadvertently.\n\t\tif runtime.GOOS == \"windows\" {\n\t\t\tif strings.Contains(hdr.Name, \":\") {\n\t\t\t\tlogrus.Warnf(\"Windows: Ignoring %s (is this a Linux image?)\", hdr.Name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Note as these operations are platform specific, so must the slash be.\n\t\tif !strings.HasSuffix(hdr.Name, string(os.PathSeparator)) {\n\t\t\t// Not the root directory, ensure that the parent directory exists.\n\t\t\t// This happened in some tests where an image had a tarfile without any\n\t\t\t// parent directories.\n\t\t\tparent := filepath.Dir(hdr.Name)\n\t\t\tparentPath := filepath.Join(dest, parent)\n\n\t\t\tif _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {\n\t\t\t\terr = system.MkdirAll(parentPath, 0600)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Skip AUFS metadata dirs\n\t\tif strings.HasPrefix(hdr.Name, WhiteoutMetaPrefix) {\n\t\t\t// Regular files inside /.wh..wh.plnk can be used as hardlink targets\n\t\t\t// We don't want this directory, but we need the files in them so that\n\t\t\t// such hardlinks can be resolved.\n\t\t\tif strings.HasPrefix(hdr.Name, WhiteoutLinkDir) && hdr.Typeflag == tar.TypeReg {\n\t\t\t\tbasename := filepath.Base(hdr.Name)\n\t\t\t\taufsHardlinks[basename] = hdr\n\t\t\t\tif aufsTempdir == \"\" {\n\t\t\t\t\tif aufsTempdir, err = ioutil.TempDir(\"\", \"dockerplnk\"); err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\tdefer os.RemoveAll(aufsTempdir)\n\t\t\t\t}\n\t\t\t\tif err := createTarFile(filepath.Join(aufsTempdir, basename), dest, hdr, tr, true, nil); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif hdr.Name != WhiteoutOpaqueDir {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tpath := filepath.Join(dest, hdr.Name)\n\t\trel, err := filepath.Rel(dest, path)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\t// Note as these operations are platform specific, so must the slash be.\n\t\tif strings.HasPrefix(rel, \"..\"+string(os.PathSeparator)) {\n\t\t\treturn 0, breakoutError(fmt.Errorf(\"%q is outside of %q\", hdr.Name, dest))\n\t\t}\n\t\tbase := filepath.Base(path)\n\n\t\tif strings.HasPrefix(base, WhiteoutPrefix) {\n\t\t\tdir := filepath.Dir(path)\n\t\t\tif base == WhiteoutOpaqueDir {\n\t\t\t\t_, err := os.Lstat(dir)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\terr = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tif os.IsNotExist(err) {\n\t\t\t\t\t\t\terr = nil // parent was deleted\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tif path == dir {\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\t\t\t\t\tif _, exists := unpackedPaths[path]; !exists {\n\t\t\t\t\t\terr := os.RemoveAll(path)\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\treturn nil\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginalBase := base[len(WhiteoutPrefix):]\n\t\t\t\toriginalPath := filepath.Join(dir, originalBase)\n\t\t\t\tif err := os.RemoveAll(originalPath); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// If path exits we almost always just want to remove and replace it.\n\t\t\t// The only exception is when it is a directory *and* the file from\n\t\t\t// the layer is also a directory. Then we want to merge them (i.e.\n\t\t\t// just apply the metadata from the layer).\n\t\t\tif fi, err := os.Lstat(path); err == nil {\n\t\t\t\tif !(fi.IsDir() && hdr.Typeflag == tar.TypeDir) {\n\t\t\t\t\tif err := os.RemoveAll(path); err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttrBuf.Reset(tr)\n\t\t\tsrcData := io.Reader(trBuf)\n\t\t\tsrcHdr := hdr\n\n\t\t\t// Hard links into /.wh..wh.plnk don't work, as we don't extract that directory, so\n\t\t\t// we manually retarget these into the temporary files we extracted them into\n\t\t\tif hdr.Typeflag == tar.TypeLink && strings.HasPrefix(filepath.Clean(hdr.Linkname), WhiteoutLinkDir) {\n\t\t\t\tlinkBasename := filepath.Base(hdr.Linkname)\n\t\t\t\tsrcHdr = aufsHardlinks[linkBasename]\n\t\t\t\tif srcHdr == nil {\n\t\t\t\t\treturn 0, fmt.Errorf(\"Invalid aufs hardlink\")\n\t\t\t\t}\n\t\t\t\ttmpFile, err := os.Open(filepath.Join(aufsTempdir, linkBasename))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\tdefer tmpFile.Close()\n\t\t\t\tsrcData = tmpFile\n\t\t\t}\n\n\t\t\t// if the options contain a uid & gid maps, convert header uid/gid\n\t\t\t// entries using the maps such that lchown sets the proper mapped\n\t\t\t// uid/gid after writing the file. We only perform this mapping if\n\t\t\t// the file isn't already owned by the remapped root UID or GID, as\n\t\t\t// that specific uid/gid has no mapping from container -> host, and\n\t\t\t// those files already have the proper ownership for inside the\n\t\t\t// container.\n\t\t\tif srcHdr.Uid != remappedRootUID {\n\t\t\t\txUID, err := idtools.ToHost(srcHdr.Uid, options.UIDMaps)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\tsrcHdr.Uid = xUID\n\t\t\t}\n\t\t\tif srcHdr.Gid != remappedRootGID {\n\t\t\t\txGID, err := idtools.ToHost(srcHdr.Gid, options.GIDMaps)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\tsrcHdr.Gid = xGID\n\t\t\t}\n\t\t\tif err := createTarFile(path, dest, srcHdr, srcData, true, nil); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\n\t\t\t// Directory mtimes must be handled at the end to avoid further\n\t\t\t// file creation in them to modify the directory mtime\n\t\t\tif hdr.Typeflag == tar.TypeDir {\n\t\t\t\tdirs = append(dirs, hdr)\n\t\t\t}\n\t\t\tunpackedPaths[path] = struct{}{}\n\t\t}\n\t}\n\n\tfor _, hdr := range dirs {\n\t\tpath := filepath.Join(dest, hdr.Name)\n\t\tif err := system.Chtimes(path, hdr.AccessTime, hdr.ModTime); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\n\treturn size, nil\n}\n\n// ApplyLayer parses a diff in the standard layer format from `layer`,\n// and applies it to the directory `dest`. The stream `layer` can be\n// compressed or uncompressed.\n// Returns the size in bytes of the contents of the layer.\nfunc ApplyLayer(dest string, layer Reader) (int64, error) {\n\treturn applyLayerHandler(dest, layer, &TarOptions{}, true)\n}\n\n// ApplyUncompressedLayer parses a diff in the standard layer format from\n// `layer`, and applies it to the directory `dest`. The stream `layer`\n// can only be uncompressed.\n// Returns the size in bytes of the contents of the layer.\nfunc ApplyUncompressedLayer(dest string, layer Reader, options *TarOptions) (int64, error) {\n\treturn applyLayerHandler(dest, layer, options, false)\n}\n\n// do the bulk load of ApplyLayer, but allow for not calling DecompressStream\nfunc applyLayerHandler(dest string, layer Reader, options *TarOptions, decompress bool) (int64, error) {\n\tdest = filepath.Clean(dest)\n\n\t// We need to be able to set any perms\n\toldmask, err := system.Umask(0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer system.Umask(oldmask) // ignore err, ErrNotSupportedPlatform\n\n\tif decompress {\n\t\tlayer, err = DecompressStream(layer)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn UnpackLayer(dest, layer, options)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/example_changes.go",
    "content": "// +build ignore\n\n// Simple tool to create an archive stream from an old and new directory\n//\n// By default it will stream the comparison of two temporary directories with junk files\npackage main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tflDebug  = flag.Bool(\"D\", false, \"debugging output\")\n\tflNewDir = flag.String(\"newdir\", \"\", \"\")\n\tflOldDir = flag.String(\"olddir\", \"\", \"\")\n\tlog      = logrus.New()\n)\n\nfunc main() {\n\tflag.Usage = func() {\n\t\tfmt.Println(\"Produce a tar from comparing two directory paths. By default a demo tar is created of around 200 files (including hardlinks)\")\n\t\tfmt.Printf(\"%s [OPTIONS]\\n\", os.Args[0])\n\t\tflag.PrintDefaults()\n\t}\n\tflag.Parse()\n\tlog.Out = os.Stderr\n\tif (len(os.Getenv(\"DEBUG\")) > 0) || *flDebug {\n\t\tlogrus.SetLevel(logrus.DebugLevel)\n\t}\n\tvar newDir, oldDir string\n\n\tif len(*flNewDir) == 0 {\n\t\tvar err error\n\t\tnewDir, err = ioutil.TempDir(\"\", \"docker-test-newDir\")\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tdefer os.RemoveAll(newDir)\n\t\tif _, err := prepareUntarSourceDirectory(100, newDir, true); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t} else {\n\t\tnewDir = *flNewDir\n\t}\n\n\tif len(*flOldDir) == 0 {\n\t\toldDir, err := ioutil.TempDir(\"\", \"docker-test-oldDir\")\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tdefer os.RemoveAll(oldDir)\n\t} else {\n\t\toldDir = *flOldDir\n\t}\n\n\tchanges, err := archive.ChangesDirs(newDir, oldDir)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\ta, err := archive.ExportChanges(newDir, changes)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer a.Close()\n\n\ti, err := io.Copy(os.Stdout, a)\n\tif err != nil && err != io.EOF {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Fprintf(os.Stderr, \"wrote archive of %d bytes\", i)\n}\n\nfunc prepareUntarSourceDirectory(numberOfFiles int, targetPath string, makeLinks bool) (int, error) {\n\tfileData := []byte(\"fooo\")\n\tfor n := 0; n < numberOfFiles; n++ {\n\t\tfileName := fmt.Sprintf(\"file-%d\", n)\n\t\tif err := ioutil.WriteFile(path.Join(targetPath, fileName), fileData, 0700); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif makeLinks {\n\t\t\tif err := os.Link(path.Join(targetPath, fileName), path.Join(targetPath, fileName+\"-link\")); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\ttotalSize := numberOfFiles * len(fileData)\n\treturn totalSize, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/time_linux.go",
    "content": "package archive\n\nimport (\n\t\"syscall\"\n\t\"time\"\n)\n\nfunc timeToTimespec(time time.Time) (ts syscall.Timespec) {\n\tif time.IsZero() {\n\t\t// Return UTIME_OMIT special value\n\t\tts.Sec = 0\n\t\tts.Nsec = ((1 << 30) - 2)\n\t\treturn\n\t}\n\treturn syscall.NsecToTimespec(time.UnixNano())\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/time_unsupported.go",
    "content": "// +build !linux\n\npackage archive\n\nimport (\n\t\"syscall\"\n\t\"time\"\n)\n\nfunc timeToTimespec(time time.Time) (ts syscall.Timespec) {\n\tnsec := int64(0)\n\tif !time.IsZero() {\n\t\tnsec = time.UnixNano()\n\t}\n\treturn syscall.NsecToTimespec(nsec)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/whiteouts.go",
    "content": "package archive\n\n// Whiteouts are files with a special meaning for the layered filesystem.\n// Docker uses AUFS whiteout files inside exported archives. In other\n// filesystems these files are generated/handled on tar creation/extraction.\n\n// WhiteoutPrefix prefix means file is a whiteout. If this is followed by a\n// filename this means that file has been removed from the base layer.\nconst WhiteoutPrefix = \".wh.\"\n\n// WhiteoutMetaPrefix prefix means whiteout has a special meaning and is not\n// for removing an actual file. Normally these files are excluded from exported\n// archives.\nconst WhiteoutMetaPrefix = WhiteoutPrefix + WhiteoutPrefix\n\n// WhiteoutLinkDir is a directory AUFS uses for storing hardlink links to other\n// layers. Normally these should not go into exported archives and all changed\n// hardlinks should be copied to the top layer.\nconst WhiteoutLinkDir = WhiteoutMetaPrefix + \"plnk\"\n\n// WhiteoutOpaqueDir file means directory has been made opaque - meaning\n// readdir calls to this directory do not follow to lower layers.\nconst WhiteoutOpaqueDir = WhiteoutMetaPrefix + \".opq\"\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/archive/wrap.go",
    "content": "package archive\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"io/ioutil\"\n)\n\n// Generate generates a new archive from the content provided\n// as input.\n//\n// `files` is a sequence of path/content pairs. A new file is\n// added to the archive for each pair.\n// If the last pair is incomplete, the file is created with an\n// empty content. For example:\n//\n// Generate(\"foo.txt\", \"hello world\", \"emptyfile\")\n//\n// The above call will return an archive with 2 files:\n//  * ./foo.txt with content \"hello world\"\n//  * ./empty with empty content\n//\n// FIXME: stream content instead of buffering\n// FIXME: specify permissions and other archive metadata\nfunc Generate(input ...string) (Archive, error) {\n\tfiles := parseStringPairs(input...)\n\tbuf := new(bytes.Buffer)\n\ttw := tar.NewWriter(buf)\n\tfor _, file := range files {\n\t\tname, content := file[0], file[1]\n\t\thdr := &tar.Header{\n\t\t\tName: name,\n\t\t\tSize: int64(len(content)),\n\t\t}\n\t\tif err := tw.WriteHeader(hdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif _, err := tw.Write([]byte(content)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif err := tw.Close(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn ioutil.NopCloser(buf), nil\n}\n\nfunc parseStringPairs(input ...string) (output [][2]string) {\n\toutput = make([][2]string, 0, len(input)/2+1)\n\tfor i := 0; i < len(input); i += 2 {\n\t\tvar pair [2]string\n\t\tpair[0] = input[i]\n\t\tif i+1 < len(input) {\n\t\t\tpair[1] = input[i+1]\n\t\t}\n\t\toutput = append(output, pair)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/chrootarchive/archive.go",
    "content": "package chrootarchive\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/idtools\"\n)\n\nvar chrootArchiver = &archive.Archiver{Untar: Untar}\n\n// Untar reads a stream of bytes from `archive`, parses it as a tar archive,\n// and unpacks it into the directory at `dest`.\n// The archive may be compressed with one of the following algorithms:\n//  identity (uncompressed), gzip, bzip2, xz.\nfunc Untar(tarArchive io.Reader, dest string, options *archive.TarOptions) error {\n\treturn untarHandler(tarArchive, dest, options, true)\n}\n\n// UntarUncompressed reads a stream of bytes from `archive`, parses it as a tar archive,\n// and unpacks it into the directory at `dest`.\n// The archive must be an uncompressed stream.\nfunc UntarUncompressed(tarArchive io.Reader, dest string, options *archive.TarOptions) error {\n\treturn untarHandler(tarArchive, dest, options, false)\n}\n\n// Handler for teasing out the automatic decompression\nfunc untarHandler(tarArchive io.Reader, dest string, options *archive.TarOptions, decompress bool) error {\n\n\tif tarArchive == nil {\n\t\treturn fmt.Errorf(\"Empty archive\")\n\t}\n\tif options == nil {\n\t\toptions = &archive.TarOptions{}\n\t}\n\tif options.ExcludePatterns == nil {\n\t\toptions.ExcludePatterns = []string{}\n\t}\n\n\trootUID, rootGID, err := idtools.GetRootUIDGID(options.UIDMaps, options.GIDMaps)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdest = filepath.Clean(dest)\n\tif _, err := os.Stat(dest); os.IsNotExist(err) {\n\t\tif err := idtools.MkdirAllNewAs(dest, 0755, rootUID, rootGID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tr := ioutil.NopCloser(tarArchive)\n\tif decompress {\n\t\tdecompressedArchive, err := archive.DecompressStream(tarArchive)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer decompressedArchive.Close()\n\t\tr = decompressedArchive\n\t}\n\n\treturn invokeUnpack(r, dest, options)\n}\n\n// TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other.\n// If either Tar or Untar fails, TarUntar aborts and returns the error.\nfunc TarUntar(src, dst string) error {\n\treturn chrootArchiver.TarUntar(src, dst)\n}\n\n// CopyWithTar creates a tar archive of filesystem path `src`, and\n// unpacks it at filesystem path `dst`.\n// The archive is streamed directly with fixed buffering and no\n// intermediary disk IO.\nfunc CopyWithTar(src, dst string) error {\n\treturn chrootArchiver.CopyWithTar(src, dst)\n}\n\n// CopyFileWithTar emulates the behavior of the 'cp' command-line\n// for a single file. It copies a regular file from path `src` to\n// path `dst`, and preserves all its metadata.\n//\n// If `dst` ends with a trailing slash '/' ('\\' on Windows), the final\n// destination path will be `dst/base(src)` or `dst\\base(src)`\nfunc CopyFileWithTar(src, dst string) (err error) {\n\treturn chrootArchiver.CopyFileWithTar(src, dst)\n}\n\n// UntarPath is a convenience function which looks for an archive\n// at filesystem path `src`, and unpacks it at `dst`.\nfunc UntarPath(src, dst string) error {\n\treturn chrootArchiver.UntarPath(src, dst)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/chrootarchive/archive_unix.go",
    "content": "// +build !windows\n\npackage chrootarchive\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"runtime\"\n\t\"syscall\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/reexec\"\n)\n\nfunc chroot(path string) error {\n\tif err := syscall.Chroot(path); err != nil {\n\t\treturn err\n\t}\n\treturn syscall.Chdir(\"/\")\n}\n\n// untar is the entry-point for docker-untar on re-exec. This is not used on\n// Windows as it does not support chroot, hence no point sandboxing through\n// chroot and rexec.\nfunc untar() {\n\truntime.LockOSThread()\n\tflag.Parse()\n\n\tvar options *archive.TarOptions\n\n\t//read the options from the pipe \"ExtraFiles\"\n\tif err := json.NewDecoder(os.NewFile(3, \"options\")).Decode(&options); err != nil {\n\t\tfatal(err)\n\t}\n\n\tif err := chroot(flag.Arg(0)); err != nil {\n\t\tfatal(err)\n\t}\n\n\tif err := archive.Unpack(os.Stdin, \"/\", options); err != nil {\n\t\tfatal(err)\n\t}\n\t// fully consume stdin in case it is zero padded\n\tif _, err := flush(os.Stdin); err != nil {\n\t\tfatal(err)\n\t}\n\n\tos.Exit(0)\n}\n\nfunc invokeUnpack(decompressedArchive io.Reader, dest string, options *archive.TarOptions) error {\n\n\t// We can't pass a potentially large exclude list directly via cmd line\n\t// because we easily overrun the kernel's max argument/environment size\n\t// when the full image list is passed (e.g. when this is used by\n\t// `docker load`). We will marshall the options via a pipe to the\n\t// child\n\tr, w, err := os.Pipe()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Untar pipe failure: %v\", err)\n\t}\n\n\tcmd := reexec.Command(\"docker-untar\", dest)\n\tcmd.Stdin = decompressedArchive\n\n\tcmd.ExtraFiles = append(cmd.ExtraFiles, r)\n\toutput := bytes.NewBuffer(nil)\n\tcmd.Stdout = output\n\tcmd.Stderr = output\n\n\tif err := cmd.Start(); err != nil {\n\t\treturn fmt.Errorf(\"Untar error on re-exec cmd: %v\", err)\n\t}\n\t//write the options to the pipe for the untar exec to read\n\tif err := json.NewEncoder(w).Encode(options); err != nil {\n\t\treturn fmt.Errorf(\"Untar json encode to pipe failed: %v\", err)\n\t}\n\tw.Close()\n\n\tif err := cmd.Wait(); err != nil {\n\t\t// when `xz -d -c -q | docker-untar ...` failed on docker-untar side,\n\t\t// we need to exhaust `xz`'s output, otherwise the `xz` side will be\n\t\t// pending on write pipe forever\n\t\tio.Copy(ioutil.Discard, decompressedArchive)\n\n\t\treturn fmt.Errorf(\"Untar re-exec error: %v: output: %s\", err, output)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/chrootarchive/diff.go",
    "content": "package chrootarchive\n\nimport \"github.com/docker/docker/pkg/archive\"\n\n// ApplyLayer parses a diff in the standard layer format from `layer`,\n// and applies it to the directory `dest`. The stream `layer` can only be\n// uncompressed.\n// Returns the size in bytes of the contents of the layer.\nfunc ApplyLayer(dest string, layer archive.Reader) (size int64, err error) {\n\treturn applyLayerHandler(dest, layer, &archive.TarOptions{}, true)\n}\n\n// ApplyUncompressedLayer parses a diff in the standard layer format from\n// `layer`, and applies it to the directory `dest`. The stream `layer`\n// can only be uncompressed.\n// Returns the size in bytes of the contents of the layer.\nfunc ApplyUncompressedLayer(dest string, layer archive.Reader, options *archive.TarOptions) (int64, error) {\n\treturn applyLayerHandler(dest, layer, options, false)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/chrootarchive/diff_unix.go",
    "content": "//+build !windows\n\npackage chrootarchive\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/reexec\"\n\t\"github.com/docker/docker/pkg/system\"\n)\n\ntype applyLayerResponse struct {\n\tLayerSize int64 `json:\"layerSize\"`\n}\n\n// applyLayer is the entry-point for docker-applylayer on re-exec. This is not\n// used on Windows as it does not support chroot, hence no point sandboxing\n// through chroot and rexec.\nfunc applyLayer() {\n\n\tvar (\n\t\ttmpDir  = \"\"\n\t\terr     error\n\t\toptions *archive.TarOptions\n\t)\n\truntime.LockOSThread()\n\tflag.Parse()\n\n\tif err := chroot(flag.Arg(0)); err != nil {\n\t\tfatal(err)\n\t}\n\n\t// We need to be able to set any perms\n\toldmask, err := system.Umask(0)\n\tdefer system.Umask(oldmask)\n\tif err != nil {\n\t\tfatal(err)\n\t}\n\n\tif err := json.Unmarshal([]byte(os.Getenv(\"OPT\")), &options); err != nil {\n\t\tfatal(err)\n\t}\n\n\tif tmpDir, err = ioutil.TempDir(\"/\", \"temp-docker-extract\"); err != nil {\n\t\tfatal(err)\n\t}\n\n\tos.Setenv(\"TMPDIR\", tmpDir)\n\tsize, err := archive.UnpackLayer(\"/\", os.Stdin, options)\n\tos.RemoveAll(tmpDir)\n\tif err != nil {\n\t\tfatal(err)\n\t}\n\n\tencoder := json.NewEncoder(os.Stdout)\n\tif err := encoder.Encode(applyLayerResponse{size}); err != nil {\n\t\tfatal(fmt.Errorf(\"unable to encode layerSize JSON: %s\", err))\n\t}\n\n\tif _, err := flush(os.Stdin); err != nil {\n\t\tfatal(err)\n\t}\n\n\tos.Exit(0)\n}\n\n// applyLayerHandler parses a diff in the standard layer format from `layer`, and\n// applies it to the directory `dest`. Returns the size in bytes of the\n// contents of the layer.\nfunc applyLayerHandler(dest string, layer archive.Reader, options *archive.TarOptions, decompress bool) (size int64, err error) {\n\tdest = filepath.Clean(dest)\n\tif decompress {\n\t\tdecompressed, err := archive.DecompressStream(layer)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdefer decompressed.Close()\n\n\t\tlayer = decompressed\n\t}\n\tif options == nil {\n\t\toptions = &archive.TarOptions{}\n\t}\n\tif options.ExcludePatterns == nil {\n\t\toptions.ExcludePatterns = []string{}\n\t}\n\n\tdata, err := json.Marshal(options)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"ApplyLayer json encode: %v\", err)\n\t}\n\n\tcmd := reexec.Command(\"docker-applyLayer\", dest)\n\tcmd.Stdin = layer\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"OPT=%s\", data))\n\n\toutBuf, errBuf := new(bytes.Buffer), new(bytes.Buffer)\n\tcmd.Stdout, cmd.Stderr = outBuf, errBuf\n\n\tif err = cmd.Run(); err != nil {\n\t\treturn 0, fmt.Errorf(\"ApplyLayer %s stdout: %s stderr: %s\", err, outBuf, errBuf)\n\t}\n\n\t// Stdout should be a valid JSON struct representing an applyLayerResponse.\n\tresponse := applyLayerResponse{}\n\tdecoder := json.NewDecoder(outBuf)\n\tif err = decoder.Decode(&response); err != nil {\n\t\treturn 0, fmt.Errorf(\"unable to decode ApplyLayer JSON response: %s\", err)\n\t}\n\n\treturn response.LayerSize, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/chrootarchive/init_unix.go",
    "content": "// +build !windows\n\npackage chrootarchive\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/docker/docker/pkg/reexec\"\n)\n\nfunc init() {\n\treexec.Register(\"docker-applyLayer\", applyLayer)\n\treexec.Register(\"docker-untar\", untar)\n}\n\nfunc fatal(err error) {\n\tfmt.Fprint(os.Stderr, err)\n\tos.Exit(1)\n}\n\n// flush consumes all the bytes from the reader discarding\n// any errors\nfunc flush(r io.Reader) (bytes int64, err error) {\n\treturn io.Copy(ioutil.Discard, r)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/fileutils/fileutils.go",
    "content": "package fileutils\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"text/scanner\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// exclusion return true if the specified pattern is an exclusion\nfunc exclusion(pattern string) bool {\n\treturn pattern[0] == '!'\n}\n\n// empty return true if the specified pattern is empty\nfunc empty(pattern string) bool {\n\treturn pattern == \"\"\n}\n\n// CleanPatterns takes a slice of patterns returns a new\n// slice of patterns cleaned with filepath.Clean, stripped\n// of any empty patterns and lets the caller know whether the\n// slice contains any exception patterns (prefixed with !).\nfunc CleanPatterns(patterns []string) ([]string, [][]string, bool, error) {\n\t// Loop over exclusion patterns and:\n\t// 1. Clean them up.\n\t// 2. Indicate whether we are dealing with any exception rules.\n\t// 3. Error if we see a single exclusion marker on it's own (!).\n\tcleanedPatterns := []string{}\n\tpatternDirs := [][]string{}\n\texceptions := false\n\tfor _, pattern := range patterns {\n\t\t// Eliminate leading and trailing whitespace.\n\t\tpattern = strings.TrimSpace(pattern)\n\t\tif empty(pattern) {\n\t\t\tcontinue\n\t\t}\n\t\tif exclusion(pattern) {\n\t\t\tif len(pattern) == 1 {\n\t\t\t\treturn nil, nil, false, errors.New(\"Illegal exclusion pattern: !\")\n\t\t\t}\n\t\t\texceptions = true\n\t\t}\n\t\tpattern = filepath.Clean(pattern)\n\t\tcleanedPatterns = append(cleanedPatterns, pattern)\n\t\tif exclusion(pattern) {\n\t\t\tpattern = pattern[1:]\n\t\t}\n\t\tpatternDirs = append(patternDirs, strings.Split(pattern, string(os.PathSeparator)))\n\t}\n\n\treturn cleanedPatterns, patternDirs, exceptions, nil\n}\n\n// Matches returns true if file matches any of the patterns\n// and isn't excluded by any of the subsequent patterns.\nfunc Matches(file string, patterns []string) (bool, error) {\n\tfile = filepath.Clean(file)\n\n\tif file == \".\" {\n\t\t// Don't let them exclude everything, kind of silly.\n\t\treturn false, nil\n\t}\n\n\tpatterns, patDirs, _, err := CleanPatterns(patterns)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn OptimizedMatches(file, patterns, patDirs)\n}\n\n// OptimizedMatches is basically the same as fileutils.Matches() but optimized for archive.go.\n// It will assume that the inputs have been preprocessed and therefore the function\n// doesn't need to do as much error checking and clean-up. This was done to avoid\n// repeating these steps on each file being checked during the archive process.\n// The more generic fileutils.Matches() can't make these assumptions.\nfunc OptimizedMatches(file string, patterns []string, patDirs [][]string) (bool, error) {\n\tmatched := false\n\tfile = filepath.FromSlash(file)\n\tparentPath := filepath.Dir(file)\n\tparentPathDirs := strings.Split(parentPath, string(os.PathSeparator))\n\n\tfor i, pattern := range patterns {\n\t\tnegative := false\n\n\t\tif exclusion(pattern) {\n\t\t\tnegative = true\n\t\t\tpattern = pattern[1:]\n\t\t}\n\n\t\tmatch, err := regexpMatch(pattern, file)\n\t\tif err != nil {\n\t\t\treturn false, fmt.Errorf(\"Error in pattern (%s): %s\", pattern, err)\n\t\t}\n\n\t\tif !match && parentPath != \".\" {\n\t\t\t// Check to see if the pattern matches one of our parent dirs.\n\t\t\tif len(patDirs[i]) <= len(parentPathDirs) {\n\t\t\t\tmatch, _ = regexpMatch(strings.Join(patDirs[i], string(os.PathSeparator)),\n\t\t\t\t\tstrings.Join(parentPathDirs[:len(patDirs[i])], string(os.PathSeparator)))\n\t\t\t}\n\t\t}\n\n\t\tif match {\n\t\t\tmatched = !negative\n\t\t}\n\t}\n\n\tif matched {\n\t\tlogrus.Debugf(\"Skipping excluded path: %s\", file)\n\t}\n\n\treturn matched, nil\n}\n\n// regexpMatch tries to match the logic of filepath.Match but\n// does so using regexp logic. We do this so that we can expand the\n// wildcard set to include other things, like \"**\" to mean any number\n// of directories.  This means that we should be backwards compatible\n// with filepath.Match(). We'll end up supporting more stuff, due to\n// the fact that we're using regexp, but that's ok - it does no harm.\n//\n// As per the comment in golangs filepath.Match, on Windows, escaping\n// is disabled. Instead, '\\\\' is treated as path separator.\nfunc regexpMatch(pattern, path string) (bool, error) {\n\tregStr := \"^\"\n\n\t// Do some syntax checking on the pattern.\n\t// filepath's Match() has some really weird rules that are inconsistent\n\t// so instead of trying to dup their logic, just call Match() for its\n\t// error state and if there is an error in the pattern return it.\n\t// If this becomes an issue we can remove this since its really only\n\t// needed in the error (syntax) case - which isn't really critical.\n\tif _, err := filepath.Match(pattern, path); err != nil {\n\t\treturn false, err\n\t}\n\n\t// Go through the pattern and convert it to a regexp.\n\t// We use a scanner so we can support utf-8 chars.\n\tvar scan scanner.Scanner\n\tscan.Init(strings.NewReader(pattern))\n\n\tsl := string(os.PathSeparator)\n\tescSL := sl\n\tif sl == `\\` {\n\t\tescSL += `\\`\n\t}\n\n\tfor scan.Peek() != scanner.EOF {\n\t\tch := scan.Next()\n\n\t\tif ch == '*' {\n\t\t\tif scan.Peek() == '*' {\n\t\t\t\t// is some flavor of \"**\"\n\t\t\t\tscan.Next()\n\n\t\t\t\tif scan.Peek() == scanner.EOF {\n\t\t\t\t\t// is \"**EOF\" - to align with .gitignore just accept all\n\t\t\t\t\tregStr += \".*\"\n\t\t\t\t} else {\n\t\t\t\t\t// is \"**\"\n\t\t\t\t\tregStr += \"((.*\" + escSL + \")|([^\" + escSL + \"]*))\"\n\t\t\t\t}\n\n\t\t\t\t// Treat **/ as ** so eat the \"/\"\n\t\t\t\tif string(scan.Peek()) == sl {\n\t\t\t\t\tscan.Next()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// is \"*\" so map it to anything but \"/\"\n\t\t\t\tregStr += \"[^\" + escSL + \"]*\"\n\t\t\t}\n\t\t} else if ch == '?' {\n\t\t\t// \"?\" is any char except \"/\"\n\t\t\tregStr += \"[^\" + escSL + \"]\"\n\t\t} else if strings.Index(\".$\", string(ch)) != -1 {\n\t\t\t// Escape some regexp special chars that have no meaning\n\t\t\t// in golang's filepath.Match\n\t\t\tregStr += `\\` + string(ch)\n\t\t} else if ch == '\\\\' {\n\t\t\t// escape next char. Note that a trailing \\ in the pattern\n\t\t\t// will be left alone (but need to escape it)\n\t\t\tif sl == `\\` {\n\t\t\t\t// On windows map \"\\\" to \"\\\\\", meaning an escaped backslash,\n\t\t\t\t// and then just continue because filepath.Match on\n\t\t\t\t// Windows doesn't allow escaping at all\n\t\t\t\tregStr += escSL\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif scan.Peek() != scanner.EOF {\n\t\t\t\tregStr += `\\` + string(scan.Next())\n\t\t\t} else {\n\t\t\t\tregStr += `\\`\n\t\t\t}\n\t\t} else {\n\t\t\tregStr += string(ch)\n\t\t}\n\t}\n\n\tregStr += \"$\"\n\n\tres, err := regexp.MatchString(regStr, path)\n\n\t// Map regexp's error to filepath's so no one knows we're not using filepath\n\tif err != nil {\n\t\terr = filepath.ErrBadPattern\n\t}\n\n\treturn res, err\n}\n\n// CopyFile copies from src to dst until either EOF is reached\n// on src or an error occurs. It verifies src exists and remove\n// the dst if it exists.\nfunc CopyFile(src, dst string) (int64, error) {\n\tcleanSrc := filepath.Clean(src)\n\tcleanDst := filepath.Clean(dst)\n\tif cleanSrc == cleanDst {\n\t\treturn 0, nil\n\t}\n\tsf, err := os.Open(cleanSrc)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer sf.Close()\n\tif err := os.Remove(cleanDst); err != nil && !os.IsNotExist(err) {\n\t\treturn 0, err\n\t}\n\tdf, err := os.Create(cleanDst)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer df.Close()\n\treturn io.Copy(df, sf)\n}\n\n// ReadSymlinkedDirectory returns the target directory of a symlink.\n// The target of the symbolic link may not be a file.\nfunc ReadSymlinkedDirectory(path string) (string, error) {\n\tvar realPath string\n\tvar err error\n\tif realPath, err = filepath.Abs(path); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get absolute path for %s: %s\", path, err)\n\t}\n\tif realPath, err = filepath.EvalSymlinks(realPath); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to canonicalise path for %s: %s\", path, err)\n\t}\n\trealPathInfo, err := os.Stat(realPath)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to stat target '%s' of '%s': %s\", realPath, path, err)\n\t}\n\tif !realPathInfo.Mode().IsDir() {\n\t\treturn \"\", fmt.Errorf(\"canonical path points to a file '%s'\", realPath)\n\t}\n\treturn realPath, nil\n}\n\n// CreateIfNotExists creates a file or a directory only if it does not already exist.\nfunc CreateIfNotExists(path string, isDir bool) error {\n\tif _, err := os.Stat(path); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\tif isDir {\n\t\t\t\treturn os.MkdirAll(path, 0755)\n\t\t\t}\n\t\t\tif err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tf, err := os.OpenFile(path, os.O_CREATE, 0755)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tf.Close()\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/fileutils/fileutils_unix.go",
    "content": "// +build linux freebsd\n\npackage fileutils\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// GetTotalUsedFds Returns the number of used File Descriptors by\n// reading it via /proc filesystem.\nfunc GetTotalUsedFds() int {\n\tif fds, err := ioutil.ReadDir(fmt.Sprintf(\"/proc/%d/fd\", os.Getpid())); err != nil {\n\t\tlogrus.Errorf(\"Error opening /proc/%d/fd: %s\", os.Getpid(), err)\n\t} else {\n\t\treturn len(fds)\n\t}\n\treturn -1\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/gitutils/gitutils.go",
    "content": "package gitutils\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"github.com/docker/containerd/subreaper/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/symlink\"\n\t\"github.com/docker/docker/pkg/urlutil\"\n)\n\n// Clone clones a repository into a newly created directory which\n// will be under \"docker-build-git\"\nfunc Clone(remoteURL string) (string, error) {\n\tif !urlutil.IsGitTransport(remoteURL) {\n\t\tremoteURL = \"https://\" + remoteURL\n\t}\n\troot, err := ioutil.TempDir(\"\", \"docker-build-git\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tu, err := url.Parse(remoteURL)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfragment := u.Fragment\n\tclone := cloneArgs(u, root)\n\n\tif output, err := git(clone...); err != nil {\n\t\treturn \"\", fmt.Errorf(\"Error trying to use git: %s (%s)\", err, output)\n\t}\n\n\treturn checkoutGit(fragment, root)\n}\n\nfunc cloneArgs(remoteURL *url.URL, root string) []string {\n\targs := []string{\"clone\", \"--recursive\"}\n\tshallow := len(remoteURL.Fragment) == 0\n\n\tif shallow && strings.HasPrefix(remoteURL.Scheme, \"http\") {\n\t\tres, err := http.Head(fmt.Sprintf(\"%s/info/refs?service=git-upload-pack\", remoteURL))\n\t\tif err != nil || res.Header.Get(\"Content-Type\") != \"application/x-git-upload-pack-advertisement\" {\n\t\t\tshallow = false\n\t\t}\n\t}\n\n\tif shallow {\n\t\targs = append(args, \"--depth\", \"1\")\n\t}\n\n\tif remoteURL.Fragment != \"\" {\n\t\tremoteURL.Fragment = \"\"\n\t}\n\n\treturn append(args, remoteURL.String(), root)\n}\n\nfunc checkoutGit(fragment, root string) (string, error) {\n\trefAndDir := strings.SplitN(fragment, \":\", 2)\n\n\tif len(refAndDir[0]) != 0 {\n\t\tif output, err := gitWithinDir(root, \"checkout\", refAndDir[0]); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"Error trying to use git: %s (%s)\", err, output)\n\t\t}\n\t}\n\n\tif len(refAndDir) > 1 && len(refAndDir[1]) != 0 {\n\t\tnewCtx, err := symlink.FollowSymlinkInScope(filepath.Join(root, refAndDir[1]), root)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"Error setting git context, %q not within git root: %s\", refAndDir[1], err)\n\t\t}\n\n\t\tfi, err := os.Stat(newCtx)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif !fi.IsDir() {\n\t\t\treturn \"\", fmt.Errorf(\"Error setting git context, not a directory: %s\", newCtx)\n\t\t}\n\t\troot = newCtx\n\t}\n\n\treturn root, nil\n}\n\nfunc gitWithinDir(dir string, args ...string) ([]byte, error) {\n\ta := []string{\"--work-tree\", dir, \"--git-dir\", filepath.Join(dir, \".git\")}\n\treturn git(append(a, args...)...)\n}\n\nfunc git(args ...string) ([]byte, error) {\n\treturn exec.Command(\"git\", args...).CombinedOutput()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/homedir/homedir.go",
    "content": "package homedir\n\nimport (\n\t\"os\"\n\t\"runtime\"\n\n\t\"github.com/opencontainers/runc/libcontainer/user\"\n)\n\n// Key returns the env var name for the user's home dir based on\n// the platform being run on\nfunc Key() string {\n\tif runtime.GOOS == \"windows\" {\n\t\treturn \"USERPROFILE\"\n\t}\n\treturn \"HOME\"\n}\n\n// Get returns the home directory of the current user with the help of\n// environment variables depending on the target operating system.\n// Returned path should be used with \"path/filepath\" to form new paths.\nfunc Get() string {\n\thome := os.Getenv(Key())\n\tif home == \"\" && runtime.GOOS != \"windows\" {\n\t\tif u, err := user.CurrentUser(); err == nil {\n\t\t\treturn u.Home\n\t\t}\n\t}\n\treturn home\n}\n\n// GetShortcutString returns the string that is shortcut to user's home directory\n// in the native shell of the platform running on.\nfunc GetShortcutString() string {\n\tif runtime.GOOS == \"windows\" {\n\t\treturn \"%USERPROFILE%\" // be careful while using in format functions\n\t}\n\treturn \"~\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/httputils/httputils.go",
    "content": "package httputils\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/jsonmessage\"\n)\n\nvar (\n\theaderRegexp     = regexp.MustCompile(`^(?:(.+)/(.+?))\\((.+)\\).*$`)\n\terrInvalidHeader = errors.New(\"Bad header, should be in format `docker/version (platform)`\")\n)\n\n// Download requests a given URL and returns an io.Reader.\nfunc Download(url string) (resp *http.Response, err error) {\n\tif resp, err = http.Get(url); err != nil {\n\t\treturn nil, err\n\t}\n\tif resp.StatusCode >= 400 {\n\t\treturn nil, fmt.Errorf(\"Got HTTP status code >= 400: %s\", resp.Status)\n\t}\n\treturn resp, nil\n}\n\n// NewHTTPRequestError returns a JSON response error.\nfunc NewHTTPRequestError(msg string, res *http.Response) error {\n\treturn &jsonmessage.JSONError{\n\t\tMessage: msg,\n\t\tCode:    res.StatusCode,\n\t}\n}\n\n// ServerHeader contains the server information.\ntype ServerHeader struct {\n\tApp string // docker\n\tVer string // 1.8.0-dev\n\tOS  string // windows or linux\n}\n\n// ParseServerHeader extracts pieces from an HTTP server header\n// which is in the format \"docker/version (os)\" eg docker/1.8.0-dev (windows).\nfunc ParseServerHeader(hdr string) (*ServerHeader, error) {\n\tmatches := headerRegexp.FindStringSubmatch(hdr)\n\tif len(matches) != 4 {\n\t\treturn nil, errInvalidHeader\n\t}\n\treturn &ServerHeader{\n\t\tApp: strings.TrimSpace(matches[1]),\n\t\tVer: strings.TrimSpace(matches[2]),\n\t\tOS:  strings.TrimSpace(matches[3]),\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/httputils/mimetype.go",
    "content": "package httputils\n\nimport (\n\t\"mime\"\n\t\"net/http\"\n)\n\n// MimeTypes stores the MIME content type.\nvar MimeTypes = struct {\n\tTextPlain   string\n\tTar         string\n\tOctetStream string\n}{\"text/plain\", \"application/tar\", \"application/octet-stream\"}\n\n// DetectContentType returns a best guess representation of the MIME\n// content type for the bytes at c.  The value detected by\n// http.DetectContentType is guaranteed not be nil, defaulting to\n// application/octet-stream when a better guess cannot be made. The\n// result of this detection is then run through mime.ParseMediaType()\n// which separates the actual MIME string from any parameters.\nfunc DetectContentType(c []byte) (string, map[string]string, error) {\n\n\tct := http.DetectContentType(c)\n\tcontentType, args, err := mime.ParseMediaType(ct)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn contentType, args, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/httputils/resumablerequestreader.go",
    "content": "package httputils\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\ntype resumableRequestReader struct {\n\tclient          *http.Client\n\trequest         *http.Request\n\tlastRange       int64\n\ttotalSize       int64\n\tcurrentResponse *http.Response\n\tfailures        uint32\n\tmaxFailures     uint32\n}\n\n// ResumableRequestReader makes it possible to resume reading a request's body transparently\n// maxfail is the number of times we retry to make requests again (not resumes)\n// totalsize is the total length of the body; auto detect if not provided\nfunc ResumableRequestReader(c *http.Client, r *http.Request, maxfail uint32, totalsize int64) io.ReadCloser {\n\treturn &resumableRequestReader{client: c, request: r, maxFailures: maxfail, totalSize: totalsize}\n}\n\n// ResumableRequestReaderWithInitialResponse makes it possible to resume\n// reading the body of an already initiated request.\nfunc ResumableRequestReaderWithInitialResponse(c *http.Client, r *http.Request, maxfail uint32, totalsize int64, initialResponse *http.Response) io.ReadCloser {\n\treturn &resumableRequestReader{client: c, request: r, maxFailures: maxfail, totalSize: totalsize, currentResponse: initialResponse}\n}\n\nfunc (r *resumableRequestReader) Read(p []byte) (n int, err error) {\n\tif r.client == nil || r.request == nil {\n\t\treturn 0, fmt.Errorf(\"client and request can't be nil\\n\")\n\t}\n\tisFreshRequest := false\n\tif r.lastRange != 0 && r.currentResponse == nil {\n\t\treadRange := fmt.Sprintf(\"bytes=%d-%d\", r.lastRange, r.totalSize)\n\t\tr.request.Header.Set(\"Range\", readRange)\n\t\ttime.Sleep(5 * time.Second)\n\t}\n\tif r.currentResponse == nil {\n\t\tr.currentResponse, err = r.client.Do(r.request)\n\t\tisFreshRequest = true\n\t}\n\tif err != nil && r.failures+1 != r.maxFailures {\n\t\tr.cleanUpResponse()\n\t\tr.failures++\n\t\ttime.Sleep(5 * time.Duration(r.failures) * time.Second)\n\t\treturn 0, nil\n\t} else if err != nil {\n\t\tr.cleanUpResponse()\n\t\treturn 0, err\n\t}\n\tif r.currentResponse.StatusCode == 416 && r.lastRange == r.totalSize && r.currentResponse.ContentLength == 0 {\n\t\tr.cleanUpResponse()\n\t\treturn 0, io.EOF\n\t} else if r.currentResponse.StatusCode != 206 && r.lastRange != 0 && isFreshRequest {\n\t\tr.cleanUpResponse()\n\t\treturn 0, fmt.Errorf(\"the server doesn't support byte ranges\")\n\t}\n\tif r.totalSize == 0 {\n\t\tr.totalSize = r.currentResponse.ContentLength\n\t} else if r.totalSize <= 0 {\n\t\tr.cleanUpResponse()\n\t\treturn 0, fmt.Errorf(\"failed to auto detect content length\")\n\t}\n\tn, err = r.currentResponse.Body.Read(p)\n\tr.lastRange += int64(n)\n\tif err != nil {\n\t\tr.cleanUpResponse()\n\t}\n\tif err != nil && err != io.EOF {\n\t\tlogrus.Infof(\"encountered error during pull and clearing it before resume: %s\", err)\n\t\terr = nil\n\t}\n\treturn n, err\n}\n\nfunc (r *resumableRequestReader) Close() error {\n\tr.cleanUpResponse()\n\tr.client = nil\n\tr.request = nil\n\treturn nil\n}\n\nfunc (r *resumableRequestReader) cleanUpResponse() {\n\tif r.currentResponse != nil {\n\t\tr.currentResponse.Body.Close()\n\t\tr.currentResponse = nil\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/idtools/idtools.go",
    "content": "package idtools\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// IDMap contains a single entry for user namespace range remapping. An array\n// of IDMap entries represents the structure that will be provided to the Linux\n// kernel for creating a user namespace.\ntype IDMap struct {\n\tContainerID int `json:\"container_id\"`\n\tHostID      int `json:\"host_id\"`\n\tSize        int `json:\"size\"`\n}\n\ntype subIDRange struct {\n\tStart  int\n\tLength int\n}\n\ntype ranges []subIDRange\n\nfunc (e ranges) Len() int           { return len(e) }\nfunc (e ranges) Swap(i, j int)      { e[i], e[j] = e[j], e[i] }\nfunc (e ranges) Less(i, j int) bool { return e[i].Start < e[j].Start }\n\nconst (\n\tsubuidFileName string = \"/etc/subuid\"\n\tsubgidFileName string = \"/etc/subgid\"\n)\n\n// MkdirAllAs creates a directory (include any along the path) and then modifies\n// ownership to the requested uid/gid.  If the directory already exists, this\n// function will still change ownership to the requested uid/gid pair.\nfunc MkdirAllAs(path string, mode os.FileMode, ownerUID, ownerGID int) error {\n\treturn mkdirAs(path, mode, ownerUID, ownerGID, true, true)\n}\n\n// MkdirAllNewAs creates a directory (include any along the path) and then modifies\n// ownership ONLY of newly created directories to the requested uid/gid. If the\n// directories along the path exist, no change of ownership will be performed\nfunc MkdirAllNewAs(path string, mode os.FileMode, ownerUID, ownerGID int) error {\n\treturn mkdirAs(path, mode, ownerUID, ownerGID, true, false)\n}\n\n// MkdirAs creates a directory and then modifies ownership to the requested uid/gid.\n// If the directory already exists, this function still changes ownership\nfunc MkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int) error {\n\treturn mkdirAs(path, mode, ownerUID, ownerGID, false, true)\n}\n\n// GetRootUIDGID retrieves the remapped root uid/gid pair from the set of maps.\n// If the maps are empty, then the root uid/gid will default to \"real\" 0/0\nfunc GetRootUIDGID(uidMap, gidMap []IDMap) (int, int, error) {\n\tvar uid, gid int\n\n\tif uidMap != nil {\n\t\txUID, err := ToHost(0, uidMap)\n\t\tif err != nil {\n\t\t\treturn -1, -1, err\n\t\t}\n\t\tuid = xUID\n\t}\n\tif gidMap != nil {\n\t\txGID, err := ToHost(0, gidMap)\n\t\tif err != nil {\n\t\t\treturn -1, -1, err\n\t\t}\n\t\tgid = xGID\n\t}\n\treturn uid, gid, nil\n}\n\n// ToContainer takes an id mapping, and uses it to translate a\n// host ID to the remapped ID. If no map is provided, then the translation\n// assumes a 1-to-1 mapping and returns the passed in id\nfunc ToContainer(hostID int, idMap []IDMap) (int, error) {\n\tif idMap == nil {\n\t\treturn hostID, nil\n\t}\n\tfor _, m := range idMap {\n\t\tif (hostID >= m.HostID) && (hostID <= (m.HostID + m.Size - 1)) {\n\t\t\tcontID := m.ContainerID + (hostID - m.HostID)\n\t\t\treturn contID, nil\n\t\t}\n\t}\n\treturn -1, fmt.Errorf(\"Host ID %d cannot be mapped to a container ID\", hostID)\n}\n\n// ToHost takes an id mapping and a remapped ID, and translates the\n// ID to the mapped host ID. If no map is provided, then the translation\n// assumes a 1-to-1 mapping and returns the passed in id #\nfunc ToHost(contID int, idMap []IDMap) (int, error) {\n\tif idMap == nil {\n\t\treturn contID, nil\n\t}\n\tfor _, m := range idMap {\n\t\tif (contID >= m.ContainerID) && (contID <= (m.ContainerID + m.Size - 1)) {\n\t\t\thostID := m.HostID + (contID - m.ContainerID)\n\t\t\treturn hostID, nil\n\t\t}\n\t}\n\treturn -1, fmt.Errorf(\"Container ID %d cannot be mapped to a host ID\", contID)\n}\n\n// CreateIDMappings takes a requested user and group name and\n// using the data from /etc/sub{uid,gid} ranges, creates the\n// proper uid and gid remapping ranges for that user/group pair\nfunc CreateIDMappings(username, groupname string) ([]IDMap, []IDMap, error) {\n\tsubuidRanges, err := parseSubuid(username)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tsubgidRanges, err := parseSubgid(groupname)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif len(subuidRanges) == 0 {\n\t\treturn nil, nil, fmt.Errorf(\"No subuid ranges found for user %q\", username)\n\t}\n\tif len(subgidRanges) == 0 {\n\t\treturn nil, nil, fmt.Errorf(\"No subgid ranges found for group %q\", groupname)\n\t}\n\n\treturn createIDMap(subuidRanges), createIDMap(subgidRanges), nil\n}\n\nfunc createIDMap(subidRanges ranges) []IDMap {\n\tidMap := []IDMap{}\n\n\t// sort the ranges by lowest ID first\n\tsort.Sort(subidRanges)\n\tcontainerID := 0\n\tfor _, idrange := range subidRanges {\n\t\tidMap = append(idMap, IDMap{\n\t\t\tContainerID: containerID,\n\t\t\tHostID:      idrange.Start,\n\t\t\tSize:        idrange.Length,\n\t\t})\n\t\tcontainerID = containerID + idrange.Length\n\t}\n\treturn idMap\n}\n\nfunc parseSubuid(username string) (ranges, error) {\n\treturn parseSubidFile(subuidFileName, username)\n}\n\nfunc parseSubgid(username string) (ranges, error) {\n\treturn parseSubidFile(subgidFileName, username)\n}\n\n// parseSubidFile will read the appropriate file (/etc/subuid or /etc/subgid)\n// and return all found ranges for a specified username. If the special value\n// \"ALL\" is supplied for username, then all ranges in the file will be returned\nfunc parseSubidFile(path, username string) (ranges, error) {\n\tvar rangeList ranges\n\n\tsubidFile, err := os.Open(path)\n\tif err != nil {\n\t\treturn rangeList, err\n\t}\n\tdefer subidFile.Close()\n\n\ts := bufio.NewScanner(subidFile)\n\tfor s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn rangeList, err\n\t\t}\n\n\t\ttext := strings.TrimSpace(s.Text())\n\t\tif text == \"\" || strings.HasPrefix(text, \"#\") {\n\t\t\tcontinue\n\t\t}\n\t\tparts := strings.Split(text, \":\")\n\t\tif len(parts) != 3 {\n\t\t\treturn rangeList, fmt.Errorf(\"Cannot parse subuid/gid information: Format not correct for %s file\", path)\n\t\t}\n\t\tif parts[0] == username || username == \"ALL\" {\n\t\t\tstartid, err := strconv.Atoi(parts[1])\n\t\t\tif err != nil {\n\t\t\t\treturn rangeList, fmt.Errorf(\"String to int conversion failed during subuid/gid parsing of %s: %v\", path, err)\n\t\t\t}\n\t\t\tlength, err := strconv.Atoi(parts[2])\n\t\t\tif err != nil {\n\t\t\t\treturn rangeList, fmt.Errorf(\"String to int conversion failed during subuid/gid parsing of %s: %v\", path, err)\n\t\t\t}\n\t\t\trangeList = append(rangeList, subIDRange{startid, length})\n\t\t}\n\t}\n\treturn rangeList, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go",
    "content": "// +build !windows\n\npackage idtools\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\nfunc mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error {\n\t// make an array containing the original path asked for, plus (for mkAll == true)\n\t// all path components leading up to the complete path that don't exist before we MkdirAll\n\t// so that we can chown all of them properly at the end.  If chownExisting is false, we won't\n\t// chown the full directory path if it exists\n\tvar paths []string\n\tif _, err := os.Stat(path); err != nil && os.IsNotExist(err) {\n\t\tpaths = []string{path}\n\t} else if err == nil && chownExisting {\n\t\tif err := os.Chown(path, ownerUID, ownerGID); err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// short-circuit--we were called with an existing directory and chown was requested\n\t\treturn nil\n\t} else if err == nil {\n\t\t// nothing to do; directory path fully exists already and chown was NOT requested\n\t\treturn nil\n\t}\n\n\tif mkAll {\n\t\t// walk back to \"/\" looking for directories which do not exist\n\t\t// and add them to the paths array for chown after creation\n\t\tdirPath := path\n\t\tfor {\n\t\t\tdirPath = filepath.Dir(dirPath)\n\t\t\tif dirPath == \"/\" {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif _, err := os.Stat(dirPath); err != nil && os.IsNotExist(err) {\n\t\t\t\tpaths = append(paths, dirPath)\n\t\t\t}\n\t\t}\n\t\tif err := system.MkdirAll(path, mode); err != nil && !os.IsExist(err) {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tif err := os.Mkdir(path, mode); err != nil && !os.IsExist(err) {\n\t\t\treturn err\n\t\t}\n\t}\n\t// even if it existed, we will chown the requested path + any subpaths that\n\t// didn't exist when we called MkdirAll\n\tfor _, pathComponent := range paths {\n\t\tif err := os.Chown(pathComponent, ownerUID, ownerGID); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/idtools/usergroupadd_linux.go",
    "content": "package idtools\n\nimport (\n\t\"fmt\"\n\t\"github.com/docker/containerd/subreaper/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// add a user and/or group to Linux /etc/passwd, /etc/group using standard\n// Linux distribution commands:\n// adduser --system --shell /bin/false --disabled-login --disabled-password --no-create-home --group <username>\n// useradd -r -s /bin/false <username>\n\nvar (\n\tuserCommand string\n\n\tcmdTemplates = map[string]string{\n\t\t\"adduser\": \"--system --shell /bin/false --no-create-home --disabled-login --disabled-password --group %s\",\n\t\t\"useradd\": \"-r -s /bin/false %s\",\n\t\t\"usermod\": \"-%s %d-%d %s\",\n\t}\n\n\tidOutRegexp = regexp.MustCompile(`uid=([0-9]+).*gid=([0-9]+)`)\n\t// default length for a UID/GID subordinate range\n\tdefaultRangeLen   = 65536\n\tdefaultRangeStart = 100000\n\tuserMod           = \"usermod\"\n)\n\nfunc init() {\n\t// set up which commands are used for adding users/groups dependent on distro\n\tif _, err := resolveBinary(\"adduser\"); err == nil {\n\t\tuserCommand = \"adduser\"\n\t} else if _, err := resolveBinary(\"useradd\"); err == nil {\n\t\tuserCommand = \"useradd\"\n\t}\n}\n\nfunc resolveBinary(binname string) (string, error) {\n\tbinaryPath, err := exec.LookPath(binname)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tresolvedPath, err := filepath.EvalSymlinks(binaryPath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t//only return no error if the final resolved binary basename\n\t//matches what was searched for\n\tif filepath.Base(resolvedPath) == binname {\n\t\treturn resolvedPath, nil\n\t}\n\treturn \"\", fmt.Errorf(\"Binary %q does not resolve to a binary of that name in $PATH (%q)\", binname, resolvedPath)\n}\n\n// AddNamespaceRangesUser takes a username and uses the standard system\n// utility to create a system user/group pair used to hold the\n// /etc/sub{uid,gid} ranges which will be used for user namespace\n// mapping ranges in containers.\nfunc AddNamespaceRangesUser(name string) (int, int, error) {\n\tif err := addUser(name); err != nil {\n\t\treturn -1, -1, fmt.Errorf(\"Error adding user %q: %v\", name, err)\n\t}\n\n\t// Query the system for the created uid and gid pair\n\tout, err := execCmd(\"id\", name)\n\tif err != nil {\n\t\treturn -1, -1, fmt.Errorf(\"Error trying to find uid/gid for new user %q: %v\", name, err)\n\t}\n\tmatches := idOutRegexp.FindStringSubmatch(strings.TrimSpace(string(out)))\n\tif len(matches) != 3 {\n\t\treturn -1, -1, fmt.Errorf(\"Can't find uid, gid from `id` output: %q\", string(out))\n\t}\n\tuid, err := strconv.Atoi(matches[1])\n\tif err != nil {\n\t\treturn -1, -1, fmt.Errorf(\"Can't convert found uid (%s) to int: %v\", matches[1], err)\n\t}\n\tgid, err := strconv.Atoi(matches[2])\n\tif err != nil {\n\t\treturn -1, -1, fmt.Errorf(\"Can't convert found gid (%s) to int: %v\", matches[2], err)\n\t}\n\n\t// Now we need to create the subuid/subgid ranges for our new user/group (system users\n\t// do not get auto-created ranges in subuid/subgid)\n\n\tif err := createSubordinateRanges(name); err != nil {\n\t\treturn -1, -1, fmt.Errorf(\"Couldn't create subordinate ID ranges: %v\", err)\n\t}\n\treturn uid, gid, nil\n}\n\nfunc addUser(userName string) error {\n\n\tif userCommand == \"\" {\n\t\treturn fmt.Errorf(\"Cannot add user; no useradd/adduser binary found\")\n\t}\n\targs := fmt.Sprintf(cmdTemplates[userCommand], userName)\n\tout, err := execCmd(userCommand, args)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Failed to add user with error: %v; output: %q\", err, string(out))\n\t}\n\treturn nil\n}\n\nfunc createSubordinateRanges(name string) error {\n\n\t// first, we should verify that ranges weren't automatically created\n\t// by the distro tooling\n\tranges, err := parseSubuid(name)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error while looking for subuid ranges for user %q: %v\", name, err)\n\t}\n\tif len(ranges) == 0 {\n\t\t// no UID ranges; let's create one\n\t\tstartID, err := findNextUIDRange()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Can't find available subuid range: %v\", err)\n\t\t}\n\t\tout, err := execCmd(userMod, fmt.Sprintf(cmdTemplates[userMod], \"v\", startID, startID+defaultRangeLen-1, name))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Unable to add subuid range to user: %q; output: %s, err: %v\", name, out, err)\n\t\t}\n\t}\n\n\tranges, err = parseSubgid(name)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Error while looking for subgid ranges for user %q: %v\", name, err)\n\t}\n\tif len(ranges) == 0 {\n\t\t// no GID ranges; let's create one\n\t\tstartID, err := findNextGIDRange()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Can't find available subgid range: %v\", err)\n\t\t}\n\t\tout, err := execCmd(userMod, fmt.Sprintf(cmdTemplates[userMod], \"w\", startID, startID+defaultRangeLen-1, name))\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Unable to add subgid range to user: %q; output: %s, err: %v\", name, out, err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc findNextUIDRange() (int, error) {\n\tranges, err := parseSubuid(\"ALL\")\n\tif err != nil {\n\t\treturn -1, fmt.Errorf(\"Couldn't parse all ranges in /etc/subuid file: %v\", err)\n\t}\n\tsort.Sort(ranges)\n\treturn findNextRangeStart(ranges)\n}\n\nfunc findNextGIDRange() (int, error) {\n\tranges, err := parseSubgid(\"ALL\")\n\tif err != nil {\n\t\treturn -1, fmt.Errorf(\"Couldn't parse all ranges in /etc/subgid file: %v\", err)\n\t}\n\tsort.Sort(ranges)\n\treturn findNextRangeStart(ranges)\n}\n\nfunc findNextRangeStart(rangeList ranges) (int, error) {\n\tstartID := defaultRangeStart\n\tfor _, arange := range rangeList {\n\t\tif wouldOverlap(arange, startID) {\n\t\t\tstartID = arange.Start + arange.Length\n\t\t}\n\t}\n\treturn startID, nil\n}\n\nfunc wouldOverlap(arange subIDRange, ID int) bool {\n\tlow := ID\n\thigh := ID + defaultRangeLen\n\tif (low >= arange.Start && low <= arange.Start+arange.Length) ||\n\t\t(high <= arange.Start+arange.Length && high >= arange.Start) {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc execCmd(cmd, args string) ([]byte, error) {\n\texecCmd := exec.Command(cmd, strings.Split(args, \" \")...)\n\treturn execCmd.CombinedOutput()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/idtools/usergroupadd_unsupported.go",
    "content": "// +build !linux\n\npackage idtools\n\nimport \"fmt\"\n\n// AddNamespaceRangesUser takes a name and finds an unused uid, gid pair\n// and calls the appropriate helper function to add the group and then\n// the user to the group in /etc/group and /etc/passwd respectively.\nfunc AddNamespaceRangesUser(name string) (int, int, error) {\n\treturn -1, -1, fmt.Errorf(\"No support for adding users or groups on this OS\")\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/bytespipe.go",
    "content": "package ioutils\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"sync\"\n)\n\n// maxCap is the highest capacity to use in byte slices that buffer data.\nconst maxCap = 1e6\n\n// blockThreshold is the minimum number of bytes in the buffer which will cause\n// a write to BytesPipe to block when allocating a new slice.\nconst blockThreshold = 1e6\n\n// ErrClosed is returned when Write is called on a closed BytesPipe.\nvar ErrClosed = errors.New(\"write to closed BytesPipe\")\n\n// BytesPipe is io.ReadWriteCloser which works similarly to pipe(queue).\n// All written data may be read at most once. Also, BytesPipe allocates\n// and releases new byte slices to adjust to current needs, so the buffer\n// won't be overgrown after peak loads.\ntype BytesPipe struct {\n\tmu       sync.Mutex\n\twait     *sync.Cond\n\tbuf      [][]byte // slice of byte-slices of buffered data\n\tlastRead int      // index in the first slice to a read point\n\tbufLen   int      // length of data buffered over the slices\n\tcloseErr error    // error to return from next Read. set to nil if not closed.\n}\n\n// NewBytesPipe creates new BytesPipe, initialized by specified slice.\n// If buf is nil, then it will be initialized with slice which cap is 64.\n// buf will be adjusted in a way that len(buf) == 0, cap(buf) == cap(buf).\nfunc NewBytesPipe(buf []byte) *BytesPipe {\n\tif cap(buf) == 0 {\n\t\tbuf = make([]byte, 0, 64)\n\t}\n\tbp := &BytesPipe{\n\t\tbuf: [][]byte{buf[:0]},\n\t}\n\tbp.wait = sync.NewCond(&bp.mu)\n\treturn bp\n}\n\n// Write writes p to BytesPipe.\n// It can allocate new []byte slices in a process of writing.\nfunc (bp *BytesPipe) Write(p []byte) (int, error) {\n\tbp.mu.Lock()\n\tdefer bp.mu.Unlock()\n\twritten := 0\nloop0:\n\tfor {\n\t\tif bp.closeErr != nil {\n\t\t\treturn written, ErrClosed\n\t\t}\n\t\t// write data to the last buffer\n\t\tb := bp.buf[len(bp.buf)-1]\n\t\t// copy data to the current empty allocated area\n\t\tn := copy(b[len(b):cap(b)], p)\n\t\t// increment buffered data length\n\t\tbp.bufLen += n\n\t\t// include written data in last buffer\n\t\tbp.buf[len(bp.buf)-1] = b[:len(b)+n]\n\n\t\twritten += n\n\n\t\t// if there was enough room to write all then break\n\t\tif len(p) == n {\n\t\t\tbreak\n\t\t}\n\n\t\t// more data: write to the next slice\n\t\tp = p[n:]\n\n\t\t// block if too much data is still in the buffer\n\t\tfor bp.bufLen >= blockThreshold {\n\t\t\tbp.wait.Wait()\n\t\t\tif bp.closeErr != nil {\n\t\t\t\tcontinue loop0\n\t\t\t}\n\t\t}\n\n\t\t// allocate slice that has twice the size of the last unless maximum reached\n\t\tnextCap := 2 * cap(bp.buf[len(bp.buf)-1])\n\t\tif nextCap > maxCap {\n\t\t\tnextCap = maxCap\n\t\t}\n\t\t// add new byte slice to the buffers slice and continue writing\n\t\tbp.buf = append(bp.buf, make([]byte, 0, nextCap))\n\t}\n\tbp.wait.Broadcast()\n\treturn written, nil\n}\n\n// CloseWithError causes further reads from a BytesPipe to return immediately.\nfunc (bp *BytesPipe) CloseWithError(err error) error {\n\tbp.mu.Lock()\n\tif err != nil {\n\t\tbp.closeErr = err\n\t} else {\n\t\tbp.closeErr = io.EOF\n\t}\n\tbp.wait.Broadcast()\n\tbp.mu.Unlock()\n\treturn nil\n}\n\n// Close causes further reads from a BytesPipe to return immediately.\nfunc (bp *BytesPipe) Close() error {\n\treturn bp.CloseWithError(nil)\n}\n\nfunc (bp *BytesPipe) len() int {\n\treturn bp.bufLen - bp.lastRead\n}\n\n// Read reads bytes from BytesPipe.\n// Data could be read only once.\nfunc (bp *BytesPipe) Read(p []byte) (n int, err error) {\n\tbp.mu.Lock()\n\tdefer bp.mu.Unlock()\n\tif bp.len() == 0 {\n\t\tif bp.closeErr != nil {\n\t\t\treturn 0, bp.closeErr\n\t\t}\n\t\tbp.wait.Wait()\n\t\tif bp.len() == 0 && bp.closeErr != nil {\n\t\t\treturn 0, bp.closeErr\n\t\t}\n\t}\n\tfor {\n\t\tread := copy(p, bp.buf[0][bp.lastRead:])\n\t\tn += read\n\t\tbp.lastRead += read\n\t\tif bp.len() == 0 {\n\t\t\t// we have read everything. reset to the beginning.\n\t\t\tbp.lastRead = 0\n\t\t\tbp.bufLen -= len(bp.buf[0])\n\t\t\tbp.buf[0] = bp.buf[0][:0]\n\t\t\tbreak\n\t\t}\n\t\t// break if everything was read\n\t\tif len(p) == read {\n\t\t\tbreak\n\t\t}\n\t\t// more buffered data and more asked. read from next slice.\n\t\tp = p[read:]\n\t\tbp.lastRead = 0\n\t\tbp.bufLen -= len(bp.buf[0])\n\t\tbp.buf[0] = nil     // throw away old slice\n\t\tbp.buf = bp.buf[1:] // switch to next\n\t}\n\tbp.wait.Broadcast()\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/fmt.go",
    "content": "package ioutils\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// FprintfIfNotEmpty prints the string value if it's not empty\nfunc FprintfIfNotEmpty(w io.Writer, format, value string) (int, error) {\n\tif value != \"\" {\n\t\treturn fmt.Fprintf(w, format, value)\n\t}\n\treturn 0, nil\n}\n\n// FprintfIfTrue prints the boolean value if it's true\nfunc FprintfIfTrue(w io.Writer, format string, ok bool) (int, error) {\n\tif ok {\n\t\treturn fmt.Fprintf(w, format, ok)\n\t}\n\treturn 0, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/multireader.go",
    "content": "package ioutils\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n)\n\ntype pos struct {\n\tidx    int\n\toffset int64\n}\n\ntype multiReadSeeker struct {\n\treaders []io.ReadSeeker\n\tpos     *pos\n\tposIdx  map[io.ReadSeeker]int\n}\n\nfunc (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) {\n\tvar tmpOffset int64\n\tswitch whence {\n\tcase os.SEEK_SET:\n\t\tfor i, rdr := range r.readers {\n\t\t\t// get size of the current reader\n\t\t\ts, err := rdr.Seek(0, os.SEEK_END)\n\t\t\tif err != nil {\n\t\t\t\treturn -1, err\n\t\t\t}\n\n\t\t\tif offset > tmpOffset+s {\n\t\t\t\tif i == len(r.readers)-1 {\n\t\t\t\t\trdrOffset := s + (offset - tmpOffset)\n\t\t\t\t\tif _, err := rdr.Seek(rdrOffset, os.SEEK_SET); err != nil {\n\t\t\t\t\t\treturn -1, err\n\t\t\t\t\t}\n\t\t\t\t\tr.pos = &pos{i, rdrOffset}\n\t\t\t\t\treturn offset, nil\n\t\t\t\t}\n\n\t\t\t\ttmpOffset += s\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trdrOffset := offset - tmpOffset\n\t\t\tidx := i\n\n\t\t\trdr.Seek(rdrOffset, os.SEEK_SET)\n\t\t\t// make sure all following readers are at 0\n\t\t\tfor _, rdr := range r.readers[i+1:] {\n\t\t\t\trdr.Seek(0, os.SEEK_SET)\n\t\t\t}\n\n\t\t\tif rdrOffset == s && i != len(r.readers)-1 {\n\t\t\t\tidx++\n\t\t\t\trdrOffset = 0\n\t\t\t}\n\t\t\tr.pos = &pos{idx, rdrOffset}\n\t\t\treturn offset, nil\n\t\t}\n\tcase os.SEEK_END:\n\t\tfor _, rdr := range r.readers {\n\t\t\ts, err := rdr.Seek(0, os.SEEK_END)\n\t\t\tif err != nil {\n\t\t\t\treturn -1, err\n\t\t\t}\n\t\t\ttmpOffset += s\n\t\t}\n\t\tr.Seek(tmpOffset+offset, os.SEEK_SET)\n\t\treturn tmpOffset + offset, nil\n\tcase os.SEEK_CUR:\n\t\tif r.pos == nil {\n\t\t\treturn r.Seek(offset, os.SEEK_SET)\n\t\t}\n\t\t// Just return the current offset\n\t\tif offset == 0 {\n\t\t\treturn r.getCurOffset()\n\t\t}\n\n\t\tcurOffset, err := r.getCurOffset()\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t\trdr, rdrOffset, err := r.getReaderForOffset(curOffset + offset)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\n\t\tr.pos = &pos{r.posIdx[rdr], rdrOffset}\n\t\treturn curOffset + offset, nil\n\tdefault:\n\t\treturn -1, fmt.Errorf(\"Invalid whence: %d\", whence)\n\t}\n\n\treturn -1, fmt.Errorf(\"Error seeking for whence: %d, offset: %d\", whence, offset)\n}\n\nfunc (r *multiReadSeeker) getReaderForOffset(offset int64) (io.ReadSeeker, int64, error) {\n\tvar rdr io.ReadSeeker\n\tvar rdrOffset int64\n\n\tfor i, rdr := range r.readers {\n\t\toffsetTo, err := r.getOffsetToReader(rdr)\n\t\tif err != nil {\n\t\t\treturn nil, -1, err\n\t\t}\n\t\tif offsetTo > offset {\n\t\t\trdr = r.readers[i-1]\n\t\t\trdrOffset = offsetTo - offset\n\t\t\tbreak\n\t\t}\n\n\t\tif rdr == r.readers[len(r.readers)-1] {\n\t\t\trdrOffset = offsetTo + offset\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn rdr, rdrOffset, nil\n}\n\nfunc (r *multiReadSeeker) getCurOffset() (int64, error) {\n\tvar totalSize int64\n\tfor _, rdr := range r.readers[:r.pos.idx+1] {\n\t\tif r.posIdx[rdr] == r.pos.idx {\n\t\t\ttotalSize += r.pos.offset\n\t\t\tbreak\n\t\t}\n\n\t\tsize, err := getReadSeekerSize(rdr)\n\t\tif err != nil {\n\t\t\treturn -1, fmt.Errorf(\"error getting seeker size: %v\", err)\n\t\t}\n\t\ttotalSize += size\n\t}\n\treturn totalSize, nil\n}\n\nfunc (r *multiReadSeeker) getOffsetToReader(rdr io.ReadSeeker) (int64, error) {\n\tvar offset int64\n\tfor _, r := range r.readers {\n\t\tif r == rdr {\n\t\t\tbreak\n\t\t}\n\n\t\tsize, err := getReadSeekerSize(rdr)\n\t\tif err != nil {\n\t\t\treturn -1, err\n\t\t}\n\t\toffset += size\n\t}\n\treturn offset, nil\n}\n\nfunc (r *multiReadSeeker) Read(b []byte) (int, error) {\n\tif r.pos == nil {\n\t\tr.pos = &pos{0, 0}\n\t}\n\n\tbCap := int64(cap(b))\n\tbuf := bytes.NewBuffer(nil)\n\tvar rdr io.ReadSeeker\n\n\tfor _, rdr = range r.readers[r.pos.idx:] {\n\t\treadBytes, err := io.CopyN(buf, rdr, bCap)\n\t\tif err != nil && err != io.EOF {\n\t\t\treturn -1, err\n\t\t}\n\t\tbCap -= readBytes\n\n\t\tif bCap == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\trdrPos, err := rdr.Seek(0, os.SEEK_CUR)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tr.pos = &pos{r.posIdx[rdr], rdrPos}\n\treturn buf.Read(b)\n}\n\nfunc getReadSeekerSize(rdr io.ReadSeeker) (int64, error) {\n\t// save the current position\n\tpos, err := rdr.Seek(0, os.SEEK_CUR)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t// get the size\n\tsize, err := rdr.Seek(0, os.SEEK_END)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t// reset the position\n\tif _, err := rdr.Seek(pos, os.SEEK_SET); err != nil {\n\t\treturn -1, err\n\t}\n\treturn size, nil\n}\n\n// MultiReadSeeker returns a ReadSeeker that's the logical concatenation of the provided\n// input readseekers. After calling this method the initial position is set to the\n// beginning of the first ReadSeeker. At the end of a ReadSeeker, Read always advances\n// to the beginning of the next ReadSeeker and returns EOF at the end of the last ReadSeeker.\n// Seek can be used over the sum of lengths of all readseekers.\n//\n// When a MultiReadSeeker is used, no Read and Seek operations should be made on\n// its ReadSeeker components. Also, users should make no assumption on the state\n// of individual readseekers while the MultiReadSeeker is used.\nfunc MultiReadSeeker(readers ...io.ReadSeeker) io.ReadSeeker {\n\tif len(readers) == 1 {\n\t\treturn readers[0]\n\t}\n\tidx := make(map[io.ReadSeeker]int)\n\tfor i, rdr := range readers {\n\t\tidx[rdr] = i\n\t}\n\treturn &multiReadSeeker{\n\t\treaders: readers,\n\t\tposIdx:  idx,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/readers.go",
    "content": "package ioutils\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"io\"\n\n\t\"golang.org/x/net/context\"\n)\n\ntype readCloserWrapper struct {\n\tio.Reader\n\tcloser func() error\n}\n\nfunc (r *readCloserWrapper) Close() error {\n\treturn r.closer()\n}\n\n// NewReadCloserWrapper returns a new io.ReadCloser.\nfunc NewReadCloserWrapper(r io.Reader, closer func() error) io.ReadCloser {\n\treturn &readCloserWrapper{\n\t\tReader: r,\n\t\tcloser: closer,\n\t}\n}\n\ntype readerErrWrapper struct {\n\treader io.Reader\n\tcloser func()\n}\n\nfunc (r *readerErrWrapper) Read(p []byte) (int, error) {\n\tn, err := r.reader.Read(p)\n\tif err != nil {\n\t\tr.closer()\n\t}\n\treturn n, err\n}\n\n// NewReaderErrWrapper returns a new io.Reader.\nfunc NewReaderErrWrapper(r io.Reader, closer func()) io.Reader {\n\treturn &readerErrWrapper{\n\t\treader: r,\n\t\tcloser: closer,\n\t}\n}\n\n// HashData returns the sha256 sum of src.\nfunc HashData(src io.Reader) (string, error) {\n\th := sha256.New()\n\tif _, err := io.Copy(h, src); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn \"sha256:\" + hex.EncodeToString(h.Sum(nil)), nil\n}\n\n// OnEOFReader wraps a io.ReadCloser and a function\n// the function will run at the end of file or close the file.\ntype OnEOFReader struct {\n\tRc io.ReadCloser\n\tFn func()\n}\n\nfunc (r *OnEOFReader) Read(p []byte) (n int, err error) {\n\tn, err = r.Rc.Read(p)\n\tif err == io.EOF {\n\t\tr.runFunc()\n\t}\n\treturn\n}\n\n// Close closes the file and run the function.\nfunc (r *OnEOFReader) Close() error {\n\terr := r.Rc.Close()\n\tr.runFunc()\n\treturn err\n}\n\nfunc (r *OnEOFReader) runFunc() {\n\tif fn := r.Fn; fn != nil {\n\t\tfn()\n\t\tr.Fn = nil\n\t}\n}\n\n// cancelReadCloser wraps an io.ReadCloser with a context for cancelling read\n// operations.\ntype cancelReadCloser struct {\n\tcancel func()\n\tpR     *io.PipeReader // Stream to read from\n\tpW     *io.PipeWriter\n}\n\n// NewCancelReadCloser creates a wrapper that closes the ReadCloser when the\n// context is cancelled. The returned io.ReadCloser must be closed when it is\n// no longer needed.\nfunc NewCancelReadCloser(ctx context.Context, in io.ReadCloser) io.ReadCloser {\n\tpR, pW := io.Pipe()\n\n\t// Create a context used to signal when the pipe is closed\n\tdoneCtx, cancel := context.WithCancel(context.Background())\n\n\tp := &cancelReadCloser{\n\t\tcancel: cancel,\n\t\tpR:     pR,\n\t\tpW:     pW,\n\t}\n\n\tgo func() {\n\t\t_, err := io.Copy(pW, in)\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// If the context was closed, p.closeWithError\n\t\t\t// was already called. Calling it again would\n\t\t\t// change the error that Read returns.\n\t\tdefault:\n\t\t\tp.closeWithError(err)\n\t\t}\n\t\tin.Close()\n\t}()\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tp.closeWithError(ctx.Err())\n\t\t\tcase <-doneCtx.Done():\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn p\n}\n\n// Read wraps the Read method of the pipe that provides data from the wrapped\n// ReadCloser.\nfunc (p *cancelReadCloser) Read(buf []byte) (n int, err error) {\n\treturn p.pR.Read(buf)\n}\n\n// closeWithError closes the wrapper and its underlying reader. It will\n// cause future calls to Read to return err.\nfunc (p *cancelReadCloser) closeWithError(err error) {\n\tp.pW.CloseWithError(err)\n\tp.cancel()\n}\n\n// Close closes the wrapper its underlying reader. It will cause\n// future calls to Read to return io.EOF.\nfunc (p *cancelReadCloser) Close() error {\n\tp.closeWithError(io.EOF)\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/scheduler.go",
    "content": "// +build !gccgo\n\npackage ioutils\n\nfunc callSchedulerIfNecessary() {\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/scheduler_gccgo.go",
    "content": "// +build gccgo\n\npackage ioutils\n\nimport (\n\t\"runtime\"\n)\n\nfunc callSchedulerIfNecessary() {\n\t//allow or force Go scheduler to switch context, without explicitly\n\t//forcing this will make it hang when using gccgo implementation\n\truntime.Gosched()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/temp_unix.go",
    "content": "// +build !windows\n\npackage ioutils\n\nimport \"io/ioutil\"\n\n// TempDir on Unix systems is equivalent to ioutil.TempDir.\nfunc TempDir(dir, prefix string) (string, error) {\n\treturn ioutil.TempDir(dir, prefix)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/writeflusher.go",
    "content": "package ioutils\n\nimport (\n\t\"io\"\n\t\"sync\"\n)\n\n// WriteFlusher wraps the Write and Flush operation ensuring that every write\n// is a flush. In addition, the Close method can be called to intercept\n// Read/Write calls if the targets lifecycle has already ended.\ntype WriteFlusher struct {\n\tw           io.Writer\n\tflusher     flusher\n\tflushed     chan struct{}\n\tflushedOnce sync.Once\n\tclosed      chan struct{}\n\tcloseLock   sync.Mutex\n}\n\ntype flusher interface {\n\tFlush()\n}\n\nvar errWriteFlusherClosed = io.EOF\n\nfunc (wf *WriteFlusher) Write(b []byte) (n int, err error) {\n\tselect {\n\tcase <-wf.closed:\n\t\treturn 0, errWriteFlusherClosed\n\tdefault:\n\t}\n\n\tn, err = wf.w.Write(b)\n\twf.Flush() // every write is a flush.\n\treturn n, err\n}\n\n// Flush the stream immediately.\nfunc (wf *WriteFlusher) Flush() {\n\tselect {\n\tcase <-wf.closed:\n\t\treturn\n\tdefault:\n\t}\n\n\twf.flushedOnce.Do(func() {\n\t\tclose(wf.flushed)\n\t})\n\twf.flusher.Flush()\n}\n\n// Flushed returns the state of flushed.\n// If it's flushed, return true, or else it return false.\nfunc (wf *WriteFlusher) Flushed() bool {\n\t// BUG(stevvooe): Remove this method. Its use is inherently racy. Seems to\n\t// be used to detect whether or a response code has been issued or not.\n\t// Another hook should be used instead.\n\tvar flushed bool\n\tselect {\n\tcase <-wf.flushed:\n\t\tflushed = true\n\tdefault:\n\t}\n\treturn flushed\n}\n\n// Close closes the write flusher, disallowing any further writes to the\n// target. After the flusher is closed, all calls to write or flush will\n// result in an error.\nfunc (wf *WriteFlusher) Close() error {\n\twf.closeLock.Lock()\n\tdefer wf.closeLock.Unlock()\n\n\tselect {\n\tcase <-wf.closed:\n\t\treturn errWriteFlusherClosed\n\tdefault:\n\t\tclose(wf.closed)\n\t}\n\treturn nil\n}\n\n// NewWriteFlusher returns a new WriteFlusher.\nfunc NewWriteFlusher(w io.Writer) *WriteFlusher {\n\tvar fl flusher\n\tif f, ok := w.(flusher); ok {\n\t\tfl = f\n\t} else {\n\t\tfl = &NopFlusher{}\n\t}\n\treturn &WriteFlusher{w: w, flusher: fl, closed: make(chan struct{}), flushed: make(chan struct{})}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/ioutils/writers.go",
    "content": "package ioutils\n\nimport \"io\"\n\n// NopWriter represents a type which write operation is nop.\ntype NopWriter struct{}\n\nfunc (*NopWriter) Write(buf []byte) (int, error) {\n\treturn len(buf), nil\n}\n\ntype nopWriteCloser struct {\n\tio.Writer\n}\n\nfunc (w *nopWriteCloser) Close() error { return nil }\n\n// NopWriteCloser returns a nopWriteCloser.\nfunc NopWriteCloser(w io.Writer) io.WriteCloser {\n\treturn &nopWriteCloser{w}\n}\n\n// NopFlusher represents a type which flush operation is nop.\ntype NopFlusher struct{}\n\n// Flush is a nop operation.\nfunc (f *NopFlusher) Flush() {}\n\ntype writeCloserWrapper struct {\n\tio.Writer\n\tcloser func() error\n}\n\nfunc (r *writeCloserWrapper) Close() error {\n\treturn r.closer()\n}\n\n// NewWriteCloserWrapper returns a new io.WriteCloser.\nfunc NewWriteCloserWrapper(r io.Writer, closer func() error) io.WriteCloser {\n\treturn &writeCloserWrapper{\n\t\tWriter: r,\n\t\tcloser: closer,\n\t}\n}\n\n// WriteCounter wraps a concrete io.Writer and hold a count of the number\n// of bytes written to the writer during a \"session\".\n// This can be convenient when write return is masked\n// (e.g., json.Encoder.Encode())\ntype WriteCounter struct {\n\tCount  int64\n\tWriter io.Writer\n}\n\n// NewWriteCounter returns a new WriteCounter.\nfunc NewWriteCounter(w io.Writer) *WriteCounter {\n\treturn &WriteCounter{\n\t\tWriter: w,\n\t}\n}\n\nfunc (wc *WriteCounter) Write(p []byte) (count int, err error) {\n\tcount, err = wc.Writer.Write(p)\n\twc.Count += int64(count)\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/jsonlog/jsonlog.go",
    "content": "package jsonlog\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// JSONLog represents a log message, typically a single entry from a given log stream.\n// JSONLogs can be easily serialized to and from JSON and support custom formatting.\ntype JSONLog struct {\n\t// Log is the log message\n\tLog string `json:\"log,omitempty\"`\n\t// Stream is the log source\n\tStream string `json:\"stream,omitempty\"`\n\t// Created is the created timestamp of log\n\tCreated time.Time `json:\"time\"`\n}\n\n// Format returns the log formatted according to format\n// If format is nil, returns the log message\n// If format is json, returns the log marshaled in json format\n// By default, returns the log with the log time formatted according to format.\nfunc (jl *JSONLog) Format(format string) (string, error) {\n\tif format == \"\" {\n\t\treturn jl.Log, nil\n\t}\n\tif format == \"json\" {\n\t\tm, err := json.Marshal(jl)\n\t\treturn string(m), err\n\t}\n\treturn fmt.Sprintf(\"%s %s\", jl.Created.Format(format), jl.Log), nil\n}\n\n// Reset resets the log to nil.\nfunc (jl *JSONLog) Reset() {\n\tjl.Log = \"\"\n\tjl.Stream = \"\"\n\tjl.Created = time.Time{}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/jsonlog/jsonlog_marshalling.go",
    "content": "// This code was initially generated by ffjson <https://github.com/pquerna/ffjson>\n// This code was generated via the following steps:\n// $ go get -u github.com/pquerna/ffjson\n// $ make BIND_DIR=. shell\n// $ ffjson pkg/jsonlog/jsonlog.go\n// $ mv pkg/jsonglog/jsonlog_ffjson.go pkg/jsonlog/jsonlog_marshalling.go\n//\n// It has been modified to improve the performance of time marshalling to JSON\n// and to clean it up.\n// Should this code need to be regenerated when the JSONLog struct is changed,\n// the relevant changes which have been made are:\n// import (\n//        \"bytes\"\n//-\n//        \"unicode/utf8\"\n// )\n//\n// func (mj *JSONLog) MarshalJSON() ([]byte, error) {\n//@@ -20,13 +16,13 @@ func (mj *JSONLog) MarshalJSON() ([]byte, error) {\n//        }\n//        return buf.Bytes(), nil\n// }\n//+\n// func (mj *JSONLog) MarshalJSONBuf(buf *bytes.Buffer) error {\n//-       var err error\n//-       var obj []byte\n//-       var first bool = true\n//-       _ = obj\n//-       _ = err\n//-       _ = first\n//+       var (\n//+               err       error\n//+               timestamp string\n//+               first     bool = true\n//+       )\n//        buf.WriteString(`{`)\n//        if len(mj.Log) != 0 {\n//                if first == true {\n//@@ -52,11 +48,11 @@ func (mj *JSONLog) MarshalJSONBuf(buf *bytes.Buffer) error {\n//                buf.WriteString(`,`)\n//        }\n//        buf.WriteString(`\"time\":`)\n//-       obj, err = mj.Created.MarshalJSON()\n//+       timestamp, err = FastTimeMarshalJSON(mj.Created)\n//        if err != nil {\n//                return err\n//        }\n//-       buf.Write(obj)\n//+       buf.WriteString(timestamp)\n//        buf.WriteString(`}`)\n//        return nil\n// }\n// @@ -81,9 +81,10 @@ func (mj *JSONLog) MarshalJSONBuf(buf *bytes.Buffer) error {\n//         if len(mj.Log) != 0 {\n// -                if first == true {\n// -                       first = false\n// -               } else {\n// -                       buf.WriteString(`,`)\n// -               }\n// +               first = false\n//                 buf.WriteString(`\"log\":`)\n//                 ffjsonWriteJSONString(buf, mj.Log)\n//         }\n\npackage jsonlog\n\nimport (\n\t\"bytes\"\n\t\"unicode/utf8\"\n)\n\n// MarshalJSON marshals the JSONLog.\nfunc (mj *JSONLog) MarshalJSON() ([]byte, error) {\n\tvar buf bytes.Buffer\n\tbuf.Grow(1024)\n\tif err := mj.MarshalJSONBuf(&buf); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// MarshalJSONBuf marshals the JSONLog and stores the result to a bytes.Buffer.\nfunc (mj *JSONLog) MarshalJSONBuf(buf *bytes.Buffer) error {\n\tvar (\n\t\terr       error\n\t\ttimestamp string\n\t\tfirst     = true\n\t)\n\tbuf.WriteString(`{`)\n\tif len(mj.Log) != 0 {\n\t\tfirst = false\n\t\tbuf.WriteString(`\"log\":`)\n\t\tffjsonWriteJSONString(buf, mj.Log)\n\t}\n\tif len(mj.Stream) != 0 {\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tbuf.WriteString(`,`)\n\t\t}\n\t\tbuf.WriteString(`\"stream\":`)\n\t\tffjsonWriteJSONString(buf, mj.Stream)\n\t}\n\tif !first {\n\t\tbuf.WriteString(`,`)\n\t}\n\tbuf.WriteString(`\"time\":`)\n\ttimestamp, err = FastTimeMarshalJSON(mj.Created)\n\tif err != nil {\n\t\treturn err\n\t}\n\tbuf.WriteString(timestamp)\n\tbuf.WriteString(`}`)\n\treturn nil\n}\n\nfunc ffjsonWriteJSONString(buf *bytes.Buffer, s string) {\n\tconst hex = \"0123456789abcdef\"\n\n\tbuf.WriteByte('\"')\n\tstart := 0\n\tfor i := 0; i < len(s); {\n\t\tif b := s[i]; b < utf8.RuneSelf {\n\t\t\tif 0x20 <= b && b != '\\\\' && b != '\"' && b != '<' && b != '>' && b != '&' {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start < i {\n\t\t\t\tbuf.WriteString(s[start:i])\n\t\t\t}\n\t\t\tswitch b {\n\t\t\tcase '\\\\', '\"':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte(b)\n\t\t\tcase '\\n':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte('n')\n\t\t\tcase '\\r':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte('r')\n\t\t\tdefault:\n\n\t\t\t\tbuf.WriteString(`\\u00`)\n\t\t\t\tbuf.WriteByte(hex[b>>4])\n\t\t\t\tbuf.WriteByte(hex[b&0xF])\n\t\t\t}\n\t\t\ti++\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\tc, size := utf8.DecodeRuneInString(s[i:])\n\t\tif c == utf8.RuneError && size == 1 {\n\t\t\tif start < i {\n\t\t\t\tbuf.WriteString(s[start:i])\n\t\t\t}\n\t\t\tbuf.WriteString(`\\ufffd`)\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\n\t\tif c == '\\u2028' || c == '\\u2029' {\n\t\t\tif start < i {\n\t\t\t\tbuf.WriteString(s[start:i])\n\t\t\t}\n\t\t\tbuf.WriteString(`\\u202`)\n\t\t\tbuf.WriteByte(hex[c&0xF])\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\ti += size\n\t}\n\tif start < len(s) {\n\t\tbuf.WriteString(s[start:])\n\t}\n\tbuf.WriteByte('\"')\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/jsonlog/jsonlogbytes.go",
    "content": "package jsonlog\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"unicode/utf8\"\n)\n\n// JSONLogs is based on JSONLog.\n// It allows marshalling JSONLog from Log as []byte\n// and an already marshalled Created timestamp.\ntype JSONLogs struct {\n\tLog     []byte `json:\"log,omitempty\"`\n\tStream  string `json:\"stream,omitempty\"`\n\tCreated string `json:\"time\"`\n\n\t// json-encoded bytes\n\tRawAttrs json.RawMessage `json:\"attrs,omitempty\"`\n}\n\n// MarshalJSONBuf is based on the same method from JSONLog\n// It has been modified to take into account the necessary changes.\nfunc (mj *JSONLogs) MarshalJSONBuf(buf *bytes.Buffer) error {\n\tvar first = true\n\n\tbuf.WriteString(`{`)\n\tif len(mj.Log) != 0 {\n\t\tfirst = false\n\t\tbuf.WriteString(`\"log\":`)\n\t\tffjsonWriteJSONBytesAsString(buf, mj.Log)\n\t}\n\tif len(mj.Stream) != 0 {\n\t\tif first == true {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tbuf.WriteString(`,`)\n\t\t}\n\t\tbuf.WriteString(`\"stream\":`)\n\t\tffjsonWriteJSONString(buf, mj.Stream)\n\t}\n\tif len(mj.RawAttrs) > 0 {\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tbuf.WriteString(`,`)\n\t\t}\n\t\tbuf.WriteString(`\"attrs\":`)\n\t\tbuf.Write(mj.RawAttrs)\n\t}\n\tif !first {\n\t\tbuf.WriteString(`,`)\n\t}\n\tbuf.WriteString(`\"time\":`)\n\tbuf.WriteString(mj.Created)\n\tbuf.WriteString(`}`)\n\treturn nil\n}\n\n// This is based on ffjsonWriteJSONBytesAsString. It has been changed\n// to accept a string passed as a slice of bytes.\nfunc ffjsonWriteJSONBytesAsString(buf *bytes.Buffer, s []byte) {\n\tconst hex = \"0123456789abcdef\"\n\n\tbuf.WriteByte('\"')\n\tstart := 0\n\tfor i := 0; i < len(s); {\n\t\tif b := s[i]; b < utf8.RuneSelf {\n\t\t\tif 0x20 <= b && b != '\\\\' && b != '\"' && b != '<' && b != '>' && b != '&' {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif start < i {\n\t\t\t\tbuf.Write(s[start:i])\n\t\t\t}\n\t\t\tswitch b {\n\t\t\tcase '\\\\', '\"':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte(b)\n\t\t\tcase '\\n':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte('n')\n\t\t\tcase '\\r':\n\t\t\t\tbuf.WriteByte('\\\\')\n\t\t\t\tbuf.WriteByte('r')\n\t\t\tdefault:\n\n\t\t\t\tbuf.WriteString(`\\u00`)\n\t\t\t\tbuf.WriteByte(hex[b>>4])\n\t\t\t\tbuf.WriteByte(hex[b&0xF])\n\t\t\t}\n\t\t\ti++\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\tc, size := utf8.DecodeRune(s[i:])\n\t\tif c == utf8.RuneError && size == 1 {\n\t\t\tif start < i {\n\t\t\t\tbuf.Write(s[start:i])\n\t\t\t}\n\t\t\tbuf.WriteString(`\\ufffd`)\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\n\t\tif c == '\\u2028' || c == '\\u2029' {\n\t\t\tif start < i {\n\t\t\t\tbuf.Write(s[start:i])\n\t\t\t}\n\t\t\tbuf.WriteString(`\\u202`)\n\t\t\tbuf.WriteByte(hex[c&0xF])\n\t\t\ti += size\n\t\t\tstart = i\n\t\t\tcontinue\n\t\t}\n\t\ti += size\n\t}\n\tif start < len(s) {\n\t\tbuf.Write(s[start:])\n\t}\n\tbuf.WriteByte('\"')\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/jsonlog/time_marshalling.go",
    "content": "// Package jsonlog provides helper functions to parse and print time (time.Time) as JSON.\npackage jsonlog\n\nimport (\n\t\"errors\"\n\t\"time\"\n)\n\nconst (\n\t// RFC3339NanoFixed is our own version of RFC339Nano because we want one\n\t// that pads the nano seconds part with zeros to ensure\n\t// the timestamps are aligned in the logs.\n\tRFC3339NanoFixed = \"2006-01-02T15:04:05.000000000Z07:00\"\n\t// JSONFormat is the format used by FastMarshalJSON\n\tJSONFormat = `\"` + time.RFC3339Nano + `\"`\n)\n\n// FastTimeMarshalJSON avoids one of the extra allocations that\n// time.MarshalJSON is making.\nfunc FastTimeMarshalJSON(t time.Time) (string, error) {\n\tif y := t.Year(); y < 0 || y >= 10000 {\n\t\t// RFC 3339 is clear that years are 4 digits exactly.\n\t\t// See golang.org/issue/4556#c15 for more discussion.\n\t\treturn \"\", errors.New(\"time.MarshalJSON: year outside of range [0,9999]\")\n\t}\n\treturn t.Format(JSONFormat), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go",
    "content": "package jsonmessage\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/docker/docker/pkg/jsonlog\"\n\t\"github.com/docker/docker/pkg/term\"\n\t\"github.com/docker/go-units\"\n)\n\n// JSONError wraps a concrete Code and Message, `Code` is\n// is a integer error code, `Message` is the error message.\ntype JSONError struct {\n\tCode    int    `json:\"code,omitempty\"`\n\tMessage string `json:\"message,omitempty\"`\n}\n\nfunc (e *JSONError) Error() string {\n\treturn e.Message\n}\n\n// JSONProgress describes a Progress. terminalFd is the fd of the current terminal,\n// Start is the initial value for the operation. Current is the current status and\n// value of the progress made towards Total. Total is the end value describing when\n// we made 100% progress for an operation.\ntype JSONProgress struct {\n\tterminalFd uintptr\n\tCurrent    int64 `json:\"current,omitempty\"`\n\tTotal      int64 `json:\"total,omitempty\"`\n\tStart      int64 `json:\"start,omitempty\"`\n}\n\nfunc (p *JSONProgress) String() string {\n\tvar (\n\t\twidth       = 200\n\t\tpbBox       string\n\t\tnumbersBox  string\n\t\ttimeLeftBox string\n\t)\n\n\tws, err := term.GetWinsize(p.terminalFd)\n\tif err == nil {\n\t\twidth = int(ws.Width)\n\t}\n\n\tif p.Current <= 0 && p.Total <= 0 {\n\t\treturn \"\"\n\t}\n\tcurrent := units.HumanSize(float64(p.Current))\n\tif p.Total <= 0 {\n\t\treturn fmt.Sprintf(\"%8v\", current)\n\t}\n\ttotal := units.HumanSize(float64(p.Total))\n\tpercentage := int(float64(p.Current)/float64(p.Total)*100) / 2\n\tif percentage > 50 {\n\t\tpercentage = 50\n\t}\n\tif width > 110 {\n\t\t// this number can't be negative gh#7136\n\t\tnumSpaces := 0\n\t\tif 50-percentage > 0 {\n\t\t\tnumSpaces = 50 - percentage\n\t\t}\n\t\tpbBox = fmt.Sprintf(\"[%s>%s] \", strings.Repeat(\"=\", percentage), strings.Repeat(\" \", numSpaces))\n\t}\n\n\tnumbersBox = fmt.Sprintf(\"%8v/%v\", current, total)\n\n\tif p.Current > p.Total {\n\t\t// remove total display if the reported current is wonky.\n\t\tnumbersBox = fmt.Sprintf(\"%8v\", current)\n\t}\n\n\tif p.Current > 0 && p.Start > 0 && percentage < 50 {\n\t\tfromStart := time.Now().UTC().Sub(time.Unix(p.Start, 0))\n\t\tperEntry := fromStart / time.Duration(p.Current)\n\t\tleft := time.Duration(p.Total-p.Current) * perEntry\n\t\tleft = (left / time.Second) * time.Second\n\n\t\tif width > 50 {\n\t\t\ttimeLeftBox = \" \" + left.String()\n\t\t}\n\t}\n\treturn pbBox + numbersBox + timeLeftBox\n}\n\n// JSONMessage defines a message struct. It describes\n// the created time, where it from, status, ID of the\n// message. It's used for docker events.\ntype JSONMessage struct {\n\tStream          string        `json:\"stream,omitempty\"`\n\tStatus          string        `json:\"status,omitempty\"`\n\tProgress        *JSONProgress `json:\"progressDetail,omitempty\"`\n\tProgressMessage string        `json:\"progress,omitempty\"` //deprecated\n\tID              string        `json:\"id,omitempty\"`\n\tFrom            string        `json:\"from,omitempty\"`\n\tTime            int64         `json:\"time,omitempty\"`\n\tTimeNano        int64         `json:\"timeNano,omitempty\"`\n\tError           *JSONError    `json:\"errorDetail,omitempty\"`\n\tErrorMessage    string        `json:\"error,omitempty\"` //deprecated\n\t// Aux contains out-of-band data, such as digests for push signing.\n\tAux *json.RawMessage `json:\"aux,omitempty\"`\n}\n\n// Display displays the JSONMessage to `out`. `isTerminal` describes if `out`\n// is a terminal. If this is the case, it will erase the entire current line\n// when displaying the progressbar.\nfunc (jm *JSONMessage) Display(out io.Writer, isTerminal bool) error {\n\tif jm.Error != nil {\n\t\tif jm.Error.Code == 401 {\n\t\t\treturn fmt.Errorf(\"Authentication is required.\")\n\t\t}\n\t\treturn jm.Error\n\t}\n\tvar endl string\n\tif isTerminal && jm.Stream == \"\" && jm.Progress != nil {\n\t\t// <ESC>[2K = erase entire current line\n\t\tfmt.Fprintf(out, \"%c[2K\\r\", 27)\n\t\tendl = \"\\r\"\n\t} else if jm.Progress != nil && jm.Progress.String() != \"\" { //disable progressbar in non-terminal\n\t\treturn nil\n\t}\n\tif jm.TimeNano != 0 {\n\t\tfmt.Fprintf(out, \"%s \", time.Unix(0, jm.TimeNano).Format(jsonlog.RFC3339NanoFixed))\n\t} else if jm.Time != 0 {\n\t\tfmt.Fprintf(out, \"%s \", time.Unix(jm.Time, 0).Format(jsonlog.RFC3339NanoFixed))\n\t}\n\tif jm.ID != \"\" {\n\t\tfmt.Fprintf(out, \"%s: \", jm.ID)\n\t}\n\tif jm.From != \"\" {\n\t\tfmt.Fprintf(out, \"(from %s) \", jm.From)\n\t}\n\tif jm.Progress != nil && isTerminal {\n\t\tfmt.Fprintf(out, \"%s %s%s\", jm.Status, jm.Progress.String(), endl)\n\t} else if jm.ProgressMessage != \"\" { //deprecated\n\t\tfmt.Fprintf(out, \"%s %s%s\", jm.Status, jm.ProgressMessage, endl)\n\t} else if jm.Stream != \"\" {\n\t\tfmt.Fprintf(out, \"%s%s\", jm.Stream, endl)\n\t} else {\n\t\tfmt.Fprintf(out, \"%s%s\\n\", jm.Status, endl)\n\t}\n\treturn nil\n}\n\n// DisplayJSONMessagesStream displays a json message stream from `in` to `out`, `isTerminal`\n// describes if `out` is a terminal. If this is the case, it will print `\\n` at the end of\n// each line and move the cursor while displaying.\nfunc DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, isTerminal bool, auxCallback func(*json.RawMessage)) error {\n\tvar (\n\t\tdec = json.NewDecoder(in)\n\t\tids = make(map[string]int)\n\t)\n\tfor {\n\t\tdiff := 0\n\t\tvar jm JSONMessage\n\t\tif err := dec.Decode(&jm); err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\n\t\tif jm.Aux != nil {\n\t\t\tif auxCallback != nil {\n\t\t\t\tauxCallback(jm.Aux)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif jm.Progress != nil {\n\t\t\tjm.Progress.terminalFd = terminalFd\n\t\t}\n\t\tif jm.ID != \"\" && (jm.Progress != nil || jm.ProgressMessage != \"\") {\n\t\t\tline, ok := ids[jm.ID]\n\t\t\tif !ok {\n\t\t\t\t// NOTE: This approach of using len(id) to\n\t\t\t\t// figure out the number of lines of history\n\t\t\t\t// only works as long as we clear the history\n\t\t\t\t// when we output something that's not\n\t\t\t\t// accounted for in the map, such as a line\n\t\t\t\t// with no ID.\n\t\t\t\tline = len(ids)\n\t\t\t\tids[jm.ID] = line\n\t\t\t\tif isTerminal {\n\t\t\t\t\tfmt.Fprintf(out, \"\\n\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdiff = len(ids) - line\n\t\t\t}\n\t\t\tif isTerminal {\n\t\t\t\t// NOTE: this appears to be necessary even if\n\t\t\t\t// diff == 0.\n\t\t\t\t// <ESC>[{diff}A = move cursor up diff rows\n\t\t\t\tfmt.Fprintf(out, \"%c[%dA\", 27, diff)\n\t\t\t}\n\t\t} else {\n\t\t\t// When outputting something that isn't progress\n\t\t\t// output, clear the history of previous lines. We\n\t\t\t// don't want progress entries from some previous\n\t\t\t// operation to be updated (for example, pull -a\n\t\t\t// with multiple tags).\n\t\t\tids = make(map[string]int)\n\t\t}\n\t\terr := jm.Display(out, isTerminal)\n\t\tif jm.ID != \"\" && isTerminal {\n\t\t\t// NOTE: this appears to be necessary even if\n\t\t\t// diff == 0.\n\t\t\t// <ESC>[{diff}B = move cursor down diff rows\n\t\t\tfmt.Fprintf(out, \"%c[%dB\", 27, diff)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mflag/LICENSE",
    "content": "Copyright (c) 2014-2016 The Docker & 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/docker/docker/pkg/mflag/README.md",
    "content": "Package mflag (aka multiple-flag) implements command-line flag parsing.  \nIt's an **hacky** fork of the [official golang package](http://golang.org/pkg/flag/)\n\nIt adds:\n\n* both short and long flag version  \n`./example -s red` `./example --string blue`\n\n* multiple names for the same option  \n```\n$>./example -h\nUsage of example:\n  -s, --string=\"\": a simple string\n```\n\n___\nIt is very flexible on purpose, so you can do things like:  \n```\n$>./example -h\nUsage of example:\n  -s, -string, --string=\"\": a simple string\n```\n\nOr:  \n```\n$>./example -h\nUsage of example:\n  -oldflag, --newflag=\"\": a simple string\n```\n\nYou can also hide some flags from the usage, so if we want only `--newflag`:  \n```\n$>./example -h\nUsage of example:\n  --newflag=\"\": a simple string\n$>./example -oldflag str\nstr\n```\n\nSee [example.go](example/example.go) for more details.\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mflag/flag.go",
    "content": "// Copyright 2014-2016 The Docker & Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//\tPackage mflag implements command-line flag parsing.\n//\n//\tUsage:\n//\n//\tDefine flags using flag.String(), Bool(), Int(), etc.\n//\n//\tThis declares an integer flag, -f or --flagname, stored in the pointer ip, with type *int.\n//\t\timport \"flag /github.com/docker/docker/pkg/mflag\"\n//\t\tvar ip = flag.Int([]string{\"f\", \"-flagname\"}, 1234, \"help message for flagname\")\n//\tIf you like, you can bind the flag to a variable using the Var() functions.\n//\t\tvar flagvar int\n//\t\tfunc init() {\n//\t\t\t// -flaghidden will work, but will be hidden from the usage\n//\t\t\tflag.IntVar(&flagvar, []string{\"f\", \"#flaghidden\", \"-flagname\"}, 1234, \"help message for flagname\")\n//\t\t}\n//\tOr you can create custom flags that satisfy the Value interface (with\n//\tpointer receivers) and couple them to flag parsing by\n//\t\tflag.Var(&flagVal, []string{\"name\"}, \"help message for flagname\")\n//\tFor such flags, the default value is just the initial value of the variable.\n//\n//\tYou can also add \"deprecated\" flags, they are still usable, but are not shown\n//\tin the usage and will display a warning when you try to use them. `#` before\n//\tan option means this option is deprecated, if there is an following option\n//\twithout `#` ahead, then that's the replacement, if not, it will just be removed:\n//\t\tvar ip = flag.Int([]string{\"#f\", \"#flagname\", \"-flagname\"}, 1234, \"help message for flagname\")\n//\tthis will display: `Warning: '-f' is deprecated, it will be replaced by '--flagname' soon. See usage.` or\n//\tthis will display: `Warning: '-flagname' is deprecated, it will be replaced by '--flagname' soon. See usage.`\n//\t\tvar ip = flag.Int([]string{\"f\", \"#flagname\"}, 1234, \"help message for flagname\")\n//\twill display: `Warning: '-flagname' is deprecated, it will be removed soon. See usage.`\n//\tso you can only use `-f`.\n//\n//\tYou can also group one letter flags, bif you declare\n//\t\tvar v = flag.Bool([]string{\"v\", \"-verbose\"}, false, \"help message for verbose\")\n//\t\tvar s = flag.Bool([]string{\"s\", \"-slow\"}, false, \"help message for slow\")\n//\tyou will be able to use the -vs or -sv\n//\n//\tAfter all flags are defined, call\n//\t\tflag.Parse()\n//\tto parse the command line into the defined flags.\n//\n//\tFlags may then be used directly. If you're using the flags themselves,\n//\tthey are all pointers; if you bind to variables, they're values.\n//\t\tfmt.Println(\"ip has value \", *ip)\n//\t\tfmt.Println(\"flagvar has value \", flagvar)\n//\n//\tAfter parsing, the arguments after the flag are available as the\n//\tslice flag.Args() or individually as flag.Arg(i).\n//\tThe arguments are indexed from 0 through flag.NArg()-1.\n//\n//\tCommand line flag syntax:\n//\t\t-flag\n//\t\t-flag=x\n//\t\t-flag=\"x\"\n//\t\t-flag='x'\n//\t\t-flag x  // non-boolean flags only\n//\tOne or two minus signs may be used; they are equivalent.\n//\tThe last form is not permitted for boolean flags because the\n//\tmeaning of the command\n//\t\tcmd -x *\n//\twill change if there is a file called 0, false, etc.  You must\n//\tuse the -flag=false form to turn off a boolean flag.\n//\n//\tFlag parsing stops just before the first non-flag argument\n//\t(\"-\" is a non-flag argument) or after the terminator \"--\".\n//\n//\tInteger flags accept 1234, 0664, 0x1234 and may be negative.\n//\tBoolean flags may be 1, 0, t, f, true, false, TRUE, FALSE, True, False.\n//\tDuration flags accept any input valid for time.ParseDuration.\n//\n//\tThe default set of command-line flags is controlled by\n//\ttop-level functions.  The FlagSet type allows one to define\n//\tindependent sets of flags, such as to implement subcommands\n//\tin a command-line interface. The methods of FlagSet are\n//\tanalogous to the top-level functions for the command-line\n//\tflag set.\n\npackage mflag\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/tabwriter\"\n\t\"time\"\n\n\t\"github.com/docker/docker/pkg/homedir\"\n)\n\n// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined.\nvar ErrHelp = errors.New(\"flag: help requested\")\n\n// ErrRetry is the error returned if you need to try letter by letter\nvar ErrRetry = errors.New(\"flag: retry\")\n\n// -- bool Value\ntype boolValue bool\n\nfunc newBoolValue(val bool, p *bool) *boolValue {\n\t*p = val\n\treturn (*boolValue)(p)\n}\n\nfunc (b *boolValue) Set(s string) error {\n\tv, err := strconv.ParseBool(s)\n\t*b = boolValue(v)\n\treturn err\n}\n\nfunc (b *boolValue) Get() interface{} { return bool(*b) }\n\nfunc (b *boolValue) String() string { return fmt.Sprintf(\"%v\", *b) }\n\nfunc (b *boolValue) IsBoolFlag() bool { return true }\n\n// optional interface to indicate boolean flags that can be\n// supplied without \"=value\" text\ntype boolFlag interface {\n\tValue\n\tIsBoolFlag() bool\n}\n\n// -- int Value\ntype intValue int\n\nfunc newIntValue(val int, p *int) *intValue {\n\t*p = val\n\treturn (*intValue)(p)\n}\n\nfunc (i *intValue) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 64)\n\t*i = intValue(v)\n\treturn err\n}\n\nfunc (i *intValue) Get() interface{} { return int(*i) }\n\nfunc (i *intValue) String() string { return fmt.Sprintf(\"%v\", *i) }\n\n// -- int64 Value\ntype int64Value int64\n\nfunc newInt64Value(val int64, p *int64) *int64Value {\n\t*p = val\n\treturn (*int64Value)(p)\n}\n\nfunc (i *int64Value) Set(s string) error {\n\tv, err := strconv.ParseInt(s, 0, 64)\n\t*i = int64Value(v)\n\treturn err\n}\n\nfunc (i *int64Value) Get() interface{} { return int64(*i) }\n\nfunc (i *int64Value) String() string { return fmt.Sprintf(\"%v\", *i) }\n\n// -- uint Value\ntype uintValue uint\n\nfunc newUintValue(val uint, p *uint) *uintValue {\n\t*p = val\n\treturn (*uintValue)(p)\n}\n\nfunc (i *uintValue) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 64)\n\t*i = uintValue(v)\n\treturn err\n}\n\nfunc (i *uintValue) Get() interface{} { return uint(*i) }\n\nfunc (i *uintValue) String() string { return fmt.Sprintf(\"%v\", *i) }\n\n// -- uint64 Value\ntype uint64Value uint64\n\nfunc newUint64Value(val uint64, p *uint64) *uint64Value {\n\t*p = val\n\treturn (*uint64Value)(p)\n}\n\nfunc (i *uint64Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 64)\n\t*i = uint64Value(v)\n\treturn err\n}\n\nfunc (i *uint64Value) Get() interface{} { return uint64(*i) }\n\nfunc (i *uint64Value) String() string { return fmt.Sprintf(\"%v\", *i) }\n\n// -- uint16 Value\ntype uint16Value uint16\n\nfunc newUint16Value(val uint16, p *uint16) *uint16Value {\n\t*p = val\n\treturn (*uint16Value)(p)\n}\n\nfunc (i *uint16Value) Set(s string) error {\n\tv, err := strconv.ParseUint(s, 0, 16)\n\t*i = uint16Value(v)\n\treturn err\n}\n\nfunc (i *uint16Value) Get() interface{} { return uint16(*i) }\n\nfunc (i *uint16Value) String() string { return fmt.Sprintf(\"%v\", *i) }\n\n// -- string Value\ntype stringValue string\n\nfunc newStringValue(val string, p *string) *stringValue {\n\t*p = val\n\treturn (*stringValue)(p)\n}\n\nfunc (s *stringValue) Set(val string) error {\n\t*s = stringValue(val)\n\treturn nil\n}\n\nfunc (s *stringValue) Get() interface{} { return string(*s) }\n\nfunc (s *stringValue) String() string { return fmt.Sprintf(\"%s\", *s) }\n\n// -- float64 Value\ntype float64Value float64\n\nfunc newFloat64Value(val float64, p *float64) *float64Value {\n\t*p = val\n\treturn (*float64Value)(p)\n}\n\nfunc (f *float64Value) Set(s string) error {\n\tv, err := strconv.ParseFloat(s, 64)\n\t*f = float64Value(v)\n\treturn err\n}\n\nfunc (f *float64Value) Get() interface{} { return float64(*f) }\n\nfunc (f *float64Value) String() string { return fmt.Sprintf(\"%v\", *f) }\n\n// -- time.Duration Value\ntype durationValue time.Duration\n\nfunc newDurationValue(val time.Duration, p *time.Duration) *durationValue {\n\t*p = val\n\treturn (*durationValue)(p)\n}\n\nfunc (d *durationValue) Set(s string) error {\n\tv, err := time.ParseDuration(s)\n\t*d = durationValue(v)\n\treturn err\n}\n\nfunc (d *durationValue) Get() interface{} { return time.Duration(*d) }\n\nfunc (d *durationValue) String() string { return (*time.Duration)(d).String() }\n\n// Value is the interface to the dynamic value stored in a flag.\n// (The default value is represented as a string.)\n//\n// If a Value has an IsBoolFlag() bool method returning true,\n// the command-line parser makes -name equivalent to -name=true\n// rather than using the next command-line argument.\ntype Value interface {\n\tString() string\n\tSet(string) error\n}\n\n// Getter is an interface that allows the contents of a Value to be retrieved.\n// It wraps the Value interface, rather than being part of it, because it\n// appeared after Go 1 and its compatibility rules. All Value types provided\n// by this package satisfy the Getter interface.\ntype Getter interface {\n\tValue\n\tGet() interface{}\n}\n\n// ErrorHandling defines how to handle flag parsing errors.\ntype ErrorHandling int\n\n// ErrorHandling strategies available when a flag parsing error occurs\nconst (\n\tContinueOnError ErrorHandling = iota\n\tExitOnError\n\tPanicOnError\n)\n\n// A FlagSet represents a set of defined flags.  The zero value of a FlagSet\n// has no name and has ContinueOnError error handling.\ntype FlagSet struct {\n\t// Usage is the function called when an error occurs while parsing flags.\n\t// The field is a function (not a method) that may be changed to point to\n\t// a custom error handler.\n\tUsage      func()\n\tShortUsage func()\n\n\tname             string\n\tparsed           bool\n\tactual           map[string]*Flag\n\tformal           map[string]*Flag\n\targs             []string // arguments after flags\n\terrorHandling    ErrorHandling\n\toutput           io.Writer // nil means stderr; use Out() accessor\n\tnArgRequirements []nArgRequirement\n}\n\n// A Flag represents the state of a flag.\ntype Flag struct {\n\tNames    []string // name as it appears on command line\n\tUsage    string   // help message\n\tValue    Value    // value as set\n\tDefValue string   // default value (as text); for usage message\n}\n\ntype flagSlice []string\n\nfunc (p flagSlice) Len() int { return len(p) }\nfunc (p flagSlice) Less(i, j int) bool {\n\tpi, pj := strings.TrimPrefix(p[i], \"-\"), strings.TrimPrefix(p[j], \"-\")\n\tlpi, lpj := strings.ToLower(pi), strings.ToLower(pj)\n\tif lpi != lpj {\n\t\treturn lpi < lpj\n\t}\n\treturn pi < pj\n}\nfunc (p flagSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }\n\n// sortFlags returns the flags as a slice in lexicographical sorted order.\nfunc sortFlags(flags map[string]*Flag) []*Flag {\n\tvar list flagSlice\n\n\t// The sorted list is based on the first name, when flag map might use the other names.\n\tnameMap := make(map[string]string)\n\n\tfor n, f := range flags {\n\t\tfName := strings.TrimPrefix(f.Names[0], \"#\")\n\t\tnameMap[fName] = n\n\t\tif len(f.Names) == 1 {\n\t\t\tlist = append(list, fName)\n\t\t\tcontinue\n\t\t}\n\n\t\tfound := false\n\t\tfor _, name := range list {\n\t\t\tif name == fName {\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\tlist = append(list, fName)\n\t\t}\n\t}\n\tsort.Sort(list)\n\tresult := make([]*Flag, len(list))\n\tfor i, name := range list {\n\t\tresult[i] = flags[nameMap[name]]\n\t}\n\treturn result\n}\n\n// Name returns the name of the FlagSet.\nfunc (fs *FlagSet) Name() string {\n\treturn fs.name\n}\n\n// Out returns the destination for usage and error messages.\nfunc (fs *FlagSet) Out() io.Writer {\n\tif fs.output == nil {\n\t\treturn os.Stderr\n\t}\n\treturn fs.output\n}\n\n// SetOutput sets the destination for usage and error messages.\n// If output is nil, os.Stderr is used.\nfunc (fs *FlagSet) SetOutput(output io.Writer) {\n\tfs.output = output\n}\n\n// VisitAll visits the flags in lexicographical order, calling fn for each.\n// It visits all flags, even those not set.\nfunc (fs *FlagSet) VisitAll(fn func(*Flag)) {\n\tfor _, flag := range sortFlags(fs.formal) {\n\t\tfn(flag)\n\t}\n}\n\n// VisitAll visits the command-line flags in lexicographical order, calling\n// fn for each.  It visits all flags, even those not set.\nfunc VisitAll(fn func(*Flag)) {\n\tCommandLine.VisitAll(fn)\n}\n\n// Visit visits the flags in lexicographical order, calling fn for each.\n// It visits only those flags that have been set.\nfunc (fs *FlagSet) Visit(fn func(*Flag)) {\n\tfor _, flag := range sortFlags(fs.actual) {\n\t\tfn(flag)\n\t}\n}\n\n// Visit visits the command-line flags in lexicographical order, calling fn\n// for each.  It visits only those flags that have been set.\nfunc Visit(fn func(*Flag)) {\n\tCommandLine.Visit(fn)\n}\n\n// Lookup returns the Flag structure of the named flag, returning nil if none exists.\nfunc (fs *FlagSet) Lookup(name string) *Flag {\n\treturn fs.formal[name]\n}\n\n// IsSet indicates whether the specified flag is set in the given FlagSet\nfunc (fs *FlagSet) IsSet(name string) bool {\n\treturn fs.actual[name] != nil\n}\n\n// Lookup returns the Flag structure of the named command-line flag,\n// returning nil if none exists.\nfunc Lookup(name string) *Flag {\n\treturn CommandLine.formal[name]\n}\n\n// IsSet indicates whether the specified flag was specified at all on the cmd line.\nfunc IsSet(name string) bool {\n\treturn CommandLine.IsSet(name)\n}\n\ntype nArgRequirementType int\n\n// Indicator used to pass to BadArgs function\nconst (\n\tExact nArgRequirementType = iota\n\tMax\n\tMin\n)\n\ntype nArgRequirement struct {\n\tType nArgRequirementType\n\tN    int\n}\n\n// Require adds a requirement about the number of arguments for the FlagSet.\n// The first parameter can be Exact, Max, or Min to respectively specify the exact,\n// the maximum, or the minimal number of arguments required.\n// The actual check is done in FlagSet.CheckArgs().\nfunc (fs *FlagSet) Require(nArgRequirementType nArgRequirementType, nArg int) {\n\tfs.nArgRequirements = append(fs.nArgRequirements, nArgRequirement{nArgRequirementType, nArg})\n}\n\n// CheckArgs uses the requirements set by FlagSet.Require() to validate\n// the number of arguments. If the requirements are not met,\n// an error message string is returned.\nfunc (fs *FlagSet) CheckArgs() (message string) {\n\tfor _, req := range fs.nArgRequirements {\n\t\tvar arguments string\n\t\tif req.N == 1 {\n\t\t\targuments = \"1 argument\"\n\t\t} else {\n\t\t\targuments = fmt.Sprintf(\"%d arguments\", req.N)\n\t\t}\n\n\t\tstr := func(kind string) string {\n\t\t\treturn fmt.Sprintf(\"%q requires %s%s\", fs.name, kind, arguments)\n\t\t}\n\n\t\tswitch req.Type {\n\t\tcase Exact:\n\t\t\tif fs.NArg() != req.N {\n\t\t\t\treturn str(\"\")\n\t\t\t}\n\t\tcase Max:\n\t\t\tif fs.NArg() > req.N {\n\t\t\t\treturn str(\"a maximum of \")\n\t\t\t}\n\t\tcase Min:\n\t\t\tif fs.NArg() < req.N {\n\t\t\t\treturn str(\"a minimum of \")\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// Set sets the value of the named flag.\nfunc (fs *FlagSet) Set(name, value string) error {\n\tflag, ok := fs.formal[name]\n\tif !ok {\n\t\treturn fmt.Errorf(\"no such flag -%v\", name)\n\t}\n\tif err := flag.Value.Set(value); err != nil {\n\t\treturn err\n\t}\n\tif fs.actual == nil {\n\t\tfs.actual = make(map[string]*Flag)\n\t}\n\tfs.actual[name] = flag\n\treturn nil\n}\n\n// Set sets the value of the named command-line flag.\nfunc Set(name, value string) error {\n\treturn CommandLine.Set(name, value)\n}\n\n// isZeroValue guesses whether the string represents the zero\n// value for a flag. It is not accurate but in practice works OK.\nfunc isZeroValue(value string) bool {\n\tswitch value {\n\tcase \"false\":\n\t\treturn true\n\tcase \"\":\n\t\treturn true\n\tcase \"0\":\n\t\treturn true\n\t}\n\treturn false\n}\n\n// PrintDefaults prints, to standard error unless configured\n// otherwise, the default values of all defined flags in the set.\nfunc (fs *FlagSet) PrintDefaults() {\n\twriter := tabwriter.NewWriter(fs.Out(), 20, 1, 3, ' ', 0)\n\thome := homedir.Get()\n\n\t// Don't substitute when HOME is /\n\tif runtime.GOOS != \"windows\" && home == \"/\" {\n\t\thome = \"\"\n\t}\n\n\t// Add a blank line between cmd description and list of options\n\tif fs.FlagCount() > 0 {\n\t\tfmt.Fprintln(writer, \"\")\n\t}\n\n\tfs.VisitAll(func(flag *Flag) {\n\t\tnames := []string{}\n\t\tfor _, name := range flag.Names {\n\t\t\tif name[0] != '#' {\n\t\t\t\tnames = append(names, name)\n\t\t\t}\n\t\t}\n\t\tif len(names) > 0 && len(flag.Usage) > 0 {\n\t\t\tval := flag.DefValue\n\n\t\t\tif home != \"\" && strings.HasPrefix(val, home) {\n\t\t\t\tval = homedir.GetShortcutString() + val[len(home):]\n\t\t\t}\n\n\t\t\tif isZeroValue(val) {\n\t\t\t\tformat := \"  -%s\"\n\t\t\t\tfmt.Fprintf(writer, format, strings.Join(names, \", -\"))\n\t\t\t} else {\n\t\t\t\tformat := \"  -%s=%s\"\n\t\t\t\tfmt.Fprintf(writer, format, strings.Join(names, \", -\"), val)\n\t\t\t}\n\t\t\tfor _, line := range strings.Split(flag.Usage, \"\\n\") {\n\t\t\t\tfmt.Fprintln(writer, \"\\t\", line)\n\t\t\t}\n\t\t}\n\t})\n\twriter.Flush()\n}\n\n// PrintDefaults prints to standard error the default values of all defined command-line flags.\nfunc PrintDefaults() {\n\tCommandLine.PrintDefaults()\n}\n\n// defaultUsage is the default function to print a usage message.\nfunc defaultUsage(fs *FlagSet) {\n\tif fs.name == \"\" {\n\t\tfmt.Fprintf(fs.Out(), \"Usage:\\n\")\n\t} else {\n\t\tfmt.Fprintf(fs.Out(), \"Usage of %s:\\n\", fs.name)\n\t}\n\tfs.PrintDefaults()\n}\n\n// NOTE: Usage is not just defaultUsage(CommandLine)\n// because it serves (via godoc flag Usage) as the example\n// for how to write your own usage function.\n\n// Usage prints to standard error a usage message documenting all defined command-line flags.\n// The function is a variable that may be changed to point to a custom function.\nvar Usage = func() {\n\tfmt.Fprintf(CommandLine.Out(), \"Usage of %s:\\n\", os.Args[0])\n\tPrintDefaults()\n}\n\n// ShortUsage prints to standard error a usage message documenting the standard command layout\n// The function is a variable that may be changed to point to a custom function.\nvar ShortUsage = func() {\n\tfmt.Fprintf(CommandLine.output, \"Usage of %s:\\n\", os.Args[0])\n}\n\n// FlagCount returns the number of flags that have been defined.\nfunc (fs *FlagSet) FlagCount() int { return len(sortFlags(fs.formal)) }\n\n// FlagCountUndeprecated returns the number of undeprecated flags that have been defined.\nfunc (fs *FlagSet) FlagCountUndeprecated() int {\n\tcount := 0\n\tfor _, flag := range sortFlags(fs.formal) {\n\t\tfor _, name := range flag.Names {\n\t\t\tif name[0] != '#' {\n\t\t\t\tcount++\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn count\n}\n\n// NFlag returns the number of flags that have been set.\nfunc (fs *FlagSet) NFlag() int { return len(fs.actual) }\n\n// NFlag returns the number of command-line flags that have been set.\nfunc NFlag() int { return len(CommandLine.actual) }\n\n// Arg returns the i'th argument.  Arg(0) is the first remaining argument\n// after flags have been processed.\nfunc (fs *FlagSet) Arg(i int) string {\n\tif i < 0 || i >= len(fs.args) {\n\t\treturn \"\"\n\t}\n\treturn fs.args[i]\n}\n\n// Arg returns the i'th command-line argument.  Arg(0) is the first remaining argument\n// after flags have been processed.\nfunc Arg(i int) string {\n\treturn CommandLine.Arg(i)\n}\n\n// NArg is the number of arguments remaining after flags have been processed.\nfunc (fs *FlagSet) NArg() int { return len(fs.args) }\n\n// NArg is the number of arguments remaining after flags have been processed.\nfunc NArg() int { return len(CommandLine.args) }\n\n// Args returns the non-flag arguments.\nfunc (fs *FlagSet) Args() []string { return fs.args }\n\n// Args returns the non-flag command-line arguments.\nfunc Args() []string { return CommandLine.args }\n\n// BoolVar defines a bool flag with specified name, default value, and usage string.\n// The argument p points to a bool variable in which to store the value of the flag.\nfunc (fs *FlagSet) BoolVar(p *bool, names []string, value bool, usage string) {\n\tfs.Var(newBoolValue(value, p), names, usage)\n}\n\n// BoolVar defines a bool flag with specified name, default value, and usage string.\n// The argument p points to a bool variable in which to store the value of the flag.\nfunc BoolVar(p *bool, names []string, value bool, usage string) {\n\tCommandLine.Var(newBoolValue(value, p), names, usage)\n}\n\n// Bool defines a bool flag with specified name, default value, and usage string.\n// The return value is the address of a bool variable that stores the value of the flag.\nfunc (fs *FlagSet) Bool(names []string, value bool, usage string) *bool {\n\tp := new(bool)\n\tfs.BoolVar(p, names, value, usage)\n\treturn p\n}\n\n// Bool defines a bool flag with specified name, default value, and usage string.\n// The return value is the address of a bool variable that stores the value of the flag.\nfunc Bool(names []string, value bool, usage string) *bool {\n\treturn CommandLine.Bool(names, value, usage)\n}\n\n// IntVar defines an int flag with specified name, default value, and usage string.\n// The argument p points to an int variable in which to store the value of the flag.\nfunc (fs *FlagSet) IntVar(p *int, names []string, value int, usage string) {\n\tfs.Var(newIntValue(value, p), names, usage)\n}\n\n// IntVar defines an int flag with specified name, default value, and usage string.\n// The argument p points to an int variable in which to store the value of the flag.\nfunc IntVar(p *int, names []string, value int, usage string) {\n\tCommandLine.Var(newIntValue(value, p), names, usage)\n}\n\n// Int defines an int flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\nfunc (fs *FlagSet) Int(names []string, value int, usage string) *int {\n\tp := new(int)\n\tfs.IntVar(p, names, value, usage)\n\treturn p\n}\n\n// Int defines an int flag with specified name, default value, and usage string.\n// The return value is the address of an int variable that stores the value of the flag.\nfunc Int(names []string, value int, usage string) *int {\n\treturn CommandLine.Int(names, value, usage)\n}\n\n// Int64Var defines an int64 flag with specified name, default value, and usage string.\n// The argument p points to an int64 variable in which to store the value of the flag.\nfunc (fs *FlagSet) Int64Var(p *int64, names []string, value int64, usage string) {\n\tfs.Var(newInt64Value(value, p), names, usage)\n}\n\n// Int64Var defines an int64 flag with specified name, default value, and usage string.\n// The argument p points to an int64 variable in which to store the value of the flag.\nfunc Int64Var(p *int64, names []string, value int64, usage string) {\n\tCommandLine.Var(newInt64Value(value, p), names, usage)\n}\n\n// Int64 defines an int64 flag with specified name, default value, and usage string.\n// The return value is the address of an int64 variable that stores the value of the flag.\nfunc (fs *FlagSet) Int64(names []string, value int64, usage string) *int64 {\n\tp := new(int64)\n\tfs.Int64Var(p, names, value, usage)\n\treturn p\n}\n\n// Int64 defines an int64 flag with specified name, default value, and usage string.\n// The return value is the address of an int64 variable that stores the value of the flag.\nfunc Int64(names []string, value int64, usage string) *int64 {\n\treturn CommandLine.Int64(names, value, usage)\n}\n\n// UintVar defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint variable in which to store the value of the flag.\nfunc (fs *FlagSet) UintVar(p *uint, names []string, value uint, usage string) {\n\tfs.Var(newUintValue(value, p), names, usage)\n}\n\n// UintVar defines a uint flag with specified name, default value, and usage string.\n// The argument p points to a uint  variable in which to store the value of the flag.\nfunc UintVar(p *uint, names []string, value uint, usage string) {\n\tCommandLine.Var(newUintValue(value, p), names, usage)\n}\n\n// Uint defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc (fs *FlagSet) Uint(names []string, value uint, usage string) *uint {\n\tp := new(uint)\n\tfs.UintVar(p, names, value, usage)\n\treturn p\n}\n\n// Uint defines a uint flag with specified name, default value, and usage string.\n// The return value is the address of a uint  variable that stores the value of the flag.\nfunc Uint(names []string, value uint, usage string) *uint {\n\treturn CommandLine.Uint(names, value, usage)\n}\n\n// Uint64Var defines a uint64 flag with specified name, default value, and usage string.\n// The argument p points to a uint64 variable in which to store the value of the flag.\nfunc (fs *FlagSet) Uint64Var(p *uint64, names []string, value uint64, usage string) {\n\tfs.Var(newUint64Value(value, p), names, usage)\n}\n\n// Uint64Var defines a uint64 flag with specified name, default value, and usage string.\n// The argument p points to a uint64 variable in which to store the value of the flag.\nfunc Uint64Var(p *uint64, names []string, value uint64, usage string) {\n\tCommandLine.Var(newUint64Value(value, p), names, usage)\n}\n\n// Uint64 defines a uint64 flag with specified name, default value, and usage string.\n// The return value is the address of a uint64 variable that stores the value of the flag.\nfunc (fs *FlagSet) Uint64(names []string, value uint64, usage string) *uint64 {\n\tp := new(uint64)\n\tfs.Uint64Var(p, names, value, usage)\n\treturn p\n}\n\n// Uint64 defines a uint64 flag with specified name, default value, and usage string.\n// The return value is the address of a uint64 variable that stores the value of the flag.\nfunc Uint64(names []string, value uint64, usage string) *uint64 {\n\treturn CommandLine.Uint64(names, value, usage)\n}\n\n// Uint16Var defines a uint16 flag with specified name, default value, and usage string.\n// The argument p points to a uint16 variable in which to store the value of the flag.\nfunc (fs *FlagSet) Uint16Var(p *uint16, names []string, value uint16, usage string) {\n\tfs.Var(newUint16Value(value, p), names, usage)\n}\n\n// Uint16Var defines a uint16 flag with specified name, default value, and usage string.\n// The argument p points to a uint16 variable in which to store the value of the flag.\nfunc Uint16Var(p *uint16, names []string, value uint16, usage string) {\n\tCommandLine.Var(newUint16Value(value, p), names, usage)\n}\n\n// Uint16 defines a uint16 flag with specified name, default value, and usage string.\n// The return value is the address of a uint16 variable that stores the value of the flag.\nfunc (fs *FlagSet) Uint16(names []string, value uint16, usage string) *uint16 {\n\tp := new(uint16)\n\tfs.Uint16Var(p, names, value, usage)\n\treturn p\n}\n\n// Uint16 defines a uint16 flag with specified name, default value, and usage string.\n// The return value is the address of a uint16 variable that stores the value of the flag.\nfunc Uint16(names []string, value uint16, usage string) *uint16 {\n\treturn CommandLine.Uint16(names, value, usage)\n}\n\n// StringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a string variable in which to store the value of the flag.\nfunc (fs *FlagSet) StringVar(p *string, names []string, value string, usage string) {\n\tfs.Var(newStringValue(value, p), names, usage)\n}\n\n// StringVar defines a string flag with specified name, default value, and usage string.\n// The argument p points to a string variable in which to store the value of the flag.\nfunc StringVar(p *string, names []string, value string, usage string) {\n\tCommandLine.Var(newStringValue(value, p), names, usage)\n}\n\n// String defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a string variable that stores the value of the flag.\nfunc (fs *FlagSet) String(names []string, value string, usage string) *string {\n\tp := new(string)\n\tfs.StringVar(p, names, value, usage)\n\treturn p\n}\n\n// String defines a string flag with specified name, default value, and usage string.\n// The return value is the address of a string variable that stores the value of the flag.\nfunc String(names []string, value string, usage string) *string {\n\treturn CommandLine.String(names, value, usage)\n}\n\n// Float64Var defines a float64 flag with specified name, default value, and usage string.\n// The argument p points to a float64 variable in which to store the value of the flag.\nfunc (fs *FlagSet) Float64Var(p *float64, names []string, value float64, usage string) {\n\tfs.Var(newFloat64Value(value, p), names, usage)\n}\n\n// Float64Var defines a float64 flag with specified name, default value, and usage string.\n// The argument p points to a float64 variable in which to store the value of the flag.\nfunc Float64Var(p *float64, names []string, value float64, usage string) {\n\tCommandLine.Var(newFloat64Value(value, p), names, usage)\n}\n\n// Float64 defines a float64 flag with specified name, default value, and usage string.\n// The return value is the address of a float64 variable that stores the value of the flag.\nfunc (fs *FlagSet) Float64(names []string, value float64, usage string) *float64 {\n\tp := new(float64)\n\tfs.Float64Var(p, names, value, usage)\n\treturn p\n}\n\n// Float64 defines a float64 flag with specified name, default value, and usage string.\n// The return value is the address of a float64 variable that stores the value of the flag.\nfunc Float64(names []string, value float64, usage string) *float64 {\n\treturn CommandLine.Float64(names, value, usage)\n}\n\n// DurationVar defines a time.Duration flag with specified name, default value, and usage string.\n// The argument p points to a time.Duration variable in which to store the value of the flag.\nfunc (fs *FlagSet) DurationVar(p *time.Duration, names []string, value time.Duration, usage string) {\n\tfs.Var(newDurationValue(value, p), names, usage)\n}\n\n// DurationVar defines a time.Duration flag with specified name, default value, and usage string.\n// The argument p points to a time.Duration variable in which to store the value of the flag.\nfunc DurationVar(p *time.Duration, names []string, value time.Duration, usage string) {\n\tCommandLine.Var(newDurationValue(value, p), names, usage)\n}\n\n// Duration defines a time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a time.Duration variable that stores the value of the flag.\nfunc (fs *FlagSet) Duration(names []string, value time.Duration, usage string) *time.Duration {\n\tp := new(time.Duration)\n\tfs.DurationVar(p, names, value, usage)\n\treturn p\n}\n\n// Duration defines a time.Duration flag with specified name, default value, and usage string.\n// The return value is the address of a time.Duration variable that stores the value of the flag.\nfunc Duration(names []string, value time.Duration, usage string) *time.Duration {\n\treturn CommandLine.Duration(names, value, usage)\n}\n\n// Var defines a flag with the specified name and usage string. The type and\n// value of the flag are represented by the first argument, of type Value, which\n// typically holds a user-defined implementation of Value. For instance, the\n// caller could create a flag that turns a comma-separated string into a slice\n// of strings by giving the slice the methods of Value; in particular, Set would\n// decompose the comma-separated string into the slice.\nfunc (fs *FlagSet) Var(value Value, names []string, usage string) {\n\t// Remember the default value as a string; it won't change.\n\tflag := &Flag{names, usage, value, value.String()}\n\tfor _, name := range names {\n\t\tname = strings.TrimPrefix(name, \"#\")\n\t\t_, alreadythere := fs.formal[name]\n\t\tif alreadythere {\n\t\t\tvar msg string\n\t\t\tif fs.name == \"\" {\n\t\t\t\tmsg = fmt.Sprintf(\"flag redefined: %s\", name)\n\t\t\t} else {\n\t\t\t\tmsg = fmt.Sprintf(\"%s flag redefined: %s\", fs.name, name)\n\t\t\t}\n\t\t\tfmt.Fprintln(fs.Out(), msg)\n\t\t\tpanic(msg) // Happens only if flags are declared with identical names\n\t\t}\n\t\tif fs.formal == nil {\n\t\t\tfs.formal = make(map[string]*Flag)\n\t\t}\n\t\tfs.formal[name] = flag\n\t}\n}\n\n// Var defines a flag with the specified name and usage string. The type and\n// value of the flag are represented by the first argument, of type Value, which\n// typically holds a user-defined implementation of Value. For instance, the\n// caller could create a flag that turns a comma-separated string into a slice\n// of strings by giving the slice the methods of Value; in particular, Set would\n// decompose the comma-separated string into the slice.\nfunc Var(value Value, names []string, usage string) {\n\tCommandLine.Var(value, names, usage)\n}\n\n// failf prints to standard error a formatted error and usage message and\n// returns the error.\nfunc (fs *FlagSet) failf(format string, a ...interface{}) error {\n\terr := fmt.Errorf(format, a...)\n\tfmt.Fprintln(fs.Out(), err)\n\tif os.Args[0] == fs.name {\n\t\tfmt.Fprintf(fs.Out(), \"See '%s --help'.\\n\", os.Args[0])\n\t} else {\n\t\tfmt.Fprintf(fs.Out(), \"See '%s %s --help'.\\n\", os.Args[0], fs.name)\n\t}\n\treturn err\n}\n\n// usage calls the Usage method for the flag set, or the usage function if\n// the flag set is CommandLine.\nfunc (fs *FlagSet) usage() {\n\tif fs == CommandLine {\n\t\tUsage()\n\t} else if fs.Usage == nil {\n\t\tdefaultUsage(fs)\n\t} else {\n\t\tfs.Usage()\n\t}\n}\n\nfunc trimQuotes(str string) string {\n\tif len(str) == 0 {\n\t\treturn str\n\t}\n\ttype quote struct {\n\t\tstart, end byte\n\t}\n\n\t// All valid quote types.\n\tquotes := []quote{\n\t\t// Double quotes\n\t\t{\n\t\t\tstart: '\"',\n\t\t\tend:   '\"',\n\t\t},\n\n\t\t// Single quotes\n\t\t{\n\t\t\tstart: '\\'',\n\t\t\tend:   '\\'',\n\t\t},\n\t}\n\n\tfor _, quote := range quotes {\n\t\t// Only strip if outermost match.\n\t\tif str[0] == quote.start && str[len(str)-1] == quote.end {\n\t\t\tstr = str[1 : len(str)-1]\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn str\n}\n\n// parseOne parses one flag. It reports whether a flag was seen.\nfunc (fs *FlagSet) parseOne() (bool, string, error) {\n\tif len(fs.args) == 0 {\n\t\treturn false, \"\", nil\n\t}\n\ts := fs.args[0]\n\tif len(s) == 0 || s[0] != '-' || len(s) == 1 {\n\t\treturn false, \"\", nil\n\t}\n\tif s[1] == '-' && len(s) == 2 { // \"--\" terminates the flags\n\t\tfs.args = fs.args[1:]\n\t\treturn false, \"\", nil\n\t}\n\tname := s[1:]\n\tif len(name) == 0 || name[0] == '=' {\n\t\treturn false, \"\", fs.failf(\"bad flag syntax: %s\", s)\n\t}\n\n\t// it's a flag. does it have an argument?\n\tfs.args = fs.args[1:]\n\thasValue := false\n\tvalue := \"\"\n\tif i := strings.Index(name, \"=\"); i != -1 {\n\t\tvalue = trimQuotes(name[i+1:])\n\t\thasValue = true\n\t\tname = name[:i]\n\t}\n\n\tm := fs.formal\n\tflag, alreadythere := m[name] // BUG\n\tif !alreadythere {\n\t\tif name == \"-help\" || name == \"help\" || name == \"h\" { // special case for nice help message.\n\t\t\tfs.usage()\n\t\t\treturn false, \"\", ErrHelp\n\t\t}\n\t\tif len(name) > 0 && name[0] == '-' {\n\t\t\treturn false, \"\", fs.failf(\"flag provided but not defined: -%s\", name)\n\t\t}\n\t\treturn false, name, ErrRetry\n\t}\n\tif fv, ok := flag.Value.(boolFlag); ok && fv.IsBoolFlag() { // special case: doesn't need an arg\n\t\tif hasValue {\n\t\t\tif err := fv.Set(value); err != nil {\n\t\t\t\treturn false, \"\", fs.failf(\"invalid boolean value %q for  -%s: %v\", value, name, err)\n\t\t\t}\n\t\t} else {\n\t\t\tfv.Set(\"true\")\n\t\t}\n\t} else {\n\t\t// It must have a value, which might be the next argument.\n\t\tif !hasValue && len(fs.args) > 0 {\n\t\t\t// value is the next arg\n\t\t\thasValue = true\n\t\t\tvalue, fs.args = fs.args[0], fs.args[1:]\n\t\t}\n\t\tif !hasValue {\n\t\t\treturn false, \"\", fs.failf(\"flag needs an argument: -%s\", name)\n\t\t}\n\t\tif err := flag.Value.Set(value); err != nil {\n\t\t\treturn false, \"\", fs.failf(\"invalid value %q for flag -%s: %v\", value, name, err)\n\t\t}\n\t}\n\tif fs.actual == nil {\n\t\tfs.actual = make(map[string]*Flag)\n\t}\n\tfs.actual[name] = flag\n\tfor i, n := range flag.Names {\n\t\tif n == fmt.Sprintf(\"#%s\", name) {\n\t\t\treplacement := \"\"\n\t\t\tfor j := i; j < len(flag.Names); j++ {\n\t\t\t\tif flag.Names[j][0] != '#' {\n\t\t\t\t\treplacement = flag.Names[j]\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif replacement != \"\" {\n\t\t\t\tfmt.Fprintf(fs.Out(), \"Warning: '-%s' is deprecated, it will be replaced by '-%s' soon. See usage.\\n\", name, replacement)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(fs.Out(), \"Warning: '-%s' is deprecated, it will be removed soon. See usage.\\n\", name)\n\t\t\t}\n\t\t}\n\t}\n\treturn true, \"\", nil\n}\n\n// Parse parses flag definitions from the argument list, which should not\n// include the command name.  Must be called after all flags in the FlagSet\n// are defined and before flags are accessed by the program.\n// The return value will be ErrHelp if -help was set but not defined.\nfunc (fs *FlagSet) Parse(arguments []string) error {\n\tfs.parsed = true\n\tfs.args = arguments\n\tfor {\n\t\tseen, name, err := fs.parseOne()\n\t\tif seen {\n\t\t\tcontinue\n\t\t}\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif err == ErrRetry {\n\t\t\tif len(name) > 1 {\n\t\t\t\terr = nil\n\t\t\t\tfor _, letter := range strings.Split(name, \"\") {\n\t\t\t\t\tfs.args = append([]string{\"-\" + letter}, fs.args...)\n\t\t\t\t\tseen2, _, err2 := fs.parseOne()\n\t\t\t\t\tif seen2 {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif err2 != nil {\n\t\t\t\t\t\terr = fs.failf(\"flag provided but not defined: -%s\", name)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr = fs.failf(\"flag provided but not defined: -%s\", name)\n\t\t\t}\n\t\t}\n\t\tswitch fs.errorHandling {\n\t\tcase ContinueOnError:\n\t\t\treturn err\n\t\tcase ExitOnError:\n\t\t\tos.Exit(125)\n\t\tcase PanicOnError:\n\t\t\tpanic(err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// ParseFlags is a utility function that adds a help flag if withHelp is true,\n// calls fs.Parse(args) and prints a relevant error message if there are\n// incorrect number of arguments. It returns error only if error handling is\n// set to ContinueOnError and parsing fails. If error handling is set to\n// ExitOnError, it's safe to ignore the return value.\nfunc (fs *FlagSet) ParseFlags(args []string, withHelp bool) error {\n\tvar help *bool\n\tif withHelp {\n\t\thelp = fs.Bool([]string{\"#help\", \"-help\"}, false, \"Print usage\")\n\t}\n\tif err := fs.Parse(args); err != nil {\n\t\treturn err\n\t}\n\tif help != nil && *help {\n\t\tfs.SetOutput(os.Stdout)\n\t\tfs.Usage()\n\t\tos.Exit(0)\n\t}\n\tif str := fs.CheckArgs(); str != \"\" {\n\t\tfs.SetOutput(os.Stderr)\n\t\tfs.ReportError(str, withHelp)\n\t\tfs.ShortUsage()\n\t\tos.Exit(1)\n\t}\n\treturn nil\n}\n\n// ReportError is a utility method that prints a user-friendly message\n// containing the error that occurred during parsing and a suggestion to get help\nfunc (fs *FlagSet) ReportError(str string, withHelp bool) {\n\tif withHelp {\n\t\tif os.Args[0] == fs.Name() {\n\t\t\tstr += \".\\nSee '\" + os.Args[0] + \" --help'\"\n\t\t} else {\n\t\t\tstr += \".\\nSee '\" + os.Args[0] + \" \" + fs.Name() + \" --help'\"\n\t\t}\n\t}\n\tfmt.Fprintf(fs.Out(), \"%s: %s.\\n\", os.Args[0], str)\n}\n\n// Parsed reports whether fs.Parse has been called.\nfunc (fs *FlagSet) Parsed() bool {\n\treturn fs.parsed\n}\n\n// Parse parses the command-line flags from os.Args[1:].  Must be called\n// after all flags are defined and before flags are accessed by the program.\nfunc Parse() {\n\t// Ignore errors; CommandLine is set for ExitOnError.\n\tCommandLine.Parse(os.Args[1:])\n}\n\n// Parsed returns true if the command-line flags have been parsed.\nfunc Parsed() bool {\n\treturn CommandLine.Parsed()\n}\n\n// CommandLine is the default set of command-line flags, parsed from os.Args.\n// The top-level functions such as BoolVar, Arg, and on are wrappers for the\n// methods of CommandLine.\nvar CommandLine = NewFlagSet(os.Args[0], ExitOnError)\n\n// NewFlagSet returns a new, empty flag set with the specified name and\n// error handling property.\nfunc NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {\n\tf := &FlagSet{\n\t\tname:          name,\n\t\terrorHandling: errorHandling,\n\t}\n\treturn f\n}\n\n// Init sets the name and error handling property for a flag set.\n// By default, the zero FlagSet uses an empty name and the\n// ContinueOnError error handling policy.\nfunc (fs *FlagSet) Init(name string, errorHandling ErrorHandling) {\n\tfs.name = name\n\tfs.errorHandling = errorHandling\n}\n\ntype mergeVal struct {\n\tValue\n\tkey  string\n\tfset *FlagSet\n}\n\nfunc (v mergeVal) Set(s string) error {\n\treturn v.fset.Set(v.key, s)\n}\n\nfunc (v mergeVal) IsBoolFlag() bool {\n\tif b, ok := v.Value.(boolFlag); ok {\n\t\treturn b.IsBoolFlag()\n\t}\n\treturn false\n}\n\n// Name returns the name of a mergeVal.\n// If the original value had a name, return the original name,\n// otherwise, return the key asinged to this mergeVal.\nfunc (v mergeVal) Name() string {\n\ttype namedValue interface {\n\t\tName() string\n\t}\n\tif nVal, ok := v.Value.(namedValue); ok {\n\t\treturn nVal.Name()\n\t}\n\treturn v.key\n}\n\n// Merge is an helper function that merges n FlagSets into a single dest FlagSet\n// In case of name collision between the flagsets it will apply\n// the destination FlagSet's errorHandling behavior.\nfunc Merge(dest *FlagSet, flagsets ...*FlagSet) error {\n\tfor _, fset := range flagsets {\n\t\tif fset.formal == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor k, f := range fset.formal {\n\t\t\tif _, ok := dest.formal[k]; ok {\n\t\t\t\tvar err error\n\t\t\t\tif fset.name == \"\" {\n\t\t\t\t\terr = fmt.Errorf(\"flag redefined: %s\", k)\n\t\t\t\t} else {\n\t\t\t\t\terr = fmt.Errorf(\"%s flag redefined: %s\", fset.name, k)\n\t\t\t\t}\n\t\t\t\tfmt.Fprintln(fset.Out(), err.Error())\n\t\t\t\t// Happens only if flags are declared with identical names\n\t\t\t\tswitch dest.errorHandling {\n\t\t\t\tcase ContinueOnError:\n\t\t\t\t\treturn err\n\t\t\t\tcase ExitOnError:\n\t\t\t\t\tos.Exit(2)\n\t\t\t\tcase PanicOnError:\n\t\t\t\t\tpanic(err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tnewF := *f\n\t\t\tnewF.Value = mergeVal{f.Value, k, fset}\n\t\t\tif dest.formal == nil {\n\t\t\t\tdest.formal = make(map[string]*Flag)\n\t\t\t}\n\t\t\tdest.formal[k] = &newF\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsEmpty reports if the FlagSet is actually empty.\nfunc (fs *FlagSet) IsEmpty() bool {\n\treturn len(fs.actual) == 0\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/flags.go",
    "content": "package mount\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// Parse fstab type mount options into mount() flags\n// and device specific data\nfunc parseOptions(options string) (int, string) {\n\tvar (\n\t\tflag int\n\t\tdata []string\n\t)\n\n\tflags := map[string]struct {\n\t\tclear bool\n\t\tflag  int\n\t}{\n\t\t\"defaults\":      {false, 0},\n\t\t\"ro\":            {false, RDONLY},\n\t\t\"rw\":            {true, RDONLY},\n\t\t\"suid\":          {true, NOSUID},\n\t\t\"nosuid\":        {false, NOSUID},\n\t\t\"dev\":           {true, NODEV},\n\t\t\"nodev\":         {false, NODEV},\n\t\t\"exec\":          {true, NOEXEC},\n\t\t\"noexec\":        {false, NOEXEC},\n\t\t\"sync\":          {false, SYNCHRONOUS},\n\t\t\"async\":         {true, SYNCHRONOUS},\n\t\t\"dirsync\":       {false, DIRSYNC},\n\t\t\"remount\":       {false, REMOUNT},\n\t\t\"mand\":          {false, MANDLOCK},\n\t\t\"nomand\":        {true, MANDLOCK},\n\t\t\"atime\":         {true, NOATIME},\n\t\t\"noatime\":       {false, NOATIME},\n\t\t\"diratime\":      {true, NODIRATIME},\n\t\t\"nodiratime\":    {false, NODIRATIME},\n\t\t\"bind\":          {false, BIND},\n\t\t\"rbind\":         {false, RBIND},\n\t\t\"unbindable\":    {false, UNBINDABLE},\n\t\t\"runbindable\":   {false, RUNBINDABLE},\n\t\t\"private\":       {false, PRIVATE},\n\t\t\"rprivate\":      {false, RPRIVATE},\n\t\t\"shared\":        {false, SHARED},\n\t\t\"rshared\":       {false, RSHARED},\n\t\t\"slave\":         {false, SLAVE},\n\t\t\"rslave\":        {false, RSLAVE},\n\t\t\"relatime\":      {false, RELATIME},\n\t\t\"norelatime\":    {true, RELATIME},\n\t\t\"strictatime\":   {false, STRICTATIME},\n\t\t\"nostrictatime\": {true, STRICTATIME},\n\t}\n\n\tfor _, o := range strings.Split(options, \",\") {\n\t\t// If the option does not exist in the flags table or the flag\n\t\t// is not supported on the platform,\n\t\t// then it is a data value for a specific fs type\n\t\tif f, exists := flags[o]; exists && f.flag != 0 {\n\t\t\tif f.clear {\n\t\t\t\tflag &= ^f.flag\n\t\t\t} else {\n\t\t\t\tflag |= f.flag\n\t\t\t}\n\t\t} else {\n\t\t\tdata = append(data, o)\n\t\t}\n\t}\n\treturn flag, strings.Join(data, \",\")\n}\n\n// ParseTmpfsOptions parse fstab type mount options into flags and data\nfunc ParseTmpfsOptions(options string) (int, string, error) {\n\tflags, data := parseOptions(options)\n\tvalidFlags := map[string]bool{\n\t\t\"\":          true,\n\t\t\"size\":      true,\n\t\t\"mode\":      true,\n\t\t\"uid\":       true,\n\t\t\"gid\":       true,\n\t\t\"nr_inodes\": true,\n\t\t\"nr_blocks\": true,\n\t\t\"mpol\":      true,\n\t}\n\tfor _, o := range strings.Split(data, \",\") {\n\t\topt := strings.SplitN(o, \"=\", 2)\n\t\tif !validFlags[opt[0]] {\n\t\t\treturn 0, \"\", fmt.Errorf(\"Invalid tmpfs option %q\", opt)\n\t\t}\n\t}\n\treturn flags, data, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/flags_freebsd.go",
    "content": "// +build freebsd,cgo\n\npackage mount\n\n/*\n#include <sys/mount.h>\n*/\nimport \"C\"\n\nconst (\n\t// RDONLY will mount the filesystem as read-only.\n\tRDONLY = C.MNT_RDONLY\n\n\t// NOSUID will not allow set-user-identifier or set-group-identifier bits to\n\t// take effect.\n\tNOSUID = C.MNT_NOSUID\n\n\t// NOEXEC will not allow execution of any binaries on the mounted file system.\n\tNOEXEC = C.MNT_NOEXEC\n\n\t// SYNCHRONOUS will allow any I/O to the file system to be done synchronously.\n\tSYNCHRONOUS = C.MNT_SYNCHRONOUS\n\n\t// NOATIME will not update the file access time when reading from a file.\n\tNOATIME = C.MNT_NOATIME\n)\n\n// These flags are unsupported.\nconst (\n\tBIND        = 0\n\tDIRSYNC     = 0\n\tMANDLOCK    = 0\n\tNODEV       = 0\n\tNODIRATIME  = 0\n\tUNBINDABLE  = 0\n\tRUNBINDABLE = 0\n\tPRIVATE     = 0\n\tRPRIVATE    = 0\n\tSHARED      = 0\n\tRSHARED     = 0\n\tSLAVE       = 0\n\tRSLAVE      = 0\n\tRBIND       = 0\n\tRELATIVE    = 0\n\tRELATIME    = 0\n\tREMOUNT     = 0\n\tSTRICTATIME = 0\n)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/flags_linux.go",
    "content": "package mount\n\nimport (\n\t\"syscall\"\n)\n\nconst (\n\t// RDONLY will mount the file system read-only.\n\tRDONLY = syscall.MS_RDONLY\n\n\t// NOSUID will not allow set-user-identifier or set-group-identifier bits to\n\t// take effect.\n\tNOSUID = syscall.MS_NOSUID\n\n\t// NODEV will not interpret character or block special devices on the file\n\t// system.\n\tNODEV = syscall.MS_NODEV\n\n\t// NOEXEC will not allow execution of any binaries on the mounted file system.\n\tNOEXEC = syscall.MS_NOEXEC\n\n\t// SYNCHRONOUS will allow I/O to the file system to be done synchronously.\n\tSYNCHRONOUS = syscall.MS_SYNCHRONOUS\n\n\t// DIRSYNC will force all directory updates within the file system to be done\n\t// synchronously. This affects the following system calls: create, link,\n\t// unlink, symlink, mkdir, rmdir, mknod and rename.\n\tDIRSYNC = syscall.MS_DIRSYNC\n\n\t// REMOUNT will attempt to remount an already-mounted file system. This is\n\t// commonly used to change the mount flags for a file system, especially to\n\t// make a readonly file system writeable. It does not change device or mount\n\t// point.\n\tREMOUNT = syscall.MS_REMOUNT\n\n\t// MANDLOCK will force mandatory locks on a filesystem.\n\tMANDLOCK = syscall.MS_MANDLOCK\n\n\t// NOATIME will not update the file access time when reading from a file.\n\tNOATIME = syscall.MS_NOATIME\n\n\t// NODIRATIME will not update the directory access time.\n\tNODIRATIME = syscall.MS_NODIRATIME\n\n\t// BIND remounts a subtree somewhere else.\n\tBIND = syscall.MS_BIND\n\n\t// RBIND remounts a subtree and all possible submounts somewhere else.\n\tRBIND = syscall.MS_BIND | syscall.MS_REC\n\n\t// UNBINDABLE creates a mount which cannot be cloned through a bind operation.\n\tUNBINDABLE = syscall.MS_UNBINDABLE\n\n\t// RUNBINDABLE marks the entire mount tree as UNBINDABLE.\n\tRUNBINDABLE = syscall.MS_UNBINDABLE | syscall.MS_REC\n\n\t// PRIVATE creates a mount which carries no propagation abilities.\n\tPRIVATE = syscall.MS_PRIVATE\n\n\t// RPRIVATE marks the entire mount tree as PRIVATE.\n\tRPRIVATE = syscall.MS_PRIVATE | syscall.MS_REC\n\n\t// SLAVE creates a mount which receives propagation from its master, but not\n\t// vice versa.\n\tSLAVE = syscall.MS_SLAVE\n\n\t// RSLAVE marks the entire mount tree as SLAVE.\n\tRSLAVE = syscall.MS_SLAVE | syscall.MS_REC\n\n\t// SHARED creates a mount which provides the ability to create mirrors of\n\t// that mount such that mounts and unmounts within any of the mirrors\n\t// propagate to the other mirrors.\n\tSHARED = syscall.MS_SHARED\n\n\t// RSHARED marks the entire mount tree as SHARED.\n\tRSHARED = syscall.MS_SHARED | syscall.MS_REC\n\n\t// RELATIME updates inode access times relative to modify or change time.\n\tRELATIME = syscall.MS_RELATIME\n\n\t// STRICTATIME allows to explicitly request full atime updates.  This makes\n\t// it possible for the kernel to default to relatime or noatime but still\n\t// allow userspace to override it.\n\tSTRICTATIME = syscall.MS_STRICTATIME\n)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/flags_unsupported.go",
    "content": "// +build !linux,!freebsd freebsd,!cgo\n\npackage mount\n\n// These flags are unsupported.\nconst (\n\tBIND        = 0\n\tDIRSYNC     = 0\n\tMANDLOCK    = 0\n\tNOATIME     = 0\n\tNODEV       = 0\n\tNODIRATIME  = 0\n\tNOEXEC      = 0\n\tNOSUID      = 0\n\tUNBINDABLE  = 0\n\tRUNBINDABLE = 0\n\tPRIVATE     = 0\n\tRPRIVATE    = 0\n\tSHARED      = 0\n\tRSHARED     = 0\n\tSLAVE       = 0\n\tRSLAVE      = 0\n\tRBIND       = 0\n\tRELATIME    = 0\n\tRELATIVE    = 0\n\tREMOUNT     = 0\n\tSTRICTATIME = 0\n\tSYNCHRONOUS = 0\n\tRDONLY      = 0\n)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mount.go",
    "content": "package mount\n\nimport (\n\t\"time\"\n)\n\n// GetMounts retrieves a list of mounts for the current running process.\nfunc GetMounts() ([]*Info, error) {\n\treturn parseMountTable()\n}\n\n// Mounted looks at /proc/self/mountinfo to determine of the specified\n// mountpoint has been mounted\nfunc Mounted(mountpoint string) (bool, error) {\n\tentries, err := parseMountTable()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\t// Search the table for the mountpoint\n\tfor _, e := range entries {\n\t\tif e.Mountpoint == mountpoint {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\treturn false, nil\n}\n\n// Mount will mount filesystem according to the specified configuration, on the\n// condition that the target path is *not* already mounted. Options must be\n// specified like the mount or fstab unix commands: \"opt1=val1,opt2=val2\". See\n// flags.go for supported option flags.\nfunc Mount(device, target, mType, options string) error {\n\tflag, _ := parseOptions(options)\n\tif flag&REMOUNT != REMOUNT {\n\t\tif mounted, err := Mounted(target); err != nil || mounted {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn ForceMount(device, target, mType, options)\n}\n\n// ForceMount will mount a filesystem according to the specified configuration,\n// *regardless* if the target path is not already mounted. Options must be\n// specified like the mount or fstab unix commands: \"opt1=val1,opt2=val2\". See\n// flags.go for supported option flags.\nfunc ForceMount(device, target, mType, options string) error {\n\tflag, data := parseOptions(options)\n\tif err := mount(device, target, mType, uintptr(flag), data); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Unmount will unmount the target filesystem, so long as it is mounted.\nfunc Unmount(target string) error {\n\tif mounted, err := Mounted(target); err != nil || !mounted {\n\t\treturn err\n\t}\n\treturn ForceUnmount(target)\n}\n\n// ForceUnmount will force an unmount of the target filesystem, regardless if\n// it is mounted or not.\nfunc ForceUnmount(target string) (err error) {\n\t// Simple retry logic for unmount\n\tfor i := 0; i < 10; i++ {\n\t\tif err = unmount(target, 0); err == nil {\n\t\t\treturn nil\n\t\t}\n\t\ttime.Sleep(100 * time.Millisecond)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go",
    "content": "package mount\n\n/*\n#include <errno.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/_iovec.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n*/\nimport \"C\"\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc allocateIOVecs(options []string) []C.struct_iovec {\n\tout := make([]C.struct_iovec, len(options))\n\tfor i, option := range options {\n\t\tout[i].iov_base = unsafe.Pointer(C.CString(option))\n\t\tout[i].iov_len = C.size_t(len(option) + 1)\n\t}\n\treturn out\n}\n\nfunc mount(device, target, mType string, flag uintptr, data string) error {\n\tisNullFS := false\n\n\txs := strings.Split(data, \",\")\n\tfor _, x := range xs {\n\t\tif x == \"bind\" {\n\t\t\tisNullFS = true\n\t\t}\n\t}\n\n\toptions := []string{\"fspath\", target}\n\tif isNullFS {\n\t\toptions = append(options, \"fstype\", \"nullfs\", \"target\", device)\n\t} else {\n\t\toptions = append(options, \"fstype\", mType, \"from\", device)\n\t}\n\trawOptions := allocateIOVecs(options)\n\tfor _, rawOption := range rawOptions {\n\t\tdefer C.free(rawOption.iov_base)\n\t}\n\n\tif errno := C.nmount(&rawOptions[0], C.uint(len(options)), C.int(flag)); errno != 0 {\n\t\treason := C.GoString(C.strerror(*C.__error()))\n\t\treturn fmt.Errorf(\"Failed to call nmount: %s\", reason)\n\t}\n\treturn nil\n}\n\nfunc unmount(target string, flag int) error {\n\treturn syscall.Unmount(target, flag)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mounter_linux.go",
    "content": "package mount\n\nimport (\n\t\"syscall\"\n)\n\nfunc mount(device, target, mType string, flag uintptr, data string) error {\n\tif err := syscall.Mount(device, target, mType, flag, data); err != nil {\n\t\treturn err\n\t}\n\n\t// If we have a bind mount or remount, remount...\n\tif flag&syscall.MS_BIND == syscall.MS_BIND && flag&syscall.MS_RDONLY == syscall.MS_RDONLY {\n\t\treturn syscall.Mount(device, target, mType, flag|syscall.MS_REMOUNT, data)\n\t}\n\treturn nil\n}\n\nfunc unmount(target string, flag int) error {\n\treturn syscall.Unmount(target, flag)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go",
    "content": "// +build !linux,!freebsd freebsd,!cgo\n\npackage mount\n\nfunc mount(device, target, mType string, flag uintptr, data string) error {\n\tpanic(\"Not implemented\")\n}\n\nfunc unmount(target string, flag int) error {\n\tpanic(\"Not implemented\")\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mountinfo.go",
    "content": "package mount\n\n// Info reveals information about a particular mounted filesystem. This\n// struct is populated from the content in the /proc/<pid>/mountinfo file.\ntype Info struct {\n\t// ID is a unique identifier of the mount (may be reused after umount).\n\tID int\n\n\t// Parent indicates the ID of the mount parent (or of self for the top of the\n\t// mount tree).\n\tParent int\n\n\t// Major indicates one half of the device ID which identifies the device class.\n\tMajor int\n\n\t// Minor indicates one half of the device ID which identifies a specific\n\t// instance of device.\n\tMinor int\n\n\t// Root of the mount within the filesystem.\n\tRoot string\n\n\t// Mountpoint indicates the mount point relative to the process's root.\n\tMountpoint string\n\n\t// Opts represents mount-specific options.\n\tOpts string\n\n\t// Optional represents optional fields.\n\tOptional string\n\n\t// Fstype indicates the type of filesystem, such as EXT3.\n\tFstype string\n\n\t// Source indicates filesystem specific information or \"none\".\n\tSource string\n\n\t// VfsOpts represents per super block options.\n\tVfsOpts string\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mountinfo_freebsd.go",
    "content": "package mount\n\n/*\n#include <sys/param.h>\n#include <sys/ucred.h>\n#include <sys/mount.h>\n*/\nimport \"C\"\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// Parse /proc/self/mountinfo because comparing Dev and ino does not work from\n// bind mounts.\nfunc parseMountTable() ([]*Info, error) {\n\tvar rawEntries *C.struct_statfs\n\n\tcount := int(C.getmntinfo(&rawEntries, C.MNT_WAIT))\n\tif count == 0 {\n\t\treturn nil, fmt.Errorf(\"Failed to call getmntinfo\")\n\t}\n\n\tvar entries []C.struct_statfs\n\theader := (*reflect.SliceHeader)(unsafe.Pointer(&entries))\n\theader.Cap = count\n\theader.Len = count\n\theader.Data = uintptr(unsafe.Pointer(rawEntries))\n\n\tvar out []*Info\n\tfor _, entry := range entries {\n\t\tvar mountinfo Info\n\t\tmountinfo.Mountpoint = C.GoString(&entry.f_mntonname[0])\n\t\tmountinfo.Source = C.GoString(&entry.f_mntfromname[0])\n\t\tmountinfo.Fstype = C.GoString(&entry.f_fstypename[0])\n\t\tout = append(out, &mountinfo)\n\t}\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mountinfo_linux.go",
    "content": "// +build linux\n\npackage mount\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\nconst (\n\t/* 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue\n\t   (1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)\n\n\t   (1) mount ID:  unique identifier of the mount (may be reused after umount)\n\t   (2) parent ID:  ID of parent (or of self for the top of the mount tree)\n\t   (3) major:minor:  value of st_dev for files on filesystem\n\t   (4) root:  root of the mount within the filesystem\n\t   (5) mount point:  mount point relative to the process's root\n\t   (6) mount options:  per mount options\n\t   (7) optional fields:  zero or more fields of the form \"tag[:value]\"\n\t   (8) separator:  marks the end of the optional fields\n\t   (9) filesystem type:  name of filesystem of the form \"type[.subtype]\"\n\t   (10) mount source:  filesystem specific information or \"none\"\n\t   (11) super options:  per super block options*/\n\tmountinfoFormat = \"%d %d %d:%d %s %s %s %s\"\n)\n\n// Parse /proc/self/mountinfo because comparing Dev and ino does not work from\n// bind mounts\nfunc parseMountTable() ([]*Info, error) {\n\tf, err := os.Open(\"/proc/self/mountinfo\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn parseInfoFile(f)\n}\n\nfunc parseInfoFile(r io.Reader) ([]*Info, error) {\n\tvar (\n\t\ts   = bufio.NewScanner(r)\n\t\tout = []*Info{}\n\t)\n\n\tfor s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar (\n\t\t\tp              = &Info{}\n\t\t\ttext           = s.Text()\n\t\t\toptionalFields string\n\t\t)\n\n\t\tif _, err := fmt.Sscanf(text, mountinfoFormat,\n\t\t\t&p.ID, &p.Parent, &p.Major, &p.Minor,\n\t\t\t&p.Root, &p.Mountpoint, &p.Opts, &optionalFields); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Scanning '%s' failed: %s\", text, err)\n\t\t}\n\t\t// Safe as mountinfo encodes mountpoints with spaces as \\040.\n\t\tindex := strings.Index(text, \" - \")\n\t\tpostSeparatorFields := strings.Fields(text[index+3:])\n\t\tif len(postSeparatorFields) < 3 {\n\t\t\treturn nil, fmt.Errorf(\"Error found less than 3 fields post '-' in %q\", text)\n\t\t}\n\n\t\tif optionalFields != \"-\" {\n\t\t\tp.Optional = optionalFields\n\t\t}\n\n\t\tp.Fstype = postSeparatorFields[0]\n\t\tp.Source = postSeparatorFields[1]\n\t\tp.VfsOpts = strings.Join(postSeparatorFields[2:], \" \")\n\t\tout = append(out, p)\n\t}\n\treturn out, nil\n}\n\n// PidMountInfo collects the mounts for a specific process ID. If the process\n// ID is unknown, it is better to use `GetMounts` which will inspect\n// \"/proc/self/mountinfo\" instead.\nfunc PidMountInfo(pid int) ([]*Info, error) {\n\tf, err := os.Open(fmt.Sprintf(\"/proc/%d/mountinfo\", pid))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\treturn parseInfoFile(f)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/mountinfo_unsupported.go",
    "content": "// +build !windows,!linux,!freebsd freebsd,!cgo\n\npackage mount\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n)\n\nfunc parseMountTable() ([]*Info, error) {\n\treturn nil, fmt.Errorf(\"mount.parseMountTable is not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go",
    "content": "// +build linux\n\npackage mount\n\n// MakeShared ensures a mounted filesystem has the SHARED mount option enabled.\n// See the supported options in flags.go for further reference.\nfunc MakeShared(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"shared\")\n}\n\n// MakeRShared ensures a mounted filesystem has the RSHARED mount option enabled.\n// See the supported options in flags.go for further reference.\nfunc MakeRShared(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"rshared\")\n}\n\n// MakePrivate ensures a mounted filesystem has the PRIVATE mount option enabled.\n// See the supported options in flags.go for further reference.\nfunc MakePrivate(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"private\")\n}\n\n// MakeRPrivate ensures a mounted filesystem has the RPRIVATE mount option\n// enabled. See the supported options in flags.go for further reference.\nfunc MakeRPrivate(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"rprivate\")\n}\n\n// MakeSlave ensures a mounted filesystem has the SLAVE mount option enabled.\n// See the supported options in flags.go for further reference.\nfunc MakeSlave(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"slave\")\n}\n\n// MakeRSlave ensures a mounted filesystem has the RSLAVE mount option enabled.\n// See the supported options in flags.go for further reference.\nfunc MakeRSlave(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"rslave\")\n}\n\n// MakeUnbindable ensures a mounted filesystem has the UNBINDABLE mount option\n// enabled. See the supported options in flags.go for further reference.\nfunc MakeUnbindable(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"unbindable\")\n}\n\n// MakeRUnbindable ensures a mounted filesystem has the RUNBINDABLE mount\n// option enabled. See the supported options in flags.go for further reference.\nfunc MakeRUnbindable(mountPoint string) error {\n\treturn ensureMountedAs(mountPoint, \"runbindable\")\n}\n\nfunc ensureMountedAs(mountPoint, options string) error {\n\tmounted, err := Mounted(mountPoint)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !mounted {\n\t\tif err := Mount(mountPoint, mountPoint, \"none\", \"bind,rw\"); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif _, err = Mounted(mountPoint); err != nil {\n\t\treturn err\n\t}\n\n\treturn ForceMount(\"\", mountPoint, \"none\", options)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/client.go",
    "content": "package plugins\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/docker/docker/pkg/plugins/transport\"\n\t\"github.com/docker/go-connections/sockets\"\n\t\"github.com/docker/go-connections/tlsconfig\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nconst (\n\tdefaultTimeOut = 30\n)\n\n// NewClient creates a new plugin client (http).\nfunc NewClient(addr string, tlsConfig tlsconfig.Options) (*Client, error) {\n\ttr := &http.Transport{}\n\n\tc, err := tlsconfig.Client(tlsConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttr.TLSClientConfig = c\n\n\tu, err := url.Parse(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsocket := u.Host\n\tif socket == \"\" {\n\t\t// valid local socket addresses have the host empty.\n\t\tsocket = u.Path\n\t}\n\tif err := sockets.ConfigureTransport(tr, u.Scheme, socket); err != nil {\n\t\treturn nil, err\n\t}\n\tscheme := httpScheme(u)\n\n\tclientTransport := transport.NewHTTPTransport(tr, scheme, socket)\n\treturn NewClientWithTransport(clientTransport), nil\n}\n\n// NewClientWithTransport creates a new plugin client with a given transport.\nfunc NewClientWithTransport(tr transport.Transport) *Client {\n\treturn &Client{\n\t\thttp: &http.Client{\n\t\t\tTransport: tr,\n\t\t},\n\t\trequestFactory: tr,\n\t}\n}\n\n// Client represents a plugin client.\ntype Client struct {\n\thttp           *http.Client // http client to use\n\trequestFactory transport.RequestFactory\n}\n\n// Call calls the specified method with the specified arguments for the plugin.\n// It will retry for 30 seconds if a failure occurs when calling.\nfunc (c *Client) Call(serviceMethod string, args interface{}, ret interface{}) error {\n\tvar buf bytes.Buffer\n\tif args != nil {\n\t\tif err := json.NewEncoder(&buf).Encode(args); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tbody, err := c.callWithRetry(serviceMethod, &buf, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer body.Close()\n\tif ret != nil {\n\t\tif err := json.NewDecoder(body).Decode(&ret); err != nil {\n\t\t\tlogrus.Errorf(\"%s: error reading plugin resp: %v\", serviceMethod, err)\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// Stream calls the specified method with the specified arguments for the plugin and returns the response body\nfunc (c *Client) Stream(serviceMethod string, args interface{}) (io.ReadCloser, error) {\n\tvar buf bytes.Buffer\n\tif err := json.NewEncoder(&buf).Encode(args); err != nil {\n\t\treturn nil, err\n\t}\n\treturn c.callWithRetry(serviceMethod, &buf, true)\n}\n\n// SendFile calls the specified method, and passes through the IO stream\nfunc (c *Client) SendFile(serviceMethod string, data io.Reader, ret interface{}) error {\n\tbody, err := c.callWithRetry(serviceMethod, data, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer body.Close()\n\tif err := json.NewDecoder(body).Decode(&ret); err != nil {\n\t\tlogrus.Errorf(\"%s: error reading plugin resp: %v\", serviceMethod, err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (c *Client) callWithRetry(serviceMethod string, data io.Reader, retry bool) (io.ReadCloser, error) {\n\treq, err := c.requestFactory.NewRequest(serviceMethod, data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar retries int\n\tstart := time.Now()\n\n\tfor {\n\t\tresp, err := c.http.Do(req)\n\t\tif err != nil {\n\t\t\tif !retry {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\ttimeOff := backoff(retries)\n\t\t\tif abort(start, timeOff) {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tretries++\n\t\t\tlogrus.Warnf(\"Unable to connect to plugin: %s:%s, retrying in %v\", req.URL.Host, req.URL.Path, timeOff)\n\t\t\ttime.Sleep(timeOff)\n\t\t\tcontinue\n\t\t}\n\n\t\tif resp.StatusCode != http.StatusOK {\n\t\t\tb, err := ioutil.ReadAll(resp.Body)\n\t\t\tresp.Body.Close()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, &statusError{resp.StatusCode, serviceMethod, err.Error()}\n\t\t\t}\n\n\t\t\t// Plugins' Response(s) should have an Err field indicating what went\n\t\t\t// wrong. Try to unmarshal into ResponseErr. Otherwise fallback to just\n\t\t\t// return the string(body)\n\t\t\ttype responseErr struct {\n\t\t\t\tErr string\n\t\t\t}\n\t\t\tremoteErr := responseErr{}\n\t\t\tif err := json.Unmarshal(b, &remoteErr); err == nil {\n\t\t\t\tif remoteErr.Err != \"\" {\n\t\t\t\t\treturn nil, &statusError{resp.StatusCode, serviceMethod, remoteErr.Err}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// old way...\n\t\t\treturn nil, &statusError{resp.StatusCode, serviceMethod, string(b)}\n\t\t}\n\t\treturn resp.Body, nil\n\t}\n}\n\nfunc backoff(retries int) time.Duration {\n\tb, max := 1, defaultTimeOut\n\tfor b < max && retries > 0 {\n\t\tb *= 2\n\t\tretries--\n\t}\n\tif b > max {\n\t\tb = max\n\t}\n\treturn time.Duration(b) * time.Second\n}\n\nfunc abort(start time.Time, timeOff time.Duration) bool {\n\treturn timeOff+time.Since(start) >= time.Duration(defaultTimeOut)*time.Second\n}\n\nfunc httpScheme(u *url.URL) string {\n\tscheme := u.Scheme\n\tif scheme != \"https\" {\n\t\tscheme = \"http\"\n\t}\n\treturn scheme\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/discovery.go",
    "content": "package plugins\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\t// ErrNotFound plugin not found\n\tErrNotFound = errors.New(\"plugin not found\")\n\tsocketsPath = \"/run/docker/plugins\"\n\tspecsPaths  = []string{\"/etc/docker/plugins\", \"/usr/lib/docker/plugins\"}\n)\n\n// localRegistry defines a registry that is local (using unix socket).\ntype localRegistry struct{}\n\nfunc newLocalRegistry() localRegistry {\n\treturn localRegistry{}\n}\n\n// Scan scans all the plugin paths and returns all the names it found\nfunc Scan() ([]string, error) {\n\tvar names []string\n\tif err := filepath.Walk(socketsPath, func(path string, fi os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tif fi.Mode()&os.ModeSocket != 0 {\n\t\t\tname := strings.TrimSuffix(fi.Name(), filepath.Ext(fi.Name()))\n\t\t\tnames = append(names, name)\n\t\t}\n\t\treturn nil\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, path := range specsPaths {\n\t\tif err := filepath.Walk(path, func(p string, fi os.FileInfo, err error) error {\n\t\t\tif err != nil || fi.IsDir() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tname := strings.TrimSuffix(fi.Name(), filepath.Ext(fi.Name()))\n\t\t\tnames = append(names, name)\n\t\t\treturn nil\n\t\t}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn names, nil\n}\n\n// Plugin returns the plugin registered with the given name (or returns an error).\nfunc (l *localRegistry) Plugin(name string) (*Plugin, error) {\n\tsocketpaths := pluginPaths(socketsPath, name, \".sock\")\n\n\tfor _, p := range socketpaths {\n\t\tif fi, err := os.Stat(p); err == nil && fi.Mode()&os.ModeSocket != 0 {\n\t\t\treturn newLocalPlugin(name, \"unix://\"+p), nil\n\t\t}\n\t}\n\n\tvar txtspecpaths []string\n\tfor _, p := range specsPaths {\n\t\ttxtspecpaths = append(txtspecpaths, pluginPaths(p, name, \".spec\")...)\n\t\ttxtspecpaths = append(txtspecpaths, pluginPaths(p, name, \".json\")...)\n\t}\n\n\tfor _, p := range txtspecpaths {\n\t\tif _, err := os.Stat(p); err == nil {\n\t\t\tif strings.HasSuffix(p, \".json\") {\n\t\t\t\treturn readPluginJSONInfo(name, p)\n\t\t\t}\n\t\t\treturn readPluginInfo(name, p)\n\t\t}\n\t}\n\treturn nil, ErrNotFound\n}\n\nfunc readPluginInfo(name, path string) (*Plugin, error) {\n\tcontent, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\taddr := strings.TrimSpace(string(content))\n\n\tu, err := url.Parse(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(u.Scheme) == 0 {\n\t\treturn nil, fmt.Errorf(\"Unknown protocol\")\n\t}\n\n\treturn newLocalPlugin(name, addr), nil\n}\n\nfunc readPluginJSONInfo(name, path string) (*Plugin, error) {\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tvar p Plugin\n\tif err := json.NewDecoder(f).Decode(&p); err != nil {\n\t\treturn nil, err\n\t}\n\tp.Name = name\n\tif len(p.TLSConfig.CAFile) == 0 {\n\t\tp.TLSConfig.InsecureSkipVerify = true\n\t}\n\tp.activateWait = sync.NewCond(&sync.Mutex{})\n\n\treturn &p, nil\n}\n\nfunc pluginPaths(base, name, ext string) []string {\n\treturn []string{\n\t\tfilepath.Join(base, name+ext),\n\t\tfilepath.Join(base, name, name+ext),\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/errors.go",
    "content": "package plugins\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n)\n\ntype statusError struct {\n\tstatus int\n\tmethod string\n\terr    string\n}\n\n// Error returns a formatted string for this error type\nfunc (e *statusError) Error() string {\n\treturn fmt.Sprintf(\"%s: %v\", e.method, e.err)\n}\n\n// IsNotFound indicates if the passed in error is from an http.StatusNotFound from the plugin\nfunc IsNotFound(err error) bool {\n\treturn isStatusError(err, http.StatusNotFound)\n}\n\nfunc isStatusError(err error, status int) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\te, ok := err.(*statusError)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn e.status == status\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/plugins.go",
    "content": "// Package plugins provides structures and helper functions to manage Docker\n// plugins.\n//\n// Docker discovers plugins by looking for them in the plugin directory whenever\n// a user or container tries to use one by name. UNIX domain socket files must\n// be located under /run/docker/plugins, whereas spec files can be located\n// either under /etc/docker/plugins or /usr/lib/docker/plugins. This is handled\n// by the Registry interface, which lets you list all plugins or get a plugin by\n// its name if it exists.\n//\n// The plugins need to implement an HTTP server and bind this to the UNIX socket\n// or the address specified in the spec files.\n// A handshake is send at /Plugin.Activate, and plugins are expected to return\n// a Manifest with a list of of Docker subsystems which this plugin implements.\n//\n// In order to use a plugins, you can use the ``Get`` with the name of the\n// plugin and the subsystem it implements.\n//\n//\tplugin, err := plugins.Get(\"example\", \"VolumeDriver\")\n//\tif err != nil {\n//\t\treturn fmt.Errorf(\"Error looking up volume plugin example: %v\", err)\n//\t}\npackage plugins\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/docker/go-connections/tlsconfig\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// ErrNotImplements is returned if the plugin does not implement the requested driver.\n\tErrNotImplements = errors.New(\"Plugin does not implement the requested driver\")\n)\n\ntype plugins struct {\n\tsync.Mutex\n\tplugins map[string]*Plugin\n}\n\nvar (\n\tstorage          = plugins{plugins: make(map[string]*Plugin)}\n\textpointHandlers = make(map[string]func(string, *Client))\n)\n\n// Manifest lists what a plugin implements.\ntype Manifest struct {\n\t// List of subsystem the plugin implements.\n\tImplements []string\n}\n\n// Plugin is the definition of a docker plugin.\ntype Plugin struct {\n\t// Name of the plugin\n\tName string `json:\"-\"`\n\t// Address of the plugin\n\tAddr string\n\t// TLS configuration of the plugin\n\tTLSConfig tlsconfig.Options\n\t// Client attached to the plugin\n\tClient *Client `json:\"-\"`\n\t// Manifest of the plugin (see above)\n\tManifest *Manifest `json:\"-\"`\n\n\t// error produced by activation\n\tactivateErr error\n\t// specifies if the activation sequence is completed (not if it is sucessful or not)\n\tactivated bool\n\t// wait for activation to finish\n\tactivateWait *sync.Cond\n}\n\nfunc newLocalPlugin(name, addr string) *Plugin {\n\treturn &Plugin{\n\t\tName:         name,\n\t\tAddr:         addr,\n\t\tTLSConfig:    tlsconfig.Options{InsecureSkipVerify: true},\n\t\tactivateWait: sync.NewCond(&sync.Mutex{}),\n\t}\n}\n\nfunc (p *Plugin) activate() error {\n\tp.activateWait.L.Lock()\n\tif p.activated {\n\t\tp.activateWait.L.Unlock()\n\t\treturn p.activateErr\n\t}\n\n\tp.activateErr = p.activateWithLock()\n\tp.activated = true\n\n\tp.activateWait.L.Unlock()\n\tp.activateWait.Broadcast()\n\treturn p.activateErr\n}\n\nfunc (p *Plugin) activateWithLock() error {\n\tc, err := NewClient(p.Addr, p.TLSConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\tp.Client = c\n\n\tm := new(Manifest)\n\tif err = p.Client.Call(\"Plugin.Activate\", nil, m); err != nil {\n\t\treturn err\n\t}\n\n\tp.Manifest = m\n\n\tfor _, iface := range m.Implements {\n\t\thandler, handled := extpointHandlers[iface]\n\t\tif !handled {\n\t\t\tcontinue\n\t\t}\n\t\thandler(p.Name, p.Client)\n\t}\n\treturn nil\n}\n\nfunc (p *Plugin) waitActive() error {\n\tp.activateWait.L.Lock()\n\tfor !p.activated {\n\t\tp.activateWait.Wait()\n\t}\n\tp.activateWait.L.Unlock()\n\treturn p.activateErr\n}\n\nfunc (p *Plugin) implements(kind string) bool {\n\tif err := p.waitActive(); err != nil {\n\t\treturn false\n\t}\n\tfor _, driver := range p.Manifest.Implements {\n\t\tif driver == kind {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc load(name string) (*Plugin, error) {\n\treturn loadWithRetry(name, true)\n}\n\nfunc loadWithRetry(name string, retry bool) (*Plugin, error) {\n\tregistry := newLocalRegistry()\n\tstart := time.Now()\n\n\tvar retries int\n\tfor {\n\t\tpl, err := registry.Plugin(name)\n\t\tif err != nil {\n\t\t\tif !retry {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\ttimeOff := backoff(retries)\n\t\t\tif abort(start, timeOff) {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tretries++\n\t\t\tlogrus.Warnf(\"Unable to locate plugin: %s, retrying in %v\", name, timeOff)\n\t\t\ttime.Sleep(timeOff)\n\t\t\tcontinue\n\t\t}\n\n\t\tstorage.Lock()\n\t\tstorage.plugins[name] = pl\n\t\tstorage.Unlock()\n\n\t\terr = pl.activate()\n\n\t\tif err != nil {\n\t\t\tstorage.Lock()\n\t\t\tdelete(storage.plugins, name)\n\t\t\tstorage.Unlock()\n\t\t}\n\n\t\treturn pl, err\n\t}\n}\n\nfunc get(name string) (*Plugin, error) {\n\tstorage.Lock()\n\tpl, ok := storage.plugins[name]\n\tstorage.Unlock()\n\tif ok {\n\t\treturn pl, pl.activate()\n\t}\n\treturn load(name)\n}\n\n// Get returns the plugin given the specified name and requested implementation.\nfunc Get(name, imp string) (*Plugin, error) {\n\tpl, err := get(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif pl.implements(imp) {\n\t\tlogrus.Debugf(\"%s implements: %s\", name, imp)\n\t\treturn pl, nil\n\t}\n\treturn nil, ErrNotImplements\n}\n\n// Handle adds the specified function to the extpointHandlers.\nfunc Handle(iface string, fn func(string, *Client)) {\n\textpointHandlers[iface] = fn\n}\n\n// GetAll returns all the plugins for the specified implementation\nfunc GetAll(imp string) ([]*Plugin, error) {\n\tpluginNames, err := Scan()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttype plLoad struct {\n\t\tpl  *Plugin\n\t\terr error\n\t}\n\n\tchPl := make(chan *plLoad, len(pluginNames))\n\tvar wg sync.WaitGroup\n\tfor _, name := range pluginNames {\n\t\tif pl, ok := storage.plugins[name]; ok {\n\t\t\tchPl <- &plLoad{pl, nil}\n\t\t\tcontinue\n\t\t}\n\n\t\twg.Add(1)\n\t\tgo func(name string) {\n\t\t\tdefer wg.Done()\n\t\t\tpl, err := loadWithRetry(name, false)\n\t\t\tchPl <- &plLoad{pl, err}\n\t\t}(name)\n\t}\n\n\twg.Wait()\n\tclose(chPl)\n\n\tvar out []*Plugin\n\tfor pl := range chPl {\n\t\tif pl.err != nil {\n\t\t\tlogrus.Error(pl.err)\n\t\t\tcontinue\n\t\t}\n\t\tif pl.pl.implements(imp) {\n\t\t\tout = append(out, pl.pl)\n\t\t}\n\t}\n\treturn out, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/transport/http.go",
    "content": "package transport\n\nimport (\n\t\"io\"\n\t\"net/http\"\n)\n\n// httpTransport holds an http.RoundTripper\n// and information about the scheme and address the transport\n// sends request to.\ntype httpTransport struct {\n\thttp.RoundTripper\n\tscheme string\n\taddr   string\n}\n\n// NewHTTPTransport creates a new httpTransport.\nfunc NewHTTPTransport(r http.RoundTripper, scheme, addr string) Transport {\n\treturn httpTransport{\n\t\tRoundTripper: r,\n\t\tscheme:       scheme,\n\t\taddr:         addr,\n\t}\n}\n\n// NewRequest creates a new http.Request and sets the URL\n// scheme and address with the transport's fields.\nfunc (t httpTransport) NewRequest(path string, data io.Reader) (*http.Request, error) {\n\treq, err := newHTTPRequest(path, data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.URL.Scheme = t.scheme\n\treq.URL.Host = t.addr\n\treturn req, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/plugins/transport/transport.go",
    "content": "package transport\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n)\n\n// VersionMimetype is the Content-Type the engine sends to plugins.\nconst VersionMimetype = \"application/vnd.docker.plugins.v1.2+json\"\n\n// RequestFactory defines an interface that\n// transports can implement to create new requests.\ntype RequestFactory interface {\n\tNewRequest(path string, data io.Reader) (*http.Request, error)\n}\n\n// Transport defines an interface that plugin transports\n// must implement.\ntype Transport interface {\n\thttp.RoundTripper\n\tRequestFactory\n}\n\n// newHTTPRequest creates a new request with a path and a body.\nfunc newHTTPRequest(path string, data io.Reader) (*http.Request, error) {\n\tif !strings.HasPrefix(path, \"/\") {\n\t\tpath = \"/\" + path\n\t}\n\treq, err := http.NewRequest(\"POST\", path, data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Header.Add(\"Accept\", VersionMimetype)\n\treturn req, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/pools/pools.go",
    "content": "// Package pools provides a collection of pools which provide various\n// data types with buffers. These can be used to lower the number of\n// memory allocations and reuse buffers.\n//\n// New pools should be added to this package to allow them to be\n// shared across packages.\n//\n// Utility functions which operate on pools should be added to this\n// package to allow them to be reused.\npackage pools\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/docker/docker/pkg/ioutils\"\n)\n\nvar (\n\t// BufioReader32KPool is a pool which returns bufio.Reader with a 32K buffer.\n\tBufioReader32KPool *BufioReaderPool\n\t// BufioWriter32KPool is a pool which returns bufio.Writer with a 32K buffer.\n\tBufioWriter32KPool *BufioWriterPool\n)\n\nconst buffer32K = 32 * 1024\n\n// BufioReaderPool is a bufio reader that uses sync.Pool.\ntype BufioReaderPool struct {\n\tpool sync.Pool\n}\n\nfunc init() {\n\tBufioReader32KPool = newBufioReaderPoolWithSize(buffer32K)\n\tBufioWriter32KPool = newBufioWriterPoolWithSize(buffer32K)\n}\n\n// newBufioReaderPoolWithSize is unexported because new pools should be\n// added here to be shared where required.\nfunc newBufioReaderPoolWithSize(size int) *BufioReaderPool {\n\tpool := sync.Pool{\n\t\tNew: func() interface{} { return bufio.NewReaderSize(nil, size) },\n\t}\n\treturn &BufioReaderPool{pool: pool}\n}\n\n// Get returns a bufio.Reader which reads from r. The buffer size is that of the pool.\nfunc (bufPool *BufioReaderPool) Get(r io.Reader) *bufio.Reader {\n\tbuf := bufPool.pool.Get().(*bufio.Reader)\n\tbuf.Reset(r)\n\treturn buf\n}\n\n// Put puts the bufio.Reader back into the pool.\nfunc (bufPool *BufioReaderPool) Put(b *bufio.Reader) {\n\tb.Reset(nil)\n\tbufPool.pool.Put(b)\n}\n\n// Copy is a convenience wrapper which uses a buffer to avoid allocation in io.Copy.\nfunc Copy(dst io.Writer, src io.Reader) (written int64, err error) {\n\tbuf := BufioReader32KPool.Get(src)\n\twritten, err = io.Copy(dst, buf)\n\tBufioReader32KPool.Put(buf)\n\treturn\n}\n\n// NewReadCloserWrapper returns a wrapper which puts the bufio.Reader back\n// into the pool and closes the reader if it's an io.ReadCloser.\nfunc (bufPool *BufioReaderPool) NewReadCloserWrapper(buf *bufio.Reader, r io.Reader) io.ReadCloser {\n\treturn ioutils.NewReadCloserWrapper(r, func() error {\n\t\tif readCloser, ok := r.(io.ReadCloser); ok {\n\t\t\treadCloser.Close()\n\t\t}\n\t\tbufPool.Put(buf)\n\t\treturn nil\n\t})\n}\n\n// BufioWriterPool is a bufio writer that uses sync.Pool.\ntype BufioWriterPool struct {\n\tpool sync.Pool\n}\n\n// newBufioWriterPoolWithSize is unexported because new pools should be\n// added here to be shared where required.\nfunc newBufioWriterPoolWithSize(size int) *BufioWriterPool {\n\tpool := sync.Pool{\n\t\tNew: func() interface{} { return bufio.NewWriterSize(nil, size) },\n\t}\n\treturn &BufioWriterPool{pool: pool}\n}\n\n// Get returns a bufio.Writer which writes to w. The buffer size is that of the pool.\nfunc (bufPool *BufioWriterPool) Get(w io.Writer) *bufio.Writer {\n\tbuf := bufPool.pool.Get().(*bufio.Writer)\n\tbuf.Reset(w)\n\treturn buf\n}\n\n// Put puts the bufio.Writer back into the pool.\nfunc (bufPool *BufioWriterPool) Put(b *bufio.Writer) {\n\tb.Reset(nil)\n\tbufPool.pool.Put(b)\n}\n\n// NewWriteCloserWrapper returns a wrapper which puts the bufio.Writer back\n// into the pool and closes the writer if it's an io.Writecloser.\nfunc (bufPool *BufioWriterPool) NewWriteCloserWrapper(buf *bufio.Writer, w io.Writer) io.WriteCloser {\n\treturn ioutils.NewWriteCloserWrapper(w, func() error {\n\t\tbuf.Flush()\n\t\tif writeCloser, ok := w.(io.WriteCloser); ok {\n\t\t\twriteCloser.Close()\n\t\t}\n\t\tbufPool.Put(buf)\n\t\treturn nil\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/progress/progress.go",
    "content": "package progress\n\nimport (\n\t\"fmt\"\n)\n\n// Progress represents the progress of a transfer.\ntype Progress struct {\n\tID string\n\n\t// Progress contains a Message or...\n\tMessage string\n\n\t// ...progress of an action\n\tAction  string\n\tCurrent int64\n\tTotal   int64\n\n\t// Aux contains extra information not presented to the user, such as\n\t// digests for push signing.\n\tAux interface{}\n\n\tLastUpdate bool\n}\n\n// Output is an interface for writing progress information. It's\n// like a writer for progress, but we don't call it Writer because\n// that would be confusing next to ProgressReader (also, because it\n// doesn't implement the io.Writer interface).\ntype Output interface {\n\tWriteProgress(Progress) error\n}\n\ntype chanOutput chan<- Progress\n\nfunc (out chanOutput) WriteProgress(p Progress) error {\n\tout <- p\n\treturn nil\n}\n\n// ChanOutput returns a Output that writes progress updates to the\n// supplied channel.\nfunc ChanOutput(progressChan chan<- Progress) Output {\n\treturn chanOutput(progressChan)\n}\n\n// Update is a convenience function to write a progress update to the channel.\nfunc Update(out Output, id, action string) {\n\tout.WriteProgress(Progress{ID: id, Action: action})\n}\n\n// Updatef is a convenience function to write a printf-formatted progress update\n// to the channel.\nfunc Updatef(out Output, id, format string, a ...interface{}) {\n\tUpdate(out, id, fmt.Sprintf(format, a...))\n}\n\n// Message is a convenience function to write a progress message to the channel.\nfunc Message(out Output, id, message string) {\n\tout.WriteProgress(Progress{ID: id, Message: message})\n}\n\n// Messagef is a convenience function to write a printf-formatted progress\n// message to the channel.\nfunc Messagef(out Output, id, format string, a ...interface{}) {\n\tMessage(out, id, fmt.Sprintf(format, a...))\n}\n\n// Aux sends auxiliary information over a progress interface, which will not be\n// formatted for the UI. This is used for things such as push signing.\nfunc Aux(out Output, a interface{}) {\n\tout.WriteProgress(Progress{Aux: a})\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/progress/progressreader.go",
    "content": "package progress\n\nimport (\n\t\"io\"\n)\n\n// Reader is a Reader with progress bar.\ntype Reader struct {\n\tin         io.ReadCloser // Stream to read from\n\tout        Output        // Where to send progress bar to\n\tsize       int64\n\tcurrent    int64\n\tlastUpdate int64\n\tid         string\n\taction     string\n}\n\n// NewProgressReader creates a new ProgressReader.\nfunc NewProgressReader(in io.ReadCloser, out Output, size int64, id, action string) *Reader {\n\treturn &Reader{\n\t\tin:     in,\n\t\tout:    out,\n\t\tsize:   size,\n\t\tid:     id,\n\t\taction: action,\n\t}\n}\n\nfunc (p *Reader) Read(buf []byte) (n int, err error) {\n\tread, err := p.in.Read(buf)\n\tp.current += int64(read)\n\tupdateEvery := int64(1024 * 512) //512kB\n\tif p.size > 0 {\n\t\t// Update progress for every 1% read if 1% < 512kB\n\t\tif increment := int64(0.01 * float64(p.size)); increment < updateEvery {\n\t\t\tupdateEvery = increment\n\t\t}\n\t}\n\tif p.current-p.lastUpdate > updateEvery || err != nil {\n\t\tp.updateProgress(err != nil && read == 0)\n\t\tp.lastUpdate = p.current\n\t}\n\n\treturn read, err\n}\n\n// Close closes the progress reader and its underlying reader.\nfunc (p *Reader) Close() error {\n\tif p.current < p.size {\n\t\t// print a full progress bar when closing prematurely\n\t\tp.current = p.size\n\t\tp.updateProgress(false)\n\t}\n\treturn p.in.Close()\n}\n\nfunc (p *Reader) updateProgress(last bool) {\n\tp.out.WriteProgress(Progress{ID: p.id, Action: p.action, Current: p.current, Total: p.size, LastUpdate: last})\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/promise/promise.go",
    "content": "package promise\n\n// Go is a basic promise implementation: it wraps calls a function in a goroutine,\n// and returns a channel which will later return the function's return value.\nfunc Go(f func() error) chan error {\n\tch := make(chan error, 1)\n\tgo func() {\n\t\tch <- f()\n\t}()\n\treturn ch\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/random/random.go",
    "content": "package random\n\nimport (\n\tcryptorand \"crypto/rand\"\n\t\"io\"\n\t\"math\"\n\t\"math/big\"\n\t\"math/rand\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Rand is a global *rand.Rand instance, which initialized with NewSource() source.\nvar Rand = rand.New(NewSource())\n\n// Reader is a global, shared instance of a pseudorandom bytes generator.\n// It doesn't consume entropy.\nvar Reader io.Reader = &reader{rnd: Rand}\n\n// copypaste from standard math/rand\ntype lockedSource struct {\n\tlk  sync.Mutex\n\tsrc rand.Source\n}\n\nfunc (r *lockedSource) Int63() (n int64) {\n\tr.lk.Lock()\n\tn = r.src.Int63()\n\tr.lk.Unlock()\n\treturn\n}\n\nfunc (r *lockedSource) Seed(seed int64) {\n\tr.lk.Lock()\n\tr.src.Seed(seed)\n\tr.lk.Unlock()\n}\n\n// NewSource returns math/rand.Source safe for concurrent use and initialized\n// with current unix-nano timestamp\nfunc NewSource() rand.Source {\n\tvar seed int64\n\tif cryptoseed, err := cryptorand.Int(cryptorand.Reader, big.NewInt(math.MaxInt64)); err != nil {\n\t\t// This should not happen, but worst-case fallback to time-based seed.\n\t\tseed = time.Now().UnixNano()\n\t} else {\n\t\tseed = cryptoseed.Int64()\n\t}\n\treturn &lockedSource{\n\t\tsrc: rand.NewSource(seed),\n\t}\n}\n\ntype reader struct {\n\trnd *rand.Rand\n}\n\nfunc (r *reader) Read(b []byte) (int, error) {\n\ti := 0\n\tfor {\n\t\tval := r.rnd.Int63()\n\t\tfor val > 0 {\n\t\t\tb[i] = byte(val)\n\t\t\ti++\n\t\t\tif i == len(b) {\n\t\t\t\treturn i, nil\n\t\t\t}\n\t\t\tval >>= 8\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/reexec/README.md",
    "content": "## reexec\n\nThe `reexec` package facilitates the busybox style reexec of the docker binary that we require because \nof the forking limitations of using Go.  Handlers can be registered with a name and the argv 0 of \nthe exec of the binary will be used to find and execute custom init paths.\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/reexec/command_freebsd.go",
    "content": "// +build freebsd\n\npackage reexec\n\nimport (\n\t\"github.com/docker/containerd/subreaper/exec\"\n)\n\n// Self returns the path to the current process's binary.\n// Uses os.Args[0].\nfunc Self() string {\n\treturn naiveSelf()\n}\n\n// Command returns *exec.Cmd which have Path as current binary.\n// For example if current binary is \"docker\" at \"/usr/bin/\", then cmd.Path will\n// be set to \"/usr/bin/docker\".\nfunc Command(args ...string) *exec.Cmd {\n\treturn &exec.Cmd{\n\t\tPath: Self(),\n\t\tArgs: args,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/reexec/command_linux.go",
    "content": "// +build linux\n\npackage reexec\n\nimport (\n\tosExec \"os/exec\"\n\t\"github.com/docker/containerd/subreaper/exec\"\n\t\"syscall\"\n)\n\n// Self returns the path to the current process's binary.\n// Returns \"/proc/self/exe\".\nfunc Self() string {\n\treturn \"/proc/self/exe\"\n}\n\n// Command returns *exec.Cmd which have Path as current binary. Also it setting\n// SysProcAttr.Pdeathsig to SIGTERM.\n// This will use the in-memory version (/proc/self/exe) of the current binary,\n// it is thus safe to delete or replace the on-disk binary (os.Args[0]).\nfunc Command(args ...string) *exec.Cmd {\n\treturn &exec.Cmd{\n\t\tCmd: osExec.Cmd{\n\t\t\tPath: Self(),\n\t\t\tArgs: args,\n\t\t\tSysProcAttr: &syscall.SysProcAttr{\n\t\t\t\tPdeathsig: syscall.SIGTERM,\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/reexec/command_unsupported.go",
    "content": "// +build !linux,!windows,!freebsd\n\npackage reexec\n\nimport (\n\t\"github.com/docker/containerd/subreaper/exec\"\n)\n\n// Command is unsupported on operating systems apart from Linux and Windows.\nfunc Command(args ...string) *exec.Cmd {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/reexec/reexec.go",
    "content": "package reexec\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\n\t\"github.com/docker/containerd/subreaper/exec\"\n)\n\nvar registeredInitializers = make(map[string]func())\n\n// Register adds an initialization func under the specified name\nfunc Register(name string, initializer func()) {\n\tif _, exists := registeredInitializers[name]; exists {\n\t\tpanic(fmt.Sprintf(\"reexec func already registred under name %q\", name))\n\t}\n\n\tregisteredInitializers[name] = initializer\n}\n\n// Init is called as the first part of the exec process and returns true if an\n// initialization function was called.\nfunc Init() bool {\n\tinitializer, exists := registeredInitializers[os.Args[0]]\n\tif !exists {\n\t\tinitializer, exists = registeredInitializers[path.Base(os.Args[0])]\n\t}\n\tif exists {\n\t\tinitializer()\n\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc naiveSelf() string {\n\tname := os.Args[0]\n\tif filepath.Base(name) == name {\n\t\tif lp, err := exec.LookPath(name); err == nil {\n\t\t\treturn lp\n\t\t}\n\t}\n\t// handle conversion of relative paths to absolute\n\tif absName, err := filepath.Abs(name); err == nil {\n\t\treturn absName\n\t}\n\t// if we couldn't get absolute name, return original\n\t// (NOTE: Go only errors on Abs() if os.Getwd fails)\n\treturn name\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/README.md",
    "content": "This package provides helper functions for dealing with signals across various operating systems"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal.go",
    "content": "// Package signal provides helper functions for dealing with signals across\n// various operating systems.\npackage signal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n)\n\n// CatchAll catches all signals and relays them to the specified channel.\nfunc CatchAll(sigc chan os.Signal) {\n\thandledSigs := []os.Signal{}\n\tfor _, s := range SignalMap {\n\t\thandledSigs = append(handledSigs, s)\n\t}\n\tsignal.Notify(sigc, handledSigs...)\n}\n\n// StopCatch stops catching the signals and closes the specified channel.\nfunc StopCatch(sigc chan os.Signal) {\n\tsignal.Stop(sigc)\n\tclose(sigc)\n}\n\n// ParseSignal translates a string to a valid syscall signal.\n// It returns an error if the signal map doesn't include the given signal.\nfunc ParseSignal(rawSignal string) (syscall.Signal, error) {\n\ts, err := strconv.Atoi(rawSignal)\n\tif err == nil {\n\t\tif s == 0 {\n\t\t\treturn -1, fmt.Errorf(\"Invalid signal: %s\", rawSignal)\n\t\t}\n\t\treturn syscall.Signal(s), nil\n\t}\n\tsignal, ok := SignalMap[strings.TrimPrefix(strings.ToUpper(rawSignal), \"SIG\")]\n\tif !ok {\n\t\treturn -1, fmt.Errorf(\"Invalid signal: %s\", rawSignal)\n\t}\n\treturn signal, nil\n}\n\n// ValidSignalForPlatform returns true if a signal is valid on the platform\nfunc ValidSignalForPlatform(sig syscall.Signal) bool {\n\tfor _, v := range SignalMap {\n\t\tif v == sig {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal_darwin.go",
    "content": "package signal\n\nimport (\n\t\"syscall\"\n)\n\n// SignalMap is a map of Darwin signals.\nvar SignalMap = map[string]syscall.Signal{\n\t\"ABRT\":   syscall.SIGABRT,\n\t\"ALRM\":   syscall.SIGALRM,\n\t\"BUG\":    syscall.SIGBUS,\n\t\"CHLD\":   syscall.SIGCHLD,\n\t\"CONT\":   syscall.SIGCONT,\n\t\"EMT\":    syscall.SIGEMT,\n\t\"FPE\":    syscall.SIGFPE,\n\t\"HUP\":    syscall.SIGHUP,\n\t\"ILL\":    syscall.SIGILL,\n\t\"INFO\":   syscall.SIGINFO,\n\t\"INT\":    syscall.SIGINT,\n\t\"IO\":     syscall.SIGIO,\n\t\"IOT\":    syscall.SIGIOT,\n\t\"KILL\":   syscall.SIGKILL,\n\t\"PIPE\":   syscall.SIGPIPE,\n\t\"PROF\":   syscall.SIGPROF,\n\t\"QUIT\":   syscall.SIGQUIT,\n\t\"SEGV\":   syscall.SIGSEGV,\n\t\"STOP\":   syscall.SIGSTOP,\n\t\"SYS\":    syscall.SIGSYS,\n\t\"TERM\":   syscall.SIGTERM,\n\t\"TRAP\":   syscall.SIGTRAP,\n\t\"TSTP\":   syscall.SIGTSTP,\n\t\"TTIN\":   syscall.SIGTTIN,\n\t\"TTOU\":   syscall.SIGTTOU,\n\t\"URG\":    syscall.SIGURG,\n\t\"USR1\":   syscall.SIGUSR1,\n\t\"USR2\":   syscall.SIGUSR2,\n\t\"VTALRM\": syscall.SIGVTALRM,\n\t\"WINCH\":  syscall.SIGWINCH,\n\t\"XCPU\":   syscall.SIGXCPU,\n\t\"XFSZ\":   syscall.SIGXFSZ,\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal_freebsd.go",
    "content": "package signal\n\nimport (\n\t\"syscall\"\n)\n\n// SignalMap is a map of FreeBSD signals.\nvar SignalMap = map[string]syscall.Signal{\n\t\"ABRT\":   syscall.SIGABRT,\n\t\"ALRM\":   syscall.SIGALRM,\n\t\"BUF\":    syscall.SIGBUS,\n\t\"CHLD\":   syscall.SIGCHLD,\n\t\"CONT\":   syscall.SIGCONT,\n\t\"EMT\":    syscall.SIGEMT,\n\t\"FPE\":    syscall.SIGFPE,\n\t\"HUP\":    syscall.SIGHUP,\n\t\"ILL\":    syscall.SIGILL,\n\t\"INFO\":   syscall.SIGINFO,\n\t\"INT\":    syscall.SIGINT,\n\t\"IO\":     syscall.SIGIO,\n\t\"IOT\":    syscall.SIGIOT,\n\t\"KILL\":   syscall.SIGKILL,\n\t\"LWP\":    syscall.SIGLWP,\n\t\"PIPE\":   syscall.SIGPIPE,\n\t\"PROF\":   syscall.SIGPROF,\n\t\"QUIT\":   syscall.SIGQUIT,\n\t\"SEGV\":   syscall.SIGSEGV,\n\t\"STOP\":   syscall.SIGSTOP,\n\t\"SYS\":    syscall.SIGSYS,\n\t\"TERM\":   syscall.SIGTERM,\n\t\"THR\":    syscall.SIGTHR,\n\t\"TRAP\":   syscall.SIGTRAP,\n\t\"TSTP\":   syscall.SIGTSTP,\n\t\"TTIN\":   syscall.SIGTTIN,\n\t\"TTOU\":   syscall.SIGTTOU,\n\t\"URG\":    syscall.SIGURG,\n\t\"USR1\":   syscall.SIGUSR1,\n\t\"USR2\":   syscall.SIGUSR2,\n\t\"VTALRM\": syscall.SIGVTALRM,\n\t\"WINCH\":  syscall.SIGWINCH,\n\t\"XCPU\":   syscall.SIGXCPU,\n\t\"XFSZ\":   syscall.SIGXFSZ,\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal_linux.go",
    "content": "package signal\n\nimport (\n\t\"syscall\"\n)\n\nconst (\n\tsigrtmin = 34\n\tsigrtmax = 64\n)\n\n// SignalMap is a map of Linux signals.\nvar SignalMap = map[string]syscall.Signal{\n\t\"ABRT\":     syscall.SIGABRT,\n\t\"ALRM\":     syscall.SIGALRM,\n\t\"BUS\":      syscall.SIGBUS,\n\t\"CHLD\":     syscall.SIGCHLD,\n\t\"CLD\":      syscall.SIGCLD,\n\t\"CONT\":     syscall.SIGCONT,\n\t\"FPE\":      syscall.SIGFPE,\n\t\"HUP\":      syscall.SIGHUP,\n\t\"ILL\":      syscall.SIGILL,\n\t\"INT\":      syscall.SIGINT,\n\t\"IO\":       syscall.SIGIO,\n\t\"IOT\":      syscall.SIGIOT,\n\t\"KILL\":     syscall.SIGKILL,\n\t\"PIPE\":     syscall.SIGPIPE,\n\t\"POLL\":     syscall.SIGPOLL,\n\t\"PROF\":     syscall.SIGPROF,\n\t\"PWR\":      syscall.SIGPWR,\n\t\"QUIT\":     syscall.SIGQUIT,\n\t\"SEGV\":     syscall.SIGSEGV,\n\t\"STKFLT\":   syscall.SIGSTKFLT,\n\t\"STOP\":     syscall.SIGSTOP,\n\t\"SYS\":      syscall.SIGSYS,\n\t\"TERM\":     syscall.SIGTERM,\n\t\"TRAP\":     syscall.SIGTRAP,\n\t\"TSTP\":     syscall.SIGTSTP,\n\t\"TTIN\":     syscall.SIGTTIN,\n\t\"TTOU\":     syscall.SIGTTOU,\n\t\"UNUSED\":   syscall.SIGUNUSED,\n\t\"URG\":      syscall.SIGURG,\n\t\"USR1\":     syscall.SIGUSR1,\n\t\"USR2\":     syscall.SIGUSR2,\n\t\"VTALRM\":   syscall.SIGVTALRM,\n\t\"WINCH\":    syscall.SIGWINCH,\n\t\"XCPU\":     syscall.SIGXCPU,\n\t\"XFSZ\":     syscall.SIGXFSZ,\n\t\"RTMIN\":    sigrtmin,\n\t\"RTMIN+1\":  sigrtmin + 1,\n\t\"RTMIN+2\":  sigrtmin + 2,\n\t\"RTMIN+3\":  sigrtmin + 3,\n\t\"RTMIN+4\":  sigrtmin + 4,\n\t\"RTMIN+5\":  sigrtmin + 5,\n\t\"RTMIN+6\":  sigrtmin + 6,\n\t\"RTMIN+7\":  sigrtmin + 7,\n\t\"RTMIN+8\":  sigrtmin + 8,\n\t\"RTMIN+9\":  sigrtmin + 9,\n\t\"RTMIN+10\": sigrtmin + 10,\n\t\"RTMIN+11\": sigrtmin + 11,\n\t\"RTMIN+12\": sigrtmin + 12,\n\t\"RTMIN+13\": sigrtmin + 13,\n\t\"RTMIN+14\": sigrtmin + 14,\n\t\"RTMIN+15\": sigrtmin + 15,\n\t\"RTMAX-14\": sigrtmax - 14,\n\t\"RTMAX-13\": sigrtmax - 13,\n\t\"RTMAX-12\": sigrtmax - 12,\n\t\"RTMAX-11\": sigrtmax - 11,\n\t\"RTMAX-10\": sigrtmax - 10,\n\t\"RTMAX-9\":  sigrtmax - 9,\n\t\"RTMAX-8\":  sigrtmax - 8,\n\t\"RTMAX-7\":  sigrtmax - 7,\n\t\"RTMAX-6\":  sigrtmax - 6,\n\t\"RTMAX-5\":  sigrtmax - 5,\n\t\"RTMAX-4\":  sigrtmax - 4,\n\t\"RTMAX-3\":  sigrtmax - 3,\n\t\"RTMAX-2\":  sigrtmax - 2,\n\t\"RTMAX-1\":  sigrtmax - 1,\n\t\"RTMAX\":    sigrtmax,\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal_unix.go",
    "content": "// +build !windows\n\npackage signal\n\nimport (\n\t\"syscall\"\n)\n\n// Signals used in api/client (no windows equivalent, use\n// invalid signals so they don't get handled)\n\nconst (\n\t// SIGCHLD is a signal sent to a process when a child process terminates, is interrupted, or resumes after being interrupted.\n\tSIGCHLD = syscall.SIGCHLD\n\t// SIGWINCH is a signal sent to a process when its controlling terminal changes its size\n\tSIGWINCH = syscall.SIGWINCH\n\t// SIGPIPE is a signal sent to a process when a pipe is written to before the other end is open for reading\n\tSIGPIPE = syscall.SIGPIPE\n\t// DefaultStopSignal is the syscall signal used to stop a container in unix systems.\n\tDefaultStopSignal = \"SIGTERM\"\n)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/signal_unsupported.go",
    "content": "// +build !linux,!darwin,!freebsd,!windows\n\npackage signal\n\nimport (\n\t\"syscall\"\n)\n\n// SignalMap is an empty map of signals for unsupported platform.\nvar SignalMap = map[string]syscall.Signal{}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/signal/trap.go",
    "content": "package signal\n\nimport (\n\t\"os\"\n\tgosignal \"os/signal\"\n\t\"runtime\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Trap sets up a simplified signal \"trap\", appropriate for common\n// behavior expected from a vanilla unix command-line tool in general\n// (and the Docker engine in particular).\n//\n// * If SIGINT or SIGTERM are received, `cleanup` is called, then the process is terminated.\n// * If SIGINT or SIGTERM are received 3 times before cleanup is complete, then cleanup is\n//   skipped and the process is terminated immediately (allows force quit of stuck daemon)\n// * A SIGQUIT always causes an exit without cleanup, with a goroutine dump preceding exit.\n//\nfunc Trap(cleanup func()) {\n\tc := make(chan os.Signal, 1)\n\t// we will handle INT, TERM, QUIT here\n\tsignals := []os.Signal{os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT}\n\tgosignal.Notify(c, signals...)\n\tgo func() {\n\t\tinterruptCount := uint32(0)\n\t\tfor sig := range c {\n\t\t\tgo func(sig os.Signal) {\n\t\t\t\tlogrus.Infof(\"Processing signal '%v'\", sig)\n\t\t\t\tswitch sig {\n\t\t\t\tcase os.Interrupt, syscall.SIGTERM:\n\t\t\t\t\tif atomic.LoadUint32(&interruptCount) < 3 {\n\t\t\t\t\t\t// Initiate the cleanup only once\n\t\t\t\t\t\tif atomic.AddUint32(&interruptCount, 1) == 1 {\n\t\t\t\t\t\t\t// Call the provided cleanup handler\n\t\t\t\t\t\t\tcleanup()\n\t\t\t\t\t\t\tos.Exit(0)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// 3 SIGTERM/INT signals received; force exit without cleanup\n\t\t\t\t\t\tlogrus.Infof(\"Forcing docker daemon shutdown without cleanup; 3 interrupts received\")\n\t\t\t\t\t}\n\t\t\t\tcase syscall.SIGQUIT:\n\t\t\t\t\tDumpStacks()\n\t\t\t\t\tlogrus.Infof(\"Forcing docker daemon shutdown without cleanup on SIGQUIT\")\n\t\t\t\t}\n\t\t\t\t//for the SIGINT/TERM, and SIGQUIT non-clean shutdown case, exit with 128 + signal #\n\t\t\t\tos.Exit(128 + int(sig.(syscall.Signal)))\n\t\t\t}(sig)\n\t\t}\n\t}()\n}\n\n// DumpStacks dumps the runtime stack.\nfunc DumpStacks() {\n\tvar (\n\t\tbuf       []byte\n\t\tstackSize int\n\t)\n\tbufferLen := 16384\n\tfor stackSize == len(buf) {\n\t\tbuf = make([]byte, bufferLen)\n\t\tstackSize = runtime.Stack(buf, true)\n\t\tbufferLen *= 2\n\t}\n\tbuf = buf[:stackSize]\n\t// Note that if the daemon is started with a less-verbose log-level than \"info\" (the default), the goroutine\n\t// traces won't show up in the log.\n\tlogrus.Infof(\"=== BEGIN goroutine stack dump ===\\n%s\\n=== END goroutine stack dump ===\", buf)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/stdcopy/stdcopy.go",
    "content": "package stdcopy\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// StdType is the type of standard stream\n// a writer can multiplex to.\ntype StdType byte\n\nconst (\n\t// Stdin represents standard input stream type.\n\tStdin StdType = iota\n\t// Stdout represents standard output stream type.\n\tStdout\n\t// Stderr represents standard error steam type.\n\tStderr\n\n\tstdWriterPrefixLen = 8\n\tstdWriterFdIndex   = 0\n\tstdWriterSizeIndex = 4\n\n\tstartingBufLen = 32*1024 + stdWriterPrefixLen + 1\n)\n\n// stdWriter is wrapper of io.Writer with extra customized info.\ntype stdWriter struct {\n\tio.Writer\n\tprefix byte\n}\n\n// Write sends the buffer to the underneath writer.\n// It insert the prefix header before the buffer,\n// so stdcopy.StdCopy knows where to multiplex the output.\n// It makes stdWriter to implement io.Writer.\nfunc (w *stdWriter) Write(buf []byte) (n int, err error) {\n\tif w == nil || w.Writer == nil {\n\t\treturn 0, errors.New(\"Writer not instantiated\")\n\t}\n\tif buf == nil {\n\t\treturn 0, nil\n\t}\n\n\theader := [stdWriterPrefixLen]byte{stdWriterFdIndex: w.prefix}\n\tbinary.BigEndian.PutUint32(header[stdWriterSizeIndex:], uint32(len(buf)))\n\n\tline := append(header[:], buf...)\n\n\tn, err = w.Writer.Write(line)\n\tn -= stdWriterPrefixLen\n\n\tif n < 0 {\n\t\tn = 0\n\t}\n\treturn\n}\n\n// NewStdWriter instantiates a new Writer.\n// Everything written to it will be encapsulated using a custom format,\n// and written to the underlying `w` stream.\n// This allows multiple write streams (e.g. stdout and stderr) to be muxed into a single connection.\n// `t` indicates the id of the stream to encapsulate.\n// It can be stdcopy.Stdin, stdcopy.Stdout, stdcopy.Stderr.\nfunc NewStdWriter(w io.Writer, t StdType) io.Writer {\n\treturn &stdWriter{\n\t\tWriter: w,\n\t\tprefix: byte(t),\n\t}\n}\n\n// StdCopy is a modified version of io.Copy.\n//\n// StdCopy will demultiplex `src`, assuming that it contains two streams,\n// previously multiplexed together using a StdWriter instance.\n// As it reads from `src`, StdCopy will write to `dstout` and `dsterr`.\n//\n// StdCopy will read until it hits EOF on `src`. It will then return a nil error.\n// In other words: if `err` is non nil, it indicates a real underlying error.\n//\n// `written` will hold the total number of bytes written to `dstout` and `dsterr`.\nfunc StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error) {\n\tvar (\n\t\tbuf       = make([]byte, startingBufLen)\n\t\tbufLen    = len(buf)\n\t\tnr, nw    int\n\t\ter, ew    error\n\t\tout       io.Writer\n\t\tframeSize int\n\t)\n\n\tfor {\n\t\t// Make sure we have at least a full header\n\t\tfor nr < stdWriterPrefixLen {\n\t\t\tvar nr2 int\n\t\t\tnr2, er = src.Read(buf[nr:])\n\t\t\tnr += nr2\n\t\t\tif er == io.EOF {\n\t\t\t\tif nr < stdWriterPrefixLen {\n\t\t\t\t\tlogrus.Debugf(\"Corrupted prefix: %v\", buf[:nr])\n\t\t\t\t\treturn written, nil\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif er != nil {\n\t\t\t\tlogrus.Debugf(\"Error reading header: %s\", er)\n\t\t\t\treturn 0, er\n\t\t\t}\n\t\t}\n\n\t\t// Check the first byte to know where to write\n\t\tswitch StdType(buf[stdWriterFdIndex]) {\n\t\tcase Stdin:\n\t\t\tfallthrough\n\t\tcase Stdout:\n\t\t\t// Write on stdout\n\t\t\tout = dstout\n\t\tcase Stderr:\n\t\t\t// Write on stderr\n\t\t\tout = dsterr\n\t\tdefault:\n\t\t\tlogrus.Debugf(\"Error selecting output fd: (%d)\", buf[stdWriterFdIndex])\n\t\t\treturn 0, fmt.Errorf(\"Unrecognized input header: %d\", buf[stdWriterFdIndex])\n\t\t}\n\n\t\t// Retrieve the size of the frame\n\t\tframeSize = int(binary.BigEndian.Uint32(buf[stdWriterSizeIndex : stdWriterSizeIndex+4]))\n\t\tlogrus.Debugf(\"framesize: %d\", frameSize)\n\n\t\t// Check if the buffer is big enough to read the frame.\n\t\t// Extend it if necessary.\n\t\tif frameSize+stdWriterPrefixLen > bufLen {\n\t\t\tlogrus.Debugf(\"Extending buffer cap by %d (was %d)\", frameSize+stdWriterPrefixLen-bufLen+1, len(buf))\n\t\t\tbuf = append(buf, make([]byte, frameSize+stdWriterPrefixLen-bufLen+1)...)\n\t\t\tbufLen = len(buf)\n\t\t}\n\n\t\t// While the amount of bytes read is less than the size of the frame + header, we keep reading\n\t\tfor nr < frameSize+stdWriterPrefixLen {\n\t\t\tvar nr2 int\n\t\t\tnr2, er = src.Read(buf[nr:])\n\t\t\tnr += nr2\n\t\t\tif er == io.EOF {\n\t\t\t\tif nr < frameSize+stdWriterPrefixLen {\n\t\t\t\t\tlogrus.Debugf(\"Corrupted frame: %v\", buf[stdWriterPrefixLen:nr])\n\t\t\t\t\treturn written, nil\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif er != nil {\n\t\t\t\tlogrus.Debugf(\"Error reading frame: %s\", er)\n\t\t\t\treturn 0, er\n\t\t\t}\n\t\t}\n\n\t\t// Write the retrieved frame (without header)\n\t\tnw, ew = out.Write(buf[stdWriterPrefixLen : frameSize+stdWriterPrefixLen])\n\t\tif ew != nil {\n\t\t\tlogrus.Debugf(\"Error writing frame: %s\", ew)\n\t\t\treturn 0, ew\n\t\t}\n\t\t// If the frame has not been fully written: error\n\t\tif nw != frameSize {\n\t\t\tlogrus.Debugf(\"Error Short Write: (%d on %d)\", nw, frameSize)\n\t\t\treturn 0, io.ErrShortWrite\n\t\t}\n\t\twritten += int64(nw)\n\n\t\t// Move the rest of the buffer to the beginning\n\t\tcopy(buf, buf[frameSize+stdWriterPrefixLen:])\n\t\t// Move the index\n\t\tnr -= frameSize + stdWriterPrefixLen\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go",
    "content": "// Package streamformatter provides helper functions to format a stream.\npackage streamformatter\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/docker/docker/pkg/jsonmessage\"\n\t\"github.com/docker/docker/pkg/progress\"\n)\n\n// StreamFormatter formats a stream, optionally using JSON.\ntype StreamFormatter struct {\n\tjson bool\n}\n\n// NewStreamFormatter returns a simple StreamFormatter\nfunc NewStreamFormatter() *StreamFormatter {\n\treturn &StreamFormatter{}\n}\n\n// NewJSONStreamFormatter returns a StreamFormatter configured to stream json\nfunc NewJSONStreamFormatter() *StreamFormatter {\n\treturn &StreamFormatter{true}\n}\n\nconst streamNewline = \"\\r\\n\"\n\nvar streamNewlineBytes = []byte(streamNewline)\n\n// FormatStream formats the specified stream.\nfunc (sf *StreamFormatter) FormatStream(str string) []byte {\n\tif sf.json {\n\t\tb, err := json.Marshal(&jsonmessage.JSONMessage{Stream: str})\n\t\tif err != nil {\n\t\t\treturn sf.FormatError(err)\n\t\t}\n\t\treturn append(b, streamNewlineBytes...)\n\t}\n\treturn []byte(str + \"\\r\")\n}\n\n// FormatStatus formats the specified objects according to the specified format (and id).\nfunc (sf *StreamFormatter) FormatStatus(id, format string, a ...interface{}) []byte {\n\tstr := fmt.Sprintf(format, a...)\n\tif sf.json {\n\t\tb, err := json.Marshal(&jsonmessage.JSONMessage{ID: id, Status: str})\n\t\tif err != nil {\n\t\t\treturn sf.FormatError(err)\n\t\t}\n\t\treturn append(b, streamNewlineBytes...)\n\t}\n\treturn []byte(str + streamNewline)\n}\n\n// FormatError formats the specified error.\nfunc (sf *StreamFormatter) FormatError(err error) []byte {\n\tif sf.json {\n\t\tjsonError, ok := err.(*jsonmessage.JSONError)\n\t\tif !ok {\n\t\t\tjsonError = &jsonmessage.JSONError{Message: err.Error()}\n\t\t}\n\t\tif b, err := json.Marshal(&jsonmessage.JSONMessage{Error: jsonError, ErrorMessage: err.Error()}); err == nil {\n\t\t\treturn append(b, streamNewlineBytes...)\n\t\t}\n\t\treturn []byte(\"{\\\"error\\\":\\\"format error\\\"}\" + streamNewline)\n\t}\n\treturn []byte(\"Error: \" + err.Error() + streamNewline)\n}\n\n// FormatProgress formats the progress information for a specified action.\nfunc (sf *StreamFormatter) FormatProgress(id, action string, progress *jsonmessage.JSONProgress, aux interface{}) []byte {\n\tif progress == nil {\n\t\tprogress = &jsonmessage.JSONProgress{}\n\t}\n\tif sf.json {\n\t\tvar auxJSON *json.RawMessage\n\t\tif aux != nil {\n\t\t\tauxJSONBytes, err := json.Marshal(aux)\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tauxJSON = new(json.RawMessage)\n\t\t\t*auxJSON = auxJSONBytes\n\t\t}\n\t\tb, err := json.Marshal(&jsonmessage.JSONMessage{\n\t\t\tStatus:          action,\n\t\t\tProgressMessage: progress.String(),\n\t\t\tProgress:        progress,\n\t\t\tID:              id,\n\t\t\tAux:             auxJSON,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn append(b, streamNewlineBytes...)\n\t}\n\tendl := \"\\r\"\n\tif progress.String() == \"\" {\n\t\tendl += \"\\n\"\n\t}\n\treturn []byte(action + \" \" + progress.String() + endl)\n}\n\n// NewProgressOutput returns a progress.Output object that can be passed to\n// progress.NewProgressReader.\nfunc (sf *StreamFormatter) NewProgressOutput(out io.Writer, newLines bool) progress.Output {\n\treturn &progressOutput{\n\t\tsf:       sf,\n\t\tout:      out,\n\t\tnewLines: newLines,\n\t}\n}\n\ntype progressOutput struct {\n\tsf       *StreamFormatter\n\tout      io.Writer\n\tnewLines bool\n}\n\n// WriteProgress formats progress information from a ProgressReader.\nfunc (out *progressOutput) WriteProgress(prog progress.Progress) error {\n\tvar formatted []byte\n\tif prog.Message != \"\" {\n\t\tformatted = out.sf.FormatStatus(prog.ID, prog.Message)\n\t} else {\n\t\tjsonProgress := jsonmessage.JSONProgress{Current: prog.Current, Total: prog.Total}\n\t\tformatted = out.sf.FormatProgress(prog.ID, prog.Action, &jsonProgress, prog.Aux)\n\t}\n\t_, err := out.out.Write(formatted)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif out.newLines && prog.LastUpdate {\n\t\t_, err = out.out.Write(out.sf.FormatStatus(\"\", \"\"))\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// StdoutFormatter is a streamFormatter that writes to the standard output.\ntype StdoutFormatter struct {\n\tio.Writer\n\t*StreamFormatter\n}\n\nfunc (sf *StdoutFormatter) Write(buf []byte) (int, error) {\n\tformattedBuf := sf.StreamFormatter.FormatStream(string(buf))\n\tn, err := sf.Writer.Write(formattedBuf)\n\tif n != len(formattedBuf) {\n\t\treturn n, io.ErrShortWrite\n\t}\n\treturn len(buf), err\n}\n\n// StderrFormatter is a streamFormatter that writes to the standard error.\ntype StderrFormatter struct {\n\tio.Writer\n\t*StreamFormatter\n}\n\nfunc (sf *StderrFormatter) Write(buf []byte) (int, error) {\n\tformattedBuf := sf.StreamFormatter.FormatStream(\"\\033[91m\" + string(buf) + \"\\033[0m\")\n\tn, err := sf.Writer.Write(formattedBuf)\n\tif n != len(formattedBuf) {\n\t\treturn n, io.ErrShortWrite\n\t}\n\treturn len(buf), err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/stringid/README.md",
    "content": "This package provides helper functions for dealing with string identifiers\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/stringid/stringid.go",
    "content": "// Package stringid provides helper functions for dealing with string identifiers\npackage stringid\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/hex\"\n\t\"io\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/random\"\n)\n\nconst shortLen = 12\n\nvar validShortID = regexp.MustCompile(\"^[a-z0-9]{12}$\")\n\n// IsShortID determines if an arbitrary string *looks like* a short ID.\nfunc IsShortID(id string) bool {\n\treturn validShortID.MatchString(id)\n}\n\n// TruncateID returns a shorthand version of a string identifier for convenience.\n// A collision with other shorthands is very unlikely, but possible.\n// In case of a collision a lookup with TruncIndex.Get() will fail, and the caller\n// will need to use a langer prefix, or the full-length Id.\nfunc TruncateID(id string) string {\n\tif i := strings.IndexRune(id, ':'); i >= 0 {\n\t\tid = id[i+1:]\n\t}\n\ttrimTo := shortLen\n\tif len(id) < shortLen {\n\t\ttrimTo = len(id)\n\t}\n\treturn id[:trimTo]\n}\n\nfunc generateID(crypto bool) string {\n\tb := make([]byte, 32)\n\tr := random.Reader\n\tif crypto {\n\t\tr = rand.Reader\n\t}\n\tfor {\n\t\tif _, err := io.ReadFull(r, b); err != nil {\n\t\t\tpanic(err) // This shouldn't happen\n\t\t}\n\t\tid := hex.EncodeToString(b)\n\t\t// if we try to parse the truncated for as an int and we don't have\n\t\t// an error then the value is all numeric and causes issues when\n\t\t// used as a hostname. ref #3869\n\t\tif _, err := strconv.ParseInt(TruncateID(id), 10, 64); err == nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn id\n\t}\n}\n\n// GenerateRandomID returns an unique id.\nfunc GenerateRandomID() string {\n\treturn generateID(true)\n\n}\n\n// GenerateNonCryptoID generates unique id without using cryptographically\n// secure sources of random.\n// It helps you to save entropy.\nfunc GenerateNonCryptoID() string {\n\treturn generateID(false)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE",
    "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   Copyright 2014-2016 Docker, Inc.\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/docker/docker/pkg/symlink/LICENSE.BSD",
    "content": "Copyright (c) 2014-2016 The Docker & 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/docker/docker/pkg/symlink/README.md",
    "content": "Package symlink implements EvalSymlinksInScope which is an extension of filepath.EvalSymlinks,\nas well as a Windows long-path aware version of filepath.EvalSymlinks\nfrom the [Go standard library](https://golang.org/pkg/path/filepath).\n\nThe code from filepath.EvalSymlinks has been adapted in fs.go.\nPlease read the LICENSE.BSD file that governs fs.go and LICENSE.APACHE for fs_test.go.\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/symlink/fs.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.BSD file.\n\n// This code is a modified version of path/filepath/symlink.go from the Go standard library.\n\npackage symlink\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/pkg/system\"\n)\n\n// FollowSymlinkInScope is a wrapper around evalSymlinksInScope that returns an\n// absolute path. This function handles paths in a platform-agnostic manner.\nfunc FollowSymlinkInScope(path, root string) (string, error) {\n\tpath, err := filepath.Abs(filepath.FromSlash(path))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\troot, err = filepath.Abs(filepath.FromSlash(root))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn evalSymlinksInScope(path, root)\n}\n\n// evalSymlinksInScope will evaluate symlinks in `path` within a scope `root` and return\n// a result guaranteed to be contained within the scope `root`, at the time of the call.\n// Symlinks in `root` are not evaluated and left as-is.\n// Errors encountered while attempting to evaluate symlinks in path will be returned.\n// Non-existing paths are valid and do not constitute an error.\n// `path` has to contain `root` as a prefix, or else an error will be returned.\n// Trying to break out from `root` does not constitute an error.\n//\n// Example:\n//   If /foo/bar -> /outside,\n//   FollowSymlinkInScope(\"/foo/bar\", \"/foo\") == \"/foo/outside\" instead of \"/oustide\"\n//\n// IMPORTANT: it is the caller's responsibility to call evalSymlinksInScope *after* relevant symlinks\n// are created and not to create subsequently, additional symlinks that could potentially make a\n// previously-safe path, unsafe. Example: if /foo/bar does not exist, evalSymlinksInScope(\"/foo/bar\", \"/foo\")\n// would return \"/foo/bar\". If one makes /foo/bar a symlink to /baz subsequently, then \"/foo/bar\" should\n// no longer be considered safely contained in \"/foo\".\nfunc evalSymlinksInScope(path, root string) (string, error) {\n\troot = filepath.Clean(root)\n\tif path == root {\n\t\treturn path, nil\n\t}\n\tif !strings.HasPrefix(path, root) {\n\t\treturn \"\", errors.New(\"evalSymlinksInScope: \" + path + \" is not in \" + root)\n\t}\n\tconst maxIter = 255\n\toriginalPath := path\n\t// given root of \"/a\" and path of \"/a/b/../../c\" we want path to be \"/b/../../c\"\n\tpath = path[len(root):]\n\tif root == string(filepath.Separator) {\n\t\tpath = string(filepath.Separator) + path\n\t}\n\tif !strings.HasPrefix(path, string(filepath.Separator)) {\n\t\treturn \"\", errors.New(\"evalSymlinksInScope: \" + path + \" is not in \" + root)\n\t}\n\tpath = filepath.Clean(path)\n\t// consume path by taking each frontmost path element,\n\t// expanding it if it's a symlink, and appending it to b\n\tvar b bytes.Buffer\n\t// b here will always be considered to be the \"current absolute path inside\n\t// root\" when we append paths to it, we also append a slash and use\n\t// filepath.Clean after the loop to trim the trailing slash\n\tfor n := 0; path != \"\"; n++ {\n\t\tif n > maxIter {\n\t\t\treturn \"\", errors.New(\"evalSymlinksInScope: too many links in \" + originalPath)\n\t\t}\n\n\t\t// find next path component, p\n\t\ti := strings.IndexRune(path, filepath.Separator)\n\t\tvar p string\n\t\tif i == -1 {\n\t\t\tp, path = path, \"\"\n\t\t} else {\n\t\t\tp, path = path[:i], path[i+1:]\n\t\t}\n\n\t\tif p == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// this takes a b.String() like \"b/../\" and a p like \"c\" and turns it\n\t\t// into \"/b/../c\" which then gets filepath.Cleaned into \"/c\" and then\n\t\t// root gets prepended and we Clean again (to remove any trailing slash\n\t\t// if the first Clean gave us just \"/\")\n\t\tcleanP := filepath.Clean(string(filepath.Separator) + b.String() + p)\n\t\tif cleanP == string(filepath.Separator) {\n\t\t\t// never Lstat \"/\" itself\n\t\t\tb.Reset()\n\t\t\tcontinue\n\t\t}\n\t\tfullP := filepath.Clean(root + cleanP)\n\n\t\tfi, err := os.Lstat(fullP)\n\t\tif os.IsNotExist(err) {\n\t\t\t// if p does not exist, accept it\n\t\t\tb.WriteString(p)\n\t\t\tb.WriteRune(filepath.Separator)\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif fi.Mode()&os.ModeSymlink == 0 {\n\t\t\tb.WriteString(p + string(filepath.Separator))\n\t\t\tcontinue\n\t\t}\n\n\t\t// it's a symlink, put it at the front of path\n\t\tdest, err := os.Readlink(fullP)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif system.IsAbs(dest) {\n\t\t\tb.Reset()\n\t\t}\n\t\tpath = dest + string(filepath.Separator) + path\n\t}\n\n\t// see note above on \"fullP := ...\" for why this is double-cleaned and\n\t// what's happening here\n\treturn filepath.Clean(root + filepath.Clean(string(filepath.Separator)+b.String())), nil\n}\n\n// EvalSymlinks returns the path name after the evaluation of any symbolic\n// links.\n// If path is relative the result will be relative to the current directory,\n// unless one of the components is an absolute symbolic link.\n// This version has been updated to support long paths prepended with `\\\\?\\`.\nfunc EvalSymlinks(path string) (string, error) {\n\treturn evalSymlinks(path)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/symlink/fs_unix.go",
    "content": "// +build !windows\n\npackage symlink\n\nimport (\n\t\"path/filepath\"\n)\n\nfunc evalSymlinks(path string) (string, error) {\n\treturn filepath.EvalSymlinks(path)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/chtimes.go",
    "content": "package system\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\nvar (\n\tmaxTime time.Time\n)\n\nfunc init() {\n\tif unsafe.Sizeof(syscall.Timespec{}.Nsec) == 8 {\n\t\t// This is a 64 bit timespec\n\t\t// os.Chtimes limits time to the following\n\t\tmaxTime = time.Unix(0, 1<<63-1)\n\t} else {\n\t\t// This is a 32 bit timespec\n\t\tmaxTime = time.Unix(1<<31-1, 0)\n\t}\n}\n\n// Chtimes changes the access time and modified time of a file at the given path\nfunc Chtimes(name string, atime time.Time, mtime time.Time) error {\n\tunixMinTime := time.Unix(0, 0)\n\tunixMaxTime := maxTime\n\n\t// If the modified time is prior to the Unix Epoch, or after the\n\t// end of Unix Time, os.Chtimes has undefined behavior\n\t// default to Unix Epoch in this case, just in case\n\n\tif atime.Before(unixMinTime) || atime.After(unixMaxTime) {\n\t\tatime = unixMinTime\n\t}\n\n\tif mtime.Before(unixMinTime) || mtime.After(unixMaxTime) {\n\t\tmtime = unixMinTime\n\t}\n\n\tif err := os.Chtimes(name, atime, mtime); err != nil {\n\t\treturn err\n\t}\n\n\t// Take platform specific action for setting create time.\n\tif err := setCTime(name, mtime); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/chtimes_unix.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"time\"\n)\n\n//setCTime will set the create time on a file. On Unix, the create\n//time is updated as a side effect of setting the modified time, so\n//no action is required.\nfunc setCTime(path string, ctime time.Time) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/errors.go",
    "content": "package system\n\nimport (\n\t\"errors\"\n)\n\nvar (\n\t// ErrNotSupportedPlatform means the platform is not supported.\n\tErrNotSupportedPlatform = errors.New(\"platform and architecture is not supported\")\n)\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/filesys.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// MkdirAll creates a directory named path along with any necessary parents,\n// with permission specified by attribute perm for all dir created.\nfunc MkdirAll(path string, perm os.FileMode) error {\n\treturn os.MkdirAll(path, perm)\n}\n\n// IsAbs is a platform-specific wrapper for filepath.IsAbs.\nfunc IsAbs(path string) bool {\n\treturn filepath.IsAbs(path)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/lstat.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// Lstat takes a path to a file and returns\n// a system.StatT type pertaining to that file.\n//\n// Throws an error if the file does not exist\nfunc Lstat(path string) (*StatT, error) {\n\ts := &syscall.Stat_t{}\n\tif err := syscall.Lstat(path, s); err != nil {\n\t\treturn nil, err\n\t}\n\treturn fromStatT(s)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/meminfo.go",
    "content": "package system\n\n// MemInfo contains memory statistics of the host system.\ntype MemInfo struct {\n\t// Total usable RAM (i.e. physical RAM minus a few reserved bits and the\n\t// kernel binary code).\n\tMemTotal int64\n\n\t// Amount of free memory.\n\tMemFree int64\n\n\t// Total amount of swap space available.\n\tSwapTotal int64\n\n\t// Amount of swap space that is currently unused.\n\tSwapFree int64\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/meminfo_linux.go",
    "content": "package system\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/go-units\"\n)\n\n// ReadMemInfo retrieves memory statistics of the host system and returns a\n// MemInfo type.\nfunc ReadMemInfo() (*MemInfo, error) {\n\tfile, err := os.Open(\"/proc/meminfo\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\treturn parseMemInfo(file)\n}\n\n// parseMemInfo parses the /proc/meminfo file into\n// a MemInfo object given an io.Reader to the file.\n// Throws error if there are problems reading from the file\nfunc parseMemInfo(reader io.Reader) (*MemInfo, error) {\n\tmeminfo := &MemInfo{}\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\t// Expected format: [\"MemTotal:\", \"1234\", \"kB\"]\n\t\tparts := strings.Fields(scanner.Text())\n\n\t\t// Sanity checks: Skip malformed entries.\n\t\tif len(parts) < 3 || parts[2] != \"kB\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Convert to bytes.\n\t\tsize, err := strconv.Atoi(parts[1])\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tbytes := int64(size) * units.KiB\n\n\t\tswitch parts[0] {\n\t\tcase \"MemTotal:\":\n\t\t\tmeminfo.MemTotal = bytes\n\t\tcase \"MemFree:\":\n\t\t\tmeminfo.MemFree = bytes\n\t\tcase \"SwapTotal:\":\n\t\t\tmeminfo.SwapTotal = bytes\n\t\tcase \"SwapFree:\":\n\t\t\tmeminfo.SwapFree = bytes\n\t\t}\n\n\t}\n\n\t// Handle errors that may have occurred during the reading of the file.\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn meminfo, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/meminfo_unsupported.go",
    "content": "// +build !linux,!windows\n\npackage system\n\n// ReadMemInfo is not supported on platforms other than linux and windows.\nfunc ReadMemInfo() (*MemInfo, error) {\n\treturn nil, ErrNotSupportedPlatform\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/mknod.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// Mknod creates a filesystem node (file, device special file or named pipe) named path\n// with attributes specified by mode and dev.\nfunc Mknod(path string, mode uint32, dev int) error {\n\treturn syscall.Mknod(path, mode, dev)\n}\n\n// Mkdev is used to build the value of linux devices (in /dev/) which specifies major\n// and minor number of the newly created device special file.\n// Linux device nodes are a bit weird due to backwards compat with 16 bit device nodes.\n// They are, from low to high: the lower 8 bits of the minor, then 12 bits of the major,\n// then the top 12 bits of the minor.\nfunc Mkdev(major int64, minor int64) uint32 {\n\treturn uint32(((minor & 0xfff00) << 12) | ((major & 0xfff) << 8) | (minor & 0xff))\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/path_unix.go",
    "content": "// +build !windows\n\npackage system\n\n// DefaultPathEnv is unix style list of directories to search for\n// executables. Each directory is separated from the next by a colon\n// ':' character .\nconst DefaultPathEnv = \"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// StatT type contains status of a file. It contains metadata\n// like permission, owner, group, size, etc about a file.\ntype StatT struct {\n\tmode uint32\n\tuid  uint32\n\tgid  uint32\n\trdev uint64\n\tsize int64\n\tmtim syscall.Timespec\n}\n\n// Mode returns file's permission mode.\nfunc (s StatT) Mode() uint32 {\n\treturn s.mode\n}\n\n// UID returns file's user id of owner.\nfunc (s StatT) UID() uint32 {\n\treturn s.uid\n}\n\n// GID returns file's group id of owner.\nfunc (s StatT) GID() uint32 {\n\treturn s.gid\n}\n\n// Rdev returns file's device ID (if it's special file).\nfunc (s StatT) Rdev() uint64 {\n\treturn s.rdev\n}\n\n// Size returns file's size.\nfunc (s StatT) Size() int64 {\n\treturn s.size\n}\n\n// Mtim returns file's last modification time.\nfunc (s StatT) Mtim() syscall.Timespec {\n\treturn s.mtim\n}\n\n// GetLastModification returns file's last modification time.\nfunc (s StatT) GetLastModification() syscall.Timespec {\n\treturn s.Mtim()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat_freebsd.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n)\n\n// fromStatT converts a syscall.Stat_t type to a system.Stat_t type\nfunc fromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn &StatT{size: s.Size,\n\t\tmode: uint32(s.Mode),\n\t\tuid:  s.Uid,\n\t\tgid:  s.Gid,\n\t\trdev: uint64(s.Rdev),\n\t\tmtim: s.Mtimespec}, nil\n}\n\n// Stat takes a path to a file and returns\n// a system.Stat_t type pertaining to that file.\n//\n// Throws an error if the file does not exist\nfunc Stat(path string) (*StatT, error) {\n\ts := &syscall.Stat_t{}\n\tif err := syscall.Stat(path, s); err != nil {\n\t\treturn nil, err\n\t}\n\treturn fromStatT(s)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat_linux.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n)\n\n// fromStatT converts a syscall.Stat_t type to a system.Stat_t type\nfunc fromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn &StatT{size: s.Size,\n\t\tmode: s.Mode,\n\t\tuid:  s.Uid,\n\t\tgid:  s.Gid,\n\t\trdev: s.Rdev,\n\t\tmtim: s.Mtim}, nil\n}\n\n// FromStatT exists only on linux, and loads a system.StatT from a\n// syscal.Stat_t.\nfunc FromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn fromStatT(s)\n}\n\n// Stat takes a path to a file and returns\n// a system.StatT type pertaining to that file.\n//\n// Throws an error if the file does not exist\nfunc Stat(path string) (*StatT, error) {\n\ts := &syscall.Stat_t{}\n\tif err := syscall.Stat(path, s); err != nil {\n\t\treturn nil, err\n\t}\n\treturn fromStatT(s)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat_openbsd.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n)\n\n// fromStatT creates a system.StatT type from a syscall.Stat_t type\nfunc fromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn &StatT{size: s.Size,\n\t\tmode: uint32(s.Mode),\n\t\tuid:  s.Uid,\n\t\tgid:  s.Gid,\n\t\trdev: uint64(s.Rdev),\n\t\tmtim: s.Mtim}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat_solaris.go",
    "content": "// +build solaris\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// fromStatT creates a system.StatT type from a syscall.Stat_t type\nfunc fromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn &StatT{size: s.Size,\n\t\tmode: uint32(s.Mode),\n\t\tuid:  s.Uid,\n\t\tgid:  s.Gid,\n\t\trdev: uint64(s.Rdev),\n\t\tmtim: s.Mtim}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/stat_unsupported.go",
    "content": "// +build !linux,!windows,!freebsd,!solaris,!openbsd\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// fromStatT creates a system.StatT type from a syscall.Stat_t type\nfunc fromStatT(s *syscall.Stat_t) (*StatT, error) {\n\treturn &StatT{size: s.Size,\n\t\tmode: uint32(s.Mode),\n\t\tuid:  s.Uid,\n\t\tgid:  s.Gid,\n\t\trdev: uint64(s.Rdev),\n\t\tmtim: s.Mtimespec}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/syscall_unix.go",
    "content": "// +build linux freebsd\n\npackage system\n\nimport \"syscall\"\n\n// Unmount is a platform-specific helper function to call\n// the unmount syscall.\nfunc Unmount(dest string) error {\n\treturn syscall.Unmount(dest, 0)\n}\n\n// CommandLineToArgv should not be used on Unix.\n// It simply returns commandLine in the only element in the returned array.\nfunc CommandLineToArgv(commandLine string) ([]string, error) {\n\treturn []string{commandLine}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/umask.go",
    "content": "// +build !windows\n\npackage system\n\nimport (\n\t\"syscall\"\n)\n\n// Umask sets current process's file mode creation mask to newmask\n// and return oldmask.\nfunc Umask(newmask int) (oldmask int, err error) {\n\treturn syscall.Umask(newmask), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/utimes_darwin.go",
    "content": "package system\n\nimport \"syscall\"\n\n// LUtimesNano is not supported by darwin platform.\nfunc LUtimesNano(path string, ts []syscall.Timespec) error {\n\treturn ErrNotSupportedPlatform\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/utimes_freebsd.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// LUtimesNano is used to change access and modification time of the specified path.\n// It's used for symbol link file because syscall.UtimesNano doesn't support a NOFOLLOW flag atm.\nfunc LUtimesNano(path string, ts []syscall.Timespec) error {\n\tvar _path *byte\n\t_path, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, _, err := syscall.Syscall(syscall.SYS_LUTIMES, uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), 0); err != 0 && err != syscall.ENOSYS {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/utimes_linux.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// LUtimesNano is used to change access and modification time of the specified path.\n// It's used for symbol link file because syscall.UtimesNano doesn't support a NOFOLLOW flag atm.\nfunc LUtimesNano(path string, ts []syscall.Timespec) error {\n\t// These are not currently available in syscall\n\tatFdCwd := -100\n\tatSymLinkNoFollow := 0x100\n\n\tvar _path *byte\n\t_path, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, _, err := syscall.Syscall6(syscall.SYS_UTIMENSAT, uintptr(atFdCwd), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), uintptr(atSymLinkNoFollow), 0, 0); err != 0 && err != syscall.ENOSYS {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go",
    "content": "// +build !linux,!freebsd,!darwin\n\npackage system\n\nimport \"syscall\"\n\n// LUtimesNano is not supported on platforms other than linux, freebsd and darwin.\nfunc LUtimesNano(path string, ts []syscall.Timespec) error {\n\treturn ErrNotSupportedPlatform\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/xattrs_linux.go",
    "content": "package system\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Lgetxattr retrieves the value of the extended attribute identified by attr\n// and associated with the given path in the file system.\n// It will returns a nil slice and nil error if the xattr is not set.\nfunc Lgetxattr(path string, attr string) ([]byte, error) {\n\tpathBytes, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tattrBytes, err := syscall.BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdest := make([]byte, 128)\n\tdestBytes := unsafe.Pointer(&dest[0])\n\tsz, _, errno := syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)\n\tif errno == syscall.ENODATA {\n\t\treturn nil, nil\n\t}\n\tif errno == syscall.ERANGE {\n\t\tdest = make([]byte, sz)\n\t\tdestBytes := unsafe.Pointer(&dest[0])\n\t\tsz, _, errno = syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)\n\t}\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\n\treturn dest[:sz], nil\n}\n\nvar _zero uintptr\n\n// Lsetxattr sets the value of the extended attribute identified by attr\n// and associated with the given path in the file system.\nfunc Lsetxattr(path string, attr string, data []byte, flags int) error {\n\tpathBytes, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tattrBytes, err := syscall.BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar dataBytes unsafe.Pointer\n\tif len(data) > 0 {\n\t\tdataBytes = unsafe.Pointer(&data[0])\n\t} else {\n\t\tdataBytes = unsafe.Pointer(&_zero)\n\t}\n\t_, _, errno := syscall.Syscall6(syscall.SYS_LSETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(dataBytes), uintptr(len(data)), uintptr(flags), 0)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go",
    "content": "// +build !linux\n\npackage system\n\n// Lgetxattr is not supported on platforms other than linux.\nfunc Lgetxattr(path string, attr string) ([]byte, error) {\n\treturn nil, ErrNotSupportedPlatform\n}\n\n// Lsetxattr is not supported on platforms other than linux.\nfunc Lsetxattr(path string, attr string, data []byte, flags int) error {\n\treturn ErrNotSupportedPlatform\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/builder_context.go",
    "content": "package tarsum\n\n// BuilderContext is an interface extending TarSum by adding the Remove method.\n// In general there was concern about adding this method to TarSum itself\n// so instead it is being added just to \"BuilderContext\" which will then\n// only be used during the .dockerignore file processing\n// - see builder/evaluator.go\ntype BuilderContext interface {\n\tTarSum\n\tRemove(string)\n}\n\nfunc (bc *tarSum) Remove(filename string) {\n\tfor i, fis := range bc.sums {\n\t\tif fis.Name() == filename {\n\t\t\tbc.sums = append(bc.sums[:i], bc.sums[i+1:]...)\n\t\t\t// Note, we don't just return because there could be\n\t\t\t// more than one with this name\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/fileinfosums.go",
    "content": "package tarsum\n\nimport \"sort\"\n\n// FileInfoSumInterface provides an interface for accessing file checksum\n// information within a tar file. This info is accessed through interface\n// so the actual name and sum cannot be melded with.\ntype FileInfoSumInterface interface {\n\t// File name\n\tName() string\n\t// Checksum of this particular file and its headers\n\tSum() string\n\t// Position of file in the tar\n\tPos() int64\n}\n\ntype fileInfoSum struct {\n\tname string\n\tsum  string\n\tpos  int64\n}\n\nfunc (fis fileInfoSum) Name() string {\n\treturn fis.name\n}\nfunc (fis fileInfoSum) Sum() string {\n\treturn fis.sum\n}\nfunc (fis fileInfoSum) Pos() int64 {\n\treturn fis.pos\n}\n\n// FileInfoSums provides a list of FileInfoSumInterfaces.\ntype FileInfoSums []FileInfoSumInterface\n\n// GetFile returns the first FileInfoSumInterface with a matching name.\nfunc (fis FileInfoSums) GetFile(name string) FileInfoSumInterface {\n\tfor i := range fis {\n\t\tif fis[i].Name() == name {\n\t\t\treturn fis[i]\n\t\t}\n\t}\n\treturn nil\n}\n\n// GetAllFile returns a FileInfoSums with all matching names.\nfunc (fis FileInfoSums) GetAllFile(name string) FileInfoSums {\n\tf := FileInfoSums{}\n\tfor i := range fis {\n\t\tif fis[i].Name() == name {\n\t\t\tf = append(f, fis[i])\n\t\t}\n\t}\n\treturn f\n}\n\n// GetDuplicatePaths returns a FileInfoSums with all duplicated paths.\nfunc (fis FileInfoSums) GetDuplicatePaths() (dups FileInfoSums) {\n\tseen := make(map[string]int, len(fis)) // allocate earl. no need to grow this map.\n\tfor i := range fis {\n\t\tf := fis[i]\n\t\tif _, ok := seen[f.Name()]; ok {\n\t\t\tdups = append(dups, f)\n\t\t} else {\n\t\t\tseen[f.Name()] = 0\n\t\t}\n\t}\n\treturn dups\n}\n\n// Len returns the size of the FileInfoSums.\nfunc (fis FileInfoSums) Len() int { return len(fis) }\n\n// Swap swaps two FileInfoSum values if a FileInfoSums list.\nfunc (fis FileInfoSums) Swap(i, j int) { fis[i], fis[j] = fis[j], fis[i] }\n\n// SortByPos sorts FileInfoSums content by position.\nfunc (fis FileInfoSums) SortByPos() {\n\tsort.Sort(byPos{fis})\n}\n\n// SortByNames sorts FileInfoSums content by name.\nfunc (fis FileInfoSums) SortByNames() {\n\tsort.Sort(byName{fis})\n}\n\n// SortBySums sorts FileInfoSums content by sums.\nfunc (fis FileInfoSums) SortBySums() {\n\tdups := fis.GetDuplicatePaths()\n\tif len(dups) > 0 {\n\t\tsort.Sort(bySum{fis, dups})\n\t} else {\n\t\tsort.Sort(bySum{fis, nil})\n\t}\n}\n\n// byName is a sort.Sort helper for sorting by file names.\n// If names are the same, order them by their appearance in the tar archive\ntype byName struct{ FileInfoSums }\n\nfunc (bn byName) Less(i, j int) bool {\n\tif bn.FileInfoSums[i].Name() == bn.FileInfoSums[j].Name() {\n\t\treturn bn.FileInfoSums[i].Pos() < bn.FileInfoSums[j].Pos()\n\t}\n\treturn bn.FileInfoSums[i].Name() < bn.FileInfoSums[j].Name()\n}\n\n// bySum is a sort.Sort helper for sorting by the sums of all the fileinfos in the tar archive\ntype bySum struct {\n\tFileInfoSums\n\tdups FileInfoSums\n}\n\nfunc (bs bySum) Less(i, j int) bool {\n\tif bs.dups != nil && bs.FileInfoSums[i].Name() == bs.FileInfoSums[j].Name() {\n\t\treturn bs.FileInfoSums[i].Pos() < bs.FileInfoSums[j].Pos()\n\t}\n\treturn bs.FileInfoSums[i].Sum() < bs.FileInfoSums[j].Sum()\n}\n\n// byPos is a sort.Sort helper for sorting by the sums of all the fileinfos by their original order\ntype byPos struct{ FileInfoSums }\n\nfunc (bp byPos) Less(i, j int) bool {\n\treturn bp.FileInfoSums[i].Pos() < bp.FileInfoSums[j].Pos()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/tarsum.go",
    "content": "// Package tarsum provides algorithms to perform checksum calculation on\n// filesystem layers.\n//\n// The transportation of filesystems, regarding Docker, is done with tar(1)\n// archives. There are a variety of tar serialization formats [2], and a key\n// concern here is ensuring a repeatable checksum given a set of inputs from a\n// generic tar archive. Types of transportation include distribution to and from a\n// registry endpoint, saving and loading through commands or Docker daemon APIs,\n// transferring the build context from client to Docker daemon, and committing the\n// filesystem of a container to become an image.\n//\n// As tar archives are used for transit, but not preserved in many situations, the\n// focus of the algorithm is to ensure the integrity of the preserved filesystem,\n// while maintaining a deterministic accountability. This includes neither\n// constraining the ordering or manipulation of the files during the creation or\n// unpacking of the archive, nor include additional metadata state about the file\n// system attributes.\npackage tarsum\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"crypto\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"strings\"\n)\n\nconst (\n\tbuf8K  = 8 * 1024\n\tbuf16K = 16 * 1024\n\tbuf32K = 32 * 1024\n)\n\n// NewTarSum creates a new interface for calculating a fixed time checksum of a\n// tar archive.\n//\n// This is used for calculating checksums of layers of an image, in some cases\n// including the byte payload of the image's json metadata as well, and for\n// calculating the checksums for buildcache.\nfunc NewTarSum(r io.Reader, dc bool, v Version) (TarSum, error) {\n\treturn NewTarSumHash(r, dc, v, DefaultTHash)\n}\n\n// NewTarSumHash creates a new TarSum, providing a THash to use rather than\n// the DefaultTHash.\nfunc NewTarSumHash(r io.Reader, dc bool, v Version, tHash THash) (TarSum, error) {\n\theaderSelector, err := getTarHeaderSelector(v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tts := &tarSum{Reader: r, DisableCompression: dc, tarSumVersion: v, headerSelector: headerSelector, tHash: tHash}\n\terr = ts.initTarSum()\n\treturn ts, err\n}\n\n// NewTarSumForLabel creates a new TarSum using the provided TarSum version+hash label.\nfunc NewTarSumForLabel(r io.Reader, disableCompression bool, label string) (TarSum, error) {\n\tparts := strings.SplitN(label, \"+\", 2)\n\tif len(parts) != 2 {\n\t\treturn nil, errors.New(\"tarsum label string should be of the form: {tarsum_version}+{hash_name}\")\n\t}\n\n\tversionName, hashName := parts[0], parts[1]\n\n\tversion, ok := tarSumVersionsByName[versionName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unknown TarSum version name: %q\", versionName)\n\t}\n\n\thashConfig, ok := standardHashConfigs[hashName]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unknown TarSum hash name: %q\", hashName)\n\t}\n\n\ttHash := NewTHash(hashConfig.name, hashConfig.hash.New)\n\n\treturn NewTarSumHash(r, disableCompression, version, tHash)\n}\n\n// TarSum is the generic interface for calculating fixed time\n// checksums of a tar archive.\ntype TarSum interface {\n\tio.Reader\n\tGetSums() FileInfoSums\n\tSum([]byte) string\n\tVersion() Version\n\tHash() THash\n}\n\n// tarSum struct is the structure for a Version0 checksum calculation.\ntype tarSum struct {\n\tio.Reader\n\ttarR               *tar.Reader\n\ttarW               *tar.Writer\n\twriter             writeCloseFlusher\n\tbufTar             *bytes.Buffer\n\tbufWriter          *bytes.Buffer\n\tbufData            []byte\n\th                  hash.Hash\n\ttHash              THash\n\tsums               FileInfoSums\n\tfileCounter        int64\n\tcurrentFile        string\n\tfinished           bool\n\tfirst              bool\n\tDisableCompression bool              // false by default. When false, the output gzip compressed.\n\ttarSumVersion      Version           // this field is not exported so it can not be mutated during use\n\theaderSelector     tarHeaderSelector // handles selecting and ordering headers for files in the archive\n}\n\nfunc (ts tarSum) Hash() THash {\n\treturn ts.tHash\n}\n\nfunc (ts tarSum) Version() Version {\n\treturn ts.tarSumVersion\n}\n\n// THash provides a hash.Hash type generator and its name.\ntype THash interface {\n\tHash() hash.Hash\n\tName() string\n}\n\n// NewTHash is a convenience method for creating a THash.\nfunc NewTHash(name string, h func() hash.Hash) THash {\n\treturn simpleTHash{n: name, h: h}\n}\n\ntype tHashConfig struct {\n\tname string\n\thash crypto.Hash\n}\n\nvar (\n\t// NOTE: DO NOT include MD5 or SHA1, which are considered insecure.\n\tstandardHashConfigs = map[string]tHashConfig{\n\t\t\"sha256\": {name: \"sha256\", hash: crypto.SHA256},\n\t\t\"sha512\": {name: \"sha512\", hash: crypto.SHA512},\n\t}\n)\n\n// DefaultTHash is default TarSum hashing algorithm - \"sha256\".\nvar DefaultTHash = NewTHash(\"sha256\", sha256.New)\n\ntype simpleTHash struct {\n\tn string\n\th func() hash.Hash\n}\n\nfunc (sth simpleTHash) Name() string    { return sth.n }\nfunc (sth simpleTHash) Hash() hash.Hash { return sth.h() }\n\nfunc (ts *tarSum) encodeHeader(h *tar.Header) error {\n\tfor _, elem := range ts.headerSelector.selectHeaders(h) {\n\t\tif _, err := ts.h.Write([]byte(elem[0] + elem[1])); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (ts *tarSum) initTarSum() error {\n\tts.bufTar = bytes.NewBuffer([]byte{})\n\tts.bufWriter = bytes.NewBuffer([]byte{})\n\tts.tarR = tar.NewReader(ts.Reader)\n\tts.tarW = tar.NewWriter(ts.bufTar)\n\tif !ts.DisableCompression {\n\t\tts.writer = gzip.NewWriter(ts.bufWriter)\n\t} else {\n\t\tts.writer = &nopCloseFlusher{Writer: ts.bufWriter}\n\t}\n\tif ts.tHash == nil {\n\t\tts.tHash = DefaultTHash\n\t}\n\tts.h = ts.tHash.Hash()\n\tts.h.Reset()\n\tts.first = true\n\tts.sums = FileInfoSums{}\n\treturn nil\n}\n\nfunc (ts *tarSum) Read(buf []byte) (int, error) {\n\tif ts.finished {\n\t\treturn ts.bufWriter.Read(buf)\n\t}\n\tif len(ts.bufData) < len(buf) {\n\t\tswitch {\n\t\tcase len(buf) <= buf8K:\n\t\t\tts.bufData = make([]byte, buf8K)\n\t\tcase len(buf) <= buf16K:\n\t\t\tts.bufData = make([]byte, buf16K)\n\t\tcase len(buf) <= buf32K:\n\t\t\tts.bufData = make([]byte, buf32K)\n\t\tdefault:\n\t\t\tts.bufData = make([]byte, len(buf))\n\t\t}\n\t}\n\tbuf2 := ts.bufData[:len(buf)]\n\n\tn, err := ts.tarR.Read(buf2)\n\tif err != nil {\n\t\tif err == io.EOF {\n\t\t\tif _, err := ts.h.Write(buf2[:n]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tif !ts.first {\n\t\t\t\tts.sums = append(ts.sums, fileInfoSum{name: ts.currentFile, sum: hex.EncodeToString(ts.h.Sum(nil)), pos: ts.fileCounter})\n\t\t\t\tts.fileCounter++\n\t\t\t\tts.h.Reset()\n\t\t\t} else {\n\t\t\t\tts.first = false\n\t\t\t}\n\n\t\t\tcurrentHeader, err := ts.tarR.Next()\n\t\t\tif err != nil {\n\t\t\t\tif err == io.EOF {\n\t\t\t\t\tif err := ts.tarW.Close(); err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\tif _, err := io.Copy(ts.writer, ts.bufTar); err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\tif err := ts.writer.Close(); err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\tts.finished = true\n\t\t\t\t\treturn n, nil\n\t\t\t\t}\n\t\t\t\treturn n, err\n\t\t\t}\n\t\t\tts.currentFile = strings.TrimSuffix(strings.TrimPrefix(currentHeader.Name, \"./\"), \"/\")\n\t\t\tif err := ts.encodeHeader(currentHeader); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tif err := ts.tarW.WriteHeader(currentHeader); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tif _, err := ts.tarW.Write(buf2[:n]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tts.tarW.Flush()\n\t\t\tif _, err := io.Copy(ts.writer, ts.bufTar); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\tts.writer.Flush()\n\n\t\t\treturn ts.bufWriter.Read(buf)\n\t\t}\n\t\treturn n, err\n\t}\n\n\t// Filling the hash buffer\n\tif _, err = ts.h.Write(buf2[:n]); err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Filling the tar writer\n\tif _, err = ts.tarW.Write(buf2[:n]); err != nil {\n\t\treturn 0, err\n\t}\n\tts.tarW.Flush()\n\n\t// Filling the output writer\n\tif _, err = io.Copy(ts.writer, ts.bufTar); err != nil {\n\t\treturn 0, err\n\t}\n\tts.writer.Flush()\n\n\treturn ts.bufWriter.Read(buf)\n}\n\nfunc (ts *tarSum) Sum(extra []byte) string {\n\tts.sums.SortBySums()\n\th := ts.tHash.Hash()\n\tif extra != nil {\n\t\th.Write(extra)\n\t}\n\tfor _, fis := range ts.sums {\n\t\th.Write([]byte(fis.Sum()))\n\t}\n\tchecksum := ts.Version().String() + \"+\" + ts.tHash.Name() + \":\" + hex.EncodeToString(h.Sum(nil))\n\treturn checksum\n}\n\nfunc (ts *tarSum) GetSums() FileInfoSums {\n\treturn ts.sums\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/tarsum_spec.md",
    "content": "page_title: TarSum checksum specification\npage_description: Documentation for algorithms used in the TarSum checksum calculation\npage_keywords: docker, checksum, validation, tarsum\n\n# TarSum Checksum Specification\n\n## Abstract\n\nThis document describes the algorithms used in performing the TarSum checksum\ncalculation on filesystem layers, the need for this method over existing\nmethods, and the versioning of this calculation.\n\n## Warning\n\nThis checksum algorithm is for best-effort comparison of file trees with fuzzy logic.\n\nThis is _not_ a cryptographic attestation, and should not be considered secure.\n\n## Introduction\n\nThe transportation of filesystems, regarding Docker, is done with tar(1)\narchives. There are a variety of tar serialization formats [2], and a key\nconcern here is ensuring a repeatable checksum given a set of inputs from a\ngeneric tar archive. Types of transportation include distribution to and from a\nregistry endpoint, saving and loading through commands or Docker daemon APIs,\ntransferring the build context from client to Docker daemon, and committing the\nfilesystem of a container to become an image.\n\nAs tar archives are used for transit, but not preserved in many situations, the\nfocus of the algorithm is to ensure the integrity of the preserved filesystem,\nwhile maintaining a deterministic accountability. This includes neither\nconstraining the ordering or manipulation of the files during the creation or\nunpacking of the archive, nor include additional metadata state about the file\nsystem attributes.\n\n## Intended Audience\n\nThis document is outlining the methods used for consistent checksum calculation\nfor filesystems transported via tar archives.\n\nAuditing these methodologies is an open and iterative process. This document\nshould accommodate the review of source code. Ultimately, this document should\nbe the starting point of further refinements to the algorithm and its future\nversions.\n\n## Concept\n\nThe checksum mechanism must ensure the integrity and assurance of the\nfilesystem payload.\n\n## Checksum Algorithm Profile\n\nA checksum mechanism must define the following operations and attributes:\n\n* Associated hashing cipher - used to checksum each file payload and attribute\n  information.\n* Checksum list - each file of the filesystem archive has its checksum\n  calculated from the payload and attributes of the file. The final checksum is\n  calculated from this list, with specific ordering.\n* Version - as the algorithm adapts to requirements, there are behaviors of the\n  algorithm to manage by versioning.\n* Archive being calculated - the tar archive having its checksum calculated\n\n## Elements of TarSum checksum\n\nThe calculated sum output is a text string. The elements included in the output\nof the calculated sum comprise the information needed for validation of the sum\n(TarSum version and hashing cipher used) and the expected checksum in hexadecimal\nform.\n\nThere are two delimiters used:\n* '+' separates TarSum version from hashing cipher\n* ':' separates calculation mechanics from expected hash\n\nExample:\n\n```\n\t\"tarsum.v1+sha256:220a60ecd4a3c32c282622a625a54db9ba0ff55b5ba9c29c7064a2bc358b6a3e\"\n\t|         |       \\                                                               |\n\t|         |        \\                                                              |\n\t|_version_|_cipher__|__                                                           |\n\t|                      \\                                                          |\n\t|_calculation_mechanics_|______________________expected_sum_______________________|\n```\n\n## Versioning\n\nVersioning was introduced [0] to accommodate differences in calculation needed,\nand ability to maintain reverse compatibility.\n\nThe general algorithm will be describe further in the 'Calculation'.\n\n### Version0\n\nThis is the initial version of TarSum.\n\nIts element in the TarSum checksum string is `tarsum`.\n\n### Version1\n\nIts element in the TarSum checksum is `tarsum.v1`.\n\nThe notable changes in this version:\n* Exclusion of file `mtime` from the file information headers, in each file\n  checksum calculation\n* Inclusion of extended attributes (`xattrs`. Also seen as `SCHILY.xattr.` prefixed Pax\n  tar file info headers) keys and values in each file checksum calculation\n\n### VersionDev\n\n*Do not use unless validating refinements to the checksum algorithm*\n\nIts element in the TarSum checksum is `tarsum.dev`.\n\nThis is a floating place holder for a next version and grounds for testing\nchanges. The methods used for calculation are subject to change without notice,\nand this version is for testing and not for production use.\n\n## Ciphers\n\nThe official default and standard hashing cipher used in the calculation mechanic\nis `sha256`. This refers to SHA256 hash algorithm as defined in FIPS 180-4.\n\nThough the TarSum algorithm itself is not exclusively bound to the single\nhashing cipher `sha256`, support for alternate hashing ciphers was later added\n[1]. Use cases for alternate cipher could include future-proofing TarSum\nchecksum format and using faster cipher hashes for tar filesystem checksums.\n\n## Calculation\n\n### Requirement\n\nAs mentioned earlier, the calculation is such that it takes into consideration\nthe lifecycle of the tar archive. In that the tar archive is not an immutable,\npermanent artifact. Otherwise options like relying on a known hashing cipher\nchecksum of the archive itself would be reliable enough. The tar archive of the\nfilesystem is used as a transportation medium for Docker images, and the\narchive is discarded once its contents are extracted. Therefore, for consistent\nvalidation items such as order of files in the tar archive and time stamps are\nsubject to change once an image is received.\n\n### Process\n\nThe method is typically iterative due to reading tar info headers from the\narchive stream, though this is not a strict requirement.\n\n#### Files\n\nEach file in the tar archive have their contents (headers and body) checksummed\nindividually using the designated associated hashing cipher. The ordered\nheaders of the file are written to the checksum calculation first, and then the\npayload of the file body.\n\nThe resulting checksum of the file is appended to the list of file sums. The\nsum is encoded as a string of the hexadecimal digest. Additionally, the file\nname and position in the archive is kept as reference for special ordering.\n\n#### Headers\n\nThe following headers are read, in this\norder ( and the corresponding representation of its value):\n* 'name' - string\n* 'mode' - string of the base10 integer\n* 'uid' - string of the integer\n* 'gid' - string of the integer\n* 'size' - string of the integer\n* 'mtime' (_Version0 only_) - string of integer of the seconds since 1970-01-01 00:00:00 UTC\n* 'typeflag' - string of the char\n* 'linkname' - string\n* 'uname' - string\n* 'gname' - string\n* 'devmajor' - string of the integer\n* 'devminor' - string of the integer\n\nFor >= Version1, the extended attribute headers (\"SCHILY.xattr.\" prefixed pax\nheaders) included after the above list. These xattrs key/values are first\nsorted by the keys.\n\n#### Header Format\n\nThe ordered headers are written to the hash in the format of\n\n\t\"{.key}{.value}\"\n\nwith no newline.\n\n#### Body\n\nAfter the order headers of the file have been added to the checksum for the\nfile, the body of the file is written to the hash.\n\n#### List of file sums\n\nThe list of file sums is sorted by the string of the hexadecimal digest.\n\nIf there are two files in the tar with matching paths, the order of occurrence\nfor that path is reflected for the sums of the corresponding file header and\nbody.\n\n#### Final Checksum\n\nBegin with a fresh or initial state of the associated hash cipher. If there is\nadditional payload to include in the TarSum calculation for the archive, it is\nwritten first. Then each checksum from the ordered list of file sums is written\nto the hash.\n\nThe resulting digest is formatted per the Elements of TarSum checksum,\nincluding the TarSum version, the associated hash cipher and the hexadecimal\nencoded checksum digest.\n\n## Security Considerations\n\nThe initial version of TarSum has undergone one update that could invalidate\nhandcrafted tar archives. The tar archive format supports appending of files\nwith same names as prior files in the archive. The latter file will clobber the\nprior file of the same path. Due to this the algorithm now accounts for files\nwith matching paths, and orders the list of file sums accordingly [3].\n\n## Footnotes\n\n* [0] Versioning https://github.com/docker/docker/commit/747f89cd327db9d50251b17797c4d825162226d0\n* [1] Alternate ciphers https://github.com/docker/docker/commit/4e9925d780665149b8bc940d5ba242ada1973c4e\n* [2] Tar http://en.wikipedia.org/wiki/Tar_%28computing%29\n* [3] Name collision https://github.com/docker/docker/commit/c5e6362c53cbbc09ddbabd5a7323e04438b57d31\n\n## Acknowledgments\n\nJoffrey F (shin-) and Guillaume J. Charmes (creack) on the initial work of the\nTarSum calculation.\n\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/versioning.go",
    "content": "package tarsum\n\nimport (\n\t\"archive/tar\"\n\t\"errors\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Version is used for versioning of the TarSum algorithm\n// based on the prefix of the hash used\n// i.e. \"tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b\"\ntype Version int\n\n// Prefix of \"tarsum\"\nconst (\n\tVersion0 Version = iota\n\tVersion1\n\t// VersionDev this constant will be either the latest or an unsettled next-version of the TarSum calculation\n\tVersionDev\n)\n\n// VersionLabelForChecksum returns the label for the given tarsum\n// checksum, i.e., everything before the first `+` character in\n// the string or an empty string if no label separator is found.\nfunc VersionLabelForChecksum(checksum string) string {\n\t// Checksums are in the form: {versionLabel}+{hashID}:{hex}\n\tsepIndex := strings.Index(checksum, \"+\")\n\tif sepIndex < 0 {\n\t\treturn \"\"\n\t}\n\treturn checksum[:sepIndex]\n}\n\n// GetVersions gets a list of all known tarsum versions.\nfunc GetVersions() []Version {\n\tv := []Version{}\n\tfor k := range tarSumVersions {\n\t\tv = append(v, k)\n\t}\n\treturn v\n}\n\nvar (\n\ttarSumVersions = map[Version]string{\n\t\tVersion0:   \"tarsum\",\n\t\tVersion1:   \"tarsum.v1\",\n\t\tVersionDev: \"tarsum.dev\",\n\t}\n\ttarSumVersionsByName = map[string]Version{\n\t\t\"tarsum\":     Version0,\n\t\t\"tarsum.v1\":  Version1,\n\t\t\"tarsum.dev\": VersionDev,\n\t}\n)\n\nfunc (tsv Version) String() string {\n\treturn tarSumVersions[tsv]\n}\n\n// GetVersionFromTarsum returns the Version from the provided string.\nfunc GetVersionFromTarsum(tarsum string) (Version, error) {\n\ttsv := tarsum\n\tif strings.Contains(tarsum, \"+\") {\n\t\ttsv = strings.SplitN(tarsum, \"+\", 2)[0]\n\t}\n\tfor v, s := range tarSumVersions {\n\t\tif s == tsv {\n\t\t\treturn v, nil\n\t\t}\n\t}\n\treturn -1, ErrNotVersion\n}\n\n// Errors that may be returned by functions in this package\nvar (\n\tErrNotVersion            = errors.New(\"string does not include a TarSum Version\")\n\tErrVersionNotImplemented = errors.New(\"TarSum Version is not yet implemented\")\n)\n\n// tarHeaderSelector is the interface which different versions\n// of tarsum should use for selecting and ordering tar headers\n// for each item in the archive.\ntype tarHeaderSelector interface {\n\tselectHeaders(h *tar.Header) (orderedHeaders [][2]string)\n}\n\ntype tarHeaderSelectFunc func(h *tar.Header) (orderedHeaders [][2]string)\n\nfunc (f tarHeaderSelectFunc) selectHeaders(h *tar.Header) (orderedHeaders [][2]string) {\n\treturn f(h)\n}\n\nfunc v0TarHeaderSelect(h *tar.Header) (orderedHeaders [][2]string) {\n\treturn [][2]string{\n\t\t{\"name\", h.Name},\n\t\t{\"mode\", strconv.FormatInt(h.Mode, 10)},\n\t\t{\"uid\", strconv.Itoa(h.Uid)},\n\t\t{\"gid\", strconv.Itoa(h.Gid)},\n\t\t{\"size\", strconv.FormatInt(h.Size, 10)},\n\t\t{\"mtime\", strconv.FormatInt(h.ModTime.UTC().Unix(), 10)},\n\t\t{\"typeflag\", string([]byte{h.Typeflag})},\n\t\t{\"linkname\", h.Linkname},\n\t\t{\"uname\", h.Uname},\n\t\t{\"gname\", h.Gname},\n\t\t{\"devmajor\", strconv.FormatInt(h.Devmajor, 10)},\n\t\t{\"devminor\", strconv.FormatInt(h.Devminor, 10)},\n\t}\n}\n\nfunc v1TarHeaderSelect(h *tar.Header) (orderedHeaders [][2]string) {\n\t// Get extended attributes.\n\txAttrKeys := make([]string, len(h.Xattrs))\n\tfor k := range h.Xattrs {\n\t\txAttrKeys = append(xAttrKeys, k)\n\t}\n\tsort.Strings(xAttrKeys)\n\n\t// Make the slice with enough capacity to hold the 11 basic headers\n\t// we want from the v0 selector plus however many xattrs we have.\n\torderedHeaders = make([][2]string, 0, 11+len(xAttrKeys))\n\n\t// Copy all headers from v0 excluding the 'mtime' header (the 5th element).\n\tv0headers := v0TarHeaderSelect(h)\n\torderedHeaders = append(orderedHeaders, v0headers[0:5]...)\n\torderedHeaders = append(orderedHeaders, v0headers[6:]...)\n\n\t// Finally, append the sorted xattrs.\n\tfor _, k := range xAttrKeys {\n\t\torderedHeaders = append(orderedHeaders, [2]string{k, h.Xattrs[k]})\n\t}\n\n\treturn\n}\n\nvar registeredHeaderSelectors = map[Version]tarHeaderSelectFunc{\n\tVersion0:   v0TarHeaderSelect,\n\tVersion1:   v1TarHeaderSelect,\n\tVersionDev: v1TarHeaderSelect,\n}\n\nfunc getTarHeaderSelector(v Version) (tarHeaderSelector, error) {\n\theaderSelector, ok := registeredHeaderSelectors[v]\n\tif !ok {\n\t\treturn nil, ErrVersionNotImplemented\n\t}\n\n\treturn headerSelector, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/tarsum/writercloser.go",
    "content": "package tarsum\n\nimport (\n\t\"io\"\n)\n\ntype writeCloseFlusher interface {\n\tio.WriteCloser\n\tFlush() error\n}\n\ntype nopCloseFlusher struct {\n\tio.Writer\n}\n\nfunc (n *nopCloseFlusher) Close() error {\n\treturn nil\n}\n\nfunc (n *nopCloseFlusher) Flush() error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/ascii.go",
    "content": "package term\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\n// ASCII list the possible supported ASCII key sequence\nvar ASCII = []string{\n\t\"ctrl-@\",\n\t\"ctrl-a\",\n\t\"ctrl-b\",\n\t\"ctrl-c\",\n\t\"ctrl-d\",\n\t\"ctrl-e\",\n\t\"ctrl-f\",\n\t\"ctrl-g\",\n\t\"ctrl-h\",\n\t\"ctrl-i\",\n\t\"ctrl-j\",\n\t\"ctrl-k\",\n\t\"ctrl-l\",\n\t\"ctrl-m\",\n\t\"ctrl-n\",\n\t\"ctrl-o\",\n\t\"ctrl-p\",\n\t\"ctrl-q\",\n\t\"ctrl-r\",\n\t\"ctrl-s\",\n\t\"ctrl-t\",\n\t\"ctrl-u\",\n\t\"ctrl-v\",\n\t\"ctrl-w\",\n\t\"ctrl-x\",\n\t\"ctrl-y\",\n\t\"ctrl-z\",\n\t\"ctrl-[\",\n\t\"ctrl-\\\\\",\n\t\"ctrl-]\",\n\t\"ctrl-^\",\n\t\"ctrl-_\",\n}\n\n// ToBytes converts a string representing a suite of key-sequence to the corresponding ASCII code.\nfunc ToBytes(keys string) ([]byte, error) {\n\tcodes := []byte{}\nnext:\n\tfor _, key := range strings.Split(keys, \",\") {\n\t\tif len(key) != 1 {\n\t\t\tfor code, ctrl := range ASCII {\n\t\t\t\tif ctrl == key {\n\t\t\t\t\tcodes = append(codes, byte(code))\n\t\t\t\t\tcontinue next\n\t\t\t\t}\n\t\t\t}\n\t\t\tif key == \"DEL\" {\n\t\t\t\tcodes = append(codes, 127)\n\t\t\t} else {\n\t\t\t\treturn nil, fmt.Errorf(\"Unknown character: '%s'\", key)\n\t\t\t}\n\t\t} else {\n\t\t\tcodes = append(codes, byte(key[0]))\n\t\t}\n\t}\n\treturn codes, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/tc_linux_cgo.go",
    "content": "// +build linux,cgo\n\npackage term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// #include <termios.h>\nimport \"C\"\n\n// Termios is the Unix API for terminal I/O.\n// It is passthgrouh for syscall.Termios in order to make it portable with\n// other platforms where it is not available or handled differently.\ntype Termios syscall.Termios\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif err := tcget(fd, &oldState.termios); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\n\tC.cfmakeraw((*C.struct_termios)(unsafe.Pointer(&newState)))\n\tif err := tcset(fd, &newState); err != 0 {\n\t\treturn nil, err\n\t}\n\treturn &oldState, nil\n}\n\nfunc tcget(fd uintptr, p *Termios) syscall.Errno {\n\tret, err := C.tcgetattr(C.int(fd), (*C.struct_termios)(unsafe.Pointer(p)))\n\tif ret != 0 {\n\t\treturn err.(syscall.Errno)\n\t}\n\treturn 0\n}\n\nfunc tcset(fd uintptr, p *Termios) syscall.Errno {\n\tret, err := C.tcsetattr(C.int(fd), C.TCSANOW, (*C.struct_termios)(unsafe.Pointer(p)))\n\tif ret != 0 {\n\t\treturn err.(syscall.Errno)\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/tc_other.go",
    "content": "// +build !windows\n// +build !linux !cgo\n\npackage term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc tcget(fd uintptr, p *Termios) syscall.Errno {\n\t_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p)))\n\treturn err\n}\n\nfunc tcset(fd uintptr, p *Termios) syscall.Errno {\n\t_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p)))\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/term.go",
    "content": "// +build !windows\n\n// Package term provides provides structures and helper functions to work with\n// terminal (state, sizes).\npackage term\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\t// ErrInvalidState is returned if the state of the terminal is invalid.\n\tErrInvalidState = errors.New(\"Invalid terminal state\")\n)\n\n// State represents the state of the terminal.\ntype State struct {\n\ttermios Termios\n}\n\n// Winsize represents the size of the terminal window.\ntype Winsize struct {\n\tHeight uint16\n\tWidth  uint16\n\tx      uint16\n\ty      uint16\n}\n\n// StdStreams returns the standard streams (stdin, stdout, stedrr).\nfunc StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {\n\treturn os.Stdin, os.Stdout, os.Stderr\n}\n\n// GetFdInfo returns the file descriptor for an os.File and indicates whether the file represents a terminal.\nfunc GetFdInfo(in interface{}) (uintptr, bool) {\n\tvar inFd uintptr\n\tvar isTerminalIn bool\n\tif file, ok := in.(*os.File); ok {\n\t\tinFd = file.Fd()\n\t\tisTerminalIn = IsTerminal(inFd)\n\t}\n\treturn inFd, isTerminalIn\n}\n\n// GetWinsize returns the window size based on the specified file descriptor.\nfunc GetWinsize(fd uintptr) (*Winsize, error) {\n\tws := &Winsize{}\n\t_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))\n\t// Skip errno = 0\n\tif err == 0 {\n\t\treturn ws, nil\n\t}\n\treturn ws, err\n}\n\n// SetWinsize tries to set the specified window size for the specified file descriptor.\nfunc SetWinsize(fd uintptr, ws *Winsize) error {\n\t_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))\n\t// Skip errno = 0\n\tif err == 0 {\n\t\treturn nil\n\t}\n\treturn err\n}\n\n// IsTerminal returns true if the given file descriptor is a terminal.\nfunc IsTerminal(fd uintptr) bool {\n\tvar termios Termios\n\treturn tcget(fd, &termios) == 0\n}\n\n// RestoreTerminal restores the terminal connected to the given file descriptor\n// to a previous state.\nfunc RestoreTerminal(fd uintptr, state *State) error {\n\tif state == nil {\n\t\treturn ErrInvalidState\n\t}\n\tif err := tcset(fd, &state.termios); err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// SaveState saves the state of the terminal connected to the given file descriptor.\nfunc SaveState(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif err := tcget(fd, &oldState.termios); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n\n// DisableEcho applies the specified state to the terminal connected to the file\n// descriptor, with echo disabled.\nfunc DisableEcho(fd uintptr, state *State) error {\n\tnewState := state.termios\n\tnewState.Lflag &^= syscall.ECHO\n\n\tif err := tcset(fd, &newState); err != 0 {\n\t\treturn err\n\t}\n\thandleInterrupt(fd, state)\n\treturn nil\n}\n\n// SetRawTerminal puts the terminal connected to the given file descriptor into\n// raw mode and returns the previous state.\nfunc SetRawTerminal(fd uintptr) (*State, error) {\n\toldState, err := MakeRaw(fd)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\thandleInterrupt(fd, oldState)\n\treturn oldState, err\n}\n\nfunc handleInterrupt(fd uintptr, state *State) {\n\tsigchan := make(chan os.Signal, 1)\n\tsignal.Notify(sigchan, os.Interrupt)\n\n\tgo func() {\n\t\t_ = <-sigchan\n\t\tRestoreTerminal(fd, state)\n\t}()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/termios_darwin.go",
    "content": "package term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tgetTermios = syscall.TIOCGETA\n\tsetTermios = syscall.TIOCSETA\n)\n\n// Termios magic numbers, passthrough to the ones defined in syscall.\nconst (\n\tIGNBRK = syscall.IGNBRK\n\tPARMRK = syscall.PARMRK\n\tINLCR  = syscall.INLCR\n\tIGNCR  = syscall.IGNCR\n\tECHONL = syscall.ECHONL\n\tCSIZE  = syscall.CSIZE\n\tICRNL  = syscall.ICRNL\n\tISTRIP = syscall.ISTRIP\n\tPARENB = syscall.PARENB\n\tECHO   = syscall.ECHO\n\tICANON = syscall.ICANON\n\tISIG   = syscall.ISIG\n\tIXON   = syscall.IXON\n\tBRKINT = syscall.BRKINT\n\tINPCK  = syscall.INPCK\n\tOPOST  = syscall.OPOST\n\tCS8    = syscall.CS8\n\tIEXTEN = syscall.IEXTEN\n)\n\n// Termios is the Unix API for terminal I/O.\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]byte\n\tIspeed uint64\n\tOspeed uint64\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\tnewState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)\n\tnewState.Oflag &^= OPOST\n\tnewState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)\n\tnewState.Cflag &^= (CSIZE | PARENB)\n\tnewState.Cflag |= CS8\n\tnewState.Cc[syscall.VMIN] = 1\n\tnewState.Cc[syscall.VTIME] = 0\n\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/termios_freebsd.go",
    "content": "package term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tgetTermios = syscall.TIOCGETA\n\tsetTermios = syscall.TIOCSETA\n)\n\n// Termios magic numbers, passthrough to the ones defined in syscall.\nconst (\n\tIGNBRK = syscall.IGNBRK\n\tPARMRK = syscall.PARMRK\n\tINLCR  = syscall.INLCR\n\tIGNCR  = syscall.IGNCR\n\tECHONL = syscall.ECHONL\n\tCSIZE  = syscall.CSIZE\n\tICRNL  = syscall.ICRNL\n\tISTRIP = syscall.ISTRIP\n\tPARENB = syscall.PARENB\n\tECHO   = syscall.ECHO\n\tICANON = syscall.ICANON\n\tISIG   = syscall.ISIG\n\tIXON   = syscall.IXON\n\tBRKINT = syscall.BRKINT\n\tINPCK  = syscall.INPCK\n\tOPOST  = syscall.OPOST\n\tCS8    = syscall.CS8\n\tIEXTEN = syscall.IEXTEN\n)\n\n// Termios is the Unix API for terminal I/O.\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]byte\n\tIspeed uint32\n\tOspeed uint32\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\tnewState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)\n\tnewState.Oflag &^= OPOST\n\tnewState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)\n\tnewState.Cflag &^= (CSIZE | PARENB)\n\tnewState.Cflag |= CS8\n\tnewState.Cc[syscall.VMIN] = 1\n\tnewState.Cc[syscall.VTIME] = 0\n\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/termios_linux.go",
    "content": "// +build !cgo\n\npackage term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tgetTermios = syscall.TCGETS\n\tsetTermios = syscall.TCSETS\n)\n\n// Termios is the Unix API for terminal I/O.\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]byte\n\tIspeed uint32\n\tOspeed uint32\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\n\tnewState.Iflag &^= (syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON)\n\tnewState.Oflag &^= syscall.OPOST\n\tnewState.Lflag &^= (syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN)\n\tnewState.Cflag &^= (syscall.CSIZE | syscall.PARENB)\n\tnewState.Cflag |= syscall.CS8\n\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {\n\t\treturn nil, err\n\t}\n\treturn &oldState, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/term/termios_openbsd.go",
    "content": "package term\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tgetTermios = syscall.TIOCGETA\n\tsetTermios = syscall.TIOCSETA\n)\n\n// Termios magic numbers, passthrough to the ones defined in syscall.\nconst (\n\tIGNBRK = syscall.IGNBRK\n\tPARMRK = syscall.PARMRK\n\tINLCR  = syscall.INLCR\n\tIGNCR  = syscall.IGNCR\n\tECHONL = syscall.ECHONL\n\tCSIZE  = syscall.CSIZE\n\tICRNL  = syscall.ICRNL\n\tISTRIP = syscall.ISTRIP\n\tPARENB = syscall.PARENB\n\tECHO   = syscall.ECHO\n\tICANON = syscall.ICANON\n\tISIG   = syscall.ISIG\n\tIXON   = syscall.IXON\n\tBRKINT = syscall.BRKINT\n\tINPCK  = syscall.INPCK\n\tOPOST  = syscall.OPOST\n\tCS8    = syscall.CS8\n\tIEXTEN = syscall.IEXTEN\n)\n\n// Termios is the Unix API for terminal I/O.\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]byte\n\tIspeed uint32\n\tOspeed uint32\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd uintptr) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\tnewState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)\n\tnewState.Oflag &^= OPOST\n\tnewState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)\n\tnewState.Cflag &^= (CSIZE | PARENB)\n\tnewState.Cflag |= CS8\n\tnewState.Cc[syscall.VMIN] = 1\n\tnewState.Cc[syscall.VTIME] = 0\n\n\tif _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/urlutil/urlutil.go",
    "content": "// Package urlutil provides helper function to check urls kind.\n// It supports http urls, git urls and transport url (tcp://, …)\npackage urlutil\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tvalidPrefixes = map[string][]string{\n\t\t\"url\":       {\"http://\", \"https://\"},\n\t\t\"git\":       {\"git://\", \"github.com/\", \"git@\"},\n\t\t\"transport\": {\"tcp://\", \"tcp+tls://\", \"udp://\", \"unix://\"},\n\t}\n\turlPathWithFragmentSuffix = regexp.MustCompile(\".git(?:#.+)?$\")\n)\n\n// IsURL returns true if the provided str is an HTTP(S) URL.\nfunc IsURL(str string) bool {\n\treturn checkURL(str, \"url\")\n}\n\n// IsGitURL returns true if the provided str is a git repository URL.\nfunc IsGitURL(str string) bool {\n\tif IsURL(str) && urlPathWithFragmentSuffix.MatchString(str) {\n\t\treturn true\n\t}\n\treturn checkURL(str, \"git\")\n}\n\n// IsGitTransport returns true if the provided str is a git transport by inspecting\n// the prefix of the string for known protocols used in git.\nfunc IsGitTransport(str string) bool {\n\treturn IsURL(str) || strings.HasPrefix(str, \"git://\") || strings.HasPrefix(str, \"git@\")\n}\n\n// IsTransportURL returns true if the provided str is a transport (tcp, tcp+tls, udp, unix) URL.\nfunc IsTransportURL(str string) bool {\n\treturn checkURL(str, \"transport\")\n}\n\nfunc checkURL(str, kind string) bool {\n\tfor _, prefix := range validPrefixes[kind] {\n\t\tif strings.HasPrefix(str, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/pkg/version/version.go",
    "content": "package version\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Version provides utility methods for comparing versions.\ntype Version string\n\nfunc (v Version) compareTo(other Version) int {\n\tvar (\n\t\tcurrTab  = strings.Split(string(v), \".\")\n\t\totherTab = strings.Split(string(other), \".\")\n\t)\n\n\tmax := len(currTab)\n\tif len(otherTab) > max {\n\t\tmax = len(otherTab)\n\t}\n\tfor i := 0; i < max; i++ {\n\t\tvar currInt, otherInt int\n\n\t\tif len(currTab) > i {\n\t\t\tcurrInt, _ = strconv.Atoi(currTab[i])\n\t\t}\n\t\tif len(otherTab) > i {\n\t\t\totherInt, _ = strconv.Atoi(otherTab[i])\n\t\t}\n\t\tif currInt > otherInt {\n\t\t\treturn 1\n\t\t}\n\t\tif otherInt > currInt {\n\t\t\treturn -1\n\t\t}\n\t}\n\treturn 0\n}\n\n// String returns the version string\nfunc (v Version) String() string {\n\treturn string(v)\n}\n\n// LessThan checks if a version is less than another\nfunc (v Version) LessThan(other Version) bool {\n\treturn v.compareTo(other) == -1\n}\n\n// LessThanOrEqualTo checks if a version is less than or equal to another\nfunc (v Version) LessThanOrEqualTo(other Version) bool {\n\treturn v.compareTo(other) <= 0\n}\n\n// GreaterThan checks if a version is greater than another\nfunc (v Version) GreaterThan(other Version) bool {\n\treturn v.compareTo(other) == 1\n}\n\n// GreaterThanOrEqualTo checks if a version is greater than or equal to another\nfunc (v Version) GreaterThanOrEqualTo(other Version) bool {\n\treturn v.compareTo(other) >= 0\n}\n\n// Equal checks if a version is equal to another\nfunc (v Version) Equal(other Version) bool {\n\treturn v.compareTo(other) == 0\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/reference/reference.go",
    "content": "package reference\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/digest\"\n\tdistreference \"github.com/docker/distribution/reference\"\n\t\"github.com/docker/docker/image/v1\"\n)\n\nconst (\n\t// DefaultTag defines the default tag used when performing images related actions and no tag or digest is specified\n\tDefaultTag = \"latest\"\n\t// DefaultHostname is the default built-in hostname\n\tDefaultHostname = \"docker.io\"\n\t// LegacyDefaultHostname is automatically converted to DefaultHostname\n\tLegacyDefaultHostname = \"index.docker.io\"\n\t// DefaultRepoPrefix is the prefix used for default repositories in default host\n\tDefaultRepoPrefix = \"library/\"\n)\n\n// Named is an object with a full name\ntype Named interface {\n\t// Name returns normalized repository name, like \"ubuntu\".\n\tName() string\n\t// String returns full reference, like \"ubuntu@sha256:abcdef...\"\n\tString() string\n\t// FullName returns full repository name with hostname, like \"docker.io/library/ubuntu\"\n\tFullName() string\n\t// Hostname returns hostname for the reference, like \"docker.io\"\n\tHostname() string\n\t// RemoteName returns the repository component of the full name, like \"library/ubuntu\"\n\tRemoteName() string\n}\n\n// NamedTagged is an object including a name and tag.\ntype NamedTagged interface {\n\tNamed\n\tTag() string\n}\n\n// Canonical reference is an object with a fully unique\n// name including a name with hostname and digest\ntype Canonical interface {\n\tNamed\n\tDigest() digest.Digest\n}\n\n// ParseNamed parses s and returns a syntactically valid reference implementing\n// the Named interface. The reference must have a name, otherwise an error is\n// returned.\n// If an error was encountered it is returned, along with a nil Reference.\nfunc ParseNamed(s string) (Named, error) {\n\tnamed, err := distreference.ParseNamed(s)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error parsing reference: %q is not a valid repository/tag\", s)\n\t}\n\tr, err := WithName(named.Name())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif canonical, isCanonical := named.(distreference.Canonical); isCanonical {\n\t\treturn WithDigest(r, canonical.Digest())\n\t}\n\tif tagged, isTagged := named.(distreference.NamedTagged); isTagged {\n\t\treturn WithTag(r, tagged.Tag())\n\t}\n\treturn r, nil\n}\n\n// WithName returns a named object representing the given string. If the input\n// is invalid ErrReferenceInvalidFormat will be returned.\nfunc WithName(name string) (Named, error) {\n\tname, err := normalize(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := validateName(name); err != nil {\n\t\treturn nil, err\n\t}\n\tr, err := distreference.WithName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &namedRef{r}, nil\n}\n\n// WithTag combines the name from \"name\" and the tag from \"tag\" to form a\n// reference incorporating both the name and the tag.\nfunc WithTag(name Named, tag string) (NamedTagged, error) {\n\tr, err := distreference.WithTag(name, tag)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &taggedRef{namedRef{r}}, nil\n}\n\n// WithDigest combines the name from \"name\" and the digest from \"digest\" to form\n// a reference incorporating both the name and the digest.\nfunc WithDigest(name Named, digest digest.Digest) (Canonical, error) {\n\tr, err := distreference.WithDigest(name, digest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &canonicalRef{namedRef{r}}, nil\n}\n\ntype namedRef struct {\n\tdistreference.Named\n}\ntype taggedRef struct {\n\tnamedRef\n}\ntype canonicalRef struct {\n\tnamedRef\n}\n\nfunc (r *namedRef) FullName() string {\n\thostname, remoteName := splitHostname(r.Name())\n\treturn hostname + \"/\" + remoteName\n}\nfunc (r *namedRef) Hostname() string {\n\thostname, _ := splitHostname(r.Name())\n\treturn hostname\n}\nfunc (r *namedRef) RemoteName() string {\n\t_, remoteName := splitHostname(r.Name())\n\treturn remoteName\n}\nfunc (r *taggedRef) Tag() string {\n\treturn r.namedRef.Named.(distreference.NamedTagged).Tag()\n}\nfunc (r *canonicalRef) Digest() digest.Digest {\n\treturn r.namedRef.Named.(distreference.Canonical).Digest()\n}\n\n// WithDefaultTag adds a default tag to a reference if it only has a repo name.\nfunc WithDefaultTag(ref Named) Named {\n\tif IsNameOnly(ref) {\n\t\tref, _ = WithTag(ref, DefaultTag)\n\t}\n\treturn ref\n}\n\n// IsNameOnly returns true if reference only contains a repo name.\nfunc IsNameOnly(ref Named) bool {\n\tif _, ok := ref.(NamedTagged); ok {\n\t\treturn false\n\t}\n\tif _, ok := ref.(Canonical); ok {\n\t\treturn false\n\t}\n\treturn true\n}\n\n// ParseIDOrReference parses string for a image ID or a reference. ID can be\n// without a default prefix.\nfunc ParseIDOrReference(idOrRef string) (digest.Digest, Named, error) {\n\tif err := v1.ValidateID(idOrRef); err == nil {\n\t\tidOrRef = \"sha256:\" + idOrRef\n\t}\n\tif dgst, err := digest.ParseDigest(idOrRef); err == nil {\n\t\treturn dgst, nil, nil\n\t}\n\tref, err := ParseNamed(idOrRef)\n\treturn \"\", ref, err\n}\n\n// splitHostname splits a repository name to hostname and remotename string.\n// If no valid hostname is found, the default hostname is used. Repository name\n// needs to be already validated before.\nfunc splitHostname(name string) (hostname, remoteName string) {\n\ti := strings.IndexRune(name, '/')\n\tif i == -1 || (!strings.ContainsAny(name[:i], \".:\") && name[:i] != \"localhost\") {\n\t\thostname, remoteName = DefaultHostname, name\n\t} else {\n\t\thostname, remoteName = name[:i], name[i+1:]\n\t}\n\tif hostname == LegacyDefaultHostname {\n\t\thostname = DefaultHostname\n\t}\n\tif hostname == DefaultHostname && !strings.ContainsRune(remoteName, '/') {\n\t\tremoteName = DefaultRepoPrefix + remoteName\n\t}\n\treturn\n}\n\n// normalize returns a repository name in its normalized form, meaning it\n// will not contain default hostname nor library/ prefix for official images.\nfunc normalize(name string) (string, error) {\n\thost, remoteName := splitHostname(name)\n\tif strings.ToLower(remoteName) != remoteName {\n\t\treturn \"\", errors.New(\"invalid reference format: repository name must be lowercase\")\n\t}\n\tif host == DefaultHostname {\n\t\tif strings.HasPrefix(remoteName, DefaultRepoPrefix) {\n\t\t\treturn strings.TrimPrefix(remoteName, DefaultRepoPrefix), nil\n\t\t}\n\t\treturn remoteName, nil\n\t}\n\treturn name, nil\n}\n\nfunc validateName(name string) error {\n\tif err := v1.ValidateID(name); err == nil {\n\t\treturn fmt.Errorf(\"Invalid repository name (%s), cannot specify 64-byte hexadecimal strings\", name)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/reference/store.go",
    "content": "package reference\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"github.com/docker/distribution/digest\"\n\t\"github.com/docker/docker/image\"\n)\n\nvar (\n\t// ErrDoesNotExist is returned if a reference is not found in the\n\t// store.\n\tErrDoesNotExist = errors.New(\"reference does not exist\")\n)\n\n// An Association is a tuple associating a reference with an image ID.\ntype Association struct {\n\tRef     Named\n\tImageID image.ID\n}\n\n// Store provides the set of methods which can operate on a tag store.\ntype Store interface {\n\tReferences(id image.ID) []Named\n\tReferencesByName(ref Named) []Association\n\tAddTag(ref Named, id image.ID, force bool) error\n\tAddDigest(ref Canonical, id image.ID, force bool) error\n\tDelete(ref Named) (bool, error)\n\tGet(ref Named) (image.ID, error)\n}\n\ntype store struct {\n\tmu sync.RWMutex\n\t// jsonPath is the path to the file where the serialized tag data is\n\t// stored.\n\tjsonPath string\n\t// Repositories is a map of repositories, indexed by name.\n\tRepositories map[string]repository\n\t// referencesByIDCache is a cache of references indexed by ID, to speed\n\t// up References.\n\treferencesByIDCache map[image.ID]map[string]Named\n}\n\n// Repository maps tags to image IDs. The key is a a stringified Reference,\n// including the repository name.\ntype repository map[string]image.ID\n\ntype lexicalRefs []Named\n\nfunc (a lexicalRefs) Len() int           { return len(a) }\nfunc (a lexicalRefs) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a lexicalRefs) Less(i, j int) bool { return a[i].String() < a[j].String() }\n\ntype lexicalAssociations []Association\n\nfunc (a lexicalAssociations) Len() int           { return len(a) }\nfunc (a lexicalAssociations) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a lexicalAssociations) Less(i, j int) bool { return a[i].Ref.String() < a[j].Ref.String() }\n\n// NewReferenceStore creates a new reference store, tied to a file path where\n// the set of references are serialized in JSON format.\nfunc NewReferenceStore(jsonPath string) (Store, error) {\n\tabspath, err := filepath.Abs(jsonPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tstore := &store{\n\t\tjsonPath:            abspath,\n\t\tRepositories:        make(map[string]repository),\n\t\treferencesByIDCache: make(map[image.ID]map[string]Named),\n\t}\n\t// Load the json file if it exists, otherwise create it.\n\tif err := store.reload(); os.IsNotExist(err) {\n\t\tif err := store.save(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else if err != nil {\n\t\treturn nil, err\n\t}\n\treturn store, nil\n}\n\n// AddTag adds a tag reference to the store. If force is set to true, existing\n// references can be overwritten. This only works for tags, not digests.\nfunc (store *store) AddTag(ref Named, id image.ID, force bool) error {\n\tif _, isCanonical := ref.(Canonical); isCanonical {\n\t\treturn errors.New(\"refusing to create a tag with a digest reference\")\n\t}\n\treturn store.addReference(WithDefaultTag(ref), id, force)\n}\n\n// AddDigest adds a digest reference to the store.\nfunc (store *store) AddDigest(ref Canonical, id image.ID, force bool) error {\n\treturn store.addReference(ref, id, force)\n}\n\nfunc (store *store) addReference(ref Named, id image.ID, force bool) error {\n\tif ref.Name() == string(digest.Canonical) {\n\t\treturn errors.New(\"refusing to create an ambiguous tag using digest algorithm as name\")\n\t}\n\n\tstore.mu.Lock()\n\tdefer store.mu.Unlock()\n\n\trepository, exists := store.Repositories[ref.Name()]\n\tif !exists || repository == nil {\n\t\trepository = make(map[string]image.ID)\n\t\tstore.Repositories[ref.Name()] = repository\n\t}\n\n\trefStr := ref.String()\n\toldID, exists := repository[refStr]\n\n\tif exists {\n\t\t// force only works for tags\n\t\tif digested, isDigest := ref.(Canonical); isDigest {\n\t\t\treturn fmt.Errorf(\"Cannot overwrite digest %s\", digested.Digest().String())\n\t\t}\n\n\t\tif !force {\n\t\t\treturn fmt.Errorf(\"Conflict: Tag %s is already set to image %s, if you want to replace it, please use -f option\", ref.String(), oldID.String())\n\t\t}\n\n\t\tif store.referencesByIDCache[oldID] != nil {\n\t\t\tdelete(store.referencesByIDCache[oldID], refStr)\n\t\t\tif len(store.referencesByIDCache[oldID]) == 0 {\n\t\t\t\tdelete(store.referencesByIDCache, oldID)\n\t\t\t}\n\t\t}\n\t}\n\n\trepository[refStr] = id\n\tif store.referencesByIDCache[id] == nil {\n\t\tstore.referencesByIDCache[id] = make(map[string]Named)\n\t}\n\tstore.referencesByIDCache[id][refStr] = ref\n\n\treturn store.save()\n}\n\n// Delete deletes a reference from the store. It returns true if a deletion\n// happened, or false otherwise.\nfunc (store *store) Delete(ref Named) (bool, error) {\n\tref = WithDefaultTag(ref)\n\n\tstore.mu.Lock()\n\tdefer store.mu.Unlock()\n\n\trepoName := ref.Name()\n\n\trepository, exists := store.Repositories[repoName]\n\tif !exists {\n\t\treturn false, ErrDoesNotExist\n\t}\n\n\trefStr := ref.String()\n\tif id, exists := repository[refStr]; exists {\n\t\tdelete(repository, refStr)\n\t\tif len(repository) == 0 {\n\t\t\tdelete(store.Repositories, repoName)\n\t\t}\n\t\tif store.referencesByIDCache[id] != nil {\n\t\t\tdelete(store.referencesByIDCache[id], refStr)\n\t\t\tif len(store.referencesByIDCache[id]) == 0 {\n\t\t\t\tdelete(store.referencesByIDCache, id)\n\t\t\t}\n\t\t}\n\t\treturn true, store.save()\n\t}\n\n\treturn false, ErrDoesNotExist\n}\n\n// Get retrieves an item from the store by\nfunc (store *store) Get(ref Named) (image.ID, error) {\n\tref = WithDefaultTag(ref)\n\n\tstore.mu.RLock()\n\tdefer store.mu.RUnlock()\n\n\trepository, exists := store.Repositories[ref.Name()]\n\tif !exists || repository == nil {\n\t\treturn \"\", ErrDoesNotExist\n\t}\n\n\tid, exists := repository[ref.String()]\n\tif !exists {\n\t\treturn \"\", ErrDoesNotExist\n\t}\n\n\treturn id, nil\n}\n\n// References returns a slice of references to the given image ID. The slice\n// will be nil if there are no references to this image ID.\nfunc (store *store) References(id image.ID) []Named {\n\tstore.mu.RLock()\n\tdefer store.mu.RUnlock()\n\n\t// Convert the internal map to an array for two reasons:\n\t// 1) We must not return a mutable\n\t// 2) It would be ugly to expose the extraneous map keys to callers.\n\n\tvar references []Named\n\tfor _, ref := range store.referencesByIDCache[id] {\n\t\treferences = append(references, ref)\n\t}\n\n\tsort.Sort(lexicalRefs(references))\n\n\treturn references\n}\n\n// ReferencesByName returns the references for a given repository name.\n// If there are no references known for this repository name,\n// ReferencesByName returns nil.\nfunc (store *store) ReferencesByName(ref Named) []Association {\n\tstore.mu.RLock()\n\tdefer store.mu.RUnlock()\n\n\trepository, exists := store.Repositories[ref.Name()]\n\tif !exists {\n\t\treturn nil\n\t}\n\n\tvar associations []Association\n\tfor refStr, refID := range repository {\n\t\tref, err := ParseNamed(refStr)\n\t\tif err != nil {\n\t\t\t// Should never happen\n\t\t\treturn nil\n\t\t}\n\t\tassociations = append(associations,\n\t\t\tAssociation{\n\t\t\t\tRef:     ref,\n\t\t\t\tImageID: refID,\n\t\t\t})\n\t}\n\n\tsort.Sort(lexicalAssociations(associations))\n\n\treturn associations\n}\n\nfunc (store *store) save() error {\n\t// Store the json\n\tjsonData, err := json.Marshal(store)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttempFilePath := store.jsonPath + \".tmp\"\n\n\tif err := ioutil.WriteFile(tempFilePath, jsonData, 0600); err != nil {\n\t\treturn err\n\t}\n\n\tif err := os.Rename(tempFilePath, store.jsonPath); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (store *store) reload() error {\n\tf, err := os.Open(store.jsonPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\tif err := json.NewDecoder(f).Decode(&store); err != nil {\n\t\treturn err\n\t}\n\n\tfor _, repository := range store.Repositories {\n\t\tfor refStr, refID := range repository {\n\t\t\tref, err := ParseNamed(refStr)\n\t\t\tif err != nil {\n\t\t\t\t// Should never happen\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif store.referencesByIDCache[refID] == nil {\n\t\t\t\tstore.referencesByIDCache[refID] = make(map[string]Named)\n\t\t\t}\n\t\t\tstore.referencesByIDCache[refID][refStr] = ref\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/auth.go",
    "content": "package registry\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/registry/client/auth\"\n\t\"github.com/docker/distribution/registry/client/transport\"\n\t\"github.com/docker/engine-api/types\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nconst (\n\t// AuthClientID is used the ClientID used for the token server\n\tAuthClientID = \"docker\"\n)\n\n// loginV1 tries to register/login to the v1 registry server.\nfunc loginV1(authConfig *types.AuthConfig, apiEndpoint APIEndpoint, userAgent string) (string, string, error) {\n\tregistryEndpoint, err := apiEndpoint.ToV1Endpoint(userAgent, nil)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tserverAddress := registryEndpoint.String()\n\n\tlogrus.Debugf(\"attempting v1 login to registry endpoint %s\", serverAddress)\n\n\tif serverAddress == \"\" {\n\t\treturn \"\", \"\", fmt.Errorf(\"Server Error: Server Address not set.\")\n\t}\n\n\tloginAgainstOfficialIndex := serverAddress == IndexServer\n\n\treq, err := http.NewRequest(\"GET\", serverAddress+\"users/\", nil)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\treq.SetBasicAuth(authConfig.Username, authConfig.Password)\n\tresp, err := registryEndpoint.client.Do(req)\n\tif err != nil {\n\t\t// fallback when request could not be completed\n\t\treturn \"\", \"\", fallbackError{\n\t\t\terr: err,\n\t\t}\n\t}\n\tdefer resp.Body.Close()\n\tbody, err := ioutil.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\tif resp.StatusCode == http.StatusOK {\n\t\treturn \"Login Succeeded\", \"\", nil\n\t} else if resp.StatusCode == http.StatusUnauthorized {\n\t\tif loginAgainstOfficialIndex {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"Wrong login/password, please try again. Haven't got a Docker ID? Create one at https://hub.docker.com\")\n\t\t}\n\t\treturn \"\", \"\", fmt.Errorf(\"Wrong login/password, please try again\")\n\t} else if resp.StatusCode == http.StatusForbidden {\n\t\tif loginAgainstOfficialIndex {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"Login: Account is not active. Please check your e-mail for a confirmation link.\")\n\t\t}\n\t\t// *TODO: Use registry configuration to determine what this says, if anything?\n\t\treturn \"\", \"\", fmt.Errorf(\"Login: Account is not active. Please see the documentation of the registry %s for instructions how to activate it.\", serverAddress)\n\t} else if resp.StatusCode == http.StatusInternalServerError { // Issue #14326\n\t\tlogrus.Errorf(\"%s returned status code %d. Response Body :\\n%s\", req.URL.String(), resp.StatusCode, body)\n\t\treturn \"\", \"\", fmt.Errorf(\"Internal Server Error\")\n\t}\n\treturn \"\", \"\", fmt.Errorf(\"Login: %s (Code: %d; Headers: %s)\", body,\n\t\tresp.StatusCode, resp.Header)\n}\n\ntype loginCredentialStore struct {\n\tauthConfig *types.AuthConfig\n}\n\nfunc (lcs loginCredentialStore) Basic(*url.URL) (string, string) {\n\treturn lcs.authConfig.Username, lcs.authConfig.Password\n}\n\nfunc (lcs loginCredentialStore) RefreshToken(*url.URL, string) string {\n\treturn lcs.authConfig.IdentityToken\n}\n\nfunc (lcs loginCredentialStore) SetRefreshToken(u *url.URL, service, token string) {\n\tlcs.authConfig.IdentityToken = token\n}\n\ntype fallbackError struct {\n\terr error\n}\n\nfunc (err fallbackError) Error() string {\n\treturn err.err.Error()\n}\n\n// loginV2 tries to login to the v2 registry server. The given registry\n// endpoint will be pinged to get authorization challenges. These challenges\n// will be used to authenticate against the registry to validate credentials.\nfunc loginV2(authConfig *types.AuthConfig, endpoint APIEndpoint, userAgent string) (string, string, error) {\n\tlogrus.Debugf(\"attempting v2 login to registry endpoint %s\", strings.TrimRight(endpoint.URL.String(), \"/\")+\"/v2/\")\n\n\tmodifiers := DockerHeaders(userAgent, nil)\n\tauthTransport := transport.NewTransport(NewTransport(endpoint.TLSConfig), modifiers...)\n\n\tchallengeManager, foundV2, err := PingV2Registry(endpoint, authTransport)\n\tif err != nil {\n\t\tif !foundV2 {\n\t\t\terr = fallbackError{err: err}\n\t\t}\n\t\treturn \"\", \"\", err\n\t}\n\n\tcredentialAuthConfig := *authConfig\n\tcreds := loginCredentialStore{\n\t\tauthConfig: &credentialAuthConfig,\n\t}\n\n\ttokenHandlerOptions := auth.TokenHandlerOptions{\n\t\tTransport:     authTransport,\n\t\tCredentials:   creds,\n\t\tOfflineAccess: true,\n\t\tClientID:      AuthClientID,\n\t}\n\ttokenHandler := auth.NewTokenHandlerWithOptions(tokenHandlerOptions)\n\tbasicHandler := auth.NewBasicHandler(creds)\n\tmodifiers = append(modifiers, auth.NewAuthorizer(challengeManager, tokenHandler, basicHandler))\n\ttr := transport.NewTransport(authTransport, modifiers...)\n\n\tloginClient := &http.Client{\n\t\tTransport: tr,\n\t\tTimeout:   15 * time.Second,\n\t}\n\n\tendpointStr := strings.TrimRight(endpoint.URL.String(), \"/\") + \"/v2/\"\n\treq, err := http.NewRequest(\"GET\", endpointStr, nil)\n\tif err != nil {\n\t\tif !foundV2 {\n\t\t\terr = fallbackError{err: err}\n\t\t}\n\t\treturn \"\", \"\", err\n\t}\n\n\tresp, err := loginClient.Do(req)\n\tif err != nil {\n\t\tif !foundV2 {\n\t\t\terr = fallbackError{err: err}\n\t\t}\n\t\treturn \"\", \"\", err\n\t}\n\tdefer resp.Body.Close()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\t// TODO(dmcgowan): Attempt to further interpret result, status code and error code string\n\t\terr := fmt.Errorf(\"login attempt to %s failed with status: %d %s\", endpointStr, resp.StatusCode, http.StatusText(resp.StatusCode))\n\t\tif !foundV2 {\n\t\t\terr = fallbackError{err: err}\n\t\t}\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn \"Login Succeeded\", credentialAuthConfig.IdentityToken, nil\n\n}\n\n// ResolveAuthConfig matches an auth configuration to a server address or a URL\nfunc ResolveAuthConfig(authConfigs map[string]types.AuthConfig, index *registrytypes.IndexInfo) types.AuthConfig {\n\tconfigKey := GetAuthConfigKey(index)\n\t// First try the happy case\n\tif c, found := authConfigs[configKey]; found || index.Official {\n\t\treturn c\n\t}\n\n\tconvertToHostname := func(url string) string {\n\t\tstripped := url\n\t\tif strings.HasPrefix(url, \"http://\") {\n\t\t\tstripped = strings.Replace(url, \"http://\", \"\", 1)\n\t\t} else if strings.HasPrefix(url, \"https://\") {\n\t\t\tstripped = strings.Replace(url, \"https://\", \"\", 1)\n\t\t}\n\n\t\tnameParts := strings.SplitN(stripped, \"/\", 2)\n\n\t\treturn nameParts[0]\n\t}\n\n\t// Maybe they have a legacy config file, we will iterate the keys converting\n\t// them to the new format and testing\n\tfor registry, ac := range authConfigs {\n\t\tif configKey == convertToHostname(registry) {\n\t\t\treturn ac\n\t\t}\n\t}\n\n\t// When all else fails, return an empty auth config\n\treturn types.AuthConfig{}\n}\n\n// PingResponseError is used when the response from a ping\n// was received but invalid.\ntype PingResponseError struct {\n\tErr error\n}\n\nfunc (err PingResponseError) Error() string {\n\treturn err.Error()\n}\n\n// PingV2Registry attempts to ping a v2 registry and on success return a\n// challenge manager for the supported authentication types and\n// whether v2 was confirmed by the response. If a response is received but\n// cannot be interpreted a PingResponseError will be returned.\nfunc PingV2Registry(endpoint APIEndpoint, transport http.RoundTripper) (auth.ChallengeManager, bool, error) {\n\tvar (\n\t\tfoundV2   = false\n\t\tv2Version = auth.APIVersion{\n\t\t\tType:    \"registry\",\n\t\t\tVersion: \"2.0\",\n\t\t}\n\t)\n\n\tpingClient := &http.Client{\n\t\tTransport: transport,\n\t\tTimeout:   15 * time.Second,\n\t}\n\tendpointStr := strings.TrimRight(endpoint.URL.String(), \"/\") + \"/v2/\"\n\treq, err := http.NewRequest(\"GET\", endpointStr, nil)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\tresp, err := pingClient.Do(req)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\tdefer resp.Body.Close()\n\n\tversions := auth.APIVersions(resp, DefaultRegistryVersionHeader)\n\tfor _, pingVersion := range versions {\n\t\tif pingVersion == v2Version {\n\t\t\t// The version header indicates we're definitely\n\t\t\t// talking to a v2 registry. So don't allow future\n\t\t\t// fallbacks to the v1 protocol.\n\n\t\t\tfoundV2 = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tchallengeManager := auth.NewSimpleChallengeManager()\n\tif err := challengeManager.AddResponse(resp); err != nil {\n\t\treturn nil, foundV2, PingResponseError{\n\t\t\tErr: err,\n\t\t}\n\t}\n\n\treturn challengeManager, foundV2, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/config.go",
    "content": "package registry\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/opts\"\n\tflag \"github.com/docker/docker/pkg/mflag\"\n\t\"github.com/docker/docker/reference\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n)\n\n// ServiceOptions holds command line options.\ntype ServiceOptions struct {\n\tMirrors            []string `json:\"registry-mirrors,omitempty\"`\n\tInsecureRegistries []string `json:\"insecure-registries,omitempty\"`\n\n\t// V2Only controls access to legacy registries.  If it is set to true via the\n\t// command line flag the daemon will not attempt to contact v1 legacy registries\n\tV2Only bool `json:\"disable-legacy-registry,omitempty\"`\n}\n\n// serviceConfig holds daemon configuration for the registry service.\ntype serviceConfig struct {\n\tregistrytypes.ServiceConfig\n\tV2Only bool\n}\n\nvar (\n\t// DefaultNamespace is the default namespace\n\tDefaultNamespace = \"docker.io\"\n\t// DefaultRegistryVersionHeader is the name of the default HTTP header\n\t// that carries Registry version info\n\tDefaultRegistryVersionHeader = \"Docker-Distribution-Api-Version\"\n\n\t// IndexServer is the v1 registry server used for user auth + account creation\n\tIndexServer = DefaultV1Registry.String() + \"/v1/\"\n\t// IndexName is the name of the index\n\tIndexName = \"docker.io\"\n\n\t// NotaryServer is the endpoint serving the Notary trust server\n\tNotaryServer = \"https://notary.docker.io\"\n\n\t// DefaultV1Registry is the URI of the default v1 registry\n\tDefaultV1Registry = &url.URL{\n\t\tScheme: \"https\",\n\t\tHost:   \"index.docker.io\",\n\t}\n\n\t// DefaultV2Registry is the URI of the default v2 registry\n\tDefaultV2Registry = &url.URL{\n\t\tScheme: \"https\",\n\t\tHost:   \"registry-1.docker.io\",\n\t}\n)\n\nvar (\n\t// ErrInvalidRepositoryName is an error returned if the repository name did\n\t// not have the correct form\n\tErrInvalidRepositoryName = errors.New(\"Invalid repository name (ex: \\\"registry.domain.tld/myrepos\\\")\")\n\n\temptyServiceConfig = newServiceConfig(ServiceOptions{})\n)\n\n// for mocking in unit tests\nvar lookupIP = net.LookupIP\n\n// InstallCliFlags adds command-line options to the top-level flag parser for\n// the current process.\nfunc (options *ServiceOptions) InstallCliFlags(cmd *flag.FlagSet, usageFn func(string) string) {\n\tmirrors := opts.NewNamedListOptsRef(\"registry-mirrors\", &options.Mirrors, ValidateMirror)\n\tcmd.Var(mirrors, []string{\"-registry-mirror\"}, usageFn(\"Preferred Docker registry mirror\"))\n\n\tinsecureRegistries := opts.NewNamedListOptsRef(\"insecure-registries\", &options.InsecureRegistries, ValidateIndexName)\n\tcmd.Var(insecureRegistries, []string{\"-insecure-registry\"}, usageFn(\"Enable insecure registry communication\"))\n\n\tcmd.BoolVar(&options.V2Only, []string{\"-disable-legacy-registry\"}, false, usageFn(\"Do not contact legacy registries\"))\n}\n\n// newServiceConfig returns a new instance of ServiceConfig\nfunc newServiceConfig(options ServiceOptions) *serviceConfig {\n\t// Localhost is by default considered as an insecure registry\n\t// This is a stop-gap for people who are running a private registry on localhost (especially on Boot2docker).\n\t//\n\t// TODO: should we deprecate this once it is easier for people to set up a TLS registry or change\n\t// daemon flags on boot2docker?\n\toptions.InsecureRegistries = append(options.InsecureRegistries, \"127.0.0.0/8\")\n\n\tconfig := &serviceConfig{\n\t\tServiceConfig: registrytypes.ServiceConfig{\n\t\t\tInsecureRegistryCIDRs: make([]*registrytypes.NetIPNet, 0),\n\t\t\tIndexConfigs:          make(map[string]*registrytypes.IndexInfo, 0),\n\t\t\t// Hack: Bypass setting the mirrors to IndexConfigs since they are going away\n\t\t\t// and Mirrors are only for the official registry anyways.\n\t\t\tMirrors: options.Mirrors,\n\t\t},\n\t\tV2Only: options.V2Only,\n\t}\n\t// Split --insecure-registry into CIDR and registry-specific settings.\n\tfor _, r := range options.InsecureRegistries {\n\t\t// Check if CIDR was passed to --insecure-registry\n\t\t_, ipnet, err := net.ParseCIDR(r)\n\t\tif err == nil {\n\t\t\t// Valid CIDR.\n\t\t\tconfig.InsecureRegistryCIDRs = append(config.InsecureRegistryCIDRs, (*registrytypes.NetIPNet)(ipnet))\n\t\t} else {\n\t\t\t// Assume `host:port` if not CIDR.\n\t\t\tconfig.IndexConfigs[r] = &registrytypes.IndexInfo{\n\t\t\t\tName:     r,\n\t\t\t\tMirrors:  make([]string, 0),\n\t\t\t\tSecure:   false,\n\t\t\t\tOfficial: false,\n\t\t\t}\n\t\t}\n\t}\n\n\t// Configure public registry.\n\tconfig.IndexConfigs[IndexName] = &registrytypes.IndexInfo{\n\t\tName:     IndexName,\n\t\tMirrors:  config.Mirrors,\n\t\tSecure:   true,\n\t\tOfficial: true,\n\t}\n\n\treturn config\n}\n\n// isSecureIndex returns false if the provided indexName is part of the list of insecure registries\n// Insecure registries accept HTTP and/or accept HTTPS with certificates from unknown CAs.\n//\n// The list of insecure registries can contain an element with CIDR notation to specify a whole subnet.\n// If the subnet contains one of the IPs of the registry specified by indexName, the latter is considered\n// insecure.\n//\n// indexName should be a URL.Host (`host:port` or `host`) where the `host` part can be either a domain name\n// or an IP address. If it is a domain name, then it will be resolved in order to check if the IP is contained\n// in a subnet. If the resolving is not successful, isSecureIndex will only try to match hostname to any element\n// of insecureRegistries.\nfunc isSecureIndex(config *serviceConfig, indexName string) bool {\n\t// Check for configured index, first.  This is needed in case isSecureIndex\n\t// is called from anything besides newIndexInfo, in order to honor per-index configurations.\n\tif index, ok := config.IndexConfigs[indexName]; ok {\n\t\treturn index.Secure\n\t}\n\n\thost, _, err := net.SplitHostPort(indexName)\n\tif err != nil {\n\t\t// assume indexName is of the form `host` without the port and go on.\n\t\thost = indexName\n\t}\n\n\taddrs, err := lookupIP(host)\n\tif err != nil {\n\t\tip := net.ParseIP(host)\n\t\tif ip != nil {\n\t\t\taddrs = []net.IP{ip}\n\t\t}\n\n\t\t// if ip == nil, then `host` is neither an IP nor it could be looked up,\n\t\t// either because the index is unreachable, or because the index is behind an HTTP proxy.\n\t\t// So, len(addrs) == 0 and we're not aborting.\n\t}\n\n\t// Try CIDR notation only if addrs has any elements, i.e. if `host`'s IP could be determined.\n\tfor _, addr := range addrs {\n\t\tfor _, ipnet := range config.InsecureRegistryCIDRs {\n\t\t\t// check if the addr falls in the subnet\n\t\t\tif (*net.IPNet)(ipnet).Contains(addr) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n\n// ValidateMirror validates an HTTP(S) registry mirror\nfunc ValidateMirror(val string) (string, error) {\n\turi, err := url.Parse(val)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"%s is not a valid URI\", val)\n\t}\n\n\tif uri.Scheme != \"http\" && uri.Scheme != \"https\" {\n\t\treturn \"\", fmt.Errorf(\"Unsupported scheme %s\", uri.Scheme)\n\t}\n\n\tif uri.Path != \"\" || uri.RawQuery != \"\" || uri.Fragment != \"\" {\n\t\treturn \"\", fmt.Errorf(\"Unsupported path/query/fragment at end of the URI\")\n\t}\n\n\treturn fmt.Sprintf(\"%s://%s/\", uri.Scheme, uri.Host), nil\n}\n\n// ValidateIndexName validates an index name.\nfunc ValidateIndexName(val string) (string, error) {\n\tif val == reference.LegacyDefaultHostname {\n\t\tval = reference.DefaultHostname\n\t}\n\tif strings.HasPrefix(val, \"-\") || strings.HasSuffix(val, \"-\") {\n\t\treturn \"\", fmt.Errorf(\"Invalid index name (%s). Cannot begin or end with a hyphen.\", val)\n\t}\n\treturn val, nil\n}\n\nfunc validateNoSchema(reposName string) error {\n\tif strings.Contains(reposName, \"://\") {\n\t\t// It cannot contain a scheme!\n\t\treturn ErrInvalidRepositoryName\n\t}\n\treturn nil\n}\n\n// newIndexInfo returns IndexInfo configuration from indexName\nfunc newIndexInfo(config *serviceConfig, indexName string) (*registrytypes.IndexInfo, error) {\n\tvar err error\n\tindexName, err = ValidateIndexName(indexName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Return any configured index info, first.\n\tif index, ok := config.IndexConfigs[indexName]; ok {\n\t\treturn index, nil\n\t}\n\n\t// Construct a non-configured index info.\n\tindex := &registrytypes.IndexInfo{\n\t\tName:     indexName,\n\t\tMirrors:  make([]string, 0),\n\t\tOfficial: false,\n\t}\n\tindex.Secure = isSecureIndex(config, indexName)\n\treturn index, nil\n}\n\n// GetAuthConfigKey special-cases using the full index address of the official\n// index as the AuthConfig key, and uses the (host)name[:port] for private indexes.\nfunc GetAuthConfigKey(index *registrytypes.IndexInfo) string {\n\tif index.Official {\n\t\treturn IndexServer\n\t}\n\treturn index.Name\n}\n\n// newRepositoryInfo validates and breaks down a repository name into a RepositoryInfo\nfunc newRepositoryInfo(config *serviceConfig, name reference.Named) (*RepositoryInfo, error) {\n\tindex, err := newIndexInfo(config, name.Hostname())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tofficial := !strings.ContainsRune(name.Name(), '/')\n\treturn &RepositoryInfo{name, index, official}, nil\n}\n\n// ParseRepositoryInfo performs the breakdown of a repository name into a RepositoryInfo, but\n// lacks registry configuration.\nfunc ParseRepositoryInfo(reposName reference.Named) (*RepositoryInfo, error) {\n\treturn newRepositoryInfo(emptyServiceConfig, reposName)\n}\n\n// ParseSearchIndexInfo will use repository name to get back an indexInfo.\nfunc ParseSearchIndexInfo(reposName string) (*registrytypes.IndexInfo, error) {\n\tindexName, _ := splitReposSearchTerm(reposName)\n\n\tindexInfo, err := newIndexInfo(emptyServiceConfig, indexName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn indexInfo, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/config_unix.go",
    "content": "// +build !windows\n\npackage registry\n\nvar (\n\t// CertsDir is the directory where certificates are stored\n\tCertsDir = \"/etc/docker/certs.d\"\n)\n\n// cleanPath is used to ensure that a directory name is valid on the target\n// platform. It will be passed in something *similar* to a URL such as\n// https:/index.docker.io/v1. Not all platforms support directory names\n// which contain those characters (such as : on Windows)\nfunc cleanPath(s string) string {\n\treturn s\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/endpoint_v1.go",
    "content": "package registry\n\nimport (\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/registry/client/transport\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// V1Endpoint stores basic information about a V1 registry endpoint.\ntype V1Endpoint struct {\n\tclient   *http.Client\n\tURL      *url.URL\n\tIsSecure bool\n}\n\n// NewV1Endpoint parses the given address to return a registry endpoint.\nfunc NewV1Endpoint(index *registrytypes.IndexInfo, userAgent string, metaHeaders http.Header) (*V1Endpoint, error) {\n\ttlsConfig, err := newTLSConfig(index.Name, index.Secure)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tendpoint, err := newV1EndpointFromStr(GetAuthConfigKey(index), tlsConfig, userAgent, metaHeaders)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := validateEndpoint(endpoint); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn endpoint, nil\n}\n\nfunc validateEndpoint(endpoint *V1Endpoint) error {\n\tlogrus.Debugf(\"pinging registry endpoint %s\", endpoint)\n\n\t// Try HTTPS ping to registry\n\tendpoint.URL.Scheme = \"https\"\n\tif _, err := endpoint.Ping(); err != nil {\n\t\tif endpoint.IsSecure {\n\t\t\t// If registry is secure and HTTPS failed, show user the error and tell them about `--insecure-registry`\n\t\t\t// in case that's what they need. DO NOT accept unknown CA certificates, and DO NOT fallback to HTTP.\n\t\t\treturn fmt.Errorf(\"invalid registry endpoint %s: %v. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry %s` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/%s/ca.crt\", endpoint, err, endpoint.URL.Host, endpoint.URL.Host)\n\t\t}\n\n\t\t// If registry is insecure and HTTPS failed, fallback to HTTP.\n\t\tlogrus.Debugf(\"Error from registry %q marked as insecure: %v. Insecurely falling back to HTTP\", endpoint, err)\n\t\tendpoint.URL.Scheme = \"http\"\n\n\t\tvar err2 error\n\t\tif _, err2 = endpoint.Ping(); err2 == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\treturn fmt.Errorf(\"invalid registry endpoint %q. HTTPS attempt: %v. HTTP attempt: %v\", endpoint, err, err2)\n\t}\n\n\treturn nil\n}\n\nfunc newV1Endpoint(address url.URL, tlsConfig *tls.Config, userAgent string, metaHeaders http.Header) (*V1Endpoint, error) {\n\tendpoint := &V1Endpoint{\n\t\tIsSecure: (tlsConfig == nil || !tlsConfig.InsecureSkipVerify),\n\t\tURL:      new(url.URL),\n\t}\n\n\t*endpoint.URL = address\n\n\t// TODO(tiborvass): make sure a ConnectTimeout transport is used\n\ttr := NewTransport(tlsConfig)\n\tendpoint.client = HTTPClient(transport.NewTransport(tr, DockerHeaders(userAgent, metaHeaders)...))\n\treturn endpoint, nil\n}\n\n// trimV1Address trims the version off the address and returns the\n// trimmed address or an error if there is a non-V1 version.\nfunc trimV1Address(address string) (string, error) {\n\tvar (\n\t\tchunks        []string\n\t\tapiVersionStr string\n\t)\n\n\tif strings.HasSuffix(address, \"/\") {\n\t\taddress = address[:len(address)-1]\n\t}\n\n\tchunks = strings.Split(address, \"/\")\n\tapiVersionStr = chunks[len(chunks)-1]\n\tif apiVersionStr == \"v1\" {\n\t\treturn strings.Join(chunks[:len(chunks)-1], \"/\"), nil\n\t}\n\n\tfor k, v := range apiVersions {\n\t\tif k != APIVersion1 && apiVersionStr == v {\n\t\t\treturn \"\", fmt.Errorf(\"unsupported V1 version path %s\", apiVersionStr)\n\t\t}\n\t}\n\n\treturn address, nil\n}\n\nfunc newV1EndpointFromStr(address string, tlsConfig *tls.Config, userAgent string, metaHeaders http.Header) (*V1Endpoint, error) {\n\tif !strings.HasPrefix(address, \"http://\") && !strings.HasPrefix(address, \"https://\") {\n\t\taddress = \"https://\" + address\n\t}\n\n\taddress, err := trimV1Address(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\turi, err := url.Parse(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tendpoint, err := newV1Endpoint(*uri, tlsConfig, userAgent, metaHeaders)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn endpoint, nil\n}\n\n// Get the formatted URL for the root of this registry Endpoint\nfunc (e *V1Endpoint) String() string {\n\treturn e.URL.String() + \"/v1/\"\n}\n\n// Path returns a formatted string for the URL\n// of this endpoint with the given path appended.\nfunc (e *V1Endpoint) Path(path string) string {\n\treturn e.URL.String() + \"/v1/\" + path\n}\n\n// Ping returns a PingResult which indicates whether the registry is standalone or not.\nfunc (e *V1Endpoint) Ping() (PingResult, error) {\n\tlogrus.Debugf(\"attempting v1 ping for registry endpoint %s\", e)\n\n\tif e.String() == IndexServer {\n\t\t// Skip the check, we know this one is valid\n\t\t// (and we never want to fallback to http in case of error)\n\t\treturn PingResult{Standalone: false}, nil\n\t}\n\n\treq, err := http.NewRequest(\"GET\", e.Path(\"_ping\"), nil)\n\tif err != nil {\n\t\treturn PingResult{Standalone: false}, err\n\t}\n\n\tresp, err := e.client.Do(req)\n\tif err != nil {\n\t\treturn PingResult{Standalone: false}, err\n\t}\n\n\tdefer resp.Body.Close()\n\n\tjsonString, err := ioutil.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn PingResult{Standalone: false}, fmt.Errorf(\"error while reading the http response: %s\", err)\n\t}\n\n\t// If the header is absent, we assume true for compatibility with earlier\n\t// versions of the registry. default to true\n\tinfo := PingResult{\n\t\tStandalone: true,\n\t}\n\tif err := json.Unmarshal(jsonString, &info); err != nil {\n\t\tlogrus.Debugf(\"Error unmarshalling the _ping PingResult: %s\", err)\n\t\t// don't stop here. Just assume sane defaults\n\t}\n\tif hdr := resp.Header.Get(\"X-Docker-Registry-Version\"); hdr != \"\" {\n\t\tlogrus.Debugf(\"Registry version header: '%s'\", hdr)\n\t\tinfo.Version = hdr\n\t}\n\tlogrus.Debugf(\"PingResult.Version: %q\", info.Version)\n\n\tstandalone := resp.Header.Get(\"X-Docker-Registry-Standalone\")\n\tlogrus.Debugf(\"Registry standalone header: '%s'\", standalone)\n\t// Accepted values are \"true\" (case-insensitive) and \"1\".\n\tif strings.EqualFold(standalone, \"true\") || standalone == \"1\" {\n\t\tinfo.Standalone = true\n\t} else if len(standalone) > 0 {\n\t\t// there is a header set, and it is not \"true\" or \"1\", so assume fails\n\t\tinfo.Standalone = false\n\t}\n\tlogrus.Debugf(\"PingResult.Standalone: %t\", info.Standalone)\n\treturn info, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/reference.go",
    "content": "package registry\n\nimport (\n\t\"strings\"\n\n\t\"github.com/docker/distribution/digest\"\n)\n\n// Reference represents a tag or digest within a repository\ntype Reference interface {\n\t// HasDigest returns whether the reference has a verifiable\n\t// content addressable reference which may be considered secure.\n\tHasDigest() bool\n\n\t// ImageName returns an image name for the given repository\n\tImageName(string) string\n\n\t// Returns a string representation of the reference\n\tString() string\n}\n\ntype tagReference struct {\n\ttag string\n}\n\nfunc (tr tagReference) HasDigest() bool {\n\treturn false\n}\n\nfunc (tr tagReference) ImageName(repo string) string {\n\treturn repo + \":\" + tr.tag\n}\n\nfunc (tr tagReference) String() string {\n\treturn tr.tag\n}\n\ntype digestReference struct {\n\tdigest digest.Digest\n}\n\nfunc (dr digestReference) HasDigest() bool {\n\treturn true\n}\n\nfunc (dr digestReference) ImageName(repo string) string {\n\treturn repo + \"@\" + dr.String()\n}\n\nfunc (dr digestReference) String() string {\n\treturn dr.digest.String()\n}\n\n// ParseReference parses a reference into either a digest or tag reference\nfunc ParseReference(ref string) Reference {\n\tif strings.Contains(ref, \":\") {\n\t\tdgst, err := digest.ParseDigest(ref)\n\t\tif err == nil {\n\t\t\treturn digestReference{digest: dgst}\n\t\t}\n\t}\n\treturn tagReference{tag: ref}\n}\n\n// DigestReference creates a digest reference using a digest\nfunc DigestReference(dgst digest.Digest) Reference {\n\treturn digestReference{digest: dgst}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/registry.go",
    "content": "// Package registry contains client primitives to interact with a remote Docker registry.\npackage registry\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/docker/distribution/registry/client/transport\"\n\t\"github.com/docker/go-connections/tlsconfig\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// ErrAlreadyExists is an error returned if an image being pushed\n\t// already exists on the remote side\n\tErrAlreadyExists = errors.New(\"Image already exists\")\n)\n\nfunc newTLSConfig(hostname string, isSecure bool) (*tls.Config, error) {\n\t// PreferredServerCipherSuites should have no effect\n\ttlsConfig := tlsconfig.ServerDefault\n\n\ttlsConfig.InsecureSkipVerify = !isSecure\n\n\tif isSecure && CertsDir != \"\" {\n\t\thostDir := filepath.Join(CertsDir, cleanPath(hostname))\n\t\tlogrus.Debugf(\"hostDir: %s\", hostDir)\n\t\tif err := ReadCertsDirectory(&tlsConfig, hostDir); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn &tlsConfig, nil\n}\n\nfunc hasFile(files []os.FileInfo, name string) bool {\n\tfor _, f := range files {\n\t\tif f.Name() == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ReadCertsDirectory reads the directory for TLS certificates\n// including roots and certificate pairs and updates the\n// provided TLS configuration.\nfunc ReadCertsDirectory(tlsConfig *tls.Config, directory string) error {\n\tfs, err := ioutil.ReadDir(directory)\n\tif err != nil && !os.IsNotExist(err) {\n\t\treturn err\n\t}\n\n\tfor _, f := range fs {\n\t\tif strings.HasSuffix(f.Name(), \".crt\") {\n\t\t\tif tlsConfig.RootCAs == nil {\n\t\t\t\t// TODO(dmcgowan): Copy system pool\n\t\t\t\ttlsConfig.RootCAs = x509.NewCertPool()\n\t\t\t}\n\t\t\tlogrus.Debugf(\"crt: %s\", filepath.Join(directory, f.Name()))\n\t\t\tdata, err := ioutil.ReadFile(filepath.Join(directory, f.Name()))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ttlsConfig.RootCAs.AppendCertsFromPEM(data)\n\t\t}\n\t\tif strings.HasSuffix(f.Name(), \".cert\") {\n\t\t\tcertName := f.Name()\n\t\t\tkeyName := certName[:len(certName)-5] + \".key\"\n\t\t\tlogrus.Debugf(\"cert: %s\", filepath.Join(directory, f.Name()))\n\t\t\tif !hasFile(fs, keyName) {\n\t\t\t\treturn fmt.Errorf(\"Missing key %s for client certificate %s. Note that CA certificates should use the extension .crt.\", keyName, certName)\n\t\t\t}\n\t\t\tcert, err := tls.LoadX509KeyPair(filepath.Join(directory, certName), filepath.Join(directory, keyName))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ttlsConfig.Certificates = append(tlsConfig.Certificates, cert)\n\t\t}\n\t\tif strings.HasSuffix(f.Name(), \".key\") {\n\t\t\tkeyName := f.Name()\n\t\t\tcertName := keyName[:len(keyName)-4] + \".cert\"\n\t\t\tlogrus.Debugf(\"key: %s\", filepath.Join(directory, f.Name()))\n\t\t\tif !hasFile(fs, certName) {\n\t\t\t\treturn fmt.Errorf(\"Missing client certificate %s for key %s\", certName, keyName)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// DockerHeaders returns request modifiers with a User-Agent and metaHeaders\nfunc DockerHeaders(userAgent string, metaHeaders http.Header) []transport.RequestModifier {\n\tmodifiers := []transport.RequestModifier{}\n\tif userAgent != \"\" {\n\t\tmodifiers = append(modifiers, transport.NewHeaderRequestModifier(http.Header{\n\t\t\t\"User-Agent\": []string{userAgent},\n\t\t}))\n\t}\n\tif metaHeaders != nil {\n\t\tmodifiers = append(modifiers, transport.NewHeaderRequestModifier(metaHeaders))\n\t}\n\treturn modifiers\n}\n\n// HTTPClient returns a HTTP client structure which uses the given transport\n// and contains the necessary headers for redirected requests\nfunc HTTPClient(transport http.RoundTripper) *http.Client {\n\treturn &http.Client{\n\t\tTransport:     transport,\n\t\tCheckRedirect: addRequiredHeadersToRedirectedRequests,\n\t}\n}\n\nfunc trustedLocation(req *http.Request) bool {\n\tvar (\n\t\ttrusteds = []string{\"docker.com\", \"docker.io\"}\n\t\thostname = strings.SplitN(req.Host, \":\", 2)[0]\n\t)\n\tif req.URL.Scheme != \"https\" {\n\t\treturn false\n\t}\n\n\tfor _, trusted := range trusteds {\n\t\tif hostname == trusted || strings.HasSuffix(hostname, \".\"+trusted) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// addRequiredHeadersToRedirectedRequests adds the necessary redirection headers\n// for redirected requests\nfunc addRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Request) error {\n\tif via != nil && via[0] != nil {\n\t\tif trustedLocation(req) && trustedLocation(via[0]) {\n\t\t\treq.Header = via[0].Header\n\t\t\treturn nil\n\t\t}\n\t\tfor k, v := range via[0].Header {\n\t\t\tif k != \"Authorization\" {\n\t\t\t\tfor _, vv := range v {\n\t\t\t\t\treq.Header.Add(k, vv)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// NewTransport returns a new HTTP transport. If tlsConfig is nil, it uses the\n// default TLS configuration.\nfunc NewTransport(tlsConfig *tls.Config) *http.Transport {\n\tif tlsConfig == nil {\n\t\tvar cfg = tlsconfig.ServerDefault\n\t\ttlsConfig = &cfg\n\t}\n\treturn &http.Transport{\n\t\tProxy: http.ProxyFromEnvironment,\n\t\tDial: (&net.Dialer{\n\t\t\tTimeout:   30 * time.Second,\n\t\t\tKeepAlive: 30 * time.Second,\n\t\t\tDualStack: true,\n\t\t}).Dial,\n\t\tTLSHandshakeTimeout: 10 * time.Second,\n\t\tTLSClientConfig:     tlsConfig,\n\t\t// TODO(dmcgowan): Call close idle connections when complete and use keep alive\n\t\tDisableKeepAlives: true,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/service.go",
    "content": "package registry\n\nimport (\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/reference\"\n\t\"github.com/docker/engine-api/types\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Service is a registry service. It tracks configuration data such as a list\n// of mirrors.\ntype Service struct {\n\tconfig *serviceConfig\n}\n\n// NewService returns a new instance of Service ready to be\n// installed into an engine.\nfunc NewService(options ServiceOptions) *Service {\n\treturn &Service{\n\t\tconfig: newServiceConfig(options),\n\t}\n}\n\n// ServiceConfig returns the public registry service configuration.\nfunc (s *Service) ServiceConfig() *registrytypes.ServiceConfig {\n\treturn &s.config.ServiceConfig\n}\n\n// Auth contacts the public registry with the provided credentials,\n// and returns OK if authentication was successful.\n// It can be used to verify the validity of a client's credentials.\nfunc (s *Service) Auth(authConfig *types.AuthConfig, userAgent string) (status, token string, err error) {\n\tserverAddress := authConfig.ServerAddress\n\tif serverAddress == \"\" {\n\t\tserverAddress = IndexServer\n\t}\n\tif !strings.HasPrefix(serverAddress, \"https://\") && !strings.HasPrefix(serverAddress, \"http://\") {\n\t\tserverAddress = \"https://\" + serverAddress\n\t}\n\tu, err := url.Parse(serverAddress)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"unable to parse server address: %v\", err)\n\t}\n\n\tendpoints, err := s.LookupPushEndpoints(u.Host)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tfor _, endpoint := range endpoints {\n\t\tlogin := loginV2\n\t\tif endpoint.Version == APIVersion1 {\n\t\t\tlogin = loginV1\n\t\t}\n\n\t\tstatus, token, err = login(authConfig, endpoint, userAgent)\n\t\tif err == nil {\n\t\t\treturn\n\t\t}\n\t\tif fErr, ok := err.(fallbackError); ok {\n\t\t\terr = fErr.err\n\t\t\tlogrus.Infof(\"Error logging in to %s endpoint, trying next endpoint: %v\", endpoint.Version, err)\n\t\t\tcontinue\n\t\t}\n\t\treturn \"\", \"\", err\n\t}\n\n\treturn \"\", \"\", err\n}\n\n// splitReposSearchTerm breaks a search term into an index name and remote name\nfunc splitReposSearchTerm(reposName string) (string, string) {\n\tnameParts := strings.SplitN(reposName, \"/\", 2)\n\tvar indexName, remoteName string\n\tif len(nameParts) == 1 || (!strings.Contains(nameParts[0], \".\") &&\n\t\t!strings.Contains(nameParts[0], \":\") && nameParts[0] != \"localhost\") {\n\t\t// This is a Docker Index repos (ex: samalba/hipache or ubuntu)\n\t\t// 'docker.io'\n\t\tindexName = IndexName\n\t\tremoteName = reposName\n\t} else {\n\t\tindexName = nameParts[0]\n\t\tremoteName = nameParts[1]\n\t}\n\treturn indexName, remoteName\n}\n\n// Search queries the public registry for images matching the specified\n// search terms, and returns the results.\nfunc (s *Service) Search(term string, authConfig *types.AuthConfig, userAgent string, headers map[string][]string) (*registrytypes.SearchResults, error) {\n\tif err := validateNoSchema(term); err != nil {\n\t\treturn nil, err\n\t}\n\n\tindexName, remoteName := splitReposSearchTerm(term)\n\n\tindex, err := newIndexInfo(s.config, indexName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// *TODO: Search multiple indexes.\n\tendpoint, err := NewV1Endpoint(index, userAgent, http.Header(headers))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tr, err := NewSession(endpoint.client, authConfig, endpoint)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif index.Official {\n\t\tlocalName := remoteName\n\t\tif strings.HasPrefix(localName, \"library/\") {\n\t\t\t// If pull \"library/foo\", it's stored locally under \"foo\"\n\t\t\tlocalName = strings.SplitN(localName, \"/\", 2)[1]\n\t\t}\n\n\t\treturn r.SearchRepositories(localName)\n\t}\n\treturn r.SearchRepositories(remoteName)\n}\n\n// ResolveRepository splits a repository name into its components\n// and configuration of the associated registry.\nfunc (s *Service) ResolveRepository(name reference.Named) (*RepositoryInfo, error) {\n\treturn newRepositoryInfo(s.config, name)\n}\n\n// ResolveIndex takes indexName and returns index info\nfunc (s *Service) ResolveIndex(name string) (*registrytypes.IndexInfo, error) {\n\treturn newIndexInfo(s.config, name)\n}\n\n// APIEndpoint represents a remote API endpoint\ntype APIEndpoint struct {\n\tMirror       bool\n\tURL          *url.URL\n\tVersion      APIVersion\n\tOfficial     bool\n\tTrimHostname bool\n\tTLSConfig    *tls.Config\n}\n\n// ToV1Endpoint returns a V1 API endpoint based on the APIEndpoint\nfunc (e APIEndpoint) ToV1Endpoint(userAgent string, metaHeaders http.Header) (*V1Endpoint, error) {\n\treturn newV1Endpoint(*e.URL, e.TLSConfig, userAgent, metaHeaders)\n}\n\n// TLSConfig constructs a client TLS configuration based on server defaults\nfunc (s *Service) TLSConfig(hostname string) (*tls.Config, error) {\n\treturn newTLSConfig(hostname, isSecureIndex(s.config, hostname))\n}\n\nfunc (s *Service) tlsConfigForMirror(mirrorURL *url.URL) (*tls.Config, error) {\n\treturn s.TLSConfig(mirrorURL.Host)\n}\n\n// LookupPullEndpoints creates a list of endpoints to try to pull from, in order of preference.\n// It gives preference to v2 endpoints over v1, mirrors over the actual\n// registry, and HTTPS over plain HTTP.\nfunc (s *Service) LookupPullEndpoints(hostname string) (endpoints []APIEndpoint, err error) {\n\treturn s.lookupEndpoints(hostname)\n}\n\n// LookupPushEndpoints creates a list of endpoints to try to push to, in order of preference.\n// It gives preference to v2 endpoints over v1, and HTTPS over plain HTTP.\n// Mirrors are not included.\nfunc (s *Service) LookupPushEndpoints(hostname string) (endpoints []APIEndpoint, err error) {\n\tallEndpoints, err := s.lookupEndpoints(hostname)\n\tif err == nil {\n\t\tfor _, endpoint := range allEndpoints {\n\t\t\tif !endpoint.Mirror {\n\t\t\t\tendpoints = append(endpoints, endpoint)\n\t\t\t}\n\t\t}\n\t}\n\treturn endpoints, err\n}\n\nfunc (s *Service) lookupEndpoints(hostname string) (endpoints []APIEndpoint, err error) {\n\tendpoints, err = s.lookupV2Endpoints(hostname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif s.config.V2Only {\n\t\treturn endpoints, nil\n\t}\n\n\tlegacyEndpoints, err := s.lookupV1Endpoints(hostname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tendpoints = append(endpoints, legacyEndpoints...)\n\n\treturn endpoints, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/service_v1.go",
    "content": "package registry\n\nimport (\n\t\"net/url\"\n\n\t\"github.com/docker/go-connections/tlsconfig\"\n)\n\nfunc (s *Service) lookupV1Endpoints(hostname string) (endpoints []APIEndpoint, err error) {\n\tvar cfg = tlsconfig.ServerDefault\n\ttlsConfig := &cfg\n\tif hostname == DefaultNamespace {\n\t\tendpoints = append(endpoints, APIEndpoint{\n\t\t\tURL:          DefaultV1Registry,\n\t\t\tVersion:      APIVersion1,\n\t\t\tOfficial:     true,\n\t\t\tTrimHostname: true,\n\t\t\tTLSConfig:    tlsConfig,\n\t\t})\n\t\treturn endpoints, nil\n\t}\n\n\ttlsConfig, err = s.TLSConfig(hostname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tendpoints = []APIEndpoint{\n\t\t{\n\t\t\tURL: &url.URL{\n\t\t\t\tScheme: \"https\",\n\t\t\t\tHost:   hostname,\n\t\t\t},\n\t\t\tVersion:      APIVersion1,\n\t\t\tTrimHostname: true,\n\t\t\tTLSConfig:    tlsConfig,\n\t\t},\n\t}\n\n\tif tlsConfig.InsecureSkipVerify {\n\t\tendpoints = append(endpoints, APIEndpoint{ // or this\n\t\t\tURL: &url.URL{\n\t\t\t\tScheme: \"http\",\n\t\t\t\tHost:   hostname,\n\t\t\t},\n\t\t\tVersion:      APIVersion1,\n\t\t\tTrimHostname: true,\n\t\t\t// used to check if supposed to be secure via InsecureSkipVerify\n\t\t\tTLSConfig: tlsConfig,\n\t\t})\n\t}\n\treturn endpoints, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/service_v2.go",
    "content": "package registry\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/go-connections/tlsconfig\"\n)\n\nfunc (s *Service) lookupV2Endpoints(hostname string) (endpoints []APIEndpoint, err error) {\n\tvar cfg = tlsconfig.ServerDefault\n\ttlsConfig := &cfg\n\tif hostname == DefaultNamespace || hostname == DefaultV1Registry.Host {\n\t\t// v2 mirrors\n\t\tfor _, mirror := range s.config.Mirrors {\n\t\t\tif !strings.HasPrefix(mirror, \"http://\") && !strings.HasPrefix(mirror, \"https://\") {\n\t\t\t\tmirror = \"https://\" + mirror\n\t\t\t}\n\t\t\tmirrorURL, err := url.Parse(mirror)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tmirrorTLSConfig, err := s.tlsConfigForMirror(mirrorURL)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tendpoints = append(endpoints, APIEndpoint{\n\t\t\t\tURL: mirrorURL,\n\t\t\t\t// guess mirrors are v2\n\t\t\t\tVersion:      APIVersion2,\n\t\t\t\tMirror:       true,\n\t\t\t\tTrimHostname: true,\n\t\t\t\tTLSConfig:    mirrorTLSConfig,\n\t\t\t})\n\t\t}\n\t\t// v2 registry\n\t\tendpoints = append(endpoints, APIEndpoint{\n\t\t\tURL:          DefaultV2Registry,\n\t\t\tVersion:      APIVersion2,\n\t\t\tOfficial:     true,\n\t\t\tTrimHostname: true,\n\t\t\tTLSConfig:    tlsConfig,\n\t\t})\n\n\t\treturn endpoints, nil\n\t}\n\n\ttlsConfig, err = s.TLSConfig(hostname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tendpoints = []APIEndpoint{\n\t\t{\n\t\t\tURL: &url.URL{\n\t\t\t\tScheme: \"https\",\n\t\t\t\tHost:   hostname,\n\t\t\t},\n\t\t\tVersion:      APIVersion2,\n\t\t\tTrimHostname: true,\n\t\t\tTLSConfig:    tlsConfig,\n\t\t},\n\t}\n\n\tif tlsConfig.InsecureSkipVerify {\n\t\tendpoints = append(endpoints, APIEndpoint{\n\t\t\tURL: &url.URL{\n\t\t\t\tScheme: \"http\",\n\t\t\t\tHost:   hostname,\n\t\t\t},\n\t\t\tVersion:      APIVersion2,\n\t\t\tTrimHostname: true,\n\t\t\t// used to check if supposed to be secure via InsecureSkipVerify\n\t\t\tTLSConfig: tlsConfig,\n\t\t})\n\t}\n\n\treturn endpoints, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/session.go",
    "content": "package registry\n\nimport (\n\t\"bytes\"\n\t\"crypto/sha256\"\n\t\"errors\"\n\t\"sync\"\n\n\t// this is required for some certificates\n\t_ \"crypto/sha512\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/http/cookiejar\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/distribution/registry/api/errcode\"\n\t\"github.com/docker/docker/pkg/httputils\"\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/docker/docker/pkg/stringid\"\n\t\"github.com/docker/docker/pkg/tarsum\"\n\t\"github.com/docker/docker/reference\"\n\t\"github.com/docker/engine-api/types\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// ErrRepoNotFound is returned if the repository didn't exist on the\n\t// remote side\n\tErrRepoNotFound = errors.New(\"Repository not found\")\n)\n\n// A Session is used to communicate with a V1 registry\ntype Session struct {\n\tindexEndpoint *V1Endpoint\n\tclient        *http.Client\n\t// TODO(tiborvass): remove authConfig\n\tauthConfig *types.AuthConfig\n\tid         string\n}\n\ntype authTransport struct {\n\thttp.RoundTripper\n\t*types.AuthConfig\n\n\talwaysSetBasicAuth bool\n\ttoken              []string\n\n\tmu     sync.Mutex                      // guards modReq\n\tmodReq map[*http.Request]*http.Request // original -> modified\n}\n\n// AuthTransport handles the auth layer when communicating with a v1 registry (private or official)\n//\n// For private v1 registries, set alwaysSetBasicAuth to true.\n//\n// For the official v1 registry, if there isn't already an Authorization header in the request,\n// but there is an X-Docker-Token header set to true, then Basic Auth will be used to set the Authorization header.\n// After sending the request with the provided base http.RoundTripper, if an X-Docker-Token header, representing\n// a token, is present in the response, then it gets cached and sent in the Authorization header of all subsequent\n// requests.\n//\n// If the server sends a token without the client having requested it, it is ignored.\n//\n// This RoundTripper also has a CancelRequest method important for correct timeout handling.\nfunc AuthTransport(base http.RoundTripper, authConfig *types.AuthConfig, alwaysSetBasicAuth bool) http.RoundTripper {\n\tif base == nil {\n\t\tbase = http.DefaultTransport\n\t}\n\treturn &authTransport{\n\t\tRoundTripper:       base,\n\t\tAuthConfig:         authConfig,\n\t\talwaysSetBasicAuth: alwaysSetBasicAuth,\n\t\tmodReq:             make(map[*http.Request]*http.Request),\n\t}\n}\n\n// cloneRequest returns a clone of the provided *http.Request.\n// The clone is a shallow copy of the struct and its Header map.\nfunc cloneRequest(r *http.Request) *http.Request {\n\t// shallow copy of the struct\n\tr2 := new(http.Request)\n\t*r2 = *r\n\t// deep copy of the Header\n\tr2.Header = make(http.Header, len(r.Header))\n\tfor k, s := range r.Header {\n\t\tr2.Header[k] = append([]string(nil), s...)\n\t}\n\n\treturn r2\n}\n\n// RoundTrip changes a HTTP request's headers to add the necessary\n// authentication-related headers\nfunc (tr *authTransport) RoundTrip(orig *http.Request) (*http.Response, error) {\n\t// Authorization should not be set on 302 redirect for untrusted locations.\n\t// This logic mirrors the behavior in addRequiredHeadersToRedirectedRequests.\n\t// As the authorization logic is currently implemented in RoundTrip,\n\t// a 302 redirect is detected by looking at the Referrer header as go http package adds said header.\n\t// This is safe as Docker doesn't set Referrer in other scenarios.\n\tif orig.Header.Get(\"Referer\") != \"\" && !trustedLocation(orig) {\n\t\treturn tr.RoundTripper.RoundTrip(orig)\n\t}\n\n\treq := cloneRequest(orig)\n\ttr.mu.Lock()\n\ttr.modReq[orig] = req\n\ttr.mu.Unlock()\n\n\tif tr.alwaysSetBasicAuth {\n\t\tif tr.AuthConfig == nil {\n\t\t\treturn nil, errors.New(\"unexpected error: empty auth config\")\n\t\t}\n\t\treq.SetBasicAuth(tr.Username, tr.Password)\n\t\treturn tr.RoundTripper.RoundTrip(req)\n\t}\n\n\t// Don't override\n\tif req.Header.Get(\"Authorization\") == \"\" {\n\t\tif req.Header.Get(\"X-Docker-Token\") == \"true\" && tr.AuthConfig != nil && len(tr.Username) > 0 {\n\t\t\treq.SetBasicAuth(tr.Username, tr.Password)\n\t\t} else if len(tr.token) > 0 {\n\t\t\treq.Header.Set(\"Authorization\", \"Token \"+strings.Join(tr.token, \",\"))\n\t\t}\n\t}\n\tresp, err := tr.RoundTripper.RoundTrip(req)\n\tif err != nil {\n\t\tdelete(tr.modReq, orig)\n\t\treturn nil, err\n\t}\n\tif len(resp.Header[\"X-Docker-Token\"]) > 0 {\n\t\ttr.token = resp.Header[\"X-Docker-Token\"]\n\t}\n\tresp.Body = &ioutils.OnEOFReader{\n\t\tRc: resp.Body,\n\t\tFn: func() {\n\t\t\ttr.mu.Lock()\n\t\t\tdelete(tr.modReq, orig)\n\t\t\ttr.mu.Unlock()\n\t\t},\n\t}\n\treturn resp, nil\n}\n\n// CancelRequest cancels an in-flight request by closing its connection.\nfunc (tr *authTransport) CancelRequest(req *http.Request) {\n\ttype canceler interface {\n\t\tCancelRequest(*http.Request)\n\t}\n\tif cr, ok := tr.RoundTripper.(canceler); ok {\n\t\ttr.mu.Lock()\n\t\tmodReq := tr.modReq[req]\n\t\tdelete(tr.modReq, req)\n\t\ttr.mu.Unlock()\n\t\tcr.CancelRequest(modReq)\n\t}\n}\n\n// NewSession creates a new session\n// TODO(tiborvass): remove authConfig param once registry client v2 is vendored\nfunc NewSession(client *http.Client, authConfig *types.AuthConfig, endpoint *V1Endpoint) (r *Session, err error) {\n\tr = &Session{\n\t\tauthConfig:    authConfig,\n\t\tclient:        client,\n\t\tindexEndpoint: endpoint,\n\t\tid:            stringid.GenerateRandomID(),\n\t}\n\n\tvar alwaysSetBasicAuth bool\n\n\t// If we're working with a standalone private registry over HTTPS, send Basic Auth headers\n\t// alongside all our requests.\n\tif endpoint.String() != IndexServer && endpoint.URL.Scheme == \"https\" {\n\t\tinfo, err := endpoint.Ping()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif info.Standalone && authConfig != nil {\n\t\t\tlogrus.Debugf(\"Endpoint %s is eligible for private registry. Enabling decorator.\", endpoint.String())\n\t\t\talwaysSetBasicAuth = true\n\t\t}\n\t}\n\n\t// Annotate the transport unconditionally so that v2 can\n\t// properly fallback on v1 when an image is not found.\n\tclient.Transport = AuthTransport(client.Transport, authConfig, alwaysSetBasicAuth)\n\n\tjar, err := cookiejar.New(nil)\n\tif err != nil {\n\t\treturn nil, errors.New(\"cookiejar.New is not supposed to return an error\")\n\t}\n\tclient.Jar = jar\n\n\treturn r, nil\n}\n\n// ID returns this registry session's ID.\nfunc (r *Session) ID() string {\n\treturn r.id\n}\n\n// GetRemoteHistory retrieves the history of a given image from the registry.\n// It returns a list of the parent's JSON files (including the requested image).\nfunc (r *Session) GetRemoteHistory(imgID, registry string) ([]string, error) {\n\tres, err := r.client.Get(registry + \"images/\" + imgID + \"/ancestry\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer res.Body.Close()\n\tif res.StatusCode != 200 {\n\t\tif res.StatusCode == 401 {\n\t\t\treturn nil, errcode.ErrorCodeUnauthorized.WithArgs()\n\t\t}\n\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"Server error: %d trying to fetch remote history for %s\", res.StatusCode, imgID), res)\n\t}\n\n\tvar history []string\n\tif err := json.NewDecoder(res.Body).Decode(&history); err != nil {\n\t\treturn nil, fmt.Errorf(\"Error while reading the http response: %v\", err)\n\t}\n\n\tlogrus.Debugf(\"Ancestry: %v\", history)\n\treturn history, nil\n}\n\n// LookupRemoteImage checks if an image exists in the registry\nfunc (r *Session) LookupRemoteImage(imgID, registry string) error {\n\tres, err := r.client.Get(registry + \"images/\" + imgID + \"/json\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tres.Body.Close()\n\tif res.StatusCode != 200 {\n\t\treturn httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code %d\", res.StatusCode), res)\n\t}\n\treturn nil\n}\n\n// GetRemoteImageJSON retrieves an image's JSON metadata from the registry.\nfunc (r *Session) GetRemoteImageJSON(imgID, registry string) ([]byte, int64, error) {\n\tres, err := r.client.Get(registry + \"images/\" + imgID + \"/json\")\n\tif err != nil {\n\t\treturn nil, -1, fmt.Errorf(\"Failed to download json: %s\", err)\n\t}\n\tdefer res.Body.Close()\n\tif res.StatusCode != 200 {\n\t\treturn nil, -1, httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code %d\", res.StatusCode), res)\n\t}\n\t// if the size header is not present, then set it to '-1'\n\timageSize := int64(-1)\n\tif hdr := res.Header.Get(\"X-Docker-Size\"); hdr != \"\" {\n\t\timageSize, err = strconv.ParseInt(hdr, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, -1, err\n\t\t}\n\t}\n\n\tjsonString, err := ioutil.ReadAll(res.Body)\n\tif err != nil {\n\t\treturn nil, -1, fmt.Errorf(\"Failed to parse downloaded json: %v (%s)\", err, jsonString)\n\t}\n\treturn jsonString, imageSize, nil\n}\n\n// GetRemoteImageLayer retrieves an image layer from the registry\nfunc (r *Session) GetRemoteImageLayer(imgID, registry string, imgSize int64) (io.ReadCloser, error) {\n\tvar (\n\t\tstatusCode = 0\n\t\tres        *http.Response\n\t\terr        error\n\t\timageURL   = fmt.Sprintf(\"%simages/%s/layer\", registry, imgID)\n\t)\n\n\treq, err := http.NewRequest(\"GET\", imageURL, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error while getting from the server: %v\", err)\n\t}\n\tstatusCode = 0\n\tres, err = r.client.Do(req)\n\tif err != nil {\n\t\tlogrus.Debugf(\"Error contacting registry %s: %v\", registry, err)\n\t\t// the only case err != nil && res != nil is https://golang.org/src/net/http/client.go#L515\n\t\tif res != nil {\n\t\t\tif res.Body != nil {\n\t\t\t\tres.Body.Close()\n\t\t\t}\n\t\t\tstatusCode = res.StatusCode\n\t\t}\n\t\treturn nil, fmt.Errorf(\"Server error: Status %d while fetching image layer (%s)\",\n\t\t\tstatusCode, imgID)\n\t}\n\n\tif res.StatusCode != 200 {\n\t\tres.Body.Close()\n\t\treturn nil, fmt.Errorf(\"Server error: Status %d while fetching image layer (%s)\",\n\t\t\tres.StatusCode, imgID)\n\t}\n\n\tif res.Header.Get(\"Accept-Ranges\") == \"bytes\" && imgSize > 0 {\n\t\tlogrus.Debugf(\"server supports resume\")\n\t\treturn httputils.ResumableRequestReaderWithInitialResponse(r.client, req, 5, imgSize, res), nil\n\t}\n\tlogrus.Debugf(\"server doesn't support resume\")\n\treturn res.Body, nil\n}\n\n// GetRemoteTag retrieves the tag named in the askedTag argument from the given\n// repository. It queries each of the registries supplied in the registries\n// argument, and returns data from the first one that answers the query\n// successfully.\nfunc (r *Session) GetRemoteTag(registries []string, repositoryRef reference.Named, askedTag string) (string, error) {\n\trepository := repositoryRef.RemoteName()\n\n\tif strings.Count(repository, \"/\") == 0 {\n\t\t// This will be removed once the registry supports auto-resolution on\n\t\t// the \"library\" namespace\n\t\trepository = \"library/\" + repository\n\t}\n\tfor _, host := range registries {\n\t\tendpoint := fmt.Sprintf(\"%srepositories/%s/tags/%s\", host, repository, askedTag)\n\t\tres, err := r.client.Get(endpoint)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tlogrus.Debugf(\"Got status code %d from %s\", res.StatusCode, endpoint)\n\t\tdefer res.Body.Close()\n\n\t\tif res.StatusCode == 404 {\n\t\t\treturn \"\", ErrRepoNotFound\n\t\t}\n\t\tif res.StatusCode != 200 {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar tagID string\n\t\tif err := json.NewDecoder(res.Body).Decode(&tagID); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn tagID, nil\n\t}\n\treturn \"\", fmt.Errorf(\"Could not reach any registry endpoint\")\n}\n\n// GetRemoteTags retrieves all tags from the given repository. It queries each\n// of the registries supplied in the registries argument, and returns data from\n// the first one that answers the query successfully. It returns a map with\n// tag names as the keys and image IDs as the values.\nfunc (r *Session) GetRemoteTags(registries []string, repositoryRef reference.Named) (map[string]string, error) {\n\trepository := repositoryRef.RemoteName()\n\n\tif strings.Count(repository, \"/\") == 0 {\n\t\t// This will be removed once the registry supports auto-resolution on\n\t\t// the \"library\" namespace\n\t\trepository = \"library/\" + repository\n\t}\n\tfor _, host := range registries {\n\t\tendpoint := fmt.Sprintf(\"%srepositories/%s/tags\", host, repository)\n\t\tres, err := r.client.Get(endpoint)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tlogrus.Debugf(\"Got status code %d from %s\", res.StatusCode, endpoint)\n\t\tdefer res.Body.Close()\n\n\t\tif res.StatusCode == 404 {\n\t\t\treturn nil, ErrRepoNotFound\n\t\t}\n\t\tif res.StatusCode != 200 {\n\t\t\tcontinue\n\t\t}\n\n\t\tresult := make(map[string]string)\n\t\tif err := json.NewDecoder(res.Body).Decode(&result); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn result, nil\n\t}\n\treturn nil, fmt.Errorf(\"Could not reach any registry endpoint\")\n}\n\nfunc buildEndpointsList(headers []string, indexEp string) ([]string, error) {\n\tvar endpoints []string\n\tparsedURL, err := url.Parse(indexEp)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar urlScheme = parsedURL.Scheme\n\t// The registry's URL scheme has to match the Index'\n\tfor _, ep := range headers {\n\t\tepList := strings.Split(ep, \",\")\n\t\tfor _, epListElement := range epList {\n\t\t\tendpoints = append(\n\t\t\t\tendpoints,\n\t\t\t\tfmt.Sprintf(\"%s://%s/v1/\", urlScheme, strings.TrimSpace(epListElement)))\n\t\t}\n\t}\n\treturn endpoints, nil\n}\n\n// GetRepositoryData returns lists of images and endpoints for the repository\nfunc (r *Session) GetRepositoryData(name reference.Named) (*RepositoryData, error) {\n\trepositoryTarget := fmt.Sprintf(\"%srepositories/%s/images\", r.indexEndpoint.String(), name.RemoteName())\n\n\tlogrus.Debugf(\"[registry] Calling GET %s\", repositoryTarget)\n\n\treq, err := http.NewRequest(\"GET\", repositoryTarget, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// this will set basic auth in r.client.Transport and send cached X-Docker-Token headers for all subsequent requests\n\treq.Header.Set(\"X-Docker-Token\", \"true\")\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\t// check if the error is because of i/o timeout\n\t\t// and return a non-obtuse error message for users\n\t\t// \"Get https://index.docker.io/v1/repositories/library/busybox/images: i/o timeout\"\n\t\t// was a top search on the docker user forum\n\t\tif isTimeout(err) {\n\t\t\treturn nil, fmt.Errorf(\"Network timed out while trying to connect to %s. You may want to check your internet connection or if you are behind a proxy.\", repositoryTarget)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"Error while pulling image: %v\", err)\n\t}\n\tdefer res.Body.Close()\n\tif res.StatusCode == 401 {\n\t\treturn nil, errcode.ErrorCodeUnauthorized.WithArgs()\n\t}\n\t// TODO: Right now we're ignoring checksums in the response body.\n\t// In the future, we need to use them to check image validity.\n\tif res.StatusCode == 404 {\n\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code: %d\", res.StatusCode), res)\n\t} else if res.StatusCode != 200 {\n\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"Error reading response body: %s\", err)\n\t\t}\n\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"Error: Status %d trying to pull repository %s: %q\", res.StatusCode, name.RemoteName(), errBody), res)\n\t}\n\n\tvar endpoints []string\n\tif res.Header.Get(\"X-Docker-Endpoints\") != \"\" {\n\t\tendpoints, err = buildEndpointsList(res.Header[\"X-Docker-Endpoints\"], r.indexEndpoint.String())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\t// Assume the endpoint is on the same host\n\t\tendpoints = append(endpoints, fmt.Sprintf(\"%s://%s/v1/\", r.indexEndpoint.URL.Scheme, req.URL.Host))\n\t}\n\n\tremoteChecksums := []*ImgData{}\n\tif err := json.NewDecoder(res.Body).Decode(&remoteChecksums); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Forge a better object from the retrieved data\n\timgsData := make(map[string]*ImgData, len(remoteChecksums))\n\tfor _, elem := range remoteChecksums {\n\t\timgsData[elem.ID] = elem\n\t}\n\n\treturn &RepositoryData{\n\t\tImgList:   imgsData,\n\t\tEndpoints: endpoints,\n\t}, nil\n}\n\n// PushImageChecksumRegistry uploads checksums for an image\nfunc (r *Session) PushImageChecksumRegistry(imgData *ImgData, registry string) error {\n\tu := registry + \"images/\" + imgData.ID + \"/checksum\"\n\n\tlogrus.Debugf(\"[registry] Calling PUT %s\", u)\n\n\treq, err := http.NewRequest(\"PUT\", u, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\treq.Header.Set(\"X-Docker-Checksum\", imgData.Checksum)\n\treq.Header.Set(\"X-Docker-Checksum-Payload\", imgData.ChecksumPayload)\n\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Failed to upload metadata: %v\", err)\n\t}\n\tdefer res.Body.Close()\n\tif len(res.Cookies()) > 0 {\n\t\tr.client.Jar.SetCookies(req.URL, res.Cookies())\n\t}\n\tif res.StatusCode != 200 {\n\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"HTTP code %d while uploading metadata and error when trying to parse response body: %s\", res.StatusCode, err)\n\t\t}\n\t\tvar jsonBody map[string]string\n\t\tif err := json.Unmarshal(errBody, &jsonBody); err != nil {\n\t\t\terrBody = []byte(err.Error())\n\t\t} else if jsonBody[\"error\"] == \"Image already exists\" {\n\t\t\treturn ErrAlreadyExists\n\t\t}\n\t\treturn fmt.Errorf(\"HTTP code %d while uploading metadata: %q\", res.StatusCode, errBody)\n\t}\n\treturn nil\n}\n\n// PushImageJSONRegistry pushes JSON metadata for a local image to the registry\nfunc (r *Session) PushImageJSONRegistry(imgData *ImgData, jsonRaw []byte, registry string) error {\n\n\tu := registry + \"images/\" + imgData.ID + \"/json\"\n\n\tlogrus.Debugf(\"[registry] Calling PUT %s\", u)\n\n\treq, err := http.NewRequest(\"PUT\", u, bytes.NewReader(jsonRaw))\n\tif err != nil {\n\t\treturn err\n\t}\n\treq.Header.Add(\"Content-type\", \"application/json\")\n\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"Failed to upload metadata: %s\", err)\n\t}\n\tdefer res.Body.Close()\n\tif res.StatusCode == 401 && strings.HasPrefix(registry, \"http://\") {\n\t\treturn httputils.NewHTTPRequestError(\"HTTP code 401, Docker will not send auth headers over HTTP.\", res)\n\t}\n\tif res.StatusCode != 200 {\n\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\tif err != nil {\n\t\t\treturn httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code %d while uploading metadata and error when trying to parse response body: %s\", res.StatusCode, err), res)\n\t\t}\n\t\tvar jsonBody map[string]string\n\t\tif err := json.Unmarshal(errBody, &jsonBody); err != nil {\n\t\t\terrBody = []byte(err.Error())\n\t\t} else if jsonBody[\"error\"] == \"Image already exists\" {\n\t\t\treturn ErrAlreadyExists\n\t\t}\n\t\treturn httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code %d while uploading metadata: %q\", res.StatusCode, errBody), res)\n\t}\n\treturn nil\n}\n\n// PushImageLayerRegistry sends the checksum of an image layer to the registry\nfunc (r *Session) PushImageLayerRegistry(imgID string, layer io.Reader, registry string, jsonRaw []byte) (checksum string, checksumPayload string, err error) {\n\tu := registry + \"images/\" + imgID + \"/layer\"\n\n\tlogrus.Debugf(\"[registry] Calling PUT %s\", u)\n\n\ttarsumLayer, err := tarsum.NewTarSum(layer, false, tarsum.Version0)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\th := sha256.New()\n\th.Write(jsonRaw)\n\th.Write([]byte{'\\n'})\n\tchecksumLayer := io.TeeReader(tarsumLayer, h)\n\n\treq, err := http.NewRequest(\"PUT\", u, checksumLayer)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\treq.Header.Add(\"Content-Type\", \"application/octet-stream\")\n\treq.ContentLength = -1\n\treq.TransferEncoding = []string{\"chunked\"}\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"Failed to upload layer: %v\", err)\n\t}\n\tif rc, ok := layer.(io.Closer); ok {\n\t\tif err := rc.Close(); err != nil {\n\t\t\treturn \"\", \"\", err\n\t\t}\n\t}\n\tdefer res.Body.Close()\n\n\tif res.StatusCode != 200 {\n\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", httputils.NewHTTPRequestError(fmt.Sprintf(\"HTTP code %d while uploading metadata and error when trying to parse response body: %s\", res.StatusCode, err), res)\n\t\t}\n\t\treturn \"\", \"\", httputils.NewHTTPRequestError(fmt.Sprintf(\"Received HTTP code %d while uploading layer: %q\", res.StatusCode, errBody), res)\n\t}\n\n\tchecksumPayload = \"sha256:\" + hex.EncodeToString(h.Sum(nil))\n\treturn tarsumLayer.Sum(jsonRaw), checksumPayload, nil\n}\n\n// PushRegistryTag pushes a tag on the registry.\n// Remote has the format '<user>/<repo>\nfunc (r *Session) PushRegistryTag(remote reference.Named, revision, tag, registry string) error {\n\t// \"jsonify\" the string\n\trevision = \"\\\"\" + revision + \"\\\"\"\n\tpath := fmt.Sprintf(\"repositories/%s/tags/%s\", remote.RemoteName(), tag)\n\n\treq, err := http.NewRequest(\"PUT\", registry+path, strings.NewReader(revision))\n\tif err != nil {\n\t\treturn err\n\t}\n\treq.Header.Add(\"Content-type\", \"application/json\")\n\treq.ContentLength = int64(len(revision))\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tres.Body.Close()\n\tif res.StatusCode != 200 && res.StatusCode != 201 {\n\t\treturn httputils.NewHTTPRequestError(fmt.Sprintf(\"Internal server error: %d trying to push tag %s on %s\", res.StatusCode, tag, remote.RemoteName()), res)\n\t}\n\treturn nil\n}\n\n// PushImageJSONIndex uploads an image list to the repository\nfunc (r *Session) PushImageJSONIndex(remote reference.Named, imgList []*ImgData, validate bool, regs []string) (*RepositoryData, error) {\n\tcleanImgList := []*ImgData{}\n\tif validate {\n\t\tfor _, elem := range imgList {\n\t\t\tif elem.Checksum != \"\" {\n\t\t\t\tcleanImgList = append(cleanImgList, elem)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tcleanImgList = imgList\n\t}\n\n\timgListJSON, err := json.Marshal(cleanImgList)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar suffix string\n\tif validate {\n\t\tsuffix = \"images\"\n\t}\n\tu := fmt.Sprintf(\"%srepositories/%s/%s\", r.indexEndpoint.String(), remote.RemoteName(), suffix)\n\tlogrus.Debugf(\"[registry] PUT %s\", u)\n\tlogrus.Debugf(\"Image list pushed to index:\\n%s\", imgListJSON)\n\theaders := map[string][]string{\n\t\t\"Content-type\": {\"application/json\"},\n\t\t// this will set basic auth in r.client.Transport and send cached X-Docker-Token headers for all subsequent requests\n\t\t\"X-Docker-Token\": {\"true\"},\n\t}\n\tif validate {\n\t\theaders[\"X-Docker-Endpoints\"] = regs\n\t}\n\n\t// Redirect if necessary\n\tvar res *http.Response\n\tfor {\n\t\tif res, err = r.putImageRequest(u, headers, imgListJSON); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif !shouldRedirect(res) {\n\t\t\tbreak\n\t\t}\n\t\tres.Body.Close()\n\t\tu = res.Header.Get(\"Location\")\n\t\tlogrus.Debugf(\"Redirected to %s\", u)\n\t}\n\tdefer res.Body.Close()\n\n\tif res.StatusCode == 401 {\n\t\treturn nil, errcode.ErrorCodeUnauthorized.WithArgs()\n\t}\n\n\tvar tokens, endpoints []string\n\tif !validate {\n\t\tif res.StatusCode != 200 && res.StatusCode != 201 {\n\t\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Debugf(\"Error reading response body: %s\", err)\n\t\t\t}\n\t\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"Error: Status %d trying to push repository %s: %q\", res.StatusCode, remote.RemoteName(), errBody), res)\n\t\t}\n\t\ttokens = res.Header[\"X-Docker-Token\"]\n\t\tlogrus.Debugf(\"Auth token: %v\", tokens)\n\n\t\tif res.Header.Get(\"X-Docker-Endpoints\") == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"Index response didn't contain any endpoints\")\n\t\t}\n\t\tendpoints, err = buildEndpointsList(res.Header[\"X-Docker-Endpoints\"], r.indexEndpoint.String())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tif res.StatusCode != 204 {\n\t\t\terrBody, err := ioutil.ReadAll(res.Body)\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Debugf(\"Error reading response body: %s\", err)\n\t\t\t}\n\t\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"Error: Status %d trying to push checksums %s: %q\", res.StatusCode, remote.RemoteName(), errBody), res)\n\t\t}\n\t}\n\n\treturn &RepositoryData{\n\t\tEndpoints: endpoints,\n\t}, nil\n}\n\nfunc (r *Session) putImageRequest(u string, headers map[string][]string, body []byte) (*http.Response, error) {\n\treq, err := http.NewRequest(\"PUT\", u, bytes.NewReader(body))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.ContentLength = int64(len(body))\n\tfor k, v := range headers {\n\t\treq.Header[k] = v\n\t}\n\tresponse, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn response, nil\n}\n\nfunc shouldRedirect(response *http.Response) bool {\n\treturn response.StatusCode >= 300 && response.StatusCode < 400\n}\n\n// SearchRepositories performs a search against the remote repository\nfunc (r *Session) SearchRepositories(term string) (*registrytypes.SearchResults, error) {\n\tlogrus.Debugf(\"Index server: %s\", r.indexEndpoint)\n\tu := r.indexEndpoint.String() + \"search?q=\" + url.QueryEscape(term)\n\n\treq, err := http.NewRequest(\"GET\", u, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error while getting from the server: %v\", err)\n\t}\n\t// Have the AuthTransport send authentication, when logged in.\n\treq.Header.Set(\"X-Docker-Token\", \"true\")\n\tres, err := r.client.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer res.Body.Close()\n\tif res.StatusCode != 200 {\n\t\treturn nil, httputils.NewHTTPRequestError(fmt.Sprintf(\"Unexpected status code %d\", res.StatusCode), res)\n\t}\n\tresult := new(registrytypes.SearchResults)\n\treturn result, json.NewDecoder(res.Body).Decode(result)\n}\n\n// GetAuthConfig returns the authentication settings for a session\n// TODO(tiborvass): remove this once registry client v2 is vendored\nfunc (r *Session) GetAuthConfig(withPasswd bool) *types.AuthConfig {\n\tpassword := \"\"\n\tif withPasswd {\n\t\tpassword = r.authConfig.Password\n\t}\n\treturn &types.AuthConfig{\n\t\tUsername: r.authConfig.Username,\n\t\tPassword: password,\n\t}\n}\n\nfunc isTimeout(err error) bool {\n\ttype timeout interface {\n\t\tTimeout() bool\n\t}\n\te := err\n\tswitch urlErr := err.(type) {\n\tcase *url.Error:\n\t\te = urlErr.Err\n\t}\n\tt, ok := e.(timeout)\n\treturn ok && t.Timeout()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/registry/types.go",
    "content": "package registry\n\nimport (\n\t\"github.com/docker/docker/reference\"\n\tregistrytypes \"github.com/docker/engine-api/types/registry\"\n)\n\n// RepositoryData tracks the image list, list of endpoints, and list of tokens\n// for a repository\ntype RepositoryData struct {\n\t// ImgList is a list of images in the repository\n\tImgList map[string]*ImgData\n\t// Endpoints is a list of endpoints returned in X-Docker-Endpoints\n\tEndpoints []string\n\t// Tokens is currently unused (remove it?)\n\tTokens []string\n}\n\n// ImgData is used to transfer image checksums to and from the registry\ntype ImgData struct {\n\t// ID is an opaque string that identifies the image\n\tID              string `json:\"id\"`\n\tChecksum        string `json:\"checksum,omitempty\"`\n\tChecksumPayload string `json:\"-\"`\n\tTag             string `json:\",omitempty\"`\n}\n\n// PingResult contains the information returned when pinging a registry. It\n// indicates the registry's version and whether the registry claims to be a\n// standalone registry.\ntype PingResult struct {\n\t// Version is the registry version supplied by the registry in a HTTP\n\t// header\n\tVersion string `json:\"version\"`\n\t// Standalone is set to true if the registry indicates it is a\n\t// standalone registry in the X-Docker-Registry-Standalone\n\t// header\n\tStandalone bool `json:\"standalone\"`\n}\n\n// APIVersion is an integral representation of an API version (presently\n// either 1 or 2)\ntype APIVersion int\n\nfunc (av APIVersion) String() string {\n\treturn apiVersions[av]\n}\n\n// API Version identifiers.\nconst (\n\t_                      = iota\n\tAPIVersion1 APIVersion = iota\n\tAPIVersion2\n)\n\nvar apiVersions = map[APIVersion]string{\n\tAPIVersion1: \"v1\",\n\tAPIVersion2: \"v2\",\n}\n\n// RepositoryInfo describes a repository\ntype RepositoryInfo struct {\n\treference.Named\n\t// Index points to registry information\n\tIndex *registrytypes.IndexInfo\n\t// Official indicates whether the repository is considered official.\n\t// If the registry is official, and the normalized name does not\n\t// contain a '/' (e.g. \"foo\"), then it is considered an official repo.\n\tOfficial bool\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/envfile.go",
    "content": "package opts\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\n// ParseEnvFile reads a file with environment variables enumerated by lines\n//\n// ``Environment variable names used by the utilities in the Shell and\n// Utilities volume of IEEE Std 1003.1-2001 consist solely of uppercase\n// letters, digits, and the '_' (underscore) from the characters defined in\n// Portable Character Set and do not begin with a digit. *But*, other\n// characters may be permitted by an implementation; applications shall\n// tolerate the presence of such names.''\n// -- http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html\n//\n// As of #16585, it's up to application inside docker to validate or not\n// environment variables, that's why we just strip leading whitespace and\n// nothing more.\nfunc ParseEnvFile(filename string) ([]string, error) {\n\tfh, err := os.Open(filename)\n\tif err != nil {\n\t\treturn []string{}, err\n\t}\n\tdefer fh.Close()\n\n\tlines := []string{}\n\tscanner := bufio.NewScanner(fh)\n\tfor scanner.Scan() {\n\t\t// trim the line from all leading whitespace first\n\t\tline := strings.TrimLeft(scanner.Text(), whiteSpaces)\n\t\t// line is not empty, and not starting with '#'\n\t\tif len(line) > 0 && !strings.HasPrefix(line, \"#\") {\n\t\t\tdata := strings.SplitN(line, \"=\", 2)\n\n\t\t\t// trim the front of a variable, but nothing else\n\t\t\tvariable := strings.TrimLeft(data[0], whiteSpaces)\n\t\t\tif strings.ContainsAny(variable, whiteSpaces) {\n\t\t\t\treturn []string{}, ErrBadEnvVariable{fmt.Sprintf(\"variable '%s' has white spaces\", variable)}\n\t\t\t}\n\n\t\t\tif len(data) > 1 {\n\n\t\t\t\t// pass the value through, no trimming\n\t\t\t\tlines = append(lines, fmt.Sprintf(\"%s=%s\", variable, data[1]))\n\t\t\t} else {\n\t\t\t\t// if only a pass-through variable is given, clean it up.\n\t\t\t\tlines = append(lines, fmt.Sprintf(\"%s=%s\", strings.TrimSpace(line), os.Getenv(line)))\n\t\t\t}\n\t\t}\n\t}\n\treturn lines, scanner.Err()\n}\n\nvar whiteSpaces = \" \\t\"\n\n// ErrBadEnvVariable typed error for bad environment variable\ntype ErrBadEnvVariable struct {\n\tmsg string\n}\n\nfunc (e ErrBadEnvVariable) Error() string {\n\treturn fmt.Sprintf(\"poorly formatted environment: %s\", e.msg)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/opts.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\tfopts \"github.com/docker/docker/opts\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n)\n\n// ValidateAttach validates that the specified string is a valid attach option.\nfunc ValidateAttach(val string) (string, error) {\n\ts := strings.ToLower(val)\n\tfor _, str := range []string{\"stdin\", \"stdout\", \"stderr\"} {\n\t\tif s == str {\n\t\t\treturn s, nil\n\t\t}\n\t}\n\treturn val, fmt.Errorf(\"valid streams are STDIN, STDOUT and STDERR\")\n}\n\n// ValidateEnv validates an environment variable and returns it.\n// If no value is specified, it returns the current value using os.Getenv.\n//\n// As on ParseEnvFile and related to #16585, environment variable names\n// are not validate what so ever, it's up to application inside docker\n// to validate them or not.\nfunc ValidateEnv(val string) (string, error) {\n\tarr := strings.Split(val, \"=\")\n\tif len(arr) > 1 {\n\t\treturn val, nil\n\t}\n\tif !doesEnvExist(val) {\n\t\treturn val, nil\n\t}\n\treturn fmt.Sprintf(\"%s=%s\", val, os.Getenv(val)), nil\n}\n\nfunc doesEnvExist(name string) bool {\n\tfor _, entry := range os.Environ() {\n\t\tparts := strings.SplitN(entry, \"=\", 2)\n\t\tif parts[0] == name {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ValidateExtraHost validates that the specified string is a valid extrahost and returns it.\n// ExtraHost are in the form of name:ip where the ip has to be a valid ip (ipv4 or ipv6).\nfunc ValidateExtraHost(val string) (string, error) {\n\t// allow for IPv6 addresses in extra hosts by only splitting on first \":\"\n\tarr := strings.SplitN(val, \":\", 2)\n\tif len(arr) != 2 || len(arr[0]) == 0 {\n\t\treturn \"\", fmt.Errorf(\"bad format for add-host: %q\", val)\n\t}\n\tif _, err := fopts.ValidateIPAddress(arr[1]); err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid IP address in add-host: %q\", arr[1])\n\t}\n\treturn val, nil\n}\n\n// ValidateMACAddress validates a MAC address.\nfunc ValidateMACAddress(val string) (string, error) {\n\t_, err := net.ParseMAC(strings.TrimSpace(val))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn val, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/parse.go",
    "content": "package opts\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/opts\"\n\tflag \"github.com/docker/docker/pkg/mflag\"\n\t\"github.com/docker/docker/pkg/mount\"\n\t\"github.com/docker/docker/pkg/signal\"\n\t\"github.com/docker/engine-api/types/container\"\n\tnetworktypes \"github.com/docker/engine-api/types/network\"\n\t\"github.com/docker/engine-api/types/strslice\"\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/docker/go-units\"\n)\n\n// Parse parses the specified args for the specified command and generates a Config,\n// a HostConfig and returns them with the specified command.\n// If the specified args are not valid, it will return an error.\nfunc Parse(cmd *flag.FlagSet, args []string) (*container.Config, *container.HostConfig, *networktypes.NetworkingConfig, *flag.FlagSet, error) {\n\tvar (\n\t\t// FIXME: use utils.ListOpts for attach and volumes?\n\t\tflAttach            = opts.NewListOpts(ValidateAttach)\n\t\tflVolumes           = opts.NewListOpts(nil)\n\t\tflTmpfs             = opts.NewListOpts(nil)\n\t\tflBlkioWeightDevice = NewWeightdeviceOpt(ValidateWeightDevice)\n\t\tflDeviceReadBps     = NewThrottledeviceOpt(ValidateThrottleBpsDevice)\n\t\tflDeviceWriteBps    = NewThrottledeviceOpt(ValidateThrottleBpsDevice)\n\t\tflLinks             = opts.NewListOpts(ValidateLink)\n\t\tflAliases           = opts.NewListOpts(nil)\n\t\tflDeviceReadIOps    = NewThrottledeviceOpt(ValidateThrottleIOpsDevice)\n\t\tflDeviceWriteIOps   = NewThrottledeviceOpt(ValidateThrottleIOpsDevice)\n\t\tflEnv               = opts.NewListOpts(ValidateEnv)\n\t\tflLabels            = opts.NewListOpts(ValidateEnv)\n\t\tflDevices           = opts.NewListOpts(ValidateDevice)\n\n\t\tflUlimits = NewUlimitOpt(nil)\n\n\t\tflPublish           = opts.NewListOpts(nil)\n\t\tflExpose            = opts.NewListOpts(nil)\n\t\tflDNS               = opts.NewListOpts(opts.ValidateIPAddress)\n\t\tflDNSSearch         = opts.NewListOpts(opts.ValidateDNSSearch)\n\t\tflDNSOptions        = opts.NewListOpts(nil)\n\t\tflExtraHosts        = opts.NewListOpts(ValidateExtraHost)\n\t\tflVolumesFrom       = opts.NewListOpts(nil)\n\t\tflEnvFile           = opts.NewListOpts(nil)\n\t\tflCapAdd            = opts.NewListOpts(nil)\n\t\tflCapDrop           = opts.NewListOpts(nil)\n\t\tflGroupAdd          = opts.NewListOpts(nil)\n\t\tflSecurityOpt       = opts.NewListOpts(nil)\n\t\tflLabelsFile        = opts.NewListOpts(nil)\n\t\tflLoggingOpts       = opts.NewListOpts(nil)\n\t\tflPrivileged        = cmd.Bool([]string{\"-privileged\"}, false, \"Give extended privileges to this container\")\n\t\tflPidMode           = cmd.String([]string{\"-pid\"}, \"\", \"PID namespace to use\")\n\t\tflUTSMode           = cmd.String([]string{\"-uts\"}, \"\", \"UTS namespace to use\")\n\t\tflUsernsMode        = cmd.String([]string{\"-userns\"}, \"\", \"User namespace to use\")\n\t\tflPublishAll        = cmd.Bool([]string{\"P\", \"-publish-all\"}, false, \"Publish all exposed ports to random ports\")\n\t\tflStdin             = cmd.Bool([]string{\"i\", \"-interactive\"}, false, \"Keep STDIN open even if not attached\")\n\t\tflTty               = cmd.Bool([]string{\"t\", \"-tty\"}, false, \"Allocate a pseudo-TTY\")\n\t\tflOomKillDisable    = cmd.Bool([]string{\"-oom-kill-disable\"}, false, \"Disable OOM Killer\")\n\t\tflOomScoreAdj       = cmd.Int([]string{\"-oom-score-adj\"}, 0, \"Tune host's OOM preferences (-1000 to 1000)\")\n\t\tflContainerIDFile   = cmd.String([]string{\"-cidfile\"}, \"\", \"Write the container ID to the file\")\n\t\tflEntrypoint        = cmd.String([]string{\"-entrypoint\"}, \"\", \"Overwrite the default ENTRYPOINT of the image\")\n\t\tflHostname          = cmd.String([]string{\"h\", \"-hostname\"}, \"\", \"Container host name\")\n\t\tflMemoryString      = cmd.String([]string{\"m\", \"-memory\"}, \"\", \"Memory limit\")\n\t\tflMemoryReservation = cmd.String([]string{\"-memory-reservation\"}, \"\", \"Memory soft limit\")\n\t\tflMemorySwap        = cmd.String([]string{\"-memory-swap\"}, \"\", \"Swap limit equal to memory plus swap: '-1' to enable unlimited swap\")\n\t\tflKernelMemory      = cmd.String([]string{\"-kernel-memory\"}, \"\", \"Kernel memory limit\")\n\t\tflUser              = cmd.String([]string{\"u\", \"-user\"}, \"\", \"Username or UID (format: <name|uid>[:<group|gid>])\")\n\t\tflWorkingDir        = cmd.String([]string{\"w\", \"-workdir\"}, \"\", \"Working directory inside the container\")\n\t\tflCPUShares         = cmd.Int64([]string{\"#c\", \"-cpu-shares\"}, 0, \"CPU shares (relative weight)\")\n\t\tflCPUPeriod         = cmd.Int64([]string{\"-cpu-period\"}, 0, \"Limit CPU CFS (Completely Fair Scheduler) period\")\n\t\tflCPUQuota          = cmd.Int64([]string{\"-cpu-quota\"}, 0, \"Limit CPU CFS (Completely Fair Scheduler) quota\")\n\t\tflCpusetCpus        = cmd.String([]string{\"-cpuset-cpus\"}, \"\", \"CPUs in which to allow execution (0-3, 0,1)\")\n\t\tflCpusetMems        = cmd.String([]string{\"-cpuset-mems\"}, \"\", \"MEMs in which to allow execution (0-3, 0,1)\")\n\t\tflBlkioWeight       = cmd.Uint16([]string{\"-blkio-weight\"}, 0, \"Block IO (relative weight), between 10 and 1000\")\n\t\tflSwappiness        = cmd.Int64([]string{\"-memory-swappiness\"}, -1, \"Tune container memory swappiness (0 to 100)\")\n\t\tflNetMode           = cmd.String([]string{\"-net\"}, \"default\", \"Connect a container to a network\")\n\t\tflMacAddress        = cmd.String([]string{\"-mac-address\"}, \"\", \"Container MAC address (e.g. 92:d0:c6:0a:29:33)\")\n\t\tflIPv4Address       = cmd.String([]string{\"-ip\"}, \"\", \"Container IPv4 address (e.g. 172.30.100.104)\")\n\t\tflIPv6Address       = cmd.String([]string{\"-ip6\"}, \"\", \"Container IPv6 address (e.g. 2001:db8::33)\")\n\t\tflIpcMode           = cmd.String([]string{\"-ipc\"}, \"\", \"IPC namespace to use\")\n\t\tflPidsLimit         = cmd.Int64([]string{\"-pids-limit\"}, 0, \"Tune container pids limit (set -1 for unlimited)\")\n\t\tflRestartPolicy     = cmd.String([]string{\"-restart\"}, \"no\", \"Restart policy to apply when a container exits\")\n\t\tflReadonlyRootfs    = cmd.Bool([]string{\"-read-only\"}, false, \"Mount the container's root filesystem as read only\")\n\t\tflLoggingDriver     = cmd.String([]string{\"-log-driver\"}, \"\", \"Logging driver for container\")\n\t\tflCgroupParent      = cmd.String([]string{\"-cgroup-parent\"}, \"\", \"Optional parent cgroup for the container\")\n\t\tflVolumeDriver      = cmd.String([]string{\"-volume-driver\"}, \"\", \"Optional volume driver for the container\")\n\t\tflStopSignal        = cmd.String([]string{\"-stop-signal\"}, signal.DefaultStopSignal, fmt.Sprintf(\"Signal to stop a container, %v by default\", signal.DefaultStopSignal))\n\t\tflIsolation         = cmd.String([]string{\"-isolation\"}, \"\", \"Container isolation technology\")\n\t\tflShmSize           = cmd.String([]string{\"-shm-size\"}, \"\", \"Size of /dev/shm, default value is 64MB\")\n\t)\n\n\tcmd.Var(&flAttach, []string{\"a\", \"-attach\"}, \"Attach to STDIN, STDOUT or STDERR\")\n\tcmd.Var(&flBlkioWeightDevice, []string{\"-blkio-weight-device\"}, \"Block IO weight (relative device weight)\")\n\tcmd.Var(&flDeviceReadBps, []string{\"-device-read-bps\"}, \"Limit read rate (bytes per second) from a device\")\n\tcmd.Var(&flDeviceWriteBps, []string{\"-device-write-bps\"}, \"Limit write rate (bytes per second) to a device\")\n\tcmd.Var(&flDeviceReadIOps, []string{\"-device-read-iops\"}, \"Limit read rate (IO per second) from a device\")\n\tcmd.Var(&flDeviceWriteIOps, []string{\"-device-write-iops\"}, \"Limit write rate (IO per second) to a device\")\n\tcmd.Var(&flVolumes, []string{\"v\", \"-volume\"}, \"Bind mount a volume\")\n\tcmd.Var(&flTmpfs, []string{\"-tmpfs\"}, \"Mount a tmpfs directory\")\n\tcmd.Var(&flLinks, []string{\"-link\"}, \"Add link to another container\")\n\tcmd.Var(&flAliases, []string{\"-net-alias\"}, \"Add network-scoped alias for the container\")\n\tcmd.Var(&flDevices, []string{\"-device\"}, \"Add a host device to the container\")\n\tcmd.Var(&flLabels, []string{\"l\", \"-label\"}, \"Set meta data on a container\")\n\tcmd.Var(&flLabelsFile, []string{\"-label-file\"}, \"Read in a line delimited file of labels\")\n\tcmd.Var(&flEnv, []string{\"e\", \"-env\"}, \"Set environment variables\")\n\tcmd.Var(&flEnvFile, []string{\"-env-file\"}, \"Read in a file of environment variables\")\n\tcmd.Var(&flPublish, []string{\"p\", \"-publish\"}, \"Publish a container's port(s) to the host\")\n\tcmd.Var(&flExpose, []string{\"-expose\"}, \"Expose a port or a range of ports\")\n\tcmd.Var(&flDNS, []string{\"-dns\"}, \"Set custom DNS servers\")\n\tcmd.Var(&flDNSSearch, []string{\"-dns-search\"}, \"Set custom DNS search domains\")\n\tcmd.Var(&flDNSOptions, []string{\"-dns-opt\"}, \"Set DNS options\")\n\tcmd.Var(&flExtraHosts, []string{\"-add-host\"}, \"Add a custom host-to-IP mapping (host:ip)\")\n\tcmd.Var(&flVolumesFrom, []string{\"-volumes-from\"}, \"Mount volumes from the specified container(s)\")\n\tcmd.Var(&flCapAdd, []string{\"-cap-add\"}, \"Add Linux capabilities\")\n\tcmd.Var(&flCapDrop, []string{\"-cap-drop\"}, \"Drop Linux capabilities\")\n\tcmd.Var(&flGroupAdd, []string{\"-group-add\"}, \"Add additional groups to join\")\n\tcmd.Var(&flSecurityOpt, []string{\"-security-opt\"}, \"Security Options\")\n\tcmd.Var(flUlimits, []string{\"-ulimit\"}, \"Ulimit options\")\n\tcmd.Var(&flLoggingOpts, []string{\"-log-opt\"}, \"Log driver options\")\n\n\tcmd.Require(flag.Min, 1)\n\n\tif err := cmd.ParseFlags(args, true); err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\tvar (\n\t\tattachStdin  = flAttach.Get(\"stdin\")\n\t\tattachStdout = flAttach.Get(\"stdout\")\n\t\tattachStderr = flAttach.Get(\"stderr\")\n\t)\n\n\t// Validate the input mac address\n\tif *flMacAddress != \"\" {\n\t\tif _, err := ValidateMACAddress(*flMacAddress); err != nil {\n\t\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"%s is not a valid mac address\", *flMacAddress)\n\t\t}\n\t}\n\tif *flStdin {\n\t\tattachStdin = true\n\t}\n\t// If -a is not set attach to the output stdio\n\tif flAttach.Len() == 0 {\n\t\tattachStdout = true\n\t\tattachStderr = true\n\t}\n\n\tvar err error\n\n\tvar flMemory int64\n\tif *flMemoryString != \"\" {\n\t\tflMemory, err = units.RAMInBytes(*flMemoryString)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, err\n\t\t}\n\t}\n\n\tvar MemoryReservation int64\n\tif *flMemoryReservation != \"\" {\n\t\tMemoryReservation, err = units.RAMInBytes(*flMemoryReservation)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, err\n\t\t}\n\t}\n\n\tvar memorySwap int64\n\tif *flMemorySwap != \"\" {\n\t\tif *flMemorySwap == \"-1\" {\n\t\t\tmemorySwap = -1\n\t\t} else {\n\t\t\tmemorySwap, err = units.RAMInBytes(*flMemorySwap)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, nil, cmd, err\n\t\t\t}\n\t\t}\n\t}\n\n\tvar KernelMemory int64\n\tif *flKernelMemory != \"\" {\n\t\tKernelMemory, err = units.RAMInBytes(*flKernelMemory)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, err\n\t\t}\n\t}\n\n\tswappiness := *flSwappiness\n\tif swappiness != -1 && (swappiness < 0 || swappiness > 100) {\n\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"invalid value: %d. Valid memory swappiness range is 0-100\", swappiness)\n\t}\n\n\tvar shmSize int64\n\tif *flShmSize != \"\" {\n\t\tshmSize, err = units.RAMInBytes(*flShmSize)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, err\n\t\t}\n\t}\n\n\tvar binds []string\n\t// add any bind targets to the list of container volumes\n\tfor bind := range flVolumes.GetMap() {\n\t\tif arr := volumeSplitN(bind, 2); len(arr) > 1 {\n\t\t\t// after creating the bind mount we want to delete it from the flVolumes values because\n\t\t\t// we do not want bind mounts being committed to image configs\n\t\t\tbinds = append(binds, bind)\n\t\t\tflVolumes.Delete(bind)\n\t\t}\n\t}\n\n\t// Can't evaluate options passed into --tmpfs until we actually mount\n\ttmpfs := make(map[string]string)\n\tfor _, t := range flTmpfs.GetAll() {\n\t\tif arr := strings.SplitN(t, \":\", 2); len(arr) > 1 {\n\t\t\tif _, _, err := mount.ParseTmpfsOptions(arr[1]); err != nil {\n\t\t\t\treturn nil, nil, nil, cmd, err\n\t\t\t}\n\t\t\ttmpfs[arr[0]] = arr[1]\n\t\t} else {\n\t\t\ttmpfs[arr[0]] = \"\"\n\t\t}\n\t}\n\n\tvar (\n\t\tparsedArgs = cmd.Args()\n\t\trunCmd     strslice.StrSlice\n\t\tentrypoint strslice.StrSlice\n\t\timage      = cmd.Arg(0)\n\t)\n\tif len(parsedArgs) > 1 {\n\t\trunCmd = strslice.StrSlice(parsedArgs[1:])\n\t}\n\tif *flEntrypoint != \"\" {\n\t\tentrypoint = strslice.StrSlice{*flEntrypoint}\n\t}\n\t// Validate if the given hostname is RFC 1123 (https://tools.ietf.org/html/rfc1123) compliant.\n\thostname := *flHostname\n\tif hostname != \"\" {\n\t\t// Linux hostname is limited to HOST_NAME_MAX=64, not not including the terminating null byte.\n\t\tmatched, _ := regexp.MatchString(\"^(([[:alnum:]]|[[:alnum:]][[:alnum:]\\\\-]*[[:alnum:]])\\\\.)*([[:alnum:]]|[[:alnum:]][[:alnum:]\\\\-]*[[:alnum:]])$\", hostname)\n\t\tif len(hostname) > 64 || !matched {\n\t\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"invalid hostname format for --hostname: %s\", hostname)\n\t\t}\n\t}\n\n\tports, portBindings, err := nat.ParsePortSpecs(flPublish.GetAll())\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\t// Merge in exposed ports to the map of published ports\n\tfor _, e := range flExpose.GetAll() {\n\t\tif strings.Contains(e, \":\") {\n\t\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"invalid port format for --expose: %s\", e)\n\t\t}\n\t\t//support two formats for expose, original format <portnum>/[<proto>] or <startport-endport>/[<proto>]\n\t\tproto, port := nat.SplitProtoPort(e)\n\t\t//parse the start and end port and create a sequence of ports to expose\n\t\t//if expose a port, the start and end port are the same\n\t\tstart, end, err := nat.ParsePortRange(port)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"invalid range format for --expose: %s, error: %s\", e, err)\n\t\t}\n\t\tfor i := start; i <= end; i++ {\n\t\t\tp, err := nat.NewPort(proto, strconv.FormatUint(i, 10))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, nil, cmd, err\n\t\t\t}\n\t\t\tif _, exists := ports[p]; !exists {\n\t\t\t\tports[p] = struct{}{}\n\t\t\t}\n\t\t}\n\t}\n\n\t// parse device mappings\n\tdeviceMappings := []container.DeviceMapping{}\n\tfor _, device := range flDevices.GetAll() {\n\t\tdeviceMapping, err := ParseDevice(device)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, cmd, err\n\t\t}\n\t\tdeviceMappings = append(deviceMappings, deviceMapping)\n\t}\n\n\t// collect all the environment variables for the container\n\tenvVariables, err := readKVStrings(flEnvFile.GetAll(), flEnv.GetAll())\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\t// collect all the labels for the container\n\tlabels, err := readKVStrings(flLabelsFile.GetAll(), flLabels.GetAll())\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\tipcMode := container.IpcMode(*flIpcMode)\n\tif !ipcMode.Valid() {\n\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"--ipc: invalid IPC mode\")\n\t}\n\n\tpidMode := container.PidMode(*flPidMode)\n\tif !pidMode.Valid() {\n\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"--pid: invalid PID mode\")\n\t}\n\n\tutsMode := container.UTSMode(*flUTSMode)\n\tif !utsMode.Valid() {\n\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"--uts: invalid UTS mode\")\n\t}\n\n\tusernsMode := container.UsernsMode(*flUsernsMode)\n\tif !usernsMode.Valid() {\n\t\treturn nil, nil, nil, cmd, fmt.Errorf(\"--userns: invalid USER mode\")\n\t}\n\n\trestartPolicy, err := ParseRestartPolicy(*flRestartPolicy)\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\tloggingOpts, err := parseLoggingOpts(*flLoggingDriver, flLoggingOpts.GetAll())\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\tsecurityOpts, err := parseSecurityOpts(flSecurityOpt.GetAll())\n\tif err != nil {\n\t\treturn nil, nil, nil, cmd, err\n\t}\n\n\tresources := container.Resources{\n\t\tCgroupParent:         *flCgroupParent,\n\t\tMemory:               flMemory,\n\t\tMemoryReservation:    MemoryReservation,\n\t\tMemorySwap:           memorySwap,\n\t\tMemorySwappiness:     flSwappiness,\n\t\tKernelMemory:         KernelMemory,\n\t\tOomKillDisable:       flOomKillDisable,\n\t\tCPUShares:            *flCPUShares,\n\t\tCPUPeriod:            *flCPUPeriod,\n\t\tCpusetCpus:           *flCpusetCpus,\n\t\tCpusetMems:           *flCpusetMems,\n\t\tCPUQuota:             *flCPUQuota,\n\t\tPidsLimit:            *flPidsLimit,\n\t\tBlkioWeight:          *flBlkioWeight,\n\t\tBlkioWeightDevice:    flBlkioWeightDevice.GetList(),\n\t\tBlkioDeviceReadBps:   flDeviceReadBps.GetList(),\n\t\tBlkioDeviceWriteBps:  flDeviceWriteBps.GetList(),\n\t\tBlkioDeviceReadIOps:  flDeviceReadIOps.GetList(),\n\t\tBlkioDeviceWriteIOps: flDeviceWriteIOps.GetList(),\n\t\tUlimits:              flUlimits.GetList(),\n\t\tDevices:              deviceMappings,\n\t}\n\n\tconfig := &container.Config{\n\t\tHostname:     *flHostname,\n\t\tExposedPorts: ports,\n\t\tUser:         *flUser,\n\t\tTty:          *flTty,\n\t\t// TODO: deprecated, it comes from -n, --networking\n\t\t// it's still needed internally to set the network to disabled\n\t\t// if e.g. bridge is none in daemon opts, and in inspect\n\t\tNetworkDisabled: false,\n\t\tOpenStdin:       *flStdin,\n\t\tAttachStdin:     attachStdin,\n\t\tAttachStdout:    attachStdout,\n\t\tAttachStderr:    attachStderr,\n\t\tEnv:             envVariables,\n\t\tCmd:             runCmd,\n\t\tImage:           image,\n\t\tVolumes:         flVolumes.GetMap(),\n\t\tMacAddress:      *flMacAddress,\n\t\tEntrypoint:      entrypoint,\n\t\tWorkingDir:      *flWorkingDir,\n\t\tLabels:          ConvertKVStringsToMap(labels),\n\t}\n\tif cmd.IsSet(\"-stop-signal\") {\n\t\tconfig.StopSignal = *flStopSignal\n\t}\n\n\thostConfig := &container.HostConfig{\n\t\tBinds:           binds,\n\t\tContainerIDFile: *flContainerIDFile,\n\t\tOomScoreAdj:     *flOomScoreAdj,\n\t\tPrivileged:      *flPrivileged,\n\t\tPortBindings:    portBindings,\n\t\tLinks:           flLinks.GetAll(),\n\t\tPublishAllPorts: *flPublishAll,\n\t\t// Make sure the dns fields are never nil.\n\t\t// New containers don't ever have those fields nil,\n\t\t// but pre created containers can still have those nil values.\n\t\t// See https://github.com/docker/docker/pull/17779\n\t\t// for a more detailed explanation on why we don't want that.\n\t\tDNS:            flDNS.GetAllOrEmpty(),\n\t\tDNSSearch:      flDNSSearch.GetAllOrEmpty(),\n\t\tDNSOptions:     flDNSOptions.GetAllOrEmpty(),\n\t\tExtraHosts:     flExtraHosts.GetAll(),\n\t\tVolumesFrom:    flVolumesFrom.GetAll(),\n\t\tNetworkMode:    container.NetworkMode(*flNetMode),\n\t\tIpcMode:        ipcMode,\n\t\tPidMode:        pidMode,\n\t\tUTSMode:        utsMode,\n\t\tUsernsMode:     usernsMode,\n\t\tCapAdd:         strslice.StrSlice(flCapAdd.GetAll()),\n\t\tCapDrop:        strslice.StrSlice(flCapDrop.GetAll()),\n\t\tGroupAdd:       flGroupAdd.GetAll(),\n\t\tRestartPolicy:  restartPolicy,\n\t\tSecurityOpt:    securityOpts,\n\t\tReadonlyRootfs: *flReadonlyRootfs,\n\t\tLogConfig:      container.LogConfig{Type: *flLoggingDriver, Config: loggingOpts},\n\t\tVolumeDriver:   *flVolumeDriver,\n\t\tIsolation:      container.Isolation(*flIsolation),\n\t\tShmSize:        shmSize,\n\t\tResources:      resources,\n\t\tTmpfs:          tmpfs,\n\t}\n\n\t// When allocating stdin in attached mode, close stdin at client disconnect\n\tif config.OpenStdin && config.AttachStdin {\n\t\tconfig.StdinOnce = true\n\t}\n\n\tnetworkingConfig := &networktypes.NetworkingConfig{\n\t\tEndpointsConfig: make(map[string]*networktypes.EndpointSettings),\n\t}\n\n\tif *flIPv4Address != \"\" || *flIPv6Address != \"\" {\n\t\tnetworkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)] = &networktypes.EndpointSettings{\n\t\t\tIPAMConfig: &networktypes.EndpointIPAMConfig{\n\t\t\t\tIPv4Address: *flIPv4Address,\n\t\t\t\tIPv6Address: *flIPv6Address,\n\t\t\t},\n\t\t}\n\t}\n\n\tif hostConfig.NetworkMode.IsUserDefined() && len(hostConfig.Links) > 0 {\n\t\tepConfig := networkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)]\n\t\tif epConfig == nil {\n\t\t\tepConfig = &networktypes.EndpointSettings{}\n\t\t}\n\t\tepConfig.Links = make([]string, len(hostConfig.Links))\n\t\tcopy(epConfig.Links, hostConfig.Links)\n\t\tnetworkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)] = epConfig\n\t}\n\n\tif flAliases.Len() > 0 {\n\t\tepConfig := networkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)]\n\t\tif epConfig == nil {\n\t\t\tepConfig = &networktypes.EndpointSettings{}\n\t\t}\n\t\tepConfig.Aliases = make([]string, flAliases.Len())\n\t\tcopy(epConfig.Aliases, flAliases.GetAll())\n\t\tnetworkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)] = epConfig\n\t}\n\n\treturn config, hostConfig, networkingConfig, cmd, nil\n}\n\n// reads a file of line terminated key=value pairs and override that with override parameter\nfunc readKVStrings(files []string, override []string) ([]string, error) {\n\tenvVariables := []string{}\n\tfor _, ef := range files {\n\t\tparsedVars, err := ParseEnvFile(ef)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tenvVariables = append(envVariables, parsedVars...)\n\t}\n\t// parse the '-e' and '--env' after, to allow override\n\tenvVariables = append(envVariables, override...)\n\n\treturn envVariables, nil\n}\n\n// ConvertKVStringsToMap converts [\"key=value\"] to {\"key\":\"value\"}\nfunc ConvertKVStringsToMap(values []string) map[string]string {\n\tresult := make(map[string]string, len(values))\n\tfor _, value := range values {\n\t\tkv := strings.SplitN(value, \"=\", 2)\n\t\tif len(kv) == 1 {\n\t\t\tresult[kv[0]] = \"\"\n\t\t} else {\n\t\t\tresult[kv[0]] = kv[1]\n\t\t}\n\t}\n\n\treturn result\n}\n\nfunc parseLoggingOpts(loggingDriver string, loggingOpts []string) (map[string]string, error) {\n\tloggingOptsMap := ConvertKVStringsToMap(loggingOpts)\n\tif loggingDriver == \"none\" && len(loggingOpts) > 0 {\n\t\treturn map[string]string{}, fmt.Errorf(\"invalid logging opts for driver %s\", loggingDriver)\n\t}\n\treturn loggingOptsMap, nil\n}\n\n// takes a local seccomp daemon, reads the file contents for sending to the daemon\nfunc parseSecurityOpts(securityOpts []string) ([]string, error) {\n\tfor key, opt := range securityOpts {\n\t\tcon := strings.SplitN(opt, \"=\", 2)\n\t\tif len(con) == 1 && con[0] != \"no-new-privileges\" {\n\t\t\tif strings.Index(opt, \":\") != -1 {\n\t\t\t\tcon = strings.SplitN(opt, \":\", 2)\n\t\t\t} else {\n\t\t\t\treturn securityOpts, fmt.Errorf(\"Invalid --security-opt: %q\", opt)\n\t\t\t}\n\t\t}\n\t\tif con[0] == \"seccomp\" && con[1] != \"unconfined\" {\n\t\t\tf, err := ioutil.ReadFile(con[1])\n\t\t\tif err != nil {\n\t\t\t\treturn securityOpts, fmt.Errorf(\"opening seccomp profile (%s) failed: %v\", con[1], err)\n\t\t\t}\n\t\t\tb := bytes.NewBuffer(nil)\n\t\t\tif err := json.Compact(b, f); err != nil {\n\t\t\t\treturn securityOpts, fmt.Errorf(\"compacting json for seccomp profile (%s) failed: %v\", con[1], err)\n\t\t\t}\n\t\t\tsecurityOpts[key] = fmt.Sprintf(\"seccomp=%s\", b.Bytes())\n\t\t}\n\t}\n\n\treturn securityOpts, nil\n}\n\n// ParseRestartPolicy returns the parsed policy or an error indicating what is incorrect\nfunc ParseRestartPolicy(policy string) (container.RestartPolicy, error) {\n\tp := container.RestartPolicy{}\n\n\tif policy == \"\" {\n\t\treturn p, nil\n\t}\n\n\tvar (\n\t\tparts = strings.Split(policy, \":\")\n\t\tname  = parts[0]\n\t)\n\n\tp.Name = name\n\tswitch name {\n\tcase \"always\", \"unless-stopped\":\n\t\tif len(parts) > 1 {\n\t\t\treturn p, fmt.Errorf(\"maximum restart count not valid with restart policy of \\\"%s\\\"\", name)\n\t\t}\n\tcase \"no\":\n\t\t// do nothing\n\tcase \"on-failure\":\n\t\tif len(parts) > 2 {\n\t\t\treturn p, fmt.Errorf(\"restart count format is not valid, usage: 'on-failure:N' or 'on-failure'\")\n\t\t}\n\t\tif len(parts) == 2 {\n\t\t\tcount, err := strconv.Atoi(parts[1])\n\t\t\tif err != nil {\n\t\t\t\treturn p, err\n\t\t\t}\n\n\t\t\tp.MaximumRetryCount = count\n\t\t}\n\tdefault:\n\t\treturn p, fmt.Errorf(\"invalid restart policy %s\", name)\n\t}\n\n\treturn p, nil\n}\n\n// ParseDevice parses a device mapping string to a container.DeviceMapping struct\nfunc ParseDevice(device string) (container.DeviceMapping, error) {\n\tsrc := \"\"\n\tdst := \"\"\n\tpermissions := \"rwm\"\n\tarr := strings.Split(device, \":\")\n\tswitch len(arr) {\n\tcase 3:\n\t\tpermissions = arr[2]\n\t\tfallthrough\n\tcase 2:\n\t\tif ValidDeviceMode(arr[1]) {\n\t\t\tpermissions = arr[1]\n\t\t} else {\n\t\t\tdst = arr[1]\n\t\t}\n\t\tfallthrough\n\tcase 1:\n\t\tsrc = arr[0]\n\tdefault:\n\t\treturn container.DeviceMapping{}, fmt.Errorf(\"invalid device specification: %s\", device)\n\t}\n\n\tif dst == \"\" {\n\t\tdst = src\n\t}\n\n\tdeviceMapping := container.DeviceMapping{\n\t\tPathOnHost:        src,\n\t\tPathInContainer:   dst,\n\t\tCgroupPermissions: permissions,\n\t}\n\treturn deviceMapping, nil\n}\n\n// ParseLink parses and validates the specified string as a link format (name:alias)\nfunc ParseLink(val string) (string, string, error) {\n\tif val == \"\" {\n\t\treturn \"\", \"\", fmt.Errorf(\"empty string specified for links\")\n\t}\n\tarr := strings.Split(val, \":\")\n\tif len(arr) > 2 {\n\t\treturn \"\", \"\", fmt.Errorf(\"bad format for links: %s\", val)\n\t}\n\tif len(arr) == 1 {\n\t\treturn val, val, nil\n\t}\n\t// This is kept because we can actually get an HostConfig with links\n\t// from an already created container and the format is not `foo:bar`\n\t// but `/foo:/c1/bar`\n\tif strings.HasPrefix(arr[0], \"/\") {\n\t\t_, alias := path.Split(arr[1])\n\t\treturn arr[0][1:], alias, nil\n\t}\n\treturn arr[0], arr[1], nil\n}\n\n// ValidateLink validates that the specified string has a valid link format (containerName:alias).\nfunc ValidateLink(val string) (string, error) {\n\tif _, _, err := ParseLink(val); err != nil {\n\t\treturn val, err\n\t}\n\treturn val, nil\n}\n\n// ValidDeviceMode checks if the mode for device is valid or not.\n// Valid mode is a composition of r (read), w (write), and m (mknod).\nfunc ValidDeviceMode(mode string) bool {\n\tvar legalDeviceMode = map[rune]bool{\n\t\t'r': true,\n\t\t'w': true,\n\t\t'm': true,\n\t}\n\tif mode == \"\" {\n\t\treturn false\n\t}\n\tfor _, c := range mode {\n\t\tif !legalDeviceMode[c] {\n\t\t\treturn false\n\t\t}\n\t\tlegalDeviceMode[c] = false\n\t}\n\treturn true\n}\n\n// ValidateDevice validates a path for devices\n// It will make sure 'val' is in the form:\n//    [host-dir:]container-path[:mode]\n// It also validates the device mode.\nfunc ValidateDevice(val string) (string, error) {\n\treturn validatePath(val, ValidDeviceMode)\n}\n\nfunc validatePath(val string, validator func(string) bool) (string, error) {\n\tvar containerPath string\n\tvar mode string\n\n\tif strings.Count(val, \":\") > 2 {\n\t\treturn val, fmt.Errorf(\"bad format for path: %s\", val)\n\t}\n\n\tsplit := strings.SplitN(val, \":\", 3)\n\tif split[0] == \"\" {\n\t\treturn val, fmt.Errorf(\"bad format for path: %s\", val)\n\t}\n\tswitch len(split) {\n\tcase 1:\n\t\tcontainerPath = split[0]\n\t\tval = path.Clean(containerPath)\n\tcase 2:\n\t\tif isValid := validator(split[1]); isValid {\n\t\t\tcontainerPath = split[0]\n\t\t\tmode = split[1]\n\t\t\tval = fmt.Sprintf(\"%s:%s\", path.Clean(containerPath), mode)\n\t\t} else {\n\t\t\tcontainerPath = split[1]\n\t\t\tval = fmt.Sprintf(\"%s:%s\", split[0], path.Clean(containerPath))\n\t\t}\n\tcase 3:\n\t\tcontainerPath = split[1]\n\t\tmode = split[2]\n\t\tif isValid := validator(split[2]); !isValid {\n\t\t\treturn val, fmt.Errorf(\"bad mode specified: %s\", mode)\n\t\t}\n\t\tval = fmt.Sprintf(\"%s:%s:%s\", split[0], containerPath, mode)\n\t}\n\n\tif !path.IsAbs(containerPath) {\n\t\treturn val, fmt.Errorf(\"%s is not an absolute path\", containerPath)\n\t}\n\treturn val, nil\n}\n\n// volumeSplitN splits raw into a maximum of n parts, separated by a separator colon.\n// A separator colon is the last `:` character in the regex `[:\\\\]?[a-zA-Z]:` (note `\\\\` is `\\` escaped).\n// In Windows driver letter appears in two situations:\n// a. `^[a-zA-Z]:` (A colon followed  by `^[a-zA-Z]:` is OK as colon is the separator in volume option)\n// b. A string in the format like `\\\\?\\C:\\Windows\\...` (UNC).\n// Therefore, a driver letter can only follow either a `:` or `\\\\`\n// This allows to correctly split strings such as `C:\\foo:D:\\:rw` or `/tmp/q:/foo`.\nfunc volumeSplitN(raw string, n int) []string {\n\tvar array []string\n\tif len(raw) == 0 || raw[0] == ':' {\n\t\t// invalid\n\t\treturn nil\n\t}\n\t// numberOfParts counts the number of parts separated by a separator colon\n\tnumberOfParts := 0\n\t// left represents the left-most cursor in raw, updated at every `:` character considered as a separator.\n\tleft := 0\n\t// right represents the right-most cursor in raw incremented with the loop. Note this\n\t// starts at index 1 as index 0 is already handle above as a special case.\n\tfor right := 1; right < len(raw); right++ {\n\t\t// stop parsing if reached maximum number of parts\n\t\tif n >= 0 && numberOfParts >= n {\n\t\t\tbreak\n\t\t}\n\t\tif raw[right] != ':' {\n\t\t\tcontinue\n\t\t}\n\t\tpotentialDriveLetter := raw[right-1]\n\t\tif (potentialDriveLetter >= 'A' && potentialDriveLetter <= 'Z') || (potentialDriveLetter >= 'a' && potentialDriveLetter <= 'z') {\n\t\t\tif right > 1 {\n\t\t\t\tbeforePotentialDriveLetter := raw[right-2]\n\t\t\t\t// Only `:` or `\\\\` are checked (`/` could fall into the case of `/tmp/q:/foo`)\n\t\t\t\tif beforePotentialDriveLetter != ':' && beforePotentialDriveLetter != '\\\\' {\n\t\t\t\t\t// e.g. `C:` is not preceded by any delimiter, therefore it was not a drive letter but a path ending with `C:`.\n\t\t\t\t\tarray = append(array, raw[left:right])\n\t\t\t\t\tleft = right + 1\n\t\t\t\t\tnumberOfParts++\n\t\t\t\t}\n\t\t\t\t// else, `C:` is considered as a drive letter and not as a delimiter, so we continue parsing.\n\t\t\t}\n\t\t\t// if right == 1, then `C:` is the beginning of the raw string, therefore `:` is again not considered a delimiter and we continue parsing.\n\t\t} else {\n\t\t\t// if `:` is not preceded by a potential drive letter, then consider it as a delimiter.\n\t\t\tarray = append(array, raw[left:right])\n\t\t\tleft = right + 1\n\t\t\tnumberOfParts++\n\t\t}\n\t}\n\t// need to take care of the last part\n\tif left < len(raw) {\n\t\tif n >= 0 && numberOfParts >= n {\n\t\t\t// if the maximum number of parts is reached, just append the rest to the last part\n\t\t\t// left-1 is at the last `:` that needs to be included since not considered a separator.\n\t\t\tarray[n-1] += raw[left-1:]\n\t\t} else {\n\t\t\tarray = append(array, raw[left:])\n\t\t}\n\t}\n\treturn array\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/throttledevice.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/blkiodev\"\n\t\"github.com/docker/go-units\"\n)\n\n// ValidatorThrottleFctType defines a validator function that returns a validated struct and/or an error.\ntype ValidatorThrottleFctType func(val string) (*blkiodev.ThrottleDevice, error)\n\n// ValidateThrottleBpsDevice validates that the specified string has a valid device-rate format.\nfunc ValidateThrottleBpsDevice(val string) (*blkiodev.ThrottleDevice, error) {\n\tsplit := strings.SplitN(val, \":\", 2)\n\tif len(split) != 2 {\n\t\treturn nil, fmt.Errorf(\"bad format: %s\", val)\n\t}\n\tif !strings.HasPrefix(split[0], \"/dev/\") {\n\t\treturn nil, fmt.Errorf(\"bad format for device path: %s\", val)\n\t}\n\trate, err := units.RAMInBytes(split[1])\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid rate for device: %s. The correct format is <device-path>:<number>[<unit>]. Number must be a positive integer. Unit is optional and can be kb, mb, or gb\", val)\n\t}\n\tif rate < 0 {\n\t\treturn nil, fmt.Errorf(\"invalid rate for device: %s. The correct format is <device-path>:<number>[<unit>]. Number must be a positive integer. Unit is optional and can be kb, mb, or gb\", val)\n\t}\n\n\treturn &blkiodev.ThrottleDevice{\n\t\tPath: split[0],\n\t\tRate: uint64(rate),\n\t}, nil\n}\n\n// ValidateThrottleIOpsDevice validates that the specified string has a valid device-rate format.\nfunc ValidateThrottleIOpsDevice(val string) (*blkiodev.ThrottleDevice, error) {\n\tsplit := strings.SplitN(val, \":\", 2)\n\tif len(split) != 2 {\n\t\treturn nil, fmt.Errorf(\"bad format: %s\", val)\n\t}\n\tif !strings.HasPrefix(split[0], \"/dev/\") {\n\t\treturn nil, fmt.Errorf(\"bad format for device path: %s\", val)\n\t}\n\trate, err := strconv.ParseUint(split[1], 10, 64)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid rate for device: %s. The correct format is <device-path>:<number>. Number must be a positive integer\", val)\n\t}\n\tif rate < 0 {\n\t\treturn nil, fmt.Errorf(\"invalid rate for device: %s. The correct format is <device-path>:<number>. Number must be a positive integer\", val)\n\t}\n\n\treturn &blkiodev.ThrottleDevice{\n\t\tPath: split[0],\n\t\tRate: uint64(rate),\n\t}, nil\n}\n\n// ThrottledeviceOpt defines a map of ThrottleDevices\ntype ThrottledeviceOpt struct {\n\tvalues    []*blkiodev.ThrottleDevice\n\tvalidator ValidatorThrottleFctType\n}\n\n// NewThrottledeviceOpt creates a new ThrottledeviceOpt\nfunc NewThrottledeviceOpt(validator ValidatorThrottleFctType) ThrottledeviceOpt {\n\tvalues := []*blkiodev.ThrottleDevice{}\n\treturn ThrottledeviceOpt{\n\t\tvalues:    values,\n\t\tvalidator: validator,\n\t}\n}\n\n// Set validates a ThrottleDevice and sets its name as a key in ThrottledeviceOpt\nfunc (opt *ThrottledeviceOpt) Set(val string) error {\n\tvar value *blkiodev.ThrottleDevice\n\tif opt.validator != nil {\n\t\tv, err := opt.validator(val)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalue = v\n\t}\n\t(opt.values) = append((opt.values), value)\n\treturn nil\n}\n\n// String returns ThrottledeviceOpt values as a string.\nfunc (opt *ThrottledeviceOpt) String() string {\n\tvar out []string\n\tfor _, v := range opt.values {\n\t\tout = append(out, v.String())\n\t}\n\n\treturn fmt.Sprintf(\"%v\", out)\n}\n\n// GetList returns a slice of pointers to ThrottleDevices.\nfunc (opt *ThrottledeviceOpt) GetList() []*blkiodev.ThrottleDevice {\n\tvar throttledevice []*blkiodev.ThrottleDevice\n\tfor _, v := range opt.values {\n\t\tthrottledevice = append(throttledevice, v)\n\t}\n\n\treturn throttledevice\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/ulimit.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/docker/go-units\"\n)\n\n// UlimitOpt defines a map of Ulimits\ntype UlimitOpt struct {\n\tvalues *map[string]*units.Ulimit\n}\n\n// NewUlimitOpt creates a new UlimitOpt\nfunc NewUlimitOpt(ref *map[string]*units.Ulimit) *UlimitOpt {\n\tif ref == nil {\n\t\tref = &map[string]*units.Ulimit{}\n\t}\n\treturn &UlimitOpt{ref}\n}\n\n// Set validates a Ulimit and sets its name as a key in UlimitOpt\nfunc (o *UlimitOpt) Set(val string) error {\n\tl, err := units.ParseUlimit(val)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t(*o.values)[l.Name] = l\n\n\treturn nil\n}\n\n// String returns Ulimit values as a string.\nfunc (o *UlimitOpt) String() string {\n\tvar out []string\n\tfor _, v := range *o.values {\n\t\tout = append(out, v.String())\n\t}\n\n\treturn fmt.Sprintf(\"%v\", out)\n}\n\n// GetList returns a slice of pointers to Ulimits.\nfunc (o *UlimitOpt) GetList() []*units.Ulimit {\n\tvar ulimits []*units.Ulimit\n\tfor _, v := range *o.values {\n\t\tulimits = append(ulimits, v)\n\t}\n\n\treturn ulimits\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/runconfig/opts/weightdevice.go",
    "content": "package opts\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/blkiodev\"\n)\n\n// ValidatorWeightFctType defines a validator function that returns a validated struct and/or an error.\ntype ValidatorWeightFctType func(val string) (*blkiodev.WeightDevice, error)\n\n// ValidateWeightDevice validates that the specified string has a valid device-weight format.\nfunc ValidateWeightDevice(val string) (*blkiodev.WeightDevice, error) {\n\tsplit := strings.SplitN(val, \":\", 2)\n\tif len(split) != 2 {\n\t\treturn nil, fmt.Errorf(\"bad format: %s\", val)\n\t}\n\tif !strings.HasPrefix(split[0], \"/dev/\") {\n\t\treturn nil, fmt.Errorf(\"bad format for device path: %s\", val)\n\t}\n\tweight, err := strconv.ParseUint(split[1], 10, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid weight for device: %s\", val)\n\t}\n\tif weight > 0 && (weight < 10 || weight > 1000) {\n\t\treturn nil, fmt.Errorf(\"invalid weight for device: %s\", val)\n\t}\n\n\treturn &blkiodev.WeightDevice{\n\t\tPath:   split[0],\n\t\tWeight: uint16(weight),\n\t}, nil\n}\n\n// WeightdeviceOpt defines a map of WeightDevices\ntype WeightdeviceOpt struct {\n\tvalues    []*blkiodev.WeightDevice\n\tvalidator ValidatorWeightFctType\n}\n\n// NewWeightdeviceOpt creates a new WeightdeviceOpt\nfunc NewWeightdeviceOpt(validator ValidatorWeightFctType) WeightdeviceOpt {\n\tvalues := []*blkiodev.WeightDevice{}\n\treturn WeightdeviceOpt{\n\t\tvalues:    values,\n\t\tvalidator: validator,\n\t}\n}\n\n// Set validates a WeightDevice and sets its name as a key in WeightdeviceOpt\nfunc (opt *WeightdeviceOpt) Set(val string) error {\n\tvar value *blkiodev.WeightDevice\n\tif opt.validator != nil {\n\t\tv, err := opt.validator(val)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalue = v\n\t}\n\t(opt.values) = append((opt.values), value)\n\treturn nil\n}\n\n// String returns WeightdeviceOpt values as a string.\nfunc (opt *WeightdeviceOpt) String() string {\n\tvar out []string\n\tfor _, v := range opt.values {\n\t\tout = append(out, v.String())\n\t}\n\n\treturn fmt.Sprintf(\"%v\", out)\n}\n\n// GetList returns a slice of pointers to WeightDevices.\nfunc (opt *WeightdeviceOpt) GetList() []*blkiodev.WeightDevice {\n\tvar weightdevice []*blkiodev.WeightDevice\n\tfor _, v := range opt.values {\n\t\tweightdevice = append(weightdevice, v)\n\t}\n\n\treturn weightdevice\n}\n"
  },
  {
    "path": "vendor/github.com/docker/docker/trash.conf",
    "content": "github.com/Microsoft/go-winio v0.1.0 \ngithub.com/RackSec/srslog 259aed10dfa74ea2961eddd1d9847619f6e98837 \ngithub.com/sirupsen/logrus v1.8.1\ngithub.com/boltdb/bolt v1.2.0 \ngithub.com/cloudfoundry/gosigar 3ed7c74352dae6dc00bdc8c74045375352e3ec05\ngithub.com/codegangsta/cli 9fec0fad02befc9209347cc6d620e68e1b45f74d\ngithub.com/coreos/go-systemd v4 \ngithub.com/docker/containerd c5695fa78c8cd383e8ea8f9bd4a0920ebc165bf1 https://github.com/burmilla/containerd.git\ngithub.com/docker/distribution 467fc068d88aa6610691b7f1a677271a3fac4aac \ngithub.com/docker/engine-api v0.3.3  \ngithub.com/docker/go-connections v0.2.0 \ngithub.com/docker/go-units 651fc226e7441360384da338d0fd37f2440ffbe3 \ngithub.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a \ngithub.com/go-check/check a625211d932a2a643d0d17352095f03fb7774663 https://github.com/cpuguy83/check.git\ngithub.com/godbus/dbus v3 \ngithub.com/golang/protobuf 8d92cf5fc15a4382f8964b08e1f42a75c0591aa3\ngithub.com/gorilla/context 14f550f51a \ngithub.com/gorilla/mux e444e69cbd \ngithub.com/imdario/mergo 0.2.1  \ngithub.com/mattn/go-shellwords v1.0.0 \ngithub.com/mattn/go-sqlite3 v1.1.0 \ngithub.com/pkg/errors v0.9.1\ngithub.com/opencontainers/runc edc34c4a8c1e261b5ce926ff557ecde1aff19ce3 https://github.com/burmilla/runc.git\ngithub.com/opencontainers/runtime-spec f955d90e70a98ddfb886bd930ffd076da9b67998\ngithub.com/opencontainers/specs f955d90e70a98ddfb886bd930ffd076da9b67998\ngithub.com/rcrowley/go-metrics eeba7bd0dd01ace6e690fa833b3f22aaec29af43\ngithub.com/seccomp/libseccomp-golang 1b506fc7c24eec5a3693cdcbed40d9c226cfc6a1 \ngithub.com/syndtr/gocapability 2c00daeb6c3b45114c80ac44119e7b8801fdd852 \ngithub.com/tchap/go-patricia v2.1.0 \ngithub.com/vbatts/tar-split v0.9.11 \ngithub.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3 \ngithub.com/vishvananda/netlink 631962935bff4f3d20ff32a72e8944f6d2836a26 \ngolang.org/x/net aea8142032473bb41e874c31eb771c364b790fb4 https://github.com/golang/net.git\ngolang.org/x/sys bc7a7d42d5c30f4d0fe808715c002826ce2c624e https://github.com/golang/sys.git\ngolang.org/x/text afb9336c4530b4b18f37130eab53f245f7d6821e https://github.com/golang/text.git\ngoogle.golang.org/grpc ab0be5212fb225475f2087566eded7da5d727960 https://github.com/grpc/grpc-go.git\ngopkg.in/fsnotify.v1 v1.2.0 \n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/.travis.yml",
    "content": "---\n  language: go\n  sudo: false\n  notifications:\n    email: false\n  go:\n    - 1.6\n  install: make deps\n  script: make validate && make test\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/CHANGELOG.md",
    "content": "# Changelog\n\nItems starting with DEPRECATE are important deprecation notices. For more information on the list of deprecated APIs please have a look at https://docs.docker.com/misc/deprecated/ where target removal dates can also be found.\n\n## 0.3.0 (2016-03-22)\n\n### Client\n\n- Add context to every function.\n- Fix issue loading a default TLS CA.\n- Allow to configure the client with a given http.Client.\n- Add support for Windows named pipes.\n- Set default host for Solaris.\n- Add quiet flag for image load.\n- Add ability to hijack connections through a proxy.\n- Correctly set content type for image load.\n- Add support for getting token for login.\n\n### Types\n\n- Add struct for update restart policy.\n- Add human friendly State for container.\n- Use OS specific host when DOCKER_HOST is not set.\n- Rename Status in info to SystemStatus.\n- Add internal flag to network inspect.\n- Add disk quota field to container.\n- Add EnableIPv6 fields.\n- Add Mounts to container.\n- Add cgroup driver to info.\n- Add userns to host config.\n- Remove email from AuthConfig.\n- Make AuthConfig fields optional.\n- Add IO resource settings for Windows.\n- Add storage driver to host config.\n- Update NetworkName to return proper user defined network names.\n- Support joining cgroups by container id.\n- Add KernelMemory to info.\n- Add UsernsMode to container config.\n- Add CPU resource control for Windows.\n- Add AutoRemove to host config.\n- Add Status field to Volume.\n- Add Label to Image, Network and Volume.\n- Add RootFS to container.\n\n## 0.2.3 (2016-02-02)\n\n### Types\n\n- Add missing status field.\n\n## 0.2.2 (2016-01-13)\n\n### Client\n\n- Fix issue configuring response hijacking with TLS enabled.\n\n\n## 0.2.1 (2016-01-12)\n\n### Client\n\n- Fix issue detecting missing images on container creation.\n\n### Types\n\n- Remove invalid json tag in endpoint configuration.\n- Add missing fields in info structure.\n\n## 0.2.0 (2016-01-11)\n\n### Client\n\n- Allow to force network disconnection. (docker 1.10)\n\n### Types\n\n- Add global and local alias configuration to network endpoint.\n- Add network ID to network endpoint.\n- Add IPAM options.\n- Add Seccomp options.\n- Fix issue referencing OOMKillDisable.\n\n\n## 0.1.3 (2016-01-07)\n\n### Client\n\n- Fix issue sending all network configurations for a per network request.\n\n\n## 0.1.2 (2016-01-07)\n\n### Client\n\n- Add interface to represent the API client.\n- Restrict the fields send to the update endpoint to only those that are used.\n- Send network settings as part of the container create request. (docker 1.10)\n- Send network settings as part of the network connect request. (docker 1.10)\n\n### Types\n\n- Add PidsLimit as part of the host configuration.\n- Add PidsStats to show PID stats.\n- Add graph storage options to host configuration.\n- Add NetworkConfig and EndpointIPAMConfig structs. (docker 1.10)\n\n\n## 0.1.1 (2016-01-06)\n\n### Client\n\n- Delegate shmSize units conversion to the consumer.\n\n### Types\n\n- Add warnings to the volume list reponse.\n- Fix image build options:\n\t* use 0 as default value for shmSize.\n\n\n## 0.1.0 (2016-01-04)\n\n### Client\n\n- Initial API client implementation.\n\n### Types\n\n- Initial API types implementation.\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/CONTRIBUTING.md",
    "content": "# Contributing to Docker\n\n### Sign your work\n\nThe sign-off is a simple line at the end of the explanation for the patch. Your\nsignature certifies that you wrote the patch or otherwise have the right to pass\nit on as an open-source patch. The rules are pretty simple: if you can certify\nthe below (from [developercertificate.org](http://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nThen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe.smith@email.com>\n\nUse your real name (sorry, no pseudonyms or anonymous contributions.)\n\nIf you set your `user.name` and `user.email` git configs, you can sign your\ncommit automatically with `git commit -s`.\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://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   Copyright 2015-2016 Docker, Inc.\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       https://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/docker/engine-api/MAINTAINERS",
    "content": "# engine-api maintainers file\n#\n# This file describes who runs the docker/engine-api project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n\t[Org.\"Core maintainers\"]\n\t\tpeople = [\n\t\t\t\"calavera\",\n\t\t\t\"dongluochen\",\n\t\t\t\"mhbauer\",\n\t\t\t\"vdemeester\"\n\t\t]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\t[people.calavera]\n\tName = \"David Calavera\"\n\tEmail = \"david.calavera@gmail.com\"\n\tGitHub = \"calavera\"\n\n\t[people.dongluochen]\n\tName = \"Dongluo Chen\"\n\tEmail = \"dongluo.chen@docker.com\"\n\tGitHub = \"dongluochen\"\n\n\t[people.mhbauer]\n\tName = \"Morgan Bauer\"\n\tEmail = \"mbauer@us.ibm.com\"\n\tGitHub = \"mhbauer\"\n\n\t[people.vdemeester]\n\tName = \"Vincent Demeester\"\n\tEmail = \"vincent@sbr.pm\"\n\tGitHub = \"vdemeester\"\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/Makefile",
    "content": ".PHONY: all deps test validate\n\nall: deps test validate\n\ndeps:\n\tgo get -t ./...\n\tgo get github.com/golang/lint/golint\n\ntest:\n\tgo test -race -cover ./...\n\nvalidate:\n\tgo vet ./...\n\ttest -z \"$(golint ./... | tee /dev/stderr)\"\n\ttest -z \"$(gofmt -s -l . | tee /dev/stderr)\"\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/README.md",
    "content": "[![GoDoc](https://godoc.org/github.com/docker/engine-api?status.svg)](https://godoc.org/github.com/docker/engine-api)\n\n# Introduction\n\nEngine-api is a set of Go libraries to implement client and server components compatible with the Docker engine.\nThe code was extracted from the [Docker engine](https://github.com/docker/docker) and contributed back as an external library.\n\n## Components\n\n### Client\n\nThe client package implements a fully featured http client to interact with the Docker engine. It's modeled after the requirements of the Docker engine CLI, but it can also serve other purposes.\n\n#### Usage\n\nYou can use this client package in your applications by creating a new client object. Then use that object to execute operations against the remote server. Follow the example below to see how to list all the containers running in a Docker engine host:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\nfunc main() {\n\tdefaultHeaders := map[string]string{\"User-Agent\": \"engine-api-cli-1.0\"}\n\tcli, err := client.NewClient(\"unix:///var/run/docker.sock\", \"v1.22\", nil, defaultHeaders)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\toptions := types.ContainerListOptions{All: true}\n\tcontainers, err := cli.ContainerList(context.Background(), options)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfor _, c := range containers {\n\t\tfmt.Println(c.ID)\n\t}\n}\n```\n\n### Types\n\nThe types package includes all typed structures that client and server serialize to execute operations.\n\n### Server\n\nThe server package includes API endpoints that applications compatible with the Docker engine API can reuse. It also provides useful middlewares and helpers to handle http requests.\n\nThis package is still pending to be extracted from the Docker engine.\n\n## Developing\n\nengine-api requires some minimal libraries that you can download running `make deps`.\n\nTo run tests, use the command `make test`. We use build tags to isolate functions and structures that are only available for testing.\n\nTo validate the sources, use the command `make validate`.\n\n## License\n\nengine-api is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text.\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/appveyor.yml",
    "content": "version: \"{build}\"\n\n# Source Config\nclone_folder: c:\\gopath\\src\\github.com\\docker\\engine-api\n\n# Build host\n\nenvironment:\n  GOPATH: c:\\gopath\n  GOVERSION: 1.6\n\ninit:\n  - git config --global core.autocrlf input\n\n# Build\n\ninstall:\n  # Install Go 1.6.\n  - rmdir c:\\go /s /q\n  - appveyor DownloadFile https://storage.googleapis.com/golang/go%GOVERSION%.windows-amd64.msi\n  - msiexec /i go%GOVERSION%.windows-amd64.msi /q\n  - set Path=c:\\go\\bin;c:\\gopath\\bin;%Path%\n  - go version\n  - go env\n\nbuild: false\ndeploy: false\n\nbefore_test:\n  - go get -t ./...\n  - go get github.com/golang/lint/golint\n\ntest_script:\n  - go vet ./...\n  - golint ./...\n  - gofmt -s -l .\n  - go test -race -cover -v -tags=test ./...\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/client.go",
    "content": "package client\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/client/transport\"\n\t\"github.com/docker/go-connections/tlsconfig\"\n)\n\n// Client is the API client that performs all operations\n// against a docker server.\ntype Client struct {\n\t// proto holds the client protocol i.e. unix.\n\tproto string\n\t// addr holds the client address.\n\taddr string\n\t// basePath holds the path to prepend to the requests.\n\tbasePath string\n\t// transport is the interface to sends request with, it implements transport.Client.\n\ttransport transport.Client\n\t// version of the server to talk to.\n\tversion string\n\t// custom http headers configured by users.\n\tcustomHTTPHeaders map[string]string\n}\n\n// NewEnvClient initializes a new API client based on environment variables.\n// Use DOCKER_HOST to set the url to the docker server.\n// Use DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest.\n// Use DOCKER_CERT_PATH to load the tls certificates from.\n// Use DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default.\nfunc NewEnvClient() (*Client, error) {\n\tvar client *http.Client\n\tif dockerCertPath := os.Getenv(\"DOCKER_CERT_PATH\"); dockerCertPath != \"\" {\n\t\toptions := tlsconfig.Options{\n\t\t\tCAFile:             filepath.Join(dockerCertPath, \"ca.pem\"),\n\t\t\tCertFile:           filepath.Join(dockerCertPath, \"cert.pem\"),\n\t\t\tKeyFile:            filepath.Join(dockerCertPath, \"key.pem\"),\n\t\t\tInsecureSkipVerify: os.Getenv(\"DOCKER_TLS_VERIFY\") == \"\",\n\t\t}\n\t\ttlsc, err := tlsconfig.Client(options)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tclient = &http.Client{\n\t\t\tTransport: &http.Transport{\n\t\t\t\tTLSClientConfig: tlsc,\n\t\t\t},\n\t\t}\n\t}\n\n\thost := os.Getenv(\"DOCKER_HOST\")\n\tif host == \"\" {\n\t\thost = DefaultDockerHost\n\t}\n\treturn NewClient(host, os.Getenv(\"DOCKER_API_VERSION\"), client, nil)\n}\n\n// NewClient initializes a new API client for the given host and API version.\n// It won't send any version information if the version number is empty.\n// It uses the given http client as transport.\n// It also initializes the custom http headers to add to each request.\nfunc NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) {\n\tproto, addr, basePath, err := ParseHost(host)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttransport, err := transport.NewTransportWithHTTP(proto, addr, client)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &Client{\n\t\tproto:             proto,\n\t\taddr:              addr,\n\t\tbasePath:          basePath,\n\t\ttransport:         transport,\n\t\tversion:           version,\n\t\tcustomHTTPHeaders: httpHeaders,\n\t}, nil\n}\n\n// getAPIPath returns the versioned request path to call the api.\n// It appends the query parameters to the path if they are not empty.\nfunc (cli *Client) getAPIPath(p string, query url.Values) string {\n\tvar apiPath string\n\tif cli.version != \"\" {\n\t\tv := strings.TrimPrefix(cli.version, \"v\")\n\t\tapiPath = fmt.Sprintf(\"%s/v%s%s\", cli.basePath, v, p)\n\t} else {\n\t\tapiPath = fmt.Sprintf(\"%s%s\", cli.basePath, p)\n\t}\n\n\tu := &url.URL{\n\t\tPath: apiPath,\n\t}\n\tif len(query) > 0 {\n\t\tu.RawQuery = query.Encode()\n\t}\n\treturn u.String()\n}\n\n// ClientVersion returns the version string associated with this\n// instance of the Client. Note that this value can be changed\n// via the DOCKER_API_VERSION env var.\nfunc (cli *Client) ClientVersion() string {\n\treturn cli.version\n}\n\n// ParseHost verifies that the given host strings is valid.\nfunc ParseHost(host string) (string, string, string, error) {\n\tprotoAddrParts := strings.SplitN(host, \"://\", 2)\n\tif len(protoAddrParts) == 1 {\n\t\treturn \"\", \"\", \"\", fmt.Errorf(\"unable to parse docker host `%s`\", host)\n\t}\n\n\tvar basePath string\n\tproto, addr := protoAddrParts[0], protoAddrParts[1]\n\tif proto == \"tcp\" {\n\t\tparsed, err := url.Parse(\"tcp://\" + addr)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", \"\", err\n\t\t}\n\t\taddr = parsed.Host\n\t\tbasePath = parsed.Path\n\t}\n\treturn proto, addr, basePath, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/client_darwin.go",
    "content": "package client\n\n// DefaultDockerHost defines os specific default if DOCKER_HOST is unset\nconst DefaultDockerHost = \"tcp://127.0.0.1:2375\"\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/client_unix.go",
    "content": "// +build linux freebsd solaris openbsd\n\npackage client\n\n// DefaultDockerHost defines os specific default if DOCKER_HOST is unset\nconst DefaultDockerHost = \"unix:///var/run/docker.sock\"\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/client_windows.go",
    "content": "package client\n\n// DefaultDockerHost defines os specific default if DOCKER_HOST is unset\nconst DefaultDockerHost = \"npipe:////./pipe/docker_engine\"\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_attach.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerAttach attaches a connection to a container in the server.\n// It returns a types.HijackedConnection with the hijacked connection\n// and the a reader to get output. It's up to the called to close\n// the hijacked connection by calling types.HijackedResponse.Close.\nfunc (cli *Client) ContainerAttach(ctx context.Context, options types.ContainerAttachOptions) (types.HijackedResponse, error) {\n\tquery := url.Values{}\n\tif options.Stream {\n\t\tquery.Set(\"stream\", \"1\")\n\t}\n\tif options.Stdin {\n\t\tquery.Set(\"stdin\", \"1\")\n\t}\n\tif options.Stdout {\n\t\tquery.Set(\"stdout\", \"1\")\n\t}\n\tif options.Stderr {\n\t\tquery.Set(\"stderr\", \"1\")\n\t}\n\tif options.DetachKeys != \"\" {\n\t\tquery.Set(\"detachKeys\", options.DetachKeys)\n\t}\n\n\theaders := map[string][]string{\"Content-Type\": {\"text/plain\"}}\n\treturn cli.postHijacked(ctx, \"/containers/\"+options.ContainerID+\"/attach\", query, nil, headers)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_commit.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerCommit applies changes into a container and creates a new tagged image.\nfunc (cli *Client) ContainerCommit(ctx context.Context, options types.ContainerCommitOptions) (types.ContainerCommitResponse, error) {\n\tquery := url.Values{}\n\tquery.Set(\"container\", options.ContainerID)\n\tquery.Set(\"repo\", options.RepositoryName)\n\tquery.Set(\"tag\", options.Tag)\n\tquery.Set(\"comment\", options.Comment)\n\tquery.Set(\"author\", options.Author)\n\tfor _, change := range options.Changes {\n\t\tquery.Add(\"changes\", change)\n\t}\n\tif options.Pause != true {\n\t\tquery.Set(\"pause\", \"0\")\n\t}\n\n\tvar response types.ContainerCommitResponse\n\tresp, err := cli.post(ctx, \"/commit\", query, options.Config, nil)\n\tif err != nil {\n\t\treturn response, err\n\t}\n\n\terr = json.NewDecoder(resp.body).Decode(&response)\n\tensureReaderClosed(resp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_copy.go",
    "content": "package client\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ContainerStatPath returns Stat information about a path inside the container filesystem.\nfunc (cli *Client) ContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error) {\n\tquery := url.Values{}\n\tquery.Set(\"path\", filepath.ToSlash(path)) // Normalize the paths used in the API.\n\n\turlStr := fmt.Sprintf(\"/containers/%s/archive\", containerID)\n\tresponse, err := cli.head(ctx, urlStr, query, nil)\n\tif err != nil {\n\t\treturn types.ContainerPathStat{}, err\n\t}\n\tdefer ensureReaderClosed(response)\n\treturn getContainerPathStatFromHeader(response.header)\n}\n\n// CopyToContainer copies content into the container filesystem.\nfunc (cli *Client) CopyToContainer(ctx context.Context, options types.CopyToContainerOptions) error {\n\tquery := url.Values{}\n\tquery.Set(\"path\", filepath.ToSlash(options.Path)) // Normalize the paths used in the API.\n\t// Do not allow for an existing directory to be overwritten by a non-directory and vice versa.\n\tif !options.AllowOverwriteDirWithFile {\n\t\tquery.Set(\"noOverwriteDirNonDir\", \"true\")\n\t}\n\n\tpath := fmt.Sprintf(\"/containers/%s/archive\", options.ContainerID)\n\n\tresponse, err := cli.putRaw(ctx, path, query, options.Content, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer ensureReaderClosed(response)\n\n\tif response.statusCode != http.StatusOK {\n\t\treturn fmt.Errorf(\"unexpected status code from daemon: %d\", response.statusCode)\n\t}\n\n\treturn nil\n}\n\n// CopyFromContainer get the content from the container and return it as a Reader\n// to manipulate it in the host. It's up to the caller to close the reader.\nfunc (cli *Client) CopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) {\n\tquery := make(url.Values, 1)\n\tquery.Set(\"path\", filepath.ToSlash(srcPath)) // Normalize the paths used in the API.\n\n\tapiPath := fmt.Sprintf(\"/containers/%s/archive\", containerID)\n\tresponse, err := cli.get(ctx, apiPath, query, nil)\n\tif err != nil {\n\t\treturn nil, types.ContainerPathStat{}, err\n\t}\n\n\tif response.statusCode != http.StatusOK {\n\t\treturn nil, types.ContainerPathStat{}, fmt.Errorf(\"unexpected status code from daemon: %d\", response.statusCode)\n\t}\n\n\t// In order to get the copy behavior right, we need to know information\n\t// about both the source and the destination. The response headers include\n\t// stat info about the source that we can use in deciding exactly how to\n\t// copy it locally. Along with the stat info about the local destination,\n\t// we have everything we need to handle the multiple possibilities there\n\t// can be when copying a file/dir from one location to another file/dir.\n\tstat, err := getContainerPathStatFromHeader(response.header)\n\tif err != nil {\n\t\treturn nil, stat, fmt.Errorf(\"unable to get resource stat from response: %s\", err)\n\t}\n\treturn response.body, stat, err\n}\n\nfunc getContainerPathStatFromHeader(header http.Header) (types.ContainerPathStat, error) {\n\tvar stat types.ContainerPathStat\n\n\tencodedStat := header.Get(\"X-Docker-Container-Path-Stat\")\n\tstatDecoder := base64.NewDecoder(base64.StdEncoding, strings.NewReader(encodedStat))\n\n\terr := json.NewDecoder(statDecoder).Decode(&stat)\n\tif err != nil {\n\t\terr = fmt.Errorf(\"unable to decode container path stat header: %s\", err)\n\t}\n\n\treturn stat, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_create.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"golang.org/x/net/context\"\n)\n\ntype configWrapper struct {\n\t*container.Config\n\tHostConfig       *container.HostConfig\n\tNetworkingConfig *network.NetworkingConfig\n}\n\n// ContainerCreate creates a new container based in the given configuration.\n// It can be associated with a name, but it's not mandatory.\nfunc (cli *Client) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (types.ContainerCreateResponse, error) {\n\tvar response types.ContainerCreateResponse\n\tquery := url.Values{}\n\tif containerName != \"\" {\n\t\tquery.Set(\"name\", containerName)\n\t}\n\n\tbody := configWrapper{\n\t\tConfig:           config,\n\t\tHostConfig:       hostConfig,\n\t\tNetworkingConfig: networkingConfig,\n\t}\n\n\tserverResp, err := cli.post(ctx, \"/containers/create\", query, body, nil)\n\tif err != nil {\n\t\tif serverResp != nil && serverResp.statusCode == 404 && strings.Contains(err.Error(), \"No such image\") {\n\t\t\treturn response, imageNotFoundError{config.Image}\n\t\t}\n\t\treturn response, err\n\t}\n\n\terr = json.NewDecoder(serverResp.body).Decode(&response)\n\tensureReaderClosed(serverResp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_diff.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerDiff shows differences in a container filesystem since it was started.\nfunc (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]types.ContainerChange, error) {\n\tvar changes []types.ContainerChange\n\n\tserverResp, err := cli.get(ctx, \"/containers/\"+containerID+\"/changes\", url.Values{}, nil)\n\tif err != nil {\n\t\treturn changes, err\n\t}\n\n\terr = json.NewDecoder(serverResp.body).Decode(&changes)\n\tensureReaderClosed(serverResp)\n\treturn changes, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_exec.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerExecCreate creates a new exec configuration to run an exec process.\nfunc (cli *Client) ContainerExecCreate(ctx context.Context, config types.ExecConfig) (types.ContainerExecCreateResponse, error) {\n\tvar response types.ContainerExecCreateResponse\n\tresp, err := cli.post(ctx, \"/containers/\"+config.Container+\"/exec\", nil, config, nil)\n\tif err != nil {\n\t\treturn response, err\n\t}\n\terr = json.NewDecoder(resp.body).Decode(&response)\n\tensureReaderClosed(resp)\n\treturn response, err\n}\n\n// ContainerExecStart starts an exec process already create in the docker host.\nfunc (cli *Client) ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error {\n\tresp, err := cli.post(ctx, \"/exec/\"+execID+\"/start\", nil, config, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n\n// ContainerExecAttach attaches a connection to an exec process in the server.\n// It returns a types.HijackedConnection with the hijacked connection\n// and the a reader to get output. It's up to the called to close\n// the hijacked connection by calling types.HijackedResponse.Close.\nfunc (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error) {\n\theaders := map[string][]string{\"Content-Type\": {\"application/json\"}}\n\treturn cli.postHijacked(ctx, \"/exec/\"+execID+\"/start\", nil, config, headers)\n}\n\n// ContainerExecInspect returns information about a specific exec process on the docker host.\nfunc (cli *Client) ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error) {\n\tvar response types.ContainerExecInspect\n\tresp, err := cli.get(ctx, \"/exec/\"+execID+\"/json\", nil, nil)\n\tif err != nil {\n\t\treturn response, err\n\t}\n\n\terr = json.NewDecoder(resp.body).Decode(&response)\n\tensureReaderClosed(resp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_export.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerExport retrieves the raw contents of a container\n// and returns them as a io.ReadCloser. It's up to the caller\n// to close the stream.\nfunc (cli *Client) ContainerExport(ctx context.Context, containerID string) (io.ReadCloser, error) {\n\tserverResp, err := cli.get(ctx, \"/containers/\"+containerID+\"/export\", url.Values{}, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn serverResp.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_inspect.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerInspect returns the container information.\nfunc (cli *Client) ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error) {\n\tserverResp, err := cli.get(ctx, \"/containers/\"+containerID+\"/json\", nil, nil)\n\tif err != nil {\n\t\tif serverResp.statusCode == http.StatusNotFound {\n\t\t\treturn types.ContainerJSON{}, containerNotFoundError{containerID}\n\t\t}\n\t\treturn types.ContainerJSON{}, err\n\t}\n\n\tvar response types.ContainerJSON\n\terr = json.NewDecoder(serverResp.body).Decode(&response)\n\tensureReaderClosed(serverResp)\n\treturn response, err\n}\n\n// ContainerInspectWithRaw returns the container information and it's raw representation.\nfunc (cli *Client) ContainerInspectWithRaw(ctx context.Context, containerID string, getSize bool) (types.ContainerJSON, []byte, error) {\n\tquery := url.Values{}\n\tif getSize {\n\t\tquery.Set(\"size\", \"1\")\n\t}\n\tserverResp, err := cli.get(ctx, \"/containers/\"+containerID+\"/json\", query, nil)\n\tif err != nil {\n\t\tif serverResp.statusCode == http.StatusNotFound {\n\t\t\treturn types.ContainerJSON{}, nil, containerNotFoundError{containerID}\n\t\t}\n\t\treturn types.ContainerJSON{}, nil, err\n\t}\n\tdefer ensureReaderClosed(serverResp)\n\n\tbody, err := ioutil.ReadAll(serverResp.body)\n\tif err != nil {\n\t\treturn types.ContainerJSON{}, nil, err\n\t}\n\n\tvar response types.ContainerJSON\n\trdr := bytes.NewReader(body)\n\terr = json.NewDecoder(rdr).Decode(&response)\n\treturn response, body, err\n}\n\nfunc (cli *Client) containerInspectWithResponse(ctx context.Context, containerID string, query url.Values) (types.ContainerJSON, *serverResponse, error) {\n\tserverResp, err := cli.get(ctx, \"/containers/\"+containerID+\"/json\", nil, nil)\n\tif err != nil {\n\t\treturn types.ContainerJSON{}, serverResp, err\n\t}\n\n\tvar response types.ContainerJSON\n\terr = json.NewDecoder(serverResp.body).Decode(&response)\n\treturn response, serverResp, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_kill.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerKill terminates the container process but does not remove the container from the docker host.\nfunc (cli *Client) ContainerKill(ctx context.Context, containerID, signal string) error {\n\tquery := url.Values{}\n\tquery.Set(\"signal\", signal)\n\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/kill\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_list.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\t\"strconv\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerList returns the list of containers in the docker host.\nfunc (cli *Client) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error) {\n\tquery := url.Values{}\n\n\tif options.All {\n\t\tquery.Set(\"all\", \"1\")\n\t}\n\n\tif options.Limit != -1 {\n\t\tquery.Set(\"limit\", strconv.Itoa(options.Limit))\n\t}\n\n\tif options.Since != \"\" {\n\t\tquery.Set(\"since\", options.Since)\n\t}\n\n\tif options.Before != \"\" {\n\t\tquery.Set(\"before\", options.Before)\n\t}\n\n\tif options.Size {\n\t\tquery.Set(\"size\", \"1\")\n\t}\n\n\tif options.Filter.Len() > 0 {\n\t\tfilterJSON, err := filters.ToParam(options.Filter)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tquery.Set(\"filters\", filterJSON)\n\t}\n\n\tresp, err := cli.get(ctx, \"/containers/json\", query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar containers []types.Container\n\terr = json.NewDecoder(resp.body).Decode(&containers)\n\tensureReaderClosed(resp)\n\treturn containers, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_logs.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n\ttimetypes \"github.com/docker/engine-api/types/time\"\n)\n\n// ContainerLogs returns the logs generated by a container in an io.ReadCloser.\n// It's up to the caller to close the stream.\nfunc (cli *Client) ContainerLogs(ctx context.Context, options types.ContainerLogsOptions) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tif options.ShowStdout {\n\t\tquery.Set(\"stdout\", \"1\")\n\t}\n\n\tif options.ShowStderr {\n\t\tquery.Set(\"stderr\", \"1\")\n\t}\n\n\tif options.Since != \"\" {\n\t\tts, err := timetypes.GetTimestamp(options.Since, time.Now())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery.Set(\"since\", ts)\n\t}\n\n\tif options.Timestamps {\n\t\tquery.Set(\"timestamps\", \"1\")\n\t}\n\n\tif options.Follow {\n\t\tquery.Set(\"follow\", \"1\")\n\t}\n\tquery.Set(\"tail\", options.Tail)\n\n\tresp, err := cli.get(ctx, \"/containers/\"+options.ContainerID+\"/logs\", query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_pause.go",
    "content": "package client\n\nimport \"golang.org/x/net/context\"\n\n// ContainerPause pauses the main process of a given container without terminating it.\nfunc (cli *Client) ContainerPause(ctx context.Context, containerID string) error {\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/pause\", nil, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_remove.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerRemove kills and removes a container from the docker host.\nfunc (cli *Client) ContainerRemove(ctx context.Context, options types.ContainerRemoveOptions) error {\n\tquery := url.Values{}\n\tif options.RemoveVolumes {\n\t\tquery.Set(\"v\", \"1\")\n\t}\n\tif options.RemoveLinks {\n\t\tquery.Set(\"link\", \"1\")\n\t}\n\n\tif options.Force {\n\t\tquery.Set(\"force\", \"1\")\n\t}\n\n\tresp, err := cli.delete(ctx, \"/containers/\"+options.ContainerID, query, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_rename.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerRename changes the name of a given container.\nfunc (cli *Client) ContainerRename(ctx context.Context, containerID, newContainerName string) error {\n\tquery := url.Values{}\n\tquery.Set(\"name\", newContainerName)\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/rename\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_resize.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\t\"strconv\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerResize changes the size of the tty for a container.\nfunc (cli *Client) ContainerResize(ctx context.Context, options types.ResizeOptions) error {\n\treturn cli.resize(ctx, \"/containers/\"+options.ID, options.Height, options.Width)\n}\n\n// ContainerExecResize changes the size of the tty for an exec process running inside a container.\nfunc (cli *Client) ContainerExecResize(ctx context.Context, options types.ResizeOptions) error {\n\treturn cli.resize(ctx, \"/exec/\"+options.ID, options.Height, options.Width)\n}\n\nfunc (cli *Client) resize(ctx context.Context, basePath string, height, width int) error {\n\tquery := url.Values{}\n\tquery.Set(\"h\", strconv.Itoa(height))\n\tquery.Set(\"w\", strconv.Itoa(width))\n\n\tresp, err := cli.post(ctx, basePath+\"/resize\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_restart.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\t\"strconv\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerRestart stops and starts a container again.\n// It makes the daemon to wait for the container to be up again for\n// a specific amount of time, given the timeout.\nfunc (cli *Client) ContainerRestart(ctx context.Context, containerID string, timeout int) error {\n\tquery := url.Values{}\n\tquery.Set(\"t\", strconv.Itoa(timeout))\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/restart\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_start.go",
    "content": "package client\n\nimport \"golang.org/x/net/context\"\n\n// ContainerStart sends a request to the docker daemon to start a container.\nfunc (cli *Client) ContainerStart(ctx context.Context, containerID string) error {\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/start\", nil, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_stats.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerStats returns near realtime stats for a given container.\n// It's up to the caller to close the io.ReadCloser returned.\nfunc (cli *Client) ContainerStats(ctx context.Context, containerID string, stream bool) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tquery.Set(\"stream\", \"0\")\n\tif stream {\n\t\tquery.Set(\"stream\", \"1\")\n\t}\n\n\tresp, err := cli.get(ctx, \"/containers/\"+containerID+\"/stats\", query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_stop.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\t\"strconv\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerStop stops a container without terminating the process.\n// The process is blocked until the container stops or the timeout expires.\nfunc (cli *Client) ContainerStop(ctx context.Context, containerID string, timeout int) error {\n\tquery := url.Values{}\n\tquery.Set(\"t\", strconv.Itoa(timeout))\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/stop\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_top.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerTop shows process information from within a container.\nfunc (cli *Client) ContainerTop(ctx context.Context, containerID string, arguments []string) (types.ContainerProcessList, error) {\n\tvar response types.ContainerProcessList\n\tquery := url.Values{}\n\tif len(arguments) > 0 {\n\t\tquery.Set(\"ps_args\", strings.Join(arguments, \" \"))\n\t}\n\n\tresp, err := cli.get(ctx, \"/containers/\"+containerID+\"/top\", query, nil)\n\tif err != nil {\n\t\treturn response, err\n\t}\n\n\terr = json.NewDecoder(resp.body).Decode(&response)\n\tensureReaderClosed(resp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_unpause.go",
    "content": "package client\n\nimport \"golang.org/x/net/context\"\n\n// ContainerUnpause resumes the process execution within a container\nfunc (cli *Client) ContainerUnpause(ctx context.Context, containerID string) error {\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/unpause\", nil, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_update.go",
    "content": "package client\n\nimport (\n\t\"github.com/docker/engine-api/types/container\"\n\t\"golang.org/x/net/context\"\n)\n\n// ContainerUpdate updates resources of a container\nfunc (cli *Client) ContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) error {\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/update\", nil, updateConfig, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/container_wait.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ContainerWait pauses execution util a container is exits.\n// It returns the API status code as response of its readiness.\nfunc (cli *Client) ContainerWait(ctx context.Context, containerID string) (int, error) {\n\tresp, err := cli.post(ctx, \"/containers/\"+containerID+\"/wait\", nil, nil, nil)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tdefer ensureReaderClosed(resp)\n\n\tvar res types.ContainerWaitResponse\n\tif err := json.NewDecoder(resp.body).Decode(&res); err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn res.StatusCode, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/errors.go",
    "content": "package client\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// ErrConnectionFailed is a error raised when the connection between the client and the server failed.\nvar ErrConnectionFailed = errors.New(\"Cannot connect to the Docker daemon. Is the docker daemon running on this host?\")\n\n// imageNotFoundError implements an error returned when an image is not in the docker host.\ntype imageNotFoundError struct {\n\timageID string\n}\n\n// Error returns a string representation of an imageNotFoundError\nfunc (i imageNotFoundError) Error() string {\n\treturn fmt.Sprintf(\"Error: No such image: %s\", i.imageID)\n}\n\n// IsErrImageNotFound returns true if the error is caused\n// when an image is not found in the docker host.\nfunc IsErrImageNotFound(err error) bool {\n\t_, ok := err.(imageNotFoundError)\n\treturn ok\n}\n\n// containerNotFoundError implements an error returned when a container is not in the docker host.\ntype containerNotFoundError struct {\n\tcontainerID string\n}\n\n// Error returns a string representation of an containerNotFoundError\nfunc (e containerNotFoundError) Error() string {\n\treturn fmt.Sprintf(\"Error: No such container: %s\", e.containerID)\n}\n\n// IsErrContainerNotFound returns true if the error is caused\n// when a container is not found in the docker host.\nfunc IsErrContainerNotFound(err error) bool {\n\t_, ok := err.(containerNotFoundError)\n\treturn ok\n}\n\n// networkNotFoundError implements an error returned when a network is not in the docker host.\ntype networkNotFoundError struct {\n\tnetworkID string\n}\n\n// Error returns a string representation of an networkNotFoundError\nfunc (e networkNotFoundError) Error() string {\n\treturn fmt.Sprintf(\"Error: No such network: %s\", e.networkID)\n}\n\n// IsErrNetworkNotFound returns true if the error is caused\n// when a network is not found in the docker host.\nfunc IsErrNetworkNotFound(err error) bool {\n\t_, ok := err.(networkNotFoundError)\n\treturn ok\n}\n\n// volumeNotFoundError implements an error returned when a volume is not in the docker host.\ntype volumeNotFoundError struct {\n\tvolumeID string\n}\n\n// Error returns a string representation of an networkNotFoundError\nfunc (e volumeNotFoundError) Error() string {\n\treturn fmt.Sprintf(\"Error: No such volume: %s\", e.volumeID)\n}\n\n// IsErrVolumeNotFound returns true if the error is caused\n// when a volume is not found in the docker host.\nfunc IsErrVolumeNotFound(err error) bool {\n\t_, ok := err.(volumeNotFoundError)\n\treturn ok\n}\n\n// unauthorizedError represents an authorization error in a remote registry.\ntype unauthorizedError struct {\n\tcause error\n}\n\n// Error returns a string representation of an unauthorizedError\nfunc (u unauthorizedError) Error() string {\n\treturn u.cause.Error()\n}\n\n// IsErrUnauthorized returns true if the error is caused\n// when an the remote registry authentication fails\nfunc IsErrUnauthorized(err error) bool {\n\t_, ok := err.(unauthorizedError)\n\treturn ok\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/events.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\ttimetypes \"github.com/docker/engine-api/types/time\"\n)\n\n// Events returns a stream of events in the daemon in a ReadCloser.\n// It's up to the caller to close the stream.\nfunc (cli *Client) Events(ctx context.Context, options types.EventsOptions) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tref := time.Now()\n\n\tif options.Since != \"\" {\n\t\tts, err := timetypes.GetTimestamp(options.Since, ref)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery.Set(\"since\", ts)\n\t}\n\tif options.Until != \"\" {\n\t\tts, err := timetypes.GetTimestamp(options.Until, ref)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery.Set(\"until\", ts)\n\t}\n\tif options.Filters.Len() > 0 {\n\t\tfilterJSON, err := filters.ToParam(options.Filters)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery.Set(\"filters\", filterJSON)\n\t}\n\n\tserverResponse, err := cli.get(ctx, \"/events\", query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn serverResponse.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/hijack.go",
    "content": "package client\n\nimport (\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http/httputil\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/go-connections/sockets\"\n\t\"golang.org/x/net/context\"\n)\n\n// tlsClientCon holds tls information and a dialed connection.\ntype tlsClientCon struct {\n\t*tls.Conn\n\trawConn net.Conn\n}\n\nfunc (c *tlsClientCon) CloseWrite() error {\n\t// Go standard tls.Conn doesn't provide the CloseWrite() method so we do it\n\t// on its underlying connection.\n\tif conn, ok := c.rawConn.(types.CloseWriter); ok {\n\t\treturn conn.CloseWrite()\n\t}\n\treturn nil\n}\n\n// postHijacked sends a POST request and hijacks the connection.\nfunc (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (types.HijackedResponse, error) {\n\tbodyEncoded, err := encodeData(body)\n\tif err != nil {\n\t\treturn types.HijackedResponse{}, err\n\t}\n\n\treq, err := cli.newRequest(\"POST\", path, query, bodyEncoded, headers)\n\tif err != nil {\n\t\treturn types.HijackedResponse{}, err\n\t}\n\treq.Host = cli.addr\n\n\treq.Header.Set(\"Connection\", \"Upgrade\")\n\treq.Header.Set(\"Upgrade\", \"tcp\")\n\n\tconn, err := dial(cli.proto, cli.addr, cli.transport.TLSConfig())\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), \"connection refused\") {\n\t\t\treturn types.HijackedResponse{}, fmt.Errorf(\"Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?\")\n\t\t}\n\t\treturn types.HijackedResponse{}, err\n\t}\n\n\t// When we set up a TCP connection for hijack, there could be long periods\n\t// of inactivity (a long running command with no output) that in certain\n\t// network setups may cause ECONNTIMEOUT, leaving the client in an unknown\n\t// state. Setting TCP KeepAlive on the socket connection will prohibit\n\t// ECONNTIMEOUT unless the socket connection truly is broken\n\tif tcpConn, ok := conn.(*net.TCPConn); ok {\n\t\ttcpConn.SetKeepAlive(true)\n\t\ttcpConn.SetKeepAlivePeriod(30 * time.Second)\n\t}\n\n\tclientconn := httputil.NewClientConn(conn, nil)\n\tdefer clientconn.Close()\n\n\t// Server hijacks the connection, error 'connection closed' expected\n\tclientconn.Do(req)\n\n\trwc, br := clientconn.Hijack()\n\n\treturn types.HijackedResponse{Conn: rwc, Reader: br}, nil\n}\n\nfunc tlsDial(network, addr string, config *tls.Config) (net.Conn, error) {\n\treturn tlsDialWithDialer(new(net.Dialer), network, addr, config)\n}\n\n// We need to copy Go's implementation of tls.Dial (pkg/cryptor/tls/tls.go) in\n// order to return our custom tlsClientCon struct which holds both the tls.Conn\n// object _and_ its underlying raw connection. The rationale for this is that\n// we need to be able to close the write end of the connection when attaching,\n// which tls.Conn does not provide.\nfunc tlsDialWithDialer(dialer *net.Dialer, network, addr string, config *tls.Config) (net.Conn, error) {\n\t// We want the Timeout and Deadline values from dialer to cover the\n\t// whole process: TCP connection and TLS handshake. This means that we\n\t// also need to start our own timers now.\n\ttimeout := dialer.Timeout\n\n\tif !dialer.Deadline.IsZero() {\n\t\tdeadlineTimeout := dialer.Deadline.Sub(time.Now())\n\t\tif timeout == 0 || deadlineTimeout < timeout {\n\t\t\ttimeout = deadlineTimeout\n\t\t}\n\t}\n\n\tvar errChannel chan error\n\n\tif timeout != 0 {\n\t\terrChannel = make(chan error, 2)\n\t\ttime.AfterFunc(timeout, func() {\n\t\t\terrChannel <- errors.New(\"\")\n\t\t})\n\t}\n\n\tproxyDialer, err := sockets.DialerFromEnvironment(dialer)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trawConn, err := proxyDialer.Dial(network, addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// When we set up a TCP connection for hijack, there could be long periods\n\t// of inactivity (a long running command with no output) that in certain\n\t// network setups may cause ECONNTIMEOUT, leaving the client in an unknown\n\t// state. Setting TCP KeepAlive on the socket connection will prohibit\n\t// ECONNTIMEOUT unless the socket connection truly is broken\n\tif tcpConn, ok := rawConn.(*net.TCPConn); ok {\n\t\ttcpConn.SetKeepAlive(true)\n\t\ttcpConn.SetKeepAlivePeriod(30 * time.Second)\n\t}\n\n\tcolonPos := strings.LastIndex(addr, \":\")\n\tif colonPos == -1 {\n\t\tcolonPos = len(addr)\n\t}\n\thostname := addr[:colonPos]\n\n\t// If no ServerName is set, infer the ServerName\n\t// from the hostname we're connecting to.\n\tif config.ServerName == \"\" {\n\t\t// Make a copy to avoid polluting argument or default.\n\t\tc := *config\n\t\tc.ServerName = hostname\n\t\tconfig = &c\n\t}\n\n\tconn := tls.Client(rawConn, config)\n\n\tif timeout == 0 {\n\t\terr = conn.Handshake()\n\t} else {\n\t\tgo func() {\n\t\t\terrChannel <- conn.Handshake()\n\t\t}()\n\n\t\terr = <-errChannel\n\t}\n\n\tif err != nil {\n\t\trawConn.Close()\n\t\treturn nil, err\n\t}\n\n\t// This is Docker difference with standard's crypto/tls package: returned a\n\t// wrapper which holds both the TLS and raw connections.\n\treturn &tlsClientCon{conn, rawConn}, nil\n}\n\nfunc dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) {\n\tif tlsConfig != nil && proto != \"unix\" && proto != \"npipe\" {\n\t\t// Notice this isn't Go standard's tls.Dial function\n\t\treturn tlsDial(proto, addr, tlsConfig)\n\t}\n\tif proto == \"npipe\" {\n\t\treturn sockets.DialPipe(addr, 32*time.Second)\n\t}\n\treturn net.Dial(proto, addr)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_build.go",
    "content": "package client\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n)\n\nvar headerRegexp = regexp.MustCompile(`\\ADocker/.+\\s\\((.+)\\)\\z`)\n\n// ImageBuild sends request to the daemon to build images.\n// The Body in the response implement an io.ReadCloser and it's up to the caller to\n// close it.\nfunc (cli *Client) ImageBuild(ctx context.Context, options types.ImageBuildOptions) (types.ImageBuildResponse, error) {\n\tquery, err := imageBuildOptionsToQuery(options)\n\tif err != nil {\n\t\treturn types.ImageBuildResponse{}, err\n\t}\n\n\theaders := http.Header(make(map[string][]string))\n\tbuf, err := json.Marshal(options.AuthConfigs)\n\tif err != nil {\n\t\treturn types.ImageBuildResponse{}, err\n\t}\n\theaders.Add(\"X-Registry-Config\", base64.URLEncoding.EncodeToString(buf))\n\theaders.Set(\"Content-Type\", \"application/tar\")\n\n\tserverResp, err := cli.postRaw(ctx, \"/build\", query, options.Context, headers)\n\tif err != nil {\n\t\treturn types.ImageBuildResponse{}, err\n\t}\n\n\tosType := getDockerOS(serverResp.header.Get(\"Server\"))\n\n\treturn types.ImageBuildResponse{\n\t\tBody:   serverResp.body,\n\t\tOSType: osType,\n\t}, nil\n}\n\nfunc imageBuildOptionsToQuery(options types.ImageBuildOptions) (url.Values, error) {\n\tquery := url.Values{\n\t\t\"t\": options.Tags,\n\t}\n\tif options.SuppressOutput {\n\t\tquery.Set(\"q\", \"1\")\n\t}\n\tif options.RemoteContext != \"\" {\n\t\tquery.Set(\"remote\", options.RemoteContext)\n\t}\n\tif options.NoCache {\n\t\tquery.Set(\"nocache\", \"1\")\n\t}\n\tif options.Remove {\n\t\tquery.Set(\"rm\", \"1\")\n\t} else {\n\t\tquery.Set(\"rm\", \"0\")\n\t}\n\n\tif options.ForceRemove {\n\t\tquery.Set(\"forcerm\", \"1\")\n\t}\n\n\tif options.PullParent {\n\t\tquery.Set(\"pull\", \"1\")\n\t}\n\n\tif !container.Isolation.IsDefault(options.Isolation) {\n\t\tquery.Set(\"isolation\", string(options.Isolation))\n\t}\n\n\tquery.Set(\"cpusetcpus\", options.CPUSetCPUs)\n\tquery.Set(\"cpusetmems\", options.CPUSetMems)\n\tquery.Set(\"cpushares\", strconv.FormatInt(options.CPUShares, 10))\n\tquery.Set(\"cpuquota\", strconv.FormatInt(options.CPUQuota, 10))\n\tquery.Set(\"cpuperiod\", strconv.FormatInt(options.CPUPeriod, 10))\n\tquery.Set(\"memory\", strconv.FormatInt(options.Memory, 10))\n\tquery.Set(\"memswap\", strconv.FormatInt(options.MemorySwap, 10))\n\tquery.Set(\"cgroupparent\", options.CgroupParent)\n\tquery.Set(\"shmsize\", strconv.FormatInt(options.ShmSize, 10))\n\tquery.Set(\"dockerfile\", options.Dockerfile)\n\n\tulimitsJSON, err := json.Marshal(options.Ulimits)\n\tif err != nil {\n\t\treturn query, err\n\t}\n\tquery.Set(\"ulimits\", string(ulimitsJSON))\n\n\tbuildArgsJSON, err := json.Marshal(options.BuildArgs)\n\tif err != nil {\n\t\treturn query, err\n\t}\n\tquery.Set(\"buildargs\", string(buildArgsJSON))\n\n\tlabelsJSON, err := json.Marshal(options.Labels)\n\tif err != nil {\n\t\treturn query, err\n\t}\n\tquery.Set(\"labels\", string(labelsJSON))\n\treturn query, nil\n}\n\nfunc getDockerOS(serverHeader string) string {\n\tvar osType string\n\tmatches := headerRegexp.FindStringSubmatch(serverHeader)\n\tif len(matches) > 0 {\n\t\tosType = matches[1]\n\t}\n\treturn osType\n}\n\n// convertKVStringsToMap converts [\"key=value\"] to {\"key\":\"value\"}\nfunc convertKVStringsToMap(values []string) map[string]string {\n\tresult := make(map[string]string, len(values))\n\tfor _, value := range values {\n\t\tkv := strings.SplitN(value, \"=\", 2)\n\t\tif len(kv) == 1 {\n\t\t\tresult[kv[0]] = \"\"\n\t\t} else {\n\t\t\tresult[kv[0]] = kv[1]\n\t\t}\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_create.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ImageCreate creates a new image based in the parent options.\n// It returns the JSON content in the response body.\nfunc (cli *Client) ImageCreate(ctx context.Context, options types.ImageCreateOptions) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tquery.Set(\"fromImage\", options.Parent)\n\tquery.Set(\"tag\", options.Tag)\n\tresp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n\nfunc (cli *Client) tryImageCreate(ctx context.Context, query url.Values, registryAuth string) (*serverResponse, error) {\n\theaders := map[string][]string{\"X-Registry-Auth\": {registryAuth}}\n\treturn cli.post(ctx, \"/images/create\", query, nil, headers)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_history.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageHistory returns the changes in an image in history format.\nfunc (cli *Client) ImageHistory(ctx context.Context, imageID string) ([]types.ImageHistory, error) {\n\tvar history []types.ImageHistory\n\tserverResp, err := cli.get(ctx, \"/images/\"+imageID+\"/history\", url.Values{}, nil)\n\tif err != nil {\n\t\treturn history, err\n\t}\n\n\terr = json.NewDecoder(serverResp.body).Decode(&history)\n\tensureReaderClosed(serverResp)\n\treturn history, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_import.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ImageImport creates a new image based in the source options.\n// It returns the JSON content in the response body.\nfunc (cli *Client) ImageImport(ctx context.Context, options types.ImageImportOptions) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tquery.Set(\"fromSrc\", options.SourceName)\n\tquery.Set(\"repo\", options.RepositoryName)\n\tquery.Set(\"tag\", options.Tag)\n\tquery.Set(\"message\", options.Message)\n\tfor _, change := range options.Changes {\n\t\tquery.Add(\"changes\", change)\n\t}\n\n\tresp, err := cli.postRaw(ctx, \"/images/create\", query, options.Source, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_inspect.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageInspectWithRaw returns the image information and it's raw representation.\nfunc (cli *Client) ImageInspectWithRaw(ctx context.Context, imageID string, getSize bool) (types.ImageInspect, []byte, error) {\n\tquery := url.Values{}\n\tif getSize {\n\t\tquery.Set(\"size\", \"1\")\n\t}\n\tserverResp, err := cli.get(ctx, \"/images/\"+imageID+\"/json\", query, nil)\n\tif err != nil {\n\t\tif serverResp.statusCode == http.StatusNotFound {\n\t\t\treturn types.ImageInspect{}, nil, imageNotFoundError{imageID}\n\t\t}\n\t\treturn types.ImageInspect{}, nil, err\n\t}\n\tdefer ensureReaderClosed(serverResp)\n\n\tbody, err := ioutil.ReadAll(serverResp.body)\n\tif err != nil {\n\t\treturn types.ImageInspect{}, nil, err\n\t}\n\n\tvar response types.ImageInspect\n\trdr := bytes.NewReader(body)\n\terr = json.NewDecoder(rdr).Decode(&response)\n\treturn response, body, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_list.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageList returns a list of images in the docker host.\nfunc (cli *Client) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.Image, error) {\n\tvar images []types.Image\n\tquery := url.Values{}\n\n\tif options.Filters.Len() > 0 {\n\t\tfilterJSON, err := filters.ToParam(options.Filters)\n\t\tif err != nil {\n\t\t\treturn images, err\n\t\t}\n\t\tquery.Set(\"filters\", filterJSON)\n\t}\n\tif options.MatchName != \"\" {\n\t\t// FIXME rename this parameter, to not be confused with the filters flag\n\t\tquery.Set(\"filter\", options.MatchName)\n\t}\n\tif options.All {\n\t\tquery.Set(\"all\", \"1\")\n\t}\n\n\tserverResp, err := cli.get(ctx, \"/images/json\", query, nil)\n\tif err != nil {\n\t\treturn images, err\n\t}\n\n\terr = json.NewDecoder(serverResp.body).Decode(&images)\n\tensureReaderClosed(serverResp)\n\treturn images, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_load.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ImageLoad loads an image in the docker host from the client host.\n// It's up to the caller to close the io.ReadCloser returned by\n// this function.\nfunc (cli *Client) ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error) {\n\tv := url.Values{}\n\tv.Set(\"quiet\", \"0\")\n\tif quiet {\n\t\tv.Set(\"quiet\", \"1\")\n\t}\n\theaders := map[string][]string{\"Content-Type\": {\"application/x-tar\"}}\n\tresp, err := cli.postRaw(ctx, \"/images/load\", v, input, headers)\n\tif err != nil {\n\t\treturn types.ImageLoadResponse{}, err\n\t}\n\treturn types.ImageLoadResponse{\n\t\tBody: resp.body,\n\t\tJSON: resp.header.Get(\"Content-Type\") == \"application/json\",\n\t}, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_pull.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ImagePull request the docker host to pull an image from a remote registry.\n// It executes the privileged function if the operation is unauthorized\n// and it tries one more time.\n// It's up to the caller to handle the io.ReadCloser and close it properly.\nfunc (cli *Client) ImagePull(ctx context.Context, options types.ImagePullOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tquery.Set(\"fromImage\", options.ImageID)\n\tif options.Tag != \"\" {\n\t\tquery.Set(\"tag\", options.Tag)\n\t}\n\n\tresp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth)\n\tif resp.statusCode == http.StatusUnauthorized {\n\t\tnewAuthHeader, privilegeErr := privilegeFunc()\n\t\tif privilegeErr != nil {\n\t\t\treturn nil, privilegeErr\n\t\t}\n\t\tresp, err = cli.tryImageCreate(ctx, query, newAuthHeader)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_push.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n)\n\n// ImagePush request the docker host to push an image to a remote registry.\n// It executes the privileged function if the operation is unauthorized\n// and it tries one more time.\n// It's up to the caller to handle the io.ReadCloser and close it properly.\nfunc (cli *Client) ImagePush(ctx context.Context, options types.ImagePushOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error) {\n\tquery := url.Values{}\n\tquery.Set(\"tag\", options.Tag)\n\n\tresp, err := cli.tryImagePush(ctx, options.ImageID, query, options.RegistryAuth)\n\tif resp.statusCode == http.StatusUnauthorized {\n\t\tnewAuthHeader, privilegeErr := privilegeFunc()\n\t\tif privilegeErr != nil {\n\t\t\treturn nil, privilegeErr\n\t\t}\n\t\tresp, err = cli.tryImagePush(ctx, options.ImageID, query, newAuthHeader)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n\nfunc (cli *Client) tryImagePush(ctx context.Context, imageID string, query url.Values, registryAuth string) (*serverResponse, error) {\n\theaders := map[string][]string{\"X-Registry-Auth\": {registryAuth}}\n\treturn cli.post(ctx, \"/images/\"+imageID+\"/push\", query, nil, headers)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_remove.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageRemove removes an image from the docker host.\nfunc (cli *Client) ImageRemove(ctx context.Context, options types.ImageRemoveOptions) ([]types.ImageDelete, error) {\n\tquery := url.Values{}\n\n\tif options.Force {\n\t\tquery.Set(\"force\", \"1\")\n\t}\n\tif !options.PruneChildren {\n\t\tquery.Set(\"noprune\", \"1\")\n\t}\n\n\tresp, err := cli.delete(ctx, \"/images/\"+options.ImageID, query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar dels []types.ImageDelete\n\terr = json.NewDecoder(resp.body).Decode(&dels)\n\tensureReaderClosed(resp)\n\treturn dels, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_save.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\t\"net/url\"\n\n\t\"golang.org/x/net/context\"\n)\n\n// ImageSave retrieves one or more images from the docker host as a io.ReadCloser.\n// It's up to the caller to store the images and close the stream.\nfunc (cli *Client) ImageSave(ctx context.Context, imageIDs []string) (io.ReadCloser, error) {\n\tquery := url.Values{\n\t\t\"names\": imageIDs,\n\t}\n\n\tresp, err := cli.get(ctx, \"/images/get\", query, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.body, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_search.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/registry\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageSearch makes the docker host to search by a term in a remote registry.\n// The list of results is not sorted in any fashion.\nfunc (cli *Client) ImageSearch(ctx context.Context, options types.ImageSearchOptions, privilegeFunc RequestPrivilegeFunc) ([]registry.SearchResult, error) {\n\tvar results []registry.SearchResult\n\tquery := url.Values{}\n\tquery.Set(\"term\", options.Term)\n\n\tresp, err := cli.tryImageSearch(ctx, query, options.RegistryAuth)\n\tif resp.statusCode == http.StatusUnauthorized {\n\t\tnewAuthHeader, privilegeErr := privilegeFunc()\n\t\tif privilegeErr != nil {\n\t\t\treturn results, privilegeErr\n\t\t}\n\t\tresp, err = cli.tryImageSearch(ctx, query, newAuthHeader)\n\t}\n\tif err != nil {\n\t\treturn results, err\n\t}\n\n\terr = json.NewDecoder(resp.body).Decode(&results)\n\tensureReaderClosed(resp)\n\treturn results, err\n}\n\nfunc (cli *Client) tryImageSearch(ctx context.Context, query url.Values, registryAuth string) (*serverResponse, error) {\n\theaders := map[string][]string{\"X-Registry-Auth\": {registryAuth}}\n\treturn cli.get(ctx, \"/images/search\", query, headers)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/image_tag.go",
    "content": "package client\n\nimport (\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ImageTag tags an image in the docker host\nfunc (cli *Client) ImageTag(ctx context.Context, options types.ImageTagOptions) error {\n\tquery := url.Values{}\n\tquery.Set(\"repo\", options.RepositoryName)\n\tquery.Set(\"tag\", options.Tag)\n\tif options.Force {\n\t\tquery.Set(\"force\", \"1\")\n\t}\n\n\tresp, err := cli.post(ctx, \"/images/\"+options.ImageID+\"/tag\", query, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/info.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// Info returns information about the docker server.\nfunc (cli *Client) Info(ctx context.Context) (types.Info, error) {\n\tvar info types.Info\n\tserverResp, err := cli.get(ctx, \"/info\", url.Values{}, nil)\n\tif err != nil {\n\t\treturn info, err\n\t}\n\tdefer ensureReaderClosed(serverResp)\n\n\tif err := json.NewDecoder(serverResp.body).Decode(&info); err != nil {\n\t\treturn info, fmt.Errorf(\"Error reading remote info: %v\", err)\n\t}\n\n\treturn info, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/interface.go",
    "content": "package client\n\nimport (\n\t\"io\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"github.com/docker/engine-api/types/registry\"\n)\n\n// APIClient is an interface that clients that talk with a docker server must implement.\ntype APIClient interface {\n\tClientVersion() string\n\tContainerAttach(ctx context.Context, options types.ContainerAttachOptions) (types.HijackedResponse, error)\n\tContainerCommit(ctx context.Context, options types.ContainerCommitOptions) (types.ContainerCommitResponse, error)\n\tContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (types.ContainerCreateResponse, error)\n\tContainerDiff(ctx context.Context, ontainerID string) ([]types.ContainerChange, error)\n\tContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)\n\tContainerExecCreate(ctx context.Context, config types.ExecConfig) (types.ContainerExecCreateResponse, error)\n\tContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)\n\tContainerExecResize(ctx context.Context, options types.ResizeOptions) error\n\tContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error\n\tContainerExport(ctx context.Context, containerID string) (io.ReadCloser, error)\n\tContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error)\n\tContainerInspectWithRaw(ctx context.Context, containerID string, getSize bool) (types.ContainerJSON, []byte, error)\n\tContainerKill(ctx context.Context, containerID, signal string) error\n\tContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)\n\tContainerLogs(ctx context.Context, options types.ContainerLogsOptions) (io.ReadCloser, error)\n\tContainerPause(ctx context.Context, containerID string) error\n\tContainerRemove(ctx context.Context, options types.ContainerRemoveOptions) error\n\tContainerRename(ctx context.Context, containerID, newContainerName string) error\n\tContainerResize(ctx context.Context, options types.ResizeOptions) error\n\tContainerRestart(ctx context.Context, containerID string, timeout int) error\n\tContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error)\n\tContainerStats(ctx context.Context, containerID string, stream bool) (io.ReadCloser, error)\n\tContainerStart(ctx context.Context, containerID string) error\n\tContainerStop(ctx context.Context, containerID string, timeout int) error\n\tContainerTop(ctx context.Context, containerID string, arguments []string) (types.ContainerProcessList, error)\n\tContainerUnpause(ctx context.Context, containerID string) error\n\tContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) error\n\tContainerWait(ctx context.Context, containerID string) (int, error)\n\tCopyFromContainer(ctx context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error)\n\tCopyToContainer(ctx context.Context, options types.CopyToContainerOptions) error\n\tEvents(ctx context.Context, options types.EventsOptions) (io.ReadCloser, error)\n\tImageBuild(ctx context.Context, options types.ImageBuildOptions) (types.ImageBuildResponse, error)\n\tImageCreate(ctx context.Context, options types.ImageCreateOptions) (io.ReadCloser, error)\n\tImageHistory(ctx context.Context, imageID string) ([]types.ImageHistory, error)\n\tImageImport(ctx context.Context, options types.ImageImportOptions) (io.ReadCloser, error)\n\tImageInspectWithRaw(ctx context.Context, imageID string, getSize bool) (types.ImageInspect, []byte, error)\n\tImageList(ctx context.Context, options types.ImageListOptions) ([]types.Image, error)\n\tImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)\n\tImagePull(ctx context.Context, options types.ImagePullOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)\n\tImagePush(ctx context.Context, options types.ImagePushOptions, privilegeFunc RequestPrivilegeFunc) (io.ReadCloser, error)\n\tImageRemove(ctx context.Context, options types.ImageRemoveOptions) ([]types.ImageDelete, error)\n\tImageSearch(ctx context.Context, options types.ImageSearchOptions, privilegeFunc RequestPrivilegeFunc) ([]registry.SearchResult, error)\n\tImageSave(ctx context.Context, imageIDs []string) (io.ReadCloser, error)\n\tImageTag(ctx context.Context, options types.ImageTagOptions) error\n\tInfo(ctx context.Context) (types.Info, error)\n\tNetworkConnect(ctx context.Context, networkID, containerID string, config *network.EndpointSettings) error\n\tNetworkCreate(ctx context.Context, options types.NetworkCreate) (types.NetworkCreateResponse, error)\n\tNetworkDisconnect(ctx context.Context, networkID, containerID string, force bool) error\n\tNetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error)\n\tNetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)\n\tNetworkRemove(ctx context.Context, networkID string) error\n\tRegistryLogin(ctx context.Context, auth types.AuthConfig) (types.AuthResponse, error)\n\tServerVersion(ctx context.Context) (types.Version, error)\n\tVolumeCreate(ctx context.Context, options types.VolumeCreateRequest) (types.Volume, error)\n\tVolumeInspect(ctx context.Context, volumeID string) (types.Volume, error)\n\tVolumeList(ctx context.Context, filter filters.Args) (types.VolumesListResponse, error)\n\tVolumeRemove(ctx context.Context, volumeID string) error\n}\n\n// Ensure that Client always implements APIClient.\nvar _ APIClient = &Client{}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/login.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// RegistryLogin authenticates the docker server with a given docker registry.\n// It returns UnauthorizerError when the authentication fails.\nfunc (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (types.AuthResponse, error) {\n\tresp, err := cli.post(ctx, \"/auth\", url.Values{}, auth, nil)\n\n\tif resp != nil && resp.statusCode == http.StatusUnauthorized {\n\t\treturn types.AuthResponse{}, unauthorizedError{err}\n\t}\n\tif err != nil {\n\t\treturn types.AuthResponse{}, err\n\t}\n\n\tvar response types.AuthResponse\n\terr = json.NewDecoder(resp.body).Decode(&response)\n\tensureReaderClosed(resp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_connect.go",
    "content": "package client\n\nimport (\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"golang.org/x/net/context\"\n)\n\n// NetworkConnect connects a container to an existent network in the docker host.\nfunc (cli *Client) NetworkConnect(ctx context.Context, networkID, containerID string, config *network.EndpointSettings) error {\n\tnc := types.NetworkConnect{\n\t\tContainer:      containerID,\n\t\tEndpointConfig: config,\n\t}\n\tresp, err := cli.post(ctx, \"/networks/\"+networkID+\"/connect\", nil, nc, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_create.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// NetworkCreate creates a new network in the docker host.\nfunc (cli *Client) NetworkCreate(ctx context.Context, options types.NetworkCreate) (types.NetworkCreateResponse, error) {\n\tvar response types.NetworkCreateResponse\n\tserverResp, err := cli.post(ctx, \"/networks/create\", nil, options, nil)\n\tif err != nil {\n\t\treturn response, err\n\t}\n\n\tjson.NewDecoder(serverResp.body).Decode(&response)\n\tensureReaderClosed(serverResp)\n\treturn response, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_disconnect.go",
    "content": "package client\n\nimport (\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// NetworkDisconnect disconnects a container from an existent network in the docker host.\nfunc (cli *Client) NetworkDisconnect(ctx context.Context, networkID, containerID string, force bool) error {\n\tnd := types.NetworkDisconnect{Container: containerID, Force: force}\n\tresp, err := cli.post(ctx, \"/networks/\"+networkID+\"/disconnect\", nil, nd, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_inspect.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// NetworkInspect returns the information for a specific network configured in the docker host.\nfunc (cli *Client) NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error) {\n\tvar networkResource types.NetworkResource\n\tresp, err := cli.get(ctx, \"/networks/\"+networkID, nil, nil)\n\tif err != nil {\n\t\tif resp.statusCode == http.StatusNotFound {\n\t\t\treturn networkResource, networkNotFoundError{networkID}\n\t\t}\n\t\treturn networkResource, err\n\t}\n\terr = json.NewDecoder(resp.body).Decode(&networkResource)\n\tensureReaderClosed(resp)\n\treturn networkResource, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_list.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"golang.org/x/net/context\"\n)\n\n// NetworkList returns the list of networks configured in the docker host.\nfunc (cli *Client) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) {\n\tquery := url.Values{}\n\tif options.Filters.Len() > 0 {\n\t\tfilterJSON, err := filters.ToParam(options.Filters)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tquery.Set(\"filters\", filterJSON)\n\t}\n\tvar networkResources []types.NetworkResource\n\tresp, err := cli.get(ctx, \"/networks\", query, nil)\n\tif err != nil {\n\t\treturn networkResources, err\n\t}\n\terr = json.NewDecoder(resp.body).Decode(&networkResources)\n\tensureReaderClosed(resp)\n\treturn networkResources, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/network_remove.go",
    "content": "package client\n\nimport \"golang.org/x/net/context\"\n\n// NetworkRemove removes an existent network from the docker host.\nfunc (cli *Client) NetworkRemove(ctx context.Context, networkID string) error {\n\tresp, err := cli.delete(ctx, \"/networks/\"+networkID, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/privileged.go",
    "content": "package client\n\n// RequestPrivilegeFunc is a function interface that\n// clients can supply to retry operations after\n// getting an authorization error.\n// This function returns the registry authentication\n// header value in base 64 format, or an error\n// if the privilege request fails.\ntype RequestPrivilegeFunc func() (string, error)\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/request.go",
    "content": "package client\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/client/transport/cancellable\"\n\t\"golang.org/x/net/context\"\n)\n\n// serverResponse is a wrapper for http API responses.\ntype serverResponse struct {\n\tbody       io.ReadCloser\n\theader     http.Header\n\tstatusCode int\n}\n\n// head sends an http request to the docker API using the method HEAD.\nfunc (cli *Client) head(ctx context.Context, path string, query url.Values, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendRequest(ctx, \"HEAD\", path, query, nil, headers)\n}\n\n// getWithContext sends an http request to the docker API using the method GET with a specific go context.\nfunc (cli *Client) get(ctx context.Context, path string, query url.Values, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendRequest(ctx, \"GET\", path, query, nil, headers)\n}\n\n// postWithContext sends an http request to the docker API using the method POST with a specific go context.\nfunc (cli *Client) post(ctx context.Context, path string, query url.Values, obj interface{}, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendRequest(ctx, \"POST\", path, query, obj, headers)\n}\n\nfunc (cli *Client) postRaw(ctx context.Context, path string, query url.Values, body io.Reader, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendClientRequest(ctx, \"POST\", path, query, body, headers)\n}\n\n// put sends an http request to the docker API using the method PUT.\nfunc (cli *Client) put(ctx context.Context, path string, query url.Values, obj interface{}, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendRequest(ctx, \"PUT\", path, query, obj, headers)\n}\n\n// put sends an http request to the docker API using the method PUT.\nfunc (cli *Client) putRaw(ctx context.Context, path string, query url.Values, body io.Reader, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendClientRequest(ctx, \"PUT\", path, query, body, headers)\n}\n\n// delete sends an http request to the docker API using the method DELETE.\nfunc (cli *Client) delete(ctx context.Context, path string, query url.Values, headers map[string][]string) (*serverResponse, error) {\n\treturn cli.sendRequest(ctx, \"DELETE\", path, query, nil, headers)\n}\n\nfunc (cli *Client) sendRequest(ctx context.Context, method, path string, query url.Values, obj interface{}, headers map[string][]string) (*serverResponse, error) {\n\tvar body io.Reader\n\n\tif obj != nil {\n\t\tvar err error\n\t\tbody, err = encodeData(obj)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif headers == nil {\n\t\t\theaders = make(map[string][]string)\n\t\t}\n\t\theaders[\"Content-Type\"] = []string{\"application/json\"}\n\t}\n\n\treturn cli.sendClientRequest(ctx, method, path, query, body, headers)\n}\n\nfunc (cli *Client) sendClientRequest(ctx context.Context, method, path string, query url.Values, body io.Reader, headers map[string][]string) (*serverResponse, error) {\n\tserverResp := &serverResponse{\n\t\tbody:       nil,\n\t\tstatusCode: -1,\n\t}\n\n\texpectedPayload := (method == \"POST\" || method == \"PUT\")\n\tif expectedPayload && body == nil {\n\t\tbody = bytes.NewReader([]byte{})\n\t}\n\n\treq, err := cli.newRequest(method, path, query, body, headers)\n\treq.URL.Host = cli.addr\n\treq.URL.Scheme = cli.transport.Scheme()\n\n\tif expectedPayload && req.Header.Get(\"Content-Type\") == \"\" {\n\t\treq.Header.Set(\"Content-Type\", \"text/plain\")\n\t}\n\n\tresp, err := cancellable.Do(ctx, cli.transport, req)\n\tif resp != nil {\n\t\tserverResp.statusCode = resp.StatusCode\n\t}\n\n\tif err != nil {\n\t\tif isTimeout(err) || strings.Contains(err.Error(), \"connection refused\") || strings.Contains(err.Error(), \"dial unix\") {\n\t\t\treturn serverResp, ErrConnectionFailed\n\t\t}\n\n\t\tif !cli.transport.Secure() && strings.Contains(err.Error(), \"malformed HTTP response\") {\n\t\t\treturn serverResp, fmt.Errorf(\"%v.\\n* Are you trying to connect to a TLS-enabled daemon without TLS?\", err)\n\t\t}\n\t\tif cli.transport.Secure() && strings.Contains(err.Error(), \"remote error: bad certificate\") {\n\t\t\treturn serverResp, fmt.Errorf(\"The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings: %v\", err)\n\t\t}\n\n\t\treturn serverResp, fmt.Errorf(\"An error occurred trying to connect: %v\", err)\n\t}\n\n\tif serverResp.statusCode < 200 || serverResp.statusCode >= 400 {\n\t\tbody, err := ioutil.ReadAll(resp.Body)\n\t\tif err != nil {\n\t\t\treturn serverResp, err\n\t\t}\n\t\tif len(body) == 0 {\n\t\t\treturn serverResp, fmt.Errorf(\"Error: request returned %s for API route and version %s, check if the server supports the requested API version\", http.StatusText(serverResp.statusCode), req.URL)\n\t\t}\n\t\treturn serverResp, fmt.Errorf(\"Error response from daemon: %s\", bytes.TrimSpace(body))\n\t}\n\n\tserverResp.body = resp.Body\n\tserverResp.header = resp.Header\n\treturn serverResp, nil\n}\n\nfunc (cli *Client) newRequest(method, path string, query url.Values, body io.Reader, headers map[string][]string) (*http.Request, error) {\n\tapiPath := cli.getAPIPath(path, query)\n\treq, err := http.NewRequest(method, apiPath, body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Add CLI Config's HTTP Headers BEFORE we set the Docker headers\n\t// then the user can't change OUR headers\n\tfor k, v := range cli.customHTTPHeaders {\n\t\treq.Header.Set(k, v)\n\t}\n\n\tif headers != nil {\n\t\tfor k, v := range headers {\n\t\t\treq.Header[k] = v\n\t\t}\n\t}\n\n\treturn req, nil\n}\n\nfunc encodeData(data interface{}) (*bytes.Buffer, error) {\n\tparams := bytes.NewBuffer(nil)\n\tif data != nil {\n\t\tif err := json.NewEncoder(params).Encode(data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn params, nil\n}\n\nfunc ensureReaderClosed(response *serverResponse) {\n\tif response != nil && response.body != nil {\n\t\tresponse.body.Close()\n\t}\n}\n\nfunc isTimeout(err error) bool {\n\ttype timeout interface {\n\t\tTimeout() bool\n\t}\n\te := err\n\tswitch urlErr := err.(type) {\n\tcase *url.Error:\n\t\te = urlErr.Err\n\t}\n\tt, ok := e.(timeout)\n\treturn ok && t.Timeout()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/transport/cancellable/canceler.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// +build go1.5\n\npackage cancellable\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/docker/engine-api/client/transport\"\n)\n\nfunc canceler(client transport.Sender, req *http.Request) func() {\n\t// TODO(djd): Respect any existing value of req.Cancel.\n\tch := make(chan struct{})\n\treq.Cancel = ch\n\n\treturn func() {\n\t\tclose(ch)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/transport/cancellable/canceler_go14.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// +build !go1.5\n\npackage cancellable\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/docker/engine-api/client/transport\"\n)\n\ntype requestCanceler interface {\n\tCancelRequest(*http.Request)\n}\n\nfunc canceler(client transport.Sender, req *http.Request) func() {\n\trc, ok := client.(requestCanceler)\n\tif !ok {\n\t\treturn func() {}\n\t}\n\treturn func() {\n\t\trc.CancelRequest(req)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/transport/cancellable/cancellable.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 cancellable provides helper function to cancel http requests.\npackage cancellable\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/docker/engine-api/client/transport\"\n\n\t\"golang.org/x/net/context\"\n)\n\nfunc nop() {}\n\nvar (\n\ttestHookContextDoneBeforeHeaders = nop\n\ttestHookDoReturned               = nop\n\ttestHookDidBodyClose             = nop\n)\n\n// Do sends an HTTP request with the provided transport.Sender and returns an HTTP response.\n// If the client is nil, http.DefaultClient is used.\n// If the context is canceled or times out, ctx.Err() will be returned.\n//\n// FORK INFORMATION:\n//\n// This function deviates from the upstream version in golang.org/x/net/context/ctxhttp by\n// taking a Sender interface rather than a *http.Client directly. That allow us to use\n// this funcion with mocked clients and hijacked connections.\nfunc Do(ctx context.Context, client transport.Sender, req *http.Request) (*http.Response, error) {\n\tif client == nil {\n\t\tclient = http.DefaultClient\n\t}\n\n\t// Request cancelation changed in Go 1.5, see canceler.go and canceler_go14.go.\n\tcancel := canceler(client, req)\n\n\ttype responseAndError struct {\n\t\tresp *http.Response\n\t\terr  error\n\t}\n\tresult := make(chan responseAndError, 1)\n\n\tgo func() {\n\t\tresp, err := client.Do(req)\n\t\ttestHookDoReturned()\n\t\tresult <- responseAndError{resp, err}\n\t}()\n\n\tvar resp *http.Response\n\n\tselect {\n\tcase <-ctx.Done():\n\t\ttestHookContextDoneBeforeHeaders()\n\t\tcancel()\n\t\t// Clean up after the goroutine calling client.Do:\n\t\tgo func() {\n\t\t\tif r := <-result; r.resp != nil && r.resp.Body != nil {\n\t\t\t\ttestHookDidBodyClose()\n\t\t\t\tr.resp.Body.Close()\n\t\t\t}\n\t\t}()\n\t\treturn nil, ctx.Err()\n\tcase r := <-result:\n\t\tvar err error\n\t\tresp, err = r.resp, r.err\n\t\tif err != nil {\n\t\t\treturn resp, err\n\t\t}\n\t}\n\n\tc := make(chan struct{})\n\tgo func() {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\tcancel()\n\t\tcase <-c:\n\t\t\t// The response's Body is closed.\n\t\t}\n\t}()\n\tresp.Body = &notifyingReader{resp.Body, c}\n\n\treturn resp, nil\n}\n\n// notifyingReader is an io.ReadCloser that closes the notify channel after\n// Close is called or a Read fails on the underlying ReadCloser.\ntype notifyingReader struct {\n\tio.ReadCloser\n\tnotify chan<- struct{}\n}\n\nfunc (r *notifyingReader) Read(p []byte) (int, error) {\n\tn, err := r.ReadCloser.Read(p)\n\tif err != nil && r.notify != nil {\n\t\tclose(r.notify)\n\t\tr.notify = nil\n\t}\n\treturn n, err\n}\n\nfunc (r *notifyingReader) Close() error {\n\terr := r.ReadCloser.Close()\n\tif r.notify != nil {\n\t\tclose(r.notify)\n\t\tr.notify = nil\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/transport/client.go",
    "content": "package transport\n\nimport (\n\t\"crypto/tls\"\n\t\"net/http\"\n)\n\n// Sender is an interface that clients must implement\n// to be able to send requests to a remote connection.\ntype Sender interface {\n\t// Do sends request to a remote endpoint.\n\tDo(*http.Request) (*http.Response, error)\n}\n\n// Client is an interface that abstracts all remote connections.\ntype Client interface {\n\tSender\n\t// Secure tells whether the connection is secure or not.\n\tSecure() bool\n\t// Scheme returns the connection protocol the client uses.\n\tScheme() string\n\t// TLSConfig returns any TLS configuration the client uses.\n\tTLSConfig() *tls.Config\n}\n\n// tlsInfo returns information about the TLS configuration.\ntype tlsInfo struct {\n\ttlsConfig *tls.Config\n}\n\n// TLSConfig returns the TLS configuration.\nfunc (t *tlsInfo) TLSConfig() *tls.Config {\n\treturn t.tlsConfig\n}\n\n// Scheme returns protocol scheme to use.\nfunc (t *tlsInfo) Scheme() string {\n\tif t.tlsConfig != nil {\n\t\treturn \"https\"\n\t}\n\treturn \"http\"\n}\n\n// Secure returns true if there is a TLS configuration.\nfunc (t *tlsInfo) Secure() bool {\n\treturn t.tlsConfig != nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/transport/transport.go",
    "content": "// Package transport provides function to send request to remote endpoints.\npackage transport\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/docker/go-connections/sockets\"\n)\n\n// apiTransport holds information about the http transport to connect with the API.\ntype apiTransport struct {\n\t*http.Client\n\t*tlsInfo\n\ttransport *http.Transport\n}\n\n// NewTransportWithHTTP creates a new transport based on the provided proto, address and http client.\n// It uses Docker's default http transport configuration if the client is nil.\n// It does not modify the client's transport if it's not nil.\nfunc NewTransportWithHTTP(proto, addr string, client *http.Client) (Client, error) {\n\tvar transport *http.Transport\n\n\tif client != nil {\n\t\ttr, ok := client.Transport.(*http.Transport)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unable to verify TLS configuration, invalid transport %v\", client.Transport)\n\t\t}\n\t\ttransport = tr\n\t} else {\n\t\ttransport = defaultTransport(proto, addr)\n\t\tclient = &http.Client{\n\t\t\tTransport: transport,\n\t\t}\n\t}\n\n\treturn &apiTransport{\n\t\tClient:    client,\n\t\ttlsInfo:   &tlsInfo{transport.TLSClientConfig},\n\t\ttransport: transport,\n\t}, nil\n}\n\n// CancelRequest stops a request execution.\nfunc (a *apiTransport) CancelRequest(req *http.Request) {\n\ta.transport.CancelRequest(req)\n}\n\n// defaultTransport creates a new http.Transport with Docker's\n// default transport configuration.\nfunc defaultTransport(proto, addr string) *http.Transport {\n\ttr := new(http.Transport)\n\tsockets.ConfigureTransport(tr, proto, addr)\n\treturn tr\n}\n\nvar _ Client = &apiTransport{}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/version.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// ServerVersion returns information of the docker client and server host.\nfunc (cli *Client) ServerVersion(ctx context.Context) (types.Version, error) {\n\tresp, err := cli.get(ctx, \"/version\", nil, nil)\n\tif err != nil {\n\t\treturn types.Version{}, err\n\t}\n\n\tvar server types.Version\n\terr = json.NewDecoder(resp.body).Decode(&server)\n\tensureReaderClosed(resp)\n\treturn server, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/volume_create.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// VolumeCreate creates a volume in the docker host.\nfunc (cli *Client) VolumeCreate(ctx context.Context, options types.VolumeCreateRequest) (types.Volume, error) {\n\tvar volume types.Volume\n\tresp, err := cli.post(ctx, \"/volumes/create\", nil, options, nil)\n\tif err != nil {\n\t\treturn volume, err\n\t}\n\terr = json.NewDecoder(resp.body).Decode(&volume)\n\tensureReaderClosed(resp)\n\treturn volume, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/volume_inspect.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"golang.org/x/net/context\"\n)\n\n// VolumeInspect returns the information about a specific volume in the docker host.\nfunc (cli *Client) VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error) {\n\tvar volume types.Volume\n\tresp, err := cli.get(ctx, \"/volumes/\"+volumeID, nil, nil)\n\tif err != nil {\n\t\tif resp.statusCode == http.StatusNotFound {\n\t\t\treturn volume, volumeNotFoundError{volumeID}\n\t\t}\n\t\treturn volume, err\n\t}\n\terr = json.NewDecoder(resp.body).Decode(&volume)\n\tensureReaderClosed(resp)\n\treturn volume, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/volume_list.go",
    "content": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"net/url\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"golang.org/x/net/context\"\n)\n\n// VolumeList returns the volumes configured in the docker host.\nfunc (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (types.VolumesListResponse, error) {\n\tvar volumes types.VolumesListResponse\n\tquery := url.Values{}\n\n\tif filter.Len() > 0 {\n\t\tfilterJSON, err := filters.ToParam(filter)\n\t\tif err != nil {\n\t\t\treturn volumes, err\n\t\t}\n\t\tquery.Set(\"filters\", filterJSON)\n\t}\n\tresp, err := cli.get(ctx, \"/volumes\", query, nil)\n\tif err != nil {\n\t\treturn volumes, err\n\t}\n\n\terr = json.NewDecoder(resp.body).Decode(&volumes)\n\tensureReaderClosed(resp)\n\treturn volumes, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/client/volume_remove.go",
    "content": "package client\n\nimport \"golang.org/x/net/context\"\n\n// VolumeRemove removes a volume from the docker host.\nfunc (cli *Client) VolumeRemove(ctx context.Context, volumeID string) error {\n\tresp, err := cli.delete(ctx, \"/volumes/\"+volumeID, nil, nil)\n\tensureReaderClosed(resp)\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/auth.go",
    "content": "package types\n\n// AuthConfig contains authorization information for connecting to a Registry\ntype AuthConfig struct {\n\tUsername string `json:\"username,omitempty\"`\n\tPassword string `json:\"password,omitempty\"`\n\tAuth     string `json:\"auth,omitempty\"`\n\n\t// Email is an optional value associated with the username.\n\t// This field is deprecated and will be removed in a later\n\t// version of docker.\n\tEmail string `json:\"email,omitempty\"`\n\n\tServerAddress string `json:\"serveraddress,omitempty\"`\n\n\t// IdentityToken is used to authenticate the user and get\n\t// an access token for the registry.\n\tIdentityToken string `json:\"identitytoken,omitempty\"`\n\n\t// RegistryToken is a bearer token to be sent to a registry\n\tRegistryToken string `json:\"registrytoken,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/blkiodev/blkio.go",
    "content": "package blkiodev\n\nimport \"fmt\"\n\n// WeightDevice is a structure that hold device:weight pair\ntype WeightDevice struct {\n\tPath   string\n\tWeight uint16\n}\n\nfunc (w *WeightDevice) String() string {\n\treturn fmt.Sprintf(\"%s:%d\", w.Path, w.Weight)\n}\n\n// ThrottleDevice is a structure that hold device:rate_per_second pair\ntype ThrottleDevice struct {\n\tPath string\n\tRate uint64\n}\n\nfunc (t *ThrottleDevice) String() string {\n\treturn fmt.Sprintf(\"%s:%d\", t.Path, t.Rate)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/client.go",
    "content": "package types\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"net\"\n\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"github.com/docker/go-units\"\n)\n\n// ContainerAttachOptions holds parameters to attach to a container.\ntype ContainerAttachOptions struct {\n\tContainerID string\n\tStream      bool\n\tStdin       bool\n\tStdout      bool\n\tStderr      bool\n\tDetachKeys  string\n}\n\n// ContainerCommitOptions holds parameters to commit changes into a container.\ntype ContainerCommitOptions struct {\n\tContainerID    string\n\tRepositoryName string\n\tTag            string\n\tComment        string\n\tAuthor         string\n\tChanges        []string\n\tPause          bool\n\tConfig         *container.Config\n}\n\n// ContainerExecInspect holds information returned by exec inspect.\ntype ContainerExecInspect struct {\n\tExecID      string\n\tContainerID string\n\tRunning     bool\n\tExitCode    int\n}\n\n// ContainerListOptions holds parameters to list containers with.\ntype ContainerListOptions struct {\n\tQuiet  bool\n\tSize   bool\n\tAll    bool\n\tLatest bool\n\tSince  string\n\tBefore string\n\tLimit  int\n\tFilter filters.Args\n}\n\n// ContainerLogsOptions holds parameters to filter logs with.\ntype ContainerLogsOptions struct {\n\tContainerID string\n\tShowStdout  bool\n\tShowStderr  bool\n\tSince       string\n\tTimestamps  bool\n\tFollow      bool\n\tTail        string\n}\n\n// ContainerRemoveOptions holds parameters to remove containers.\ntype ContainerRemoveOptions struct {\n\tContainerID   string\n\tRemoveVolumes bool\n\tRemoveLinks   bool\n\tForce         bool\n}\n\n// CopyToContainerOptions holds information\n// about files to copy into a container\ntype CopyToContainerOptions struct {\n\tContainerID               string\n\tPath                      string\n\tContent                   io.Reader\n\tAllowOverwriteDirWithFile bool\n}\n\n// EventsOptions hold parameters to filter events with.\ntype EventsOptions struct {\n\tSince   string\n\tUntil   string\n\tFilters filters.Args\n}\n\n// NetworkListOptions holds parameters to filter the list of networks with.\ntype NetworkListOptions struct {\n\tFilters filters.Args\n}\n\n// HijackedResponse holds connection information for a hijacked request.\ntype HijackedResponse struct {\n\tConn   net.Conn\n\tReader *bufio.Reader\n}\n\n// Close closes the hijacked connection and reader.\nfunc (h *HijackedResponse) Close() {\n\th.Conn.Close()\n}\n\n// CloseWriter is an interface that implement structs\n// that close input streams to prevent from writing.\ntype CloseWriter interface {\n\tCloseWrite() error\n}\n\n// CloseWrite closes a readWriter for writing.\nfunc (h *HijackedResponse) CloseWrite() error {\n\tif conn, ok := h.Conn.(CloseWriter); ok {\n\t\treturn conn.CloseWrite()\n\t}\n\treturn nil\n}\n\n// ImageBuildOptions holds the information\n// necessary to build images.\ntype ImageBuildOptions struct {\n\tTags           []string\n\tSuppressOutput bool\n\tRemoteContext  string\n\tNoCache        bool\n\tRemove         bool\n\tForceRemove    bool\n\tPullParent     bool\n\tIsolation      container.Isolation\n\tCPUSetCPUs     string\n\tCPUSetMems     string\n\tCPUShares      int64\n\tCPUQuota       int64\n\tCPUPeriod      int64\n\tMemory         int64\n\tMemorySwap     int64\n\tCgroupParent   string\n\tShmSize        int64\n\tDockerfile     string\n\tUlimits        []*units.Ulimit\n\tBuildArgs      map[string]string\n\tAuthConfigs    map[string]AuthConfig\n\tContext        io.Reader\n\tLabels         map[string]string\n}\n\n// ImageBuildResponse holds information\n// returned by a server after building\n// an image.\ntype ImageBuildResponse struct {\n\tBody   io.ReadCloser\n\tOSType string\n}\n\n// ImageCreateOptions holds information to create images.\ntype ImageCreateOptions struct {\n\tParent       string // Parent is the name of the image to pull\n\tTag          string // Tag is the name to tag this image with\n\tRegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry\n}\n\n// ImageImportOptions holds information to import images from the client host.\ntype ImageImportOptions struct {\n\tSource         io.Reader // Source is the data to send to the server to create this image from (mutually exclusive with SourceName)\n\tSourceName     string    // SourceName is the name of the image to pull (mutually exclusive with Source)\n\tRepositoryName string    // RepositoryName is the name of the repository to import this image into\n\tMessage        string    // Message is the message to tag the image with\n\tTag            string    // Tag is the name to tag this image with\n\tChanges        []string  // Changes are the raw changes to apply to this image\n}\n\n// ImageListOptions holds parameters to filter the list of images with.\ntype ImageListOptions struct {\n\tMatchName string\n\tAll       bool\n\tFilters   filters.Args\n}\n\n// ImageLoadResponse returns information to the client about a load process.\ntype ImageLoadResponse struct {\n\tBody io.ReadCloser\n\tJSON bool\n}\n\n// ImagePullOptions holds information to pull images.\ntype ImagePullOptions struct {\n\tImageID      string // ImageID is the name of the image to pull\n\tTag          string // Tag is the name of the tag to be pulled\n\tRegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry\n}\n\n//ImagePushOptions holds information to push images.\ntype ImagePushOptions ImagePullOptions\n\n// ImageRemoveOptions holds parameters to remove images.\ntype ImageRemoveOptions struct {\n\tImageID       string\n\tForce         bool\n\tPruneChildren bool\n}\n\n// ImageSearchOptions holds parameters to search images with.\ntype ImageSearchOptions struct {\n\tTerm         string\n\tRegistryAuth string\n}\n\n// ImageTagOptions holds parameters to tag an image\ntype ImageTagOptions struct {\n\tImageID        string\n\tRepositoryName string\n\tTag            string\n\tForce          bool\n}\n\n// ResizeOptions holds parameters to resize a tty.\n// It can be used to resize container ttys and\n// exec process ttys too.\ntype ResizeOptions struct {\n\tID     string\n\tHeight int\n\tWidth  int\n}\n\n// VersionResponse holds version information for the client and the server\ntype VersionResponse struct {\n\tClient *Version\n\tServer *Version\n}\n\n// ServerOK return true when the client could connect to the docker server\n// and parse the information received. It returns false otherwise.\nfunc (v VersionResponse) ServerOK() bool {\n\treturn v.Server != nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/configs.go",
    "content": "package types\n\nimport (\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/network\"\n)\n\n// configs holds structs used for internal communication between the\n// frontend (such as an http server) and the backend (such as the\n// docker daemon).\n\n// ContainerCreateConfig is the parameter set to ContainerCreate()\ntype ContainerCreateConfig struct {\n\tName             string\n\tConfig           *container.Config\n\tHostConfig       *container.HostConfig\n\tNetworkingConfig *network.NetworkingConfig\n\tAdjustCPUShares  bool\n}\n\n// ContainerRmConfig holds arguments for the container remove\n// operation. This struct is used to tell the backend what operations\n// to perform.\ntype ContainerRmConfig struct {\n\tForceRemove, RemoveVolume, RemoveLink bool\n}\n\n// ContainerCommitConfig contains build configs for commit operation,\n// and is used when making a commit with the current state of the container.\ntype ContainerCommitConfig struct {\n\tPause   bool\n\tRepo    string\n\tTag     string\n\tAuthor  string\n\tComment string\n\t// merge container config into commit config before commit\n\tMergeConfigs bool\n\tConfig       *container.Config\n}\n\n// ExecConfig is a small subset of the Config struct that hold the configuration\n// for the exec feature of docker.\ntype ExecConfig struct {\n\tUser         string   // User that will run the command\n\tPrivileged   bool     // Is the container in privileged mode\n\tTty          bool     // Attach standard streams to a tty.\n\tContainer    string   // Name of the container (to execute in)\n\tAttachStdin  bool     // Attach the standard input, makes possible user interaction\n\tAttachStderr bool     // Attach the standard output\n\tAttachStdout bool     // Attach the standard error\n\tDetach       bool     // Execute in detach mode\n\tDetachKeys   string   // Escape keys for detach\n\tCmd          []string // Execution commands and args\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/container/config.go",
    "content": "package container\n\nimport (\n\t\"github.com/docker/engine-api/types/strslice\"\n\t\"github.com/docker/go-connections/nat\"\n)\n\n// Config contains the configuration data about a container.\n// It should hold only portable information about the container.\n// Here, \"portable\" means \"independent from the host we are running on\".\n// Non-portable information *should* appear in HostConfig.\n// All fields added to this struct must be marked `omitempty` to keep getting\n// predictable hashes from the old `v1Compatibility` configuration.\ntype Config struct {\n\tHostname        string                // Hostname\n\tDomainname      string                // Domainname\n\tUser            string                // User that will run the command(s) inside the container\n\tAttachStdin     bool                  // Attach the standard input, makes possible user interaction\n\tAttachStdout    bool                  // Attach the standard output\n\tAttachStderr    bool                  // Attach the standard error\n\tExposedPorts    map[nat.Port]struct{} `json:\",omitempty\"` // List of exposed ports\n\tPublishService  string                `json:\",omitempty\"` // Name of the network service exposed by the container\n\tTty             bool                  // Attach standard streams to a tty, including stdin if it is not closed.\n\tOpenStdin       bool                  // Open stdin\n\tStdinOnce       bool                  // If true, close stdin after the 1 attached client disconnects.\n\tEnv             []string              // List of environment variable to set in the container\n\tCmd             strslice.StrSlice     // Command to run when starting the container\n\tArgsEscaped     bool                  `json:\",omitempty\"` // True if command is already escaped (Windows specific)\n\tImage           string                // Name of the image as it was passed by the operator (eg. could be symbolic)\n\tVolumes         map[string]struct{}   // List of volumes (mounts) used for the container\n\tWorkingDir      string                // Current directory (PWD) in the command will be launched\n\tEntrypoint      strslice.StrSlice     // Entrypoint to run when starting the container\n\tNetworkDisabled bool                  `json:\",omitempty\"` // Is network disabled\n\tMacAddress      string                `json:\",omitempty\"` // Mac Address of the container\n\tOnBuild         []string              // ONBUILD metadata that were defined on the image Dockerfile\n\tLabels          map[string]string     // List of labels set to this container\n\tStopSignal      string                `json:\",omitempty\"` // Signal to stop a container\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/container/host_config.go",
    "content": "package container\n\nimport (\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/blkiodev\"\n\t\"github.com/docker/engine-api/types/strslice\"\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/docker/go-units\"\n)\n\n// NetworkMode represents the container network stack.\ntype NetworkMode string\n\n// Isolation represents the isolation technology of a container. The supported\n// values are platform specific\ntype Isolation string\n\n// IsDefault indicates the default isolation technology of a container. On Linux this\n// is the native driver. On Windows, this is a Windows Server Container.\nfunc (i Isolation) IsDefault() bool {\n\treturn strings.ToLower(string(i)) == \"default\" || string(i) == \"\"\n}\n\n// IpcMode represents the container ipc stack.\ntype IpcMode string\n\n// IsPrivate indicates whether the container uses it's private ipc stack.\nfunc (n IpcMode) IsPrivate() bool {\n\treturn !(n.IsHost() || n.IsContainer())\n}\n\n// IsHost indicates whether the container uses the host's ipc stack.\nfunc (n IpcMode) IsHost() bool {\n\treturn n == \"host\"\n}\n\n// IsContainer indicates whether the container uses a container's ipc stack.\nfunc (n IpcMode) IsContainer() bool {\n\tparts := strings.SplitN(string(n), \":\", 2)\n\treturn len(parts) > 1 && parts[0] == \"container\"\n}\n\n// Valid indicates whether the ipc stack is valid.\nfunc (n IpcMode) Valid() bool {\n\tparts := strings.Split(string(n), \":\")\n\tswitch mode := parts[0]; mode {\n\tcase \"\", \"host\":\n\tcase \"container\":\n\t\tif len(parts) != 2 || parts[1] == \"\" {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Container returns the name of the container ipc stack is going to be used.\nfunc (n IpcMode) Container() string {\n\tparts := strings.SplitN(string(n), \":\", 2)\n\tif len(parts) > 1 {\n\t\treturn parts[1]\n\t}\n\treturn \"\"\n}\n\n// UsernsMode represents userns mode in the container.\ntype UsernsMode string\n\n// IsHost indicates whether the container uses the host's userns.\nfunc (n UsernsMode) IsHost() bool {\n\treturn n == \"host\"\n}\n\n// IsPrivate indicates whether the container uses the a private userns.\nfunc (n UsernsMode) IsPrivate() bool {\n\treturn !(n.IsHost())\n}\n\n// Valid indicates whether the userns is valid.\nfunc (n UsernsMode) Valid() bool {\n\tparts := strings.Split(string(n), \":\")\n\tswitch mode := parts[0]; mode {\n\tcase \"\", \"host\":\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Cgroup Spec represents the cgroup to use for the container.\ntype CgroupSpec string\n\nfunc (c CgroupSpec) IsContainer() bool {\n\tparts := strings.SplitN(string(c), \":\", 2)\n\treturn len(parts) > 1 && parts[0] == \"container\"\n}\n\nfunc (c CgroupSpec) Valid() bool {\n\treturn c.IsContainer() || c == \"\"\n}\n\n// Container returns the name of the container whose cgroup will be used.\nfunc (c CgroupSpec) Container() string {\n\tparts := strings.SplitN(string(c), \":\", 2)\n\tif len(parts) > 1 {\n\t\treturn parts[1]\n\t}\n\treturn \"\"\n}\n\n// UTSMode represents the UTS namespace of the container.\ntype UTSMode string\n\n// IsPrivate indicates whether the container uses it's private UTS namespace.\nfunc (n UTSMode) IsPrivate() bool {\n\treturn !(n.IsHost())\n}\n\n// IsHost indicates whether the container uses the host's UTS namespace.\nfunc (n UTSMode) IsHost() bool {\n\treturn n == \"host\"\n}\n\n// Valid indicates whether the UTS namespace is valid.\nfunc (n UTSMode) Valid() bool {\n\tparts := strings.Split(string(n), \":\")\n\tswitch mode := parts[0]; mode {\n\tcase \"\", \"host\":\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// PidMode represents the pid stack of the container.\ntype PidMode string\n\n// IsPrivate indicates whether the container uses it's private pid stack.\nfunc (n PidMode) IsPrivate() bool {\n\treturn !(n.IsHost())\n}\n\n// IsHost indicates whether the container uses the host's pid stack.\nfunc (n PidMode) IsHost() bool {\n\treturn n == \"host\"\n}\n\n// Valid indicates whether the pid stack is valid.\nfunc (n PidMode) Valid() bool {\n\tparts := strings.Split(string(n), \":\")\n\tswitch mode := parts[0]; mode {\n\tcase \"\", \"host\":\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// DeviceMapping represents the device mapping between the host and the container.\ntype DeviceMapping struct {\n\tPathOnHost        string\n\tPathInContainer   string\n\tCgroupPermissions string\n}\n\n// RestartPolicy represents the restart policies of the container.\ntype RestartPolicy struct {\n\tName              string\n\tMaximumRetryCount int\n}\n\n// IsNone indicates whether the container has the \"no\" restart policy.\n// This means the container will not automatically restart when exiting.\nfunc (rp *RestartPolicy) IsNone() bool {\n\treturn rp.Name == \"no\"\n}\n\n// IsAlways indicates whether the container has the \"always\" restart policy.\n// This means the container will automatically restart regardless of the exit status.\nfunc (rp *RestartPolicy) IsAlways() bool {\n\treturn rp.Name == \"always\"\n}\n\n// IsOnFailure indicates whether the container has the \"on-failure\" restart policy.\n// This means the contain will automatically restart of exiting with a non-zero exit status.\nfunc (rp *RestartPolicy) IsOnFailure() bool {\n\treturn rp.Name == \"on-failure\"\n}\n\n// IsUnlessStopped indicates whether the container has the\n// \"unless-stopped\" restart policy. This means the container will\n// automatically restart unless user has put it to stopped state.\nfunc (rp *RestartPolicy) IsUnlessStopped() bool {\n\treturn rp.Name == \"unless-stopped\"\n}\n\n// IsSame compares two RestartPolicy to see if they are the same\nfunc (rp *RestartPolicy) IsSame(tp *RestartPolicy) bool {\n\treturn rp.Name == tp.Name && rp.MaximumRetryCount == tp.MaximumRetryCount\n}\n\n// LogConfig represents the logging configuration of the container.\ntype LogConfig struct {\n\tType   string\n\tConfig map[string]string\n}\n\n// Resources contains container's resources (cgroups config, ulimits...)\ntype Resources struct {\n\t// Applicable to all platforms\n\tCPUShares int64 `json:\"CpuShares\"` // CPU shares (relative weight vs. other containers)\n\tMemory    int64 // Memory limit (in bytes)\n\n\t// Applicable to UNIX platforms\n\tCgroupParent         string // Parent cgroup.\n\tBlkioWeight          uint16 // Block IO weight (relative weight vs. other containers)\n\tBlkioWeightDevice    []*blkiodev.WeightDevice\n\tBlkioDeviceReadBps   []*blkiodev.ThrottleDevice\n\tBlkioDeviceWriteBps  []*blkiodev.ThrottleDevice\n\tBlkioDeviceReadIOps  []*blkiodev.ThrottleDevice\n\tBlkioDeviceWriteIOps []*blkiodev.ThrottleDevice\n\tCPUPeriod            int64           `json:\"CpuPeriod\"` // CPU CFS (Completely Fair Scheduler) period\n\tCPUQuota             int64           `json:\"CpuQuota\"`  // CPU CFS (Completely Fair Scheduler) quota\n\tCpusetCpus           string          // CpusetCpus 0-2, 0,1\n\tCpusetMems           string          // CpusetMems 0-2, 0,1\n\tDevices              []DeviceMapping // List of devices to map inside the container\n\tDiskQuota            int64           // Disk limit (in bytes)\n\tKernelMemory         int64           // Kernel memory limit (in bytes)\n\tMemoryReservation    int64           // Memory soft limit (in bytes)\n\tMemorySwap           int64           // Total memory usage (memory + swap); set `-1` to enable unlimited swap\n\tMemorySwappiness     *int64          // Tuning container memory swappiness behaviour\n\tOomKillDisable       *bool           // Whether to disable OOM Killer or not\n\tPidsLimit            int64           // Setting pids limit for a container\n\tUlimits              []*units.Ulimit // List of ulimits to be set in the container\n\n\t// Applicable to Windows\n\tCPUCount    int64  `json:\"CpuCount\"`   // CPU count\n\tCPUPercent  int64  `json:\"CpuPercent\"` // CPU percent\n\tBlkioIOps   uint64 // Maximum IOps for the container system drive\n\tBlkioBps    uint64 // Maximum Bytes per second for the container system drive\n\tSandboxSize uint64 // System drive will be expanded to at least this size (in bytes)\n}\n\n// UpdateConfig holds the mutable attributes of a Container.\n// Those attributes can be updated at runtime.\ntype UpdateConfig struct {\n\t// Contains container's resources (cgroups, ulimits)\n\tResources\n\tRestartPolicy RestartPolicy\n}\n\n// HostConfig the non-portable Config structure of a container.\n// Here, \"non-portable\" means \"dependent of the host we are running on\".\n// Portable information *should* appear in Config.\ntype HostConfig struct {\n\t// Applicable to all platforms\n\tBinds           []string      // List of volume bindings for this container\n\tContainerIDFile string        // File (path) where the containerId is written\n\tLogConfig       LogConfig     // Configuration of the logs for this container\n\tNetworkMode     NetworkMode   // Network mode to use for the container\n\tPortBindings    nat.PortMap   // Port mapping between the exposed port (container) and the host\n\tRestartPolicy   RestartPolicy // Restart policy to be used for the container\n\tAutoRemove      bool          // Automatically remove container when it exits\n\tVolumeDriver    string        // Name of the volume driver used to mount volumes\n\tVolumesFrom     []string      // List of volumes to take from other container\n\n\t// Applicable to UNIX platforms\n\tCapAdd          strslice.StrSlice // List of kernel capabilities to add to the container\n\tCapDrop         strslice.StrSlice // List of kernel capabilities to remove from the container\n\tDNS             []string          `json:\"Dns\"`        // List of DNS server to lookup\n\tDNSOptions      []string          `json:\"DnsOptions\"` // List of DNSOption to look for\n\tDNSSearch       []string          `json:\"DnsSearch\"`  // List of DNSSearch to look for\n\tExtraHosts      []string          // List of extra hosts\n\tGroupAdd        []string          // List of additional groups that the container process will run as\n\tIpcMode         IpcMode           // IPC namespace to use for the container\n\tCgroup          CgroupSpec        // Cgroup to use for the container\n\tLinks           []string          // List of links (in the name:alias form)\n\tOomScoreAdj     int               // Container preference for OOM-killing\n\tPidMode         PidMode           // PID namespace to use for the container\n\tPrivileged      bool              // Is the container in privileged mode\n\tPublishAllPorts bool              // Should docker publish all exposed port for the container\n\tReadonlyRootfs  bool              // Is the container root filesystem in read-only\n\tSecurityOpt     []string          // List of string values to customize labels for MLS systems, such as SELinux.\n\tStorageOpt      map[string]string // Storage driver options per container.\n\tTmpfs           map[string]string `json:\",omitempty\"` // List of tmpfs (mounts) used for the container\n\tUTSMode         UTSMode           // UTS namespace to use for the container\n\tUsernsMode      UsernsMode        // The user namespace to use for the container\n\tShmSize         int64             // Total shm memory usage\n\tSysctls         map[string]string `json:\",omitempty\"` // List of Namespaced sysctls used for the container\n\n\t// Applicable to Windows\n\tConsoleSize [2]int    // Initial console size\n\tIsolation   Isolation // Isolation technology of the container (eg default, hyperv)\n\n\t// Contains container's resources (cgroups, ulimits)\n\tResources\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/container/hostconfig_unix.go",
    "content": "// +build !windows\n\npackage container\n\nimport \"strings\"\n\n// IsValid indicates if an isolation technology is valid\nfunc (i Isolation) IsValid() bool {\n\treturn i.IsDefault()\n}\n\n// IsPrivate indicates whether container uses it's private network stack.\nfunc (n NetworkMode) IsPrivate() bool {\n\treturn !(n.IsHost() || n.IsContainer())\n}\n\n// IsDefault indicates whether container uses the default network stack.\nfunc (n NetworkMode) IsDefault() bool {\n\treturn n == \"default\"\n}\n\n// NetworkName returns the name of the network stack.\nfunc (n NetworkMode) NetworkName() string {\n\tif n.IsBridge() {\n\t\treturn \"bridge\"\n\t} else if n.IsHost() {\n\t\treturn \"host\"\n\t} else if n.IsContainer() {\n\t\treturn \"container\"\n\t} else if n.IsNone() {\n\t\treturn \"none\"\n\t} else if n.IsDefault() {\n\t\treturn \"default\"\n\t} else if n.IsUserDefined() {\n\t\treturn n.UserDefined()\n\t}\n\treturn \"\"\n}\n\n// IsBridge indicates whether container uses the bridge network stack\nfunc (n NetworkMode) IsBridge() bool {\n\treturn n == \"bridge\"\n}\n\n// IsHost indicates whether container uses the host network stack.\nfunc (n NetworkMode) IsHost() bool {\n\treturn n == \"host\"\n}\n\n// IsContainer indicates whether container uses a container network stack.\nfunc (n NetworkMode) IsContainer() bool {\n\tparts := strings.SplitN(string(n), \":\", 2)\n\treturn len(parts) > 1 && parts[0] == \"container\"\n}\n\n// IsNone indicates whether container isn't using a network stack.\nfunc (n NetworkMode) IsNone() bool {\n\treturn n == \"none\"\n}\n\n// ConnectedContainer is the id of the container which network this container is connected to.\nfunc (n NetworkMode) ConnectedContainer() string {\n\tparts := strings.SplitN(string(n), \":\", 2)\n\tif len(parts) > 1 {\n\t\treturn parts[1]\n\t}\n\treturn \"\"\n}\n\n// IsUserDefined indicates user-created network\nfunc (n NetworkMode) IsUserDefined() bool {\n\treturn !n.IsDefault() && !n.IsBridge() && !n.IsHost() && !n.IsNone() && !n.IsContainer()\n}\n\n//UserDefined indicates user-created network\nfunc (n NetworkMode) UserDefined() string {\n\tif n.IsUserDefined() {\n\t\treturn string(n)\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/container/hostconfig_windows.go",
    "content": "package container\n\nimport (\n\t\"strings\"\n)\n\n// IsDefault indicates whether container uses the default network stack.\nfunc (n NetworkMode) IsDefault() bool {\n\treturn n == \"default\"\n}\n\n// IsNone indicates whether container isn't using a network stack.\nfunc (n NetworkMode) IsNone() bool {\n\treturn n == \"none\"\n}\n\n// IsContainer indicates whether container uses a container network stack.\n// Returns false as windows doesn't support this mode\nfunc (n NetworkMode) IsContainer() bool {\n\treturn false\n}\n\n// IsBridge indicates whether container uses the bridge network stack\n// in windows it is given the name NAT\nfunc (n NetworkMode) IsBridge() bool {\n\treturn n == \"nat\"\n}\n\n// IsHost indicates whether container uses the host network stack.\n// returns false as this is not supported by windows\nfunc (n NetworkMode) IsHost() bool {\n\treturn false\n}\n\n// IsPrivate indicates whether container uses it's private network stack.\nfunc (n NetworkMode) IsPrivate() bool {\n\treturn !(n.IsHost() || n.IsContainer())\n}\n\n// ConnectedContainer is the id of the container which network this container is connected to.\n// Returns blank string on windows\nfunc (n NetworkMode) ConnectedContainer() string {\n\treturn \"\"\n}\n\n// IsUserDefined indicates user-created network\nfunc (n NetworkMode) IsUserDefined() bool {\n\treturn !n.IsDefault() && !n.IsNone() && !n.IsBridge()\n}\n\n// IsHyperV indicates the use of a Hyper-V partition for isolation\nfunc (i Isolation) IsHyperV() bool {\n\treturn strings.ToLower(string(i)) == \"hyperv\"\n}\n\n// IsProcess indicates the use of process isolation\nfunc (i Isolation) IsProcess() bool {\n\treturn strings.ToLower(string(i)) == \"process\"\n}\n\n// IsValid indicates if an isolation technology is valid\nfunc (i Isolation) IsValid() bool {\n\treturn i.IsDefault() || i.IsHyperV() || i.IsProcess()\n}\n\n// NetworkName returns the name of the network stack.\nfunc (n NetworkMode) NetworkName() string {\n\tif n.IsDefault() {\n\t\treturn \"default\"\n\t} else if n.IsBridge() {\n\t\treturn \"nat\"\n\t} else if n.IsNone() {\n\t\treturn \"none\"\n\t} else if n.IsUserDefined() {\n\t\treturn n.UserDefined()\n\t}\n\n\treturn \"\"\n}\n\n//UserDefined indicates user-created network\nfunc (n NetworkMode) UserDefined() string {\n\tif n.IsUserDefined() {\n\t\treturn string(n)\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/filters/parse.go",
    "content": "// Package filters provides helper function to parse and handle command line\n// filter, used for example in docker ps or docker images commands.\npackage filters\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// Args stores filter arguments as map key:{map key: bool}.\n// It contains a aggregation of the map of arguments (which are in the form\n// of -f 'key=value') based on the key, and store values for the same key\n// in an map with string keys and boolean values.\n// e.g given -f 'label=label1=1' -f 'label=label2=2' -f 'image.name=ubuntu'\n// the args will be {\"image.name\":{\"ubuntu\":true},\"label\":{\"label1=1\":true,\"label2=2\":true}}\ntype Args struct {\n\tfields map[string]map[string]bool\n}\n\n// NewArgs initializes a new Args struct.\nfunc NewArgs() Args {\n\treturn Args{fields: map[string]map[string]bool{}}\n}\n\n// ParseFlag parses the argument to the filter flag. Like\n//\n//   `docker ps -f 'created=today' -f 'image.name=ubuntu*'`\n//\n// If prev map is provided, then it is appended to, and returned. By default a new\n// map is created.\nfunc ParseFlag(arg string, prev Args) (Args, error) {\n\tfilters := prev\n\tif len(arg) == 0 {\n\t\treturn filters, nil\n\t}\n\n\tif !strings.Contains(arg, \"=\") {\n\t\treturn filters, ErrBadFormat\n\t}\n\n\tf := strings.SplitN(arg, \"=\", 2)\n\n\tname := strings.ToLower(strings.TrimSpace(f[0]))\n\tvalue := strings.TrimSpace(f[1])\n\n\tfilters.Add(name, value)\n\n\treturn filters, nil\n}\n\n// ErrBadFormat is an error returned in case of bad format for a filter.\nvar ErrBadFormat = errors.New(\"bad format of filter (expected name=value)\")\n\n// ToParam packs the Args into an string for easy transport from client to server.\nfunc ToParam(a Args) (string, error) {\n\t// this way we don't URL encode {}, just empty space\n\tif a.Len() == 0 {\n\t\treturn \"\", nil\n\t}\n\n\tbuf, err := json.Marshal(a.fields)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(buf), nil\n}\n\n// FromParam unpacks the filter Args.\nfunc FromParam(p string) (Args, error) {\n\tif len(p) == 0 {\n\t\treturn NewArgs(), nil\n\t}\n\n\tr := strings.NewReader(p)\n\td := json.NewDecoder(r)\n\n\tm := map[string]map[string]bool{}\n\tif err := d.Decode(&m); err != nil {\n\t\tr.Seek(0, 0)\n\n\t\t// Allow parsing old arguments in slice format.\n\t\t// Because other libraries might be sending them in this format.\n\t\tdeprecated := map[string][]string{}\n\t\tif deprecatedErr := d.Decode(&deprecated); deprecatedErr == nil {\n\t\t\tm = deprecatedArgs(deprecated)\n\t\t} else {\n\t\t\treturn NewArgs(), err\n\t\t}\n\t}\n\treturn Args{m}, nil\n}\n\n// Get returns the list of values associates with a field.\n// It returns a slice of strings to keep backwards compatibility with old code.\nfunc (filters Args) Get(field string) []string {\n\tvalues := filters.fields[field]\n\tif values == nil {\n\t\treturn make([]string, 0)\n\t}\n\tslice := make([]string, 0, len(values))\n\tfor key := range values {\n\t\tslice = append(slice, key)\n\t}\n\treturn slice\n}\n\n// Add adds a new value to a filter field.\nfunc (filters Args) Add(name, value string) {\n\tif _, ok := filters.fields[name]; ok {\n\t\tfilters.fields[name][value] = true\n\t} else {\n\t\tfilters.fields[name] = map[string]bool{value: true}\n\t}\n}\n\n// Del removes a value from a filter field.\nfunc (filters Args) Del(name, value string) {\n\tif _, ok := filters.fields[name]; ok {\n\t\tdelete(filters.fields[name], value)\n\t}\n}\n\n// Len returns the number of fields in the arguments.\nfunc (filters Args) Len() int {\n\treturn len(filters.fields)\n}\n\n// MatchKVList returns true if the values for the specified field matches the ones\n// from the sources.\n// e.g. given Args are {'label': {'label1=1','label2=1'}, 'image.name', {'ubuntu'}},\n//      field is 'label' and sources are {'label1': '1', 'label2': '2'}\n//      it returns true.\nfunc (filters Args) MatchKVList(field string, sources map[string]string) bool {\n\tfieldValues := filters.fields[field]\n\n\t//do not filter if there is no filter set or cannot determine filter\n\tif len(fieldValues) == 0 {\n\t\treturn true\n\t}\n\n\tif sources == nil || len(sources) == 0 {\n\t\treturn false\n\t}\n\n\tfor name2match := range fieldValues {\n\t\ttestKV := strings.SplitN(name2match, \"=\", 2)\n\n\t\tv, ok := sources[testKV[0]]\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tif len(testKV) == 2 && testKV[1] != v {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// Match returns true if the values for the specified field matches the source string\n// e.g. given Args are {'label': {'label1=1','label2=1'}, 'image.name', {'ubuntu'}},\n//      field is 'image.name' and source is 'ubuntu'\n//      it returns true.\nfunc (filters Args) Match(field, source string) bool {\n\tif filters.ExactMatch(field, source) {\n\t\treturn true\n\t}\n\n\tfieldValues := filters.fields[field]\n\tfor name2match := range fieldValues {\n\t\tmatch, err := regexp.MatchString(name2match, source)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif match {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ExactMatch returns true if the source matches exactly one of the filters.\nfunc (filters Args) ExactMatch(field, source string) bool {\n\tfieldValues, ok := filters.fields[field]\n\t//do not filter if there is no filter set or cannot determine filter\n\tif !ok || len(fieldValues) == 0 {\n\t\treturn true\n\t}\n\n\t// try to march full name value to avoid O(N) regular expression matching\n\tif fieldValues[source] {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// FuzzyMatch returns true if the source matches exactly one of the filters,\n// or the source has one of the filters as a prefix.\nfunc (filters Args) FuzzyMatch(field, source string) bool {\n\tif filters.ExactMatch(field, source) {\n\t\treturn true\n\t}\n\n\tfieldValues := filters.fields[field]\n\tfor prefix := range fieldValues {\n\t\tif strings.HasPrefix(source, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Include returns true if the name of the field to filter is in the filters.\nfunc (filters Args) Include(field string) bool {\n\t_, ok := filters.fields[field]\n\treturn ok\n}\n\n// Validate ensures that all the fields in the filter are valid.\n// It returns an error as soon as it finds an invalid field.\nfunc (filters Args) Validate(accepted map[string]bool) error {\n\tfor name := range filters.fields {\n\t\tif !accepted[name] {\n\t\t\treturn fmt.Errorf(\"Invalid filter '%s'\", name)\n\t\t}\n\t}\n\treturn nil\n}\n\n// WalkValues iterates over the list of filtered values for a field.\n// It stops the iteration if it finds an error and it returns that error.\nfunc (filters Args) WalkValues(field string, op func(value string) error) error {\n\tif _, ok := filters.fields[field]; !ok {\n\t\treturn nil\n\t}\n\tfor v := range filters.fields[field] {\n\t\tif err := op(v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc deprecatedArgs(d map[string][]string) map[string]map[string]bool {\n\tm := map[string]map[string]bool{}\n\tfor k, v := range d {\n\t\tvalues := map[string]bool{}\n\t\tfor _, vv := range v {\n\t\t\tvalues[vv] = true\n\t\t}\n\t\tm[k] = values\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/network/network.go",
    "content": "package network\n\n// Address represents an IP address\ntype Address struct {\n\tAddr      string\n\tPrefixLen int\n}\n\n// IPAM represents IP Address Management\ntype IPAM struct {\n\tDriver  string\n\tOptions map[string]string //Per network IPAM driver options\n\tConfig  []IPAMConfig\n}\n\n// IPAMConfig represents IPAM configurations\ntype IPAMConfig struct {\n\tSubnet     string            `json:\",omitempty\"`\n\tIPRange    string            `json:\",omitempty\"`\n\tGateway    string            `json:\",omitempty\"`\n\tAuxAddress map[string]string `json:\"AuxiliaryAddresses,omitempty\"`\n}\n\n// EndpointIPAMConfig represents IPAM configurations for the endpoint\ntype EndpointIPAMConfig struct {\n\tIPv4Address string `json:\",omitempty\"`\n\tIPv6Address string `json:\",omitempty\"`\n}\n\n// EndpointSettings stores the network endpoint details\ntype EndpointSettings struct {\n\t// Configurations\n\tIPAMConfig *EndpointIPAMConfig\n\tLinks      []string\n\tAliases    []string\n\t// Operational data\n\tNetworkID           string\n\tEndpointID          string\n\tGateway             string\n\tIPAddress           string\n\tIPPrefixLen         int\n\tIPv6Gateway         string\n\tGlobalIPv6Address   string\n\tGlobalIPv6PrefixLen int\n\tMacAddress          string\n}\n\n// NetworkingConfig represents the container's networking configuration for each of its interfaces\n// Carries the networking configs specified in the `docker run` and `docker network connect` commands\ntype NetworkingConfig struct {\n\tEndpointsConfig map[string]*EndpointSettings // Endpoint configs for each connecting network\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/registry/registry.go",
    "content": "package registry\n\nimport (\n\t\"encoding/json\"\n\t\"net\"\n)\n\n// ServiceConfig stores daemon registry services configuration.\ntype ServiceConfig struct {\n\tInsecureRegistryCIDRs []*NetIPNet           `json:\"InsecureRegistryCIDRs\"`\n\tIndexConfigs          map[string]*IndexInfo `json:\"IndexConfigs\"`\n\tMirrors               []string\n}\n\n// NetIPNet is the net.IPNet type, which can be marshalled and\n// unmarshalled to JSON\ntype NetIPNet net.IPNet\n\n// MarshalJSON returns the JSON representation of the IPNet\nfunc (ipnet *NetIPNet) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal((*net.IPNet)(ipnet).String())\n}\n\n// UnmarshalJSON sets the IPNet from a byte array of JSON\nfunc (ipnet *NetIPNet) UnmarshalJSON(b []byte) (err error) {\n\tvar ipnetStr string\n\tif err = json.Unmarshal(b, &ipnetStr); err == nil {\n\t\tvar cidr *net.IPNet\n\t\tif _, cidr, err = net.ParseCIDR(ipnetStr); err == nil {\n\t\t\t*ipnet = NetIPNet(*cidr)\n\t\t}\n\t}\n\treturn\n}\n\n// IndexInfo contains information about a registry\n//\n// RepositoryInfo Examples:\n// {\n//   \"Index\" : {\n//     \"Name\" : \"docker.io\",\n//     \"Mirrors\" : [\"https://registry-2.docker.io/v1/\", \"https://registry-3.docker.io/v1/\"],\n//     \"Secure\" : true,\n//     \"Official\" : true,\n//   },\n//   \"RemoteName\" : \"library/debian\",\n//   \"LocalName\" : \"debian\",\n//   \"CanonicalName\" : \"docker.io/debian\"\n//   \"Official\" : true,\n// }\n//\n// {\n//   \"Index\" : {\n//     \"Name\" : \"127.0.0.1:5000\",\n//     \"Mirrors\" : [],\n//     \"Secure\" : false,\n//     \"Official\" : false,\n//   },\n//   \"RemoteName\" : \"user/repo\",\n//   \"LocalName\" : \"127.0.0.1:5000/user/repo\",\n//   \"CanonicalName\" : \"127.0.0.1:5000/user/repo\",\n//   \"Official\" : false,\n// }\ntype IndexInfo struct {\n\t// Name is the name of the registry, such as \"docker.io\"\n\tName string\n\t// Mirrors is a list of mirrors, expressed as URIs\n\tMirrors []string\n\t// Secure is set to false if the registry is part of the list of\n\t// insecure registries. Insecure registries accept HTTP and/or accept\n\t// HTTPS with certificates from unknown CAs.\n\tSecure bool\n\t// Official indicates whether this is an official registry\n\tOfficial bool\n}\n\n// SearchResult describes a search result returned from a registry\ntype SearchResult struct {\n\t// StarCount indicates the number of stars this repository has\n\tStarCount int `json:\"star_count\"`\n\t// IsOfficial indicates whether the result is an official repository or not\n\tIsOfficial bool `json:\"is_official\"`\n\t// Name is the name of the repository\n\tName string `json:\"name\"`\n\t// IsOfficial indicates whether the result is trusted\n\tIsTrusted bool `json:\"is_trusted\"`\n\t// IsAutomated indicates whether the result is automated\n\tIsAutomated bool `json:\"is_automated\"`\n\t// Description is a textual description of the repository\n\tDescription string `json:\"description\"`\n}\n\n// SearchResults lists a collection search results returned from a registry\ntype SearchResults struct {\n\t// Query contains the query string that generated the search results\n\tQuery string `json:\"query\"`\n\t// NumResults indicates the number of results the query returned\n\tNumResults int `json:\"num_results\"`\n\t// Results is a slice containing the actual results for the search\n\tResults []SearchResult `json:\"results\"`\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/seccomp.go",
    "content": "package types\n\n// Seccomp represents the config for a seccomp profile for syscall restriction.\ntype Seccomp struct {\n\tDefaultAction Action     `json:\"defaultAction\"`\n\tArchitectures []Arch     `json:\"architectures\"`\n\tSyscalls      []*Syscall `json:\"syscalls\"`\n}\n\n// Arch used for additional architectures\ntype Arch string\n\n// Additional architectures permitted to be used for system calls\n// By default only the native architecture of the kernel is permitted\nconst (\n\tArchX86         Arch = \"SCMP_ARCH_X86\"\n\tArchX86_64      Arch = \"SCMP_ARCH_X86_64\"\n\tArchX32         Arch = \"SCMP_ARCH_X32\"\n\tArchARM         Arch = \"SCMP_ARCH_ARM\"\n\tArchAARCH64     Arch = \"SCMP_ARCH_AARCH64\"\n\tArchMIPS        Arch = \"SCMP_ARCH_MIPS\"\n\tArchMIPS64      Arch = \"SCMP_ARCH_MIPS64\"\n\tArchMIPS64N32   Arch = \"SCMP_ARCH_MIPS64N32\"\n\tArchMIPSEL      Arch = \"SCMP_ARCH_MIPSEL\"\n\tArchMIPSEL64    Arch = \"SCMP_ARCH_MIPSEL64\"\n\tArchMIPSEL64N32 Arch = \"SCMP_ARCH_MIPSEL64N32\"\n)\n\n// Action taken upon Seccomp rule match\ntype Action string\n\n// Define actions for Seccomp rules\nconst (\n\tActKill  Action = \"SCMP_ACT_KILL\"\n\tActTrap  Action = \"SCMP_ACT_TRAP\"\n\tActErrno Action = \"SCMP_ACT_ERRNO\"\n\tActTrace Action = \"SCMP_ACT_TRACE\"\n\tActAllow Action = \"SCMP_ACT_ALLOW\"\n)\n\n// Operator used to match syscall arguments in Seccomp\ntype Operator string\n\n// Define operators for syscall arguments in Seccomp\nconst (\n\tOpNotEqual     Operator = \"SCMP_CMP_NE\"\n\tOpLessThan     Operator = \"SCMP_CMP_LT\"\n\tOpLessEqual    Operator = \"SCMP_CMP_LE\"\n\tOpEqualTo      Operator = \"SCMP_CMP_EQ\"\n\tOpGreaterEqual Operator = \"SCMP_CMP_GE\"\n\tOpGreaterThan  Operator = \"SCMP_CMP_GT\"\n\tOpMaskedEqual  Operator = \"SCMP_CMP_MASKED_EQ\"\n)\n\n// Arg used for matching specific syscall arguments in Seccomp\ntype Arg struct {\n\tIndex    uint     `json:\"index\"`\n\tValue    uint64   `json:\"value\"`\n\tValueTwo uint64   `json:\"valueTwo\"`\n\tOp       Operator `json:\"op\"`\n}\n\n// Syscall is used to match a syscall in Seccomp\ntype Syscall struct {\n\tName   string `json:\"name\"`\n\tAction Action `json:\"action\"`\n\tArgs   []*Arg `json:\"args\"`\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/stats.go",
    "content": "// Package types is used for API stability in the types and response to the\n// consumers of the API stats endpoint.\npackage types\n\nimport \"time\"\n\n// ThrottlingData stores CPU throttling stats of one running container\ntype ThrottlingData struct {\n\t// Number of periods with throttling active\n\tPeriods uint64 `json:\"periods\"`\n\t// Number of periods when the container hit its throttling limit.\n\tThrottledPeriods uint64 `json:\"throttled_periods\"`\n\t// Aggregate time the container was throttled for in nanoseconds.\n\tThrottledTime uint64 `json:\"throttled_time\"`\n}\n\n// CPUUsage stores All CPU stats aggregated since container inception.\ntype CPUUsage struct {\n\t// Total CPU time consumed.\n\t// Units: nanoseconds.\n\tTotalUsage uint64 `json:\"total_usage\"`\n\t// Total CPU time consumed per core.\n\t// Units: nanoseconds.\n\tPercpuUsage []uint64 `json:\"percpu_usage\"`\n\t// Time spent by tasks of the cgroup in kernel mode.\n\t// Units: nanoseconds.\n\tUsageInKernelmode uint64 `json:\"usage_in_kernelmode\"`\n\t// Time spent by tasks of the cgroup in user mode.\n\t// Units: nanoseconds.\n\tUsageInUsermode uint64 `json:\"usage_in_usermode\"`\n}\n\n// CPUStats aggregates and wraps all CPU related info of container\ntype CPUStats struct {\n\tCPUUsage       CPUUsage       `json:\"cpu_usage\"`\n\tSystemUsage    uint64         `json:\"system_cpu_usage\"`\n\tThrottlingData ThrottlingData `json:\"throttling_data,omitempty\"`\n}\n\n// MemoryStats aggregates All memory stats since container inception\ntype MemoryStats struct {\n\t// current res_counter usage for memory\n\tUsage uint64 `json:\"usage\"`\n\t// maximum usage ever recorded.\n\tMaxUsage uint64 `json:\"max_usage\"`\n\t// TODO(vishh): Export these as stronger types.\n\t// all the stats exported via memory.stat.\n\tStats map[string]uint64 `json:\"stats\"`\n\t// number of times memory usage hits limits.\n\tFailcnt uint64 `json:\"failcnt\"`\n\tLimit   uint64 `json:\"limit\"`\n}\n\n// BlkioStatEntry is one small entity to store a piece of Blkio stats\n// TODO Windows: This can be factored out\ntype BlkioStatEntry struct {\n\tMajor uint64 `json:\"major\"`\n\tMinor uint64 `json:\"minor\"`\n\tOp    string `json:\"op\"`\n\tValue uint64 `json:\"value\"`\n}\n\n// BlkioStats stores All IO service stats for data read and write\n// TODO Windows: This can be factored out\ntype BlkioStats struct {\n\t// number of bytes transferred to and from the block device\n\tIoServiceBytesRecursive []BlkioStatEntry `json:\"io_service_bytes_recursive\"`\n\tIoServicedRecursive     []BlkioStatEntry `json:\"io_serviced_recursive\"`\n\tIoQueuedRecursive       []BlkioStatEntry `json:\"io_queue_recursive\"`\n\tIoServiceTimeRecursive  []BlkioStatEntry `json:\"io_service_time_recursive\"`\n\tIoWaitTimeRecursive     []BlkioStatEntry `json:\"io_wait_time_recursive\"`\n\tIoMergedRecursive       []BlkioStatEntry `json:\"io_merged_recursive\"`\n\tIoTimeRecursive         []BlkioStatEntry `json:\"io_time_recursive\"`\n\tSectorsRecursive        []BlkioStatEntry `json:\"sectors_recursive\"`\n}\n\n// NetworkStats aggregates All network stats of one container\n// TODO Windows: This will require refactoring\ntype NetworkStats struct {\n\tRxBytes   uint64 `json:\"rx_bytes\"`\n\tRxPackets uint64 `json:\"rx_packets\"`\n\tRxErrors  uint64 `json:\"rx_errors\"`\n\tRxDropped uint64 `json:\"rx_dropped\"`\n\tTxBytes   uint64 `json:\"tx_bytes\"`\n\tTxPackets uint64 `json:\"tx_packets\"`\n\tTxErrors  uint64 `json:\"tx_errors\"`\n\tTxDropped uint64 `json:\"tx_dropped\"`\n}\n\n// PidsStats contains the stats of a container's pids\ntype PidsStats struct {\n\t// Current is the number of pids in the cgroup\n\tCurrent uint64 `json:\"current,omitempty\"`\n}\n\n// Stats is Ultimate struct aggregating all types of stats of one container\ntype Stats struct {\n\tRead        time.Time   `json:\"read\"`\n\tPreCPUStats CPUStats    `json:\"precpu_stats,omitempty\"`\n\tCPUStats    CPUStats    `json:\"cpu_stats,omitempty\"`\n\tMemoryStats MemoryStats `json:\"memory_stats,omitempty\"`\n\tBlkioStats  BlkioStats  `json:\"blkio_stats,omitempty\"`\n\tPidsStats   PidsStats   `json:\"pids_stats,omitempty\"`\n}\n\n// StatsJSON is newly used Networks\ntype StatsJSON struct {\n\tStats\n\n\t// Networks request version >=1.21\n\tNetworks map[string]NetworkStats `json:\"networks,omitempty\"`\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/strslice/strslice.go",
    "content": "package strslice\n\nimport \"encoding/json\"\n\n// StrSlice represents a string or an array of strings.\n// We need to override the json decoder to accept both options.\ntype StrSlice []string\n\n// UnmarshalJSON decodes the byte slice whether it's a string or an array of\n// strings. This method is needed to implement json.Unmarshaler.\nfunc (e *StrSlice) UnmarshalJSON(b []byte) error {\n\tif len(b) == 0 {\n\t\t// With no input, we preserve the existing value by returning nil and\n\t\t// leaving the target alone. This allows defining default values for\n\t\t// the type.\n\t\treturn nil\n\t}\n\n\tp := make([]string, 0, 1)\n\tif err := json.Unmarshal(b, &p); err != nil {\n\t\tvar s string\n\t\tif err := json.Unmarshal(b, &s); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp = append(p, s)\n\t}\n\n\t*e = p\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/time/timestamp.go",
    "content": "package time\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// These are additional predefined layouts for use in Time.Format and Time.Parse\n// with --since and --until parameters for `docker logs` and `docker events`\nconst (\n\trFC3339Local     = \"2006-01-02T15:04:05\"           // RFC3339 with local timezone\n\trFC3339NanoLocal = \"2006-01-02T15:04:05.999999999\" // RFC3339Nano with local timezone\n\tdateWithZone     = \"2006-01-02Z07:00\"              // RFC3339 with time at 00:00:00\n\tdateLocal        = \"2006-01-02\"                    // RFC3339 with local timezone and time at 00:00:00\n)\n\n// GetTimestamp tries to parse given string as golang duration,\n// then RFC3339 time and finally as a Unix timestamp. If\n// any of these were successful, it returns a Unix timestamp\n// as string otherwise returns the given value back.\n// In case of duration input, the returned timestamp is computed\n// as the given reference time minus the amount of the duration.\nfunc GetTimestamp(value string, reference time.Time) (string, error) {\n\tif d, err := time.ParseDuration(value); value != \"0\" && err == nil {\n\t\treturn strconv.FormatInt(reference.Add(-d).Unix(), 10), nil\n\t}\n\n\tvar format string\n\tvar parseInLocation bool\n\n\t// if the string has a Z or a + or three dashes use parse otherwise use parseinlocation\n\tparseInLocation = !(strings.ContainsAny(value, \"zZ+\") || strings.Count(value, \"-\") == 3)\n\n\tif strings.Contains(value, \".\") {\n\t\tif parseInLocation {\n\t\t\tformat = rFC3339NanoLocal\n\t\t} else {\n\t\t\tformat = time.RFC3339Nano\n\t\t}\n\t} else if strings.Contains(value, \"T\") {\n\t\t// we want the number of colons in the T portion of the timestamp\n\t\ttcolons := strings.Count(value, \":\")\n\t\t// if parseInLocation is off and we have a +/- zone offset (not Z) then\n\t\t// there will be an extra colon in the input for the tz offset subtract that\n\t\t// colon from the tcolons count\n\t\tif !parseInLocation && !strings.ContainsAny(value, \"zZ\") && tcolons > 0 {\n\t\t\ttcolons--\n\t\t}\n\t\tif parseInLocation {\n\t\t\tswitch tcolons {\n\t\t\tcase 0:\n\t\t\t\tformat = \"2006-01-02T15\"\n\t\t\tcase 1:\n\t\t\t\tformat = \"2006-01-02T15:04\"\n\t\t\tdefault:\n\t\t\t\tformat = rFC3339Local\n\t\t\t}\n\t\t} else {\n\t\t\tswitch tcolons {\n\t\t\tcase 0:\n\t\t\t\tformat = \"2006-01-02T15Z07:00\"\n\t\t\tcase 1:\n\t\t\t\tformat = \"2006-01-02T15:04Z07:00\"\n\t\t\tdefault:\n\t\t\t\tformat = time.RFC3339\n\t\t\t}\n\t\t}\n\t} else if parseInLocation {\n\t\tformat = dateLocal\n\t} else {\n\t\tformat = dateWithZone\n\t}\n\n\tvar t time.Time\n\tvar err error\n\n\tif parseInLocation {\n\t\tt, err = time.ParseInLocation(format, value, time.FixedZone(reference.Zone()))\n\t} else {\n\t\tt, err = time.Parse(format, value)\n\t}\n\n\tif err != nil {\n\t\t// if there is a `-` then its an RFC3339 like timestamp otherwise assume unixtimestamp\n\t\tif strings.Contains(value, \"-\") {\n\t\t\treturn \"\", err // was probably an RFC3339 like timestamp but the parser failed with an error\n\t\t}\n\t\treturn value, nil // unixtimestamp in and out case (meaning: the value passed at the command line is already in the right format for passing to the server)\n\t}\n\n\treturn fmt.Sprintf(\"%d.%09d\", t.Unix(), int64(t.Nanosecond())), nil\n}\n\n// ParseTimestamps returns seconds and nanoseconds from a timestamp that has the\n// format \"%d.%09d\", time.Unix(), int64(time.Nanosecond()))\n// if the incoming nanosecond portion is longer or shorter than 9 digits it is\n// converted to nanoseconds.  The expectation is that the seconds and\n// seconds will be used to create a time variable.  For example:\n//     seconds, nanoseconds, err := ParseTimestamp(\"1136073600.000000001\",0)\n//     if err == nil since := time.Unix(seconds, nanoseconds)\n// returns seconds as def(aultSeconds) if value == \"\"\nfunc ParseTimestamps(value string, def int64) (int64, int64, error) {\n\tif value == \"\" {\n\t\treturn def, 0, nil\n\t}\n\tsa := strings.SplitN(value, \".\", 2)\n\ts, err := strconv.ParseInt(sa[0], 10, 64)\n\tif err != nil {\n\t\treturn s, 0, err\n\t}\n\tif len(sa) != 2 {\n\t\treturn s, 0, nil\n\t}\n\tn, err := strconv.ParseInt(sa[1], 10, 64)\n\tif err != nil {\n\t\treturn s, n, err\n\t}\n\t// should already be in nanoseconds but just in case convert n to nanoseonds\n\tn = int64(float64(n) * math.Pow(float64(10), float64(9-len(sa[1]))))\n\treturn s, n, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/engine-api/types/types.go",
    "content": "package types\n\nimport (\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"github.com/docker/engine-api/types/registry\"\n\t\"github.com/docker/go-connections/nat\"\n)\n\n// ContainerCreateResponse contains the information returned to a client on the\n// creation of a new container.\ntype ContainerCreateResponse struct {\n\t// ID is the ID of the created container.\n\tID string `json:\"Id\"`\n\n\t// Warnings are any warnings encountered during the creation of the container.\n\tWarnings []string `json:\"Warnings\"`\n}\n\n// ContainerExecCreateResponse contains response of Remote API:\n// POST \"/containers/{name:.*}/exec\"\ntype ContainerExecCreateResponse struct {\n\t// ID is the exec ID.\n\tID string `json:\"Id\"`\n}\n\n// ContainerUpdateResponse contains response of Remote API:\n// POST /containers/{name:.*}/update\ntype ContainerUpdateResponse struct {\n\t// Warnings are any warnings encountered during the updating of the container.\n\tWarnings []string `json:\"Warnings\"`\n}\n\n// AuthResponse contains response of Remote API:\n// POST \"/auth\"\ntype AuthResponse struct {\n\t// Status is the authentication status\n\tStatus string `json:\"Status\"`\n\n\t// IdentityToken is an opaque token used for authenticating\n\t// a user after a successful login.\n\tIdentityToken string `json:\"IdentityToken,omitempty\"`\n}\n\n// ContainerWaitResponse contains response of Remote API:\n// POST \"/containers/\"+containerID+\"/wait\"\ntype ContainerWaitResponse struct {\n\t// StatusCode is the status code of the wait job\n\tStatusCode int `json:\"StatusCode\"`\n}\n\n// ContainerCommitResponse contains response of Remote API:\n// POST \"/commit?container=\"+containerID\ntype ContainerCommitResponse struct {\n\tID string `json:\"Id\"`\n}\n\n// ContainerChange contains response of Remote API:\n// GET \"/containers/{name:.*}/changes\"\ntype ContainerChange struct {\n\tKind int\n\tPath string\n}\n\n// ImageHistory contains response of Remote API:\n// GET \"/images/{name:.*}/history\"\ntype ImageHistory struct {\n\tID        string `json:\"Id\"`\n\tCreated   int64\n\tCreatedBy string\n\tTags      []string\n\tSize      int64\n\tComment   string\n}\n\n// ImageDelete contains response of Remote API:\n// DELETE \"/images/{name:.*}\"\ntype ImageDelete struct {\n\tUntagged string `json:\",omitempty\"`\n\tDeleted  string `json:\",omitempty\"`\n}\n\n// Image contains response of Remote API:\n// GET \"/images/json\"\ntype Image struct {\n\tID          string `json:\"Id\"`\n\tParentID    string `json:\"ParentId\"`\n\tRepoTags    []string\n\tRepoDigests []string\n\tCreated     int64\n\tSize        int64\n\tVirtualSize int64\n\tLabels      map[string]string\n}\n\n// GraphDriverData returns Image's graph driver config info\n// when calling inspect command\ntype GraphDriverData struct {\n\tName string\n\tData map[string]string\n}\n\n// RootFS returns Image's RootFS description including the layer IDs.\ntype RootFS struct {\n\tType      string\n\tLayers    []string `json:\",omitempty\"`\n\tBaseLayer string   `json:\",omitempty\"`\n}\n\n// ImageInspect contains response of Remote API:\n// GET \"/images/{name:.*}/json\"\ntype ImageInspect struct {\n\tID              string `json:\"Id\"`\n\tRepoTags        []string\n\tRepoDigests     []string\n\tParent          string\n\tComment         string\n\tCreated         string\n\tContainer       string\n\tContainerConfig *container.Config\n\tDockerVersion   string\n\tAuthor          string\n\tConfig          *container.Config\n\tArchitecture    string\n\tOs              string\n\tSize            int64\n\tVirtualSize     int64\n\tGraphDriver     GraphDriverData\n\tRootFS          RootFS\n}\n\n// Port stores open ports info of container\n// e.g. {\"PrivatePort\": 8080, \"PublicPort\": 80, \"Type\": \"tcp\"}\ntype Port struct {\n\tIP          string `json:\",omitempty\"`\n\tPrivatePort int\n\tPublicPort  int `json:\",omitempty\"`\n\tType        string\n}\n\n// Container contains response of Remote API:\n// GET  \"/containers/json\"\ntype Container struct {\n\tID         string `json:\"Id\"`\n\tNames      []string\n\tImage      string\n\tImageID    string\n\tCommand    string\n\tCreated    int64\n\tPorts      []Port\n\tSizeRw     int64 `json:\",omitempty\"`\n\tSizeRootFs int64 `json:\",omitempty\"`\n\tLabels     map[string]string\n\tState      string\n\tStatus     string\n\tHostConfig struct {\n\t\tNetworkMode string `json:\",omitempty\"`\n\t}\n\tNetworkSettings *SummaryNetworkSettings\n\tMounts          []MountPoint\n}\n\n// CopyConfig contains request body of Remote API:\n// POST \"/containers/\"+containerID+\"/copy\"\ntype CopyConfig struct {\n\tResource string\n}\n\n// ContainerPathStat is used to encode the header from\n// GET \"/containers/{name:.*}/archive\"\n// \"Name\" is the file or directory name.\ntype ContainerPathStat struct {\n\tName       string      `json:\"name\"`\n\tSize       int64       `json:\"size\"`\n\tMode       os.FileMode `json:\"mode\"`\n\tMtime      time.Time   `json:\"mtime\"`\n\tLinkTarget string      `json:\"linkTarget\"`\n}\n\n// ContainerProcessList contains response of Remote API:\n// GET \"/containers/{name:.*}/top\"\ntype ContainerProcessList struct {\n\tProcesses [][]string\n\tTitles    []string\n}\n\n// Version contains response of Remote API:\n// GET \"/version\"\ntype Version struct {\n\tVersion       string\n\tAPIVersion    string `json:\"ApiVersion\"`\n\tGitCommit     string\n\tGoVersion     string\n\tOs            string\n\tArch          string\n\tKernelVersion string `json:\",omitempty\"`\n\tExperimental  bool   `json:\",omitempty\"`\n\tBuildTime     string `json:\",omitempty\"`\n}\n\n// Info contains response of Remote API:\n// GET \"/info\"\ntype Info struct {\n\tID                 string\n\tContainers         int\n\tContainersRunning  int\n\tContainersPaused   int\n\tContainersStopped  int\n\tImages             int\n\tDriver             string\n\tDriverStatus       [][2]string\n\tSystemStatus       [][2]string\n\tPlugins            PluginsInfo\n\tMemoryLimit        bool\n\tSwapLimit          bool\n\tKernelMemory       bool\n\tCPUCfsPeriod       bool `json:\"CpuCfsPeriod\"`\n\tCPUCfsQuota        bool `json:\"CpuCfsQuota\"`\n\tCPUShares          bool\n\tCPUSet             bool\n\tIPv4Forwarding     bool\n\tBridgeNfIptables   bool\n\tBridgeNfIP6tables  bool `json:\"BridgeNfIp6tables\"`\n\tDebug              bool\n\tNFd                int\n\tOomKillDisable     bool\n\tNGoroutines        int\n\tSystemTime         string\n\tExecutionDriver    string\n\tLoggingDriver      string\n\tCgroupDriver       string\n\tNEventsListener    int\n\tKernelVersion      string\n\tOperatingSystem    string\n\tOSType             string\n\tArchitecture       string\n\tIndexServerAddress string\n\tRegistryConfig     *registry.ServiceConfig\n\tNCPU               int\n\tMemTotal           int64\n\tDockerRootDir      string\n\tHTTPProxy          string `json:\"HttpProxy\"`\n\tHTTPSProxy         string `json:\"HttpsProxy\"`\n\tNoProxy            string\n\tName               string\n\tLabels             []string\n\tExperimentalBuild  bool\n\tServerVersion      string\n\tClusterStore       string\n\tClusterAdvertise   string\n}\n\n// PluginsInfo is a temp struct holding Plugins name\n// registered with docker daemon. It is used by Info struct\ntype PluginsInfo struct {\n\t// List of Volume plugins registered\n\tVolume []string\n\t// List of Network plugins registered\n\tNetwork []string\n\t// List of Authorization plugins registered\n\tAuthorization []string\n}\n\n// ExecStartCheck is a temp struct used by execStart\n// Config fields is part of ExecConfig in runconfig package\ntype ExecStartCheck struct {\n\t// ExecStart will first check if it's detached\n\tDetach bool\n\t// Check if there's a tty\n\tTty bool\n}\n\n// ContainerState stores container's running state\n// it's part of ContainerJSONBase and will return by \"inspect\" command\ntype ContainerState struct {\n\tStatus     string\n\tRunning    bool\n\tPaused     bool\n\tRestarting bool\n\tOOMKilled  bool\n\tDead       bool\n\tPid        int\n\tExitCode   int\n\tError      string\n\tStartedAt  string\n\tFinishedAt string\n}\n\n// ContainerJSONBase contains response of Remote API:\n// GET \"/containers/{name:.*}/json\"\ntype ContainerJSONBase struct {\n\tID              string `json:\"Id\"`\n\tCreated         string\n\tPath            string\n\tArgs            []string\n\tState           *ContainerState\n\tImage           string\n\tResolvConfPath  string\n\tHostnamePath    string\n\tHostsPath       string\n\tLogPath         string\n\tName            string\n\tRestartCount    int\n\tDriver          string\n\tMountLabel      string\n\tProcessLabel    string\n\tAppArmorProfile string\n\tExecIDs         []string\n\tHostConfig      *container.HostConfig\n\tGraphDriver     GraphDriverData\n\tSizeRw          *int64 `json:\",omitempty\"`\n\tSizeRootFs      *int64 `json:\",omitempty\"`\n}\n\n// ContainerJSON is newly used struct along with MountPoint\ntype ContainerJSON struct {\n\t*ContainerJSONBase\n\tMounts          []MountPoint\n\tConfig          *container.Config\n\tNetworkSettings *NetworkSettings\n}\n\n// NetworkSettings exposes the network settings in the api\ntype NetworkSettings struct {\n\tNetworkSettingsBase\n\tDefaultNetworkSettings\n\tNetworks map[string]*network.EndpointSettings\n}\n\n// SummaryNetworkSettings provides a summary of container's networks\n// in /containers/json\ntype SummaryNetworkSettings struct {\n\tNetworks map[string]*network.EndpointSettings\n}\n\n// NetworkSettingsBase holds basic information about networks\ntype NetworkSettingsBase struct {\n\tBridge                 string\n\tSandboxID              string\n\tHairpinMode            bool\n\tLinkLocalIPv6Address   string\n\tLinkLocalIPv6PrefixLen int\n\tPorts                  nat.PortMap\n\tSandboxKey             string\n\tSecondaryIPAddresses   []network.Address\n\tSecondaryIPv6Addresses []network.Address\n}\n\n// DefaultNetworkSettings holds network information\n// during the 2 release deprecation period.\n// It will be removed in Docker 1.11.\ntype DefaultNetworkSettings struct {\n\tEndpointID          string\n\tGateway             string\n\tGlobalIPv6Address   string\n\tGlobalIPv6PrefixLen int\n\tIPAddress           string\n\tIPPrefixLen         int\n\tIPv6Gateway         string\n\tMacAddress          string\n}\n\n// MountPoint represents a mount point configuration inside the container.\ntype MountPoint struct {\n\tName        string `json:\",omitempty\"`\n\tSource      string\n\tDestination string\n\tDriver      string `json:\",omitempty\"`\n\tMode        string\n\tRW          bool\n\tPropagation string\n}\n\n// Volume represents the configuration of a volume for the remote API\ntype Volume struct {\n\tName       string                 // Name is the name of the volume\n\tDriver     string                 // Driver is the Driver name used to create the volume\n\tMountpoint string                 // Mountpoint is the location on disk of the volume\n\tStatus     map[string]interface{} `json:\",omitempty\"` // Status provides low-level status information about the volume\n\tLabels     map[string]string      // Labels is metadata specific to the volume\n}\n\n// VolumesListResponse contains the response for the remote API:\n// GET \"/volumes\"\ntype VolumesListResponse struct {\n\tVolumes  []*Volume // Volumes is the list of volumes being returned\n\tWarnings []string  // Warnings is a list of warnings that occurred when getting the list from the volume drivers\n}\n\n// VolumeCreateRequest contains the response for the remote API:\n// POST \"/volumes/create\"\ntype VolumeCreateRequest struct {\n\tName       string            // Name is the requested name of the volume\n\tDriver     string            // Driver is the name of the driver that should be used to create the volume\n\tDriverOpts map[string]string // DriverOpts holds the driver specific options to use for when creating the volume.\n\tLabels     map[string]string // Labels holds metadata specific to the volume being created.\n}\n\n// NetworkResource is the body of the \"get network\" http response message\ntype NetworkResource struct {\n\tName       string\n\tID         string `json:\"Id\"`\n\tScope      string\n\tDriver     string\n\tEnableIPv6 bool\n\tIPAM       network.IPAM\n\tInternal   bool\n\tContainers map[string]EndpointResource\n\tOptions    map[string]string\n\tLabels     map[string]string\n}\n\n// EndpointResource contains network resources allocated and used for a container in a network\ntype EndpointResource struct {\n\tName        string\n\tEndpointID  string\n\tMacAddress  string\n\tIPv4Address string\n\tIPv6Address string\n}\n\n// NetworkCreate is the expected body of the \"create network\" http request message\ntype NetworkCreate struct {\n\tName           string\n\tCheckDuplicate bool\n\tDriver         string\n\tEnableIPv6     bool\n\tIPAM           network.IPAM\n\tInternal       bool\n\tOptions        map[string]string\n\tLabels         map[string]string\n}\n\n// NetworkCreateResponse is the response message sent by the server for network create call\ntype NetworkCreateResponse struct {\n\tID      string `json:\"Id\"`\n\tWarning string\n}\n\n// NetworkConnect represents the data to be used to connect a container to the network\ntype NetworkConnect struct {\n\tContainer      string\n\tEndpointConfig *network.EndpointSettings `json:\",omitempty\"`\n}\n\n// NetworkDisconnect represents the data to be used to disconnect a container from the network\ntype NetworkDisconnect struct {\n\tContainer string\n\tForce     bool\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/CONTRIBUTING.md",
    "content": "# Contributing to Docker\n\n### Sign your work\n\nThe sign-off is a simple line at the end of the explanation for the patch. Your\nsignature certifies that you wrote the patch or otherwise have the right to pass\nit on as an open-source patch. The rules are pretty simple: if you can certify\nthe below (from [developercertificate.org](http://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nThen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe.smith@email.com>\n\nUse your real name (sorry, no pseudonyms or anonymous contributions.)\n\nIf you set your `user.name` and `user.email` git configs, you can sign your\ncommit automatically with `git commit -s`.\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://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   Copyright 2015 Docker, Inc.\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       https://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/docker/go-connections/MAINTAINERS",
    "content": "# go-connections maintainers file\n#\n# This file describes who runs the docker/go-connections project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n\t[Org.\"Core maintainers\"]\n\t\tpeople = [\n\t\t\t\"calavera\",\n\t\t]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\t[people.calavera]\n\tName = \"David Calavera\"\n\tEmail = \"david.calavera@gmail.com\"\n\tGitHub = \"calavera\"\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/README.md",
    "content": "[![GoDoc](https://godoc.org/github.com/docker/go-connections?status.svg)](https://godoc.org/github.com/docker/go-connections)\n\n# Introduction\n\ngo-connections provides common package to work with network connections.\n\n## Usage\n\nSee the [docs in godoc](https://godoc.org/github.com/docker/go-connections) for examples and documentation.\n\n## License\n\ngo-connections is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text.\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/circle.yml",
    "content": "dependencies:\n  pre:\n    # setup ipv6\n    - sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0 net.ipv6.conf.default.disable_ipv6=0 net.ipv6.conf.all.disable_ipv6=0\n  post:\n    # install golint\n    - go get github.com/golang/lint/golint\n\ntest:\n  pre:\n    # run analysis before tests\n    - go vet ./...\n    - test -z \"$(golint ./... | tee /dev/stderr)\"\n    - test -z \"$(gofmt -s -l . | tee /dev/stderr)\"\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/nat/nat.go",
    "content": "// Package nat is a convenience package for manipulation of strings describing network ports.\npackage nat\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\t// portSpecTemplate is the expected format for port specifications\n\tportSpecTemplate = \"ip:hostPort:containerPort\"\n)\n\n// PortBinding represents a binding between a Host IP address and a Host Port\ntype PortBinding struct {\n\t// HostIP is the host IP Address\n\tHostIP string `json:\"HostIp\"`\n\t// HostPort is the host port number\n\tHostPort string\n}\n\n// PortMap is a collection of PortBinding indexed by Port\ntype PortMap map[Port][]PortBinding\n\n// PortSet is a collection of structs indexed by Port\ntype PortSet map[Port]struct{}\n\n// Port is a string containing port number and protocol in the format \"80/tcp\"\ntype Port string\n\n// NewPort creates a new instance of a Port given a protocol and port number or port range\nfunc NewPort(proto, port string) (Port, error) {\n\t// Check for parsing issues on \"port\" now so we can avoid having\n\t// to check it later on.\n\n\tportStartInt, portEndInt, err := ParsePortRangeToInt(port)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif portStartInt == portEndInt {\n\t\treturn Port(fmt.Sprintf(\"%d/%s\", portStartInt, proto)), nil\n\t}\n\treturn Port(fmt.Sprintf(\"%d-%d/%s\", portStartInt, portEndInt, proto)), nil\n}\n\n// ParsePort parses the port number string and returns an int\nfunc ParsePort(rawPort string) (int, error) {\n\tif len(rawPort) == 0 {\n\t\treturn 0, nil\n\t}\n\tport, err := strconv.ParseUint(rawPort, 10, 16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn int(port), nil\n}\n\n// ParsePortRangeToInt parses the port range string and returns start/end ints\nfunc ParsePortRangeToInt(rawPort string) (int, int, error) {\n\tif len(rawPort) == 0 {\n\t\treturn 0, 0, nil\n\t}\n\tstart, end, err := ParsePortRange(rawPort)\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\treturn int(start), int(end), nil\n}\n\n// Proto returns the protocol of a Port\nfunc (p Port) Proto() string {\n\tproto, _ := SplitProtoPort(string(p))\n\treturn proto\n}\n\n// Port returns the port number of a Port\nfunc (p Port) Port() string {\n\t_, port := SplitProtoPort(string(p))\n\treturn port\n}\n\n// Int returns the port number of a Port as an int\nfunc (p Port) Int() int {\n\tportStr := p.Port()\n\tif len(portStr) == 0 {\n\t\treturn 0\n\t}\n\n\t// We don't need to check for an error because we're going to\n\t// assume that any error would have been found, and reported, in NewPort()\n\tport, _ := strconv.ParseUint(portStr, 10, 16)\n\treturn int(port)\n}\n\n// Range returns the start/end port numbers of a Port range as ints\nfunc (p Port) Range() (int, int, error) {\n\treturn ParsePortRangeToInt(p.Port())\n}\n\n// SplitProtoPort splits a port in the format of proto/port\nfunc SplitProtoPort(rawPort string) (string, string) {\n\tparts := strings.Split(rawPort, \"/\")\n\tl := len(parts)\n\tif len(rawPort) == 0 || l == 0 || len(parts[0]) == 0 {\n\t\treturn \"\", \"\"\n\t}\n\tif l == 1 {\n\t\treturn \"tcp\", rawPort\n\t}\n\tif len(parts[1]) == 0 {\n\t\treturn \"tcp\", parts[0]\n\t}\n\treturn parts[1], parts[0]\n}\n\nfunc validateProto(proto string) bool {\n\tfor _, availableProto := range []string{\"tcp\", \"udp\"} {\n\t\tif availableProto == proto {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ParsePortSpecs receives port specs in the format of ip:public:private/proto and parses\n// these in to the internal types\nfunc ParsePortSpecs(ports []string) (map[Port]struct{}, map[Port][]PortBinding, error) {\n\tvar (\n\t\texposedPorts = make(map[Port]struct{}, len(ports))\n\t\tbindings     = make(map[Port][]PortBinding)\n\t)\n\n\tfor _, rawPort := range ports {\n\t\tproto := \"tcp\"\n\n\t\tif i := strings.LastIndex(rawPort, \"/\"); i != -1 {\n\t\t\tproto = rawPort[i+1:]\n\t\t\trawPort = rawPort[:i]\n\t\t}\n\t\tif !strings.Contains(rawPort, \":\") {\n\t\t\trawPort = fmt.Sprintf(\"::%s\", rawPort)\n\t\t} else if len(strings.Split(rawPort, \":\")) == 2 {\n\t\t\trawPort = fmt.Sprintf(\":%s\", rawPort)\n\t\t}\n\n\t\tparts, err := PartParser(portSpecTemplate, rawPort)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\tvar (\n\t\t\tcontainerPort = parts[\"containerPort\"]\n\t\t\trawIP         = parts[\"ip\"]\n\t\t\thostPort      = parts[\"hostPort\"]\n\t\t)\n\n\t\tif rawIP != \"\" && net.ParseIP(rawIP) == nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"Invalid ip address: %s\", rawIP)\n\t\t}\n\t\tif containerPort == \"\" {\n\t\t\treturn nil, nil, fmt.Errorf(\"No port specified: %s<empty>\", rawPort)\n\t\t}\n\n\t\tstartPort, endPort, err := ParsePortRange(containerPort)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"Invalid containerPort: %s\", containerPort)\n\t\t}\n\n\t\tvar startHostPort, endHostPort uint64 = 0, 0\n\t\tif len(hostPort) > 0 {\n\t\t\tstartHostPort, endHostPort, err = ParsePortRange(hostPort)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"Invalid hostPort: %s\", hostPort)\n\t\t\t}\n\t\t}\n\n\t\tif hostPort != \"\" && (endPort-startPort) != (endHostPort-startHostPort) {\n\t\t\t// Allow host port range iff containerPort is not a range.\n\t\t\t// In this case, use the host port range as the dynamic\n\t\t\t// host port range to allocate into.\n\t\t\tif endPort != startPort {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"Invalid ranges specified for container and host Ports: %s and %s\", containerPort, hostPort)\n\t\t\t}\n\t\t}\n\n\t\tif !validateProto(strings.ToLower(proto)) {\n\t\t\treturn nil, nil, fmt.Errorf(\"Invalid proto: %s\", proto)\n\t\t}\n\n\t\tfor i := uint64(0); i <= (endPort - startPort); i++ {\n\t\t\tcontainerPort = strconv.FormatUint(startPort+i, 10)\n\t\t\tif len(hostPort) > 0 {\n\t\t\t\thostPort = strconv.FormatUint(startHostPort+i, 10)\n\t\t\t}\n\t\t\t// Set hostPort to a range only if there is a single container port\n\t\t\t// and a dynamic host port.\n\t\t\tif startPort == endPort && startHostPort != endHostPort {\n\t\t\t\thostPort = fmt.Sprintf(\"%s-%s\", hostPort, strconv.FormatUint(endHostPort, 10))\n\t\t\t}\n\t\t\tport, err := NewPort(strings.ToLower(proto), containerPort)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t\tif _, exists := exposedPorts[port]; !exists {\n\t\t\t\texposedPorts[port] = struct{}{}\n\t\t\t}\n\n\t\t\tbinding := PortBinding{\n\t\t\t\tHostIP:   rawIP,\n\t\t\t\tHostPort: hostPort,\n\t\t\t}\n\t\t\tbslice, exists := bindings[port]\n\t\t\tif !exists {\n\t\t\t\tbslice = []PortBinding{}\n\t\t\t}\n\t\t\tbindings[port] = append(bslice, binding)\n\t\t}\n\t}\n\treturn exposedPorts, bindings, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/nat/parse.go",
    "content": "package nat\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// PartParser parses and validates the specified string (data) using the specified template\n// e.g. ip:public:private -> 192.168.0.1:80:8000\nfunc PartParser(template, data string) (map[string]string, error) {\n\t// ip:public:private\n\tvar (\n\t\ttemplateParts = strings.Split(template, \":\")\n\t\tparts         = strings.Split(data, \":\")\n\t\tout           = make(map[string]string, len(templateParts))\n\t)\n\tif len(parts) != len(templateParts) {\n\t\treturn nil, fmt.Errorf(\"Invalid format to parse. %s should match template %s\", data, template)\n\t}\n\n\tfor i, t := range templateParts {\n\t\tvalue := \"\"\n\t\tif len(parts) > i {\n\t\t\tvalue = parts[i]\n\t\t}\n\t\tout[t] = value\n\t}\n\treturn out, nil\n}\n\n// ParsePortRange parses and validates the specified string as a port-range (8000-9000)\nfunc ParsePortRange(ports string) (uint64, uint64, error) {\n\tif ports == \"\" {\n\t\treturn 0, 0, fmt.Errorf(\"Empty string specified for ports.\")\n\t}\n\tif !strings.Contains(ports, \"-\") {\n\t\tstart, err := strconv.ParseUint(ports, 10, 16)\n\t\tend := start\n\t\treturn start, end, err\n\t}\n\n\tparts := strings.Split(ports, \"-\")\n\tstart, err := strconv.ParseUint(parts[0], 10, 16)\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\tend, err := strconv.ParseUint(parts[1], 10, 16)\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\tif end < start {\n\t\treturn 0, 0, fmt.Errorf(\"Invalid range specified for the Port: %s\", ports)\n\t}\n\treturn start, end, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/nat/sort.go",
    "content": "package nat\n\nimport (\n\t\"sort\"\n\t\"strings\"\n)\n\ntype portSorter struct {\n\tports []Port\n\tby    func(i, j Port) bool\n}\n\nfunc (s *portSorter) Len() int {\n\treturn len(s.ports)\n}\n\nfunc (s *portSorter) Swap(i, j int) {\n\ts.ports[i], s.ports[j] = s.ports[j], s.ports[i]\n}\n\nfunc (s *portSorter) Less(i, j int) bool {\n\tip := s.ports[i]\n\tjp := s.ports[j]\n\n\treturn s.by(ip, jp)\n}\n\n// Sort sorts a list of ports using the provided predicate\n// This function should compare `i` and `j`, returning true if `i` is\n// considered to be less than `j`\nfunc Sort(ports []Port, predicate func(i, j Port) bool) {\n\ts := &portSorter{ports, predicate}\n\tsort.Sort(s)\n}\n\ntype portMapEntry struct {\n\tport    Port\n\tbinding PortBinding\n}\n\ntype portMapSorter []portMapEntry\n\nfunc (s portMapSorter) Len() int      { return len(s) }\nfunc (s portMapSorter) Swap(i, j int) { s[i], s[j] = s[j], s[i] }\n\n// sort the port so that the order is:\n// 1. port with larger specified bindings\n// 2. larger port\n// 3. port with tcp protocol\nfunc (s portMapSorter) Less(i, j int) bool {\n\tpi, pj := s[i].port, s[j].port\n\thpi, hpj := toInt(s[i].binding.HostPort), toInt(s[j].binding.HostPort)\n\treturn hpi > hpj || pi.Int() > pj.Int() || (pi.Int() == pj.Int() && strings.ToLower(pi.Proto()) == \"tcp\")\n}\n\n// SortPortMap sorts the list of ports and their respected mapping. The ports\n// will explicit HostPort will be placed first.\nfunc SortPortMap(ports []Port, bindings PortMap) {\n\ts := portMapSorter{}\n\tfor _, p := range ports {\n\t\tif binding, ok := bindings[p]; ok {\n\t\t\tfor _, b := range binding {\n\t\t\t\ts = append(s, portMapEntry{port: p, binding: b})\n\t\t\t}\n\t\t\tbindings[p] = []PortBinding{}\n\t\t} else {\n\t\t\ts = append(s, portMapEntry{port: p})\n\t\t}\n\t}\n\n\tsort.Sort(s)\n\tvar (\n\t\ti  int\n\t\tpm = make(map[Port]struct{})\n\t)\n\t// reorder ports\n\tfor _, entry := range s {\n\t\tif _, ok := pm[entry.port]; !ok {\n\t\t\tports[i] = entry.port\n\t\t\tpm[entry.port] = struct{}{}\n\t\t\ti++\n\t\t}\n\t\t// reorder bindings for this port\n\t\tif _, ok := bindings[entry.port]; ok {\n\t\t\tbindings[entry.port] = append(bindings[entry.port], entry.binding)\n\t\t}\n\t}\n}\n\nfunc toInt(s string) uint64 {\n\ti, _, err := ParsePortRange(s)\n\tif err != nil {\n\t\ti = 0\n\t}\n\treturn i\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/README.md",
    "content": ""
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/inmem_socket.go",
    "content": "package sockets\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"sync\"\n)\n\nvar errClosed = errors.New(\"use of closed network connection\")\n\n// InmemSocket implements net.Listener using in-memory only connections.\ntype InmemSocket struct {\n\tchConn  chan net.Conn\n\tchClose chan struct{}\n\taddr    string\n\tmu      sync.Mutex\n}\n\n// dummyAddr is used to satisfy net.Addr for the in-mem socket\n// it is just stored as a string and returns the string for all calls\ntype dummyAddr string\n\n// NewInmemSocket creates an in-memory only net.Listener\n// The addr argument can be any string, but is used to satisfy the `Addr()` part\n// of the net.Listener interface\nfunc NewInmemSocket(addr string, bufSize int) *InmemSocket {\n\treturn &InmemSocket{\n\t\tchConn:  make(chan net.Conn, bufSize),\n\t\tchClose: make(chan struct{}),\n\t\taddr:    addr,\n\t}\n}\n\n// Addr returns the socket's addr string to satisfy net.Listener\nfunc (s *InmemSocket) Addr() net.Addr {\n\treturn dummyAddr(s.addr)\n}\n\n// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn.\nfunc (s *InmemSocket) Accept() (net.Conn, error) {\n\tselect {\n\tcase conn := <-s.chConn:\n\t\treturn conn, nil\n\tcase <-s.chClose:\n\t\treturn nil, errClosed\n\t}\n}\n\n// Close closes the listener. It will be unavailable for use once closed.\nfunc (s *InmemSocket) Close() error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tselect {\n\tcase <-s.chClose:\n\tdefault:\n\t\tclose(s.chClose)\n\t}\n\treturn nil\n}\n\n// Dial is used to establish a connection with the in-mem server\nfunc (s *InmemSocket) Dial(network, addr string) (net.Conn, error) {\n\tsrvConn, clientConn := net.Pipe()\n\tselect {\n\tcase s.chConn <- srvConn:\n\tcase <-s.chClose:\n\t\treturn nil, errClosed\n\t}\n\n\treturn clientConn, nil\n}\n\n// Network returns the addr string, satisfies net.Addr\nfunc (a dummyAddr) Network() string {\n\treturn string(a)\n}\n\n// String returns the string form\nfunc (a dummyAddr) String() string {\n\treturn string(a)\n}\n\n// timeoutError is used when there is a timeout with a connection\n// this implements the net.Error interface\ntype timeoutError struct{}\n\nfunc (e *timeoutError) Error() string   { return \"i/o timeout\" }\nfunc (e *timeoutError) Timeout() bool   { return true }\nfunc (e *timeoutError) Temporary() bool { return true }\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/proxy.go",
    "content": "package sockets\n\nimport (\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\n\t\"golang.org/x/net/proxy\"\n)\n\n// GetProxyEnv allows access to the uppercase and the lowercase forms of\n// proxy-related variables.  See the Go specification for details on these\n// variables. https://golang.org/pkg/net/http/\nfunc GetProxyEnv(key string) string {\n\tproxyValue := os.Getenv(strings.ToUpper(key))\n\tif proxyValue == \"\" {\n\t\treturn os.Getenv(strings.ToLower(key))\n\t}\n\treturn proxyValue\n}\n\n// DialerFromEnvironment takes in a \"direct\" *net.Dialer and returns a\n// proxy.Dialer which will route the connections through the proxy using the\n// given dialer.\nfunc DialerFromEnvironment(direct *net.Dialer) (proxy.Dialer, error) {\n\tallProxy := GetProxyEnv(\"all_proxy\")\n\tif len(allProxy) == 0 {\n\t\treturn direct, nil\n\t}\n\n\tproxyURL, err := url.Parse(allProxy)\n\tif err != nil {\n\t\treturn direct, err\n\t}\n\n\tproxyFromURL, err := proxy.FromURL(proxyURL, direct)\n\tif err != nil {\n\t\treturn direct, err\n\t}\n\n\tnoProxy := GetProxyEnv(\"no_proxy\")\n\tif len(noProxy) == 0 {\n\t\treturn proxyFromURL, nil\n\t}\n\n\tperHost := proxy.NewPerHost(proxyFromURL, direct)\n\tperHost.AddFromString(noProxy)\n\n\treturn perHost, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/sockets.go",
    "content": "// Package sockets provides helper functions to create and configure Unix or TCP sockets.\npackage sockets\n\nimport (\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Why 32? See https://github.com/docker/docker/pull/8035.\nconst defaultTimeout = 32 * time.Second\n\n// ConfigureTransport configures the specified Transport according to the\n// specified proto and addr.\n// If the proto is unix (using a unix socket to communicate) or npipe the\n// compression is disabled.\nfunc ConfigureTransport(tr *http.Transport, proto, addr string) error {\n\tswitch proto {\n\tcase \"unix\":\n\t\t// No need for compression in local communications.\n\t\ttr.DisableCompression = true\n\t\ttr.Dial = func(_, _ string) (net.Conn, error) {\n\t\t\treturn net.DialTimeout(proto, addr, defaultTimeout)\n\t\t}\n\tcase \"npipe\":\n\t\t// No need for compression in local communications.\n\t\ttr.DisableCompression = true\n\t\ttr.Dial = func(_, _ string) (net.Conn, error) {\n\t\t\treturn DialPipe(addr, defaultTimeout)\n\t\t}\n\tdefault:\n\t\ttr.Proxy = http.ProxyFromEnvironment\n\t\tdialer, err := DialerFromEnvironment(&net.Dialer{\n\t\t\tTimeout: defaultTimeout,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttr.Dial = dialer.Dial\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/sockets_unix.go",
    "content": "// +build !windows\n\npackage sockets\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"time\"\n)\n\n// DialPipe connects to a Windows named pipe.\n// This is not supported on other OSes.\nfunc DialPipe(_ string, _ time.Duration) (net.Conn, error) {\n\treturn nil, syscall.EAFNOSUPPORT\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/sockets_windows.go",
    "content": "package sockets\n\nimport (\n\t\"net\"\n\t\"time\"\n\n\t\"github.com/Microsoft/go-winio\"\n)\n\n// DialPipe connects to a Windows named pipe.\nfunc DialPipe(addr string, timeout time.Duration) (net.Conn, error) {\n\treturn winio.DialPipe(addr, &timeout)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/tcp_socket.go",
    "content": "// Package sockets provides helper functions to create and configure Unix or TCP sockets.\npackage sockets\n\nimport (\n\t\"crypto/tls\"\n\t\"net\"\n)\n\n// NewTCPSocket creates a TCP socket listener with the specified address and\n// and the specified tls configuration. If TLSConfig is set, will encapsulate the\n// TCP listener inside a TLS one.\nfunc NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error) {\n\tl, err := net.Listen(\"tcp\", addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif tlsConfig != nil {\n\t\ttlsConfig.NextProtos = []string{\"http/1.1\"}\n\t\tl = tls.NewListener(l, tlsConfig)\n\t}\n\treturn l, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/sockets/unix_socket.go",
    "content": "// +build linux freebsd solaris\n\npackage sockets\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"syscall\"\n\n\t\"github.com/opencontainers/runc/libcontainer/user\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// NewUnixSocket creates a unix socket with the specified path and group.\nfunc NewUnixSocket(path, group string) (net.Listener, error) {\n\tif err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) {\n\t\treturn nil, err\n\t}\n\tmask := syscall.Umask(0777)\n\tdefer syscall.Umask(mask)\n\tl, err := net.Listen(\"unix\", path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := setSocketGroup(path, group); err != nil {\n\t\tl.Close()\n\t\treturn nil, err\n\t}\n\tif err := os.Chmod(path, 0660); err != nil {\n\t\tl.Close()\n\t\treturn nil, err\n\t}\n\treturn l, nil\n}\n\nfunc setSocketGroup(path, group string) error {\n\tif group == \"\" {\n\t\treturn nil\n\t}\n\tif err := changeGroup(path, group); err != nil {\n\t\tif group != \"docker\" {\n\t\t\treturn err\n\t\t}\n\t\tlogrus.Debugf(\"Warning: could not change group %s to docker: %v\", path, err)\n\t}\n\treturn nil\n}\n\nfunc changeGroup(path string, nameOrGid string) error {\n\tgid, err := lookupGidByName(nameOrGid)\n\tif err != nil {\n\t\treturn err\n\t}\n\tlogrus.Debugf(\"%s group found. gid: %d\", nameOrGid, gid)\n\treturn os.Chown(path, 0, gid)\n}\n\nfunc lookupGidByName(nameOrGid string) (int, error) {\n\tgroupFile, err := user.GetGroupPath()\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tgroups, err := user.ParseGroupFileFilter(groupFile, func(g user.Group) bool {\n\t\treturn g.Name == nameOrGid || strconv.Itoa(g.Gid) == nameOrGid\n\t})\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\tif groups != nil && len(groups) > 0 {\n\t\treturn groups[0].Gid, nil\n\t}\n\tgid, err := strconv.Atoi(nameOrGid)\n\tif err == nil {\n\t\tlogrus.Warnf(\"Could not find GID %d\", gid)\n\t\treturn gid, nil\n\t}\n\treturn -1, fmt.Errorf(\"Group %s not found\", nameOrGid)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/tlsconfig/config.go",
    "content": "// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.\n//\n// As a reminder from https://golang.org/pkg/crypto/tls/#Config:\n//\tA Config structure is used to configure a TLS client or server. After one has been passed to a TLS function it must not be modified.\n//\tA Config may be reused; the tls package will also not modify it.\npackage tlsconfig\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Options represents the information needed to create client and server TLS configurations.\ntype Options struct {\n\tCAFile string\n\n\t// If either CertFile or KeyFile is empty, Client() will not load them\n\t// preventing the client from authenticating to the server.\n\t// However, Server() requires them and will error out if they are empty.\n\tCertFile string\n\tKeyFile  string\n\n\t// client-only option\n\tInsecureSkipVerify bool\n\t// server-only option\n\tClientAuth tls.ClientAuthType\n}\n\n// Extra (server-side) accepted CBC cipher suites - will phase out in the future\nvar acceptedCBCCiphers = []uint16{\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,\n\ttls.TLS_RSA_WITH_AES_256_CBC_SHA,\n\ttls.TLS_RSA_WITH_AES_128_CBC_SHA,\n}\n\n// DefaultServerAcceptedCiphers should be uses by code which already has a crypto/tls\n// options struct but wants to use a commonly accepted set of TLS cipher suites, with\n// known weak algorithms removed.\nvar DefaultServerAcceptedCiphers = append(clientCipherSuites, acceptedCBCCiphers...)\n\n// ServerDefault is a secure-enough TLS configuration for the server TLS configuration.\nvar ServerDefault = tls.Config{\n\t// Avoid fallback to SSL protocols < TLS1.0\n\tMinVersion:               tls.VersionTLS10,\n\tPreferServerCipherSuites: true,\n\tCipherSuites:             DefaultServerAcceptedCiphers,\n}\n\n// ClientDefault is a secure-enough TLS configuration for the client TLS configuration.\nvar ClientDefault = tls.Config{\n\t// Prefer TLS1.2 as the client minimum\n\tMinVersion:   tls.VersionTLS12,\n\tCipherSuites: clientCipherSuites,\n}\n\n// certPool returns an X.509 certificate pool from `caFile`, the certificate file.\nfunc certPool(caFile string) (*x509.CertPool, error) {\n\t// If we should verify the server, we need to load a trusted ca\n\tcertPool := x509.NewCertPool()\n\tpem, err := ioutil.ReadFile(caFile)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Could not read CA certificate %q: %v\", caFile, err)\n\t}\n\tif !certPool.AppendCertsFromPEM(pem) {\n\t\treturn nil, fmt.Errorf(\"failed to append certificates from PEM file: %q\", caFile)\n\t}\n\ts := certPool.Subjects()\n\tsubjects := make([]string, len(s))\n\tfor i, subject := range s {\n\t\tsubjects[i] = string(subject)\n\t}\n\tlogrus.Debugf(\"Trusting certs with subjects: %v\", subjects)\n\treturn certPool, nil\n}\n\n// Client returns a TLS configuration meant to be used by a client.\nfunc Client(options Options) (*tls.Config, error) {\n\ttlsConfig := ClientDefault\n\ttlsConfig.InsecureSkipVerify = options.InsecureSkipVerify\n\tif !options.InsecureSkipVerify && options.CAFile != \"\" {\n\t\tCAs, err := certPool(options.CAFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttlsConfig.RootCAs = CAs\n\t}\n\n\tif options.CertFile != \"\" || options.KeyFile != \"\" {\n\t\ttlsCert, err := tls.LoadX509KeyPair(options.CertFile, options.KeyFile)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Could not load X509 key pair: %v. Make sure the key is not encrypted\", err)\n\t\t}\n\t\ttlsConfig.Certificates = []tls.Certificate{tlsCert}\n\t}\n\n\treturn &tlsConfig, nil\n}\n\n// Server returns a TLS configuration meant to be used by a server.\nfunc Server(options Options) (*tls.Config, error) {\n\ttlsConfig := ServerDefault\n\ttlsConfig.ClientAuth = options.ClientAuth\n\ttlsCert, err := tls.LoadX509KeyPair(options.CertFile, options.KeyFile)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn nil, fmt.Errorf(\"Could not load X509 key pair (cert: %q, key: %q): %v\", options.CertFile, options.KeyFile, err)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"Error reading X509 key pair (cert: %q, key: %q): %v. Make sure the key is not encrypted.\", options.CertFile, options.KeyFile, err)\n\t}\n\ttlsConfig.Certificates = []tls.Certificate{tlsCert}\n\tif options.ClientAuth >= tls.VerifyClientCertIfGiven {\n\t\tCAs, err := certPool(options.CAFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttlsConfig.ClientCAs = CAs\n\t}\n\treturn &tlsConfig, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go",
    "content": "// +build go1.5\n\n// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.\n//\npackage tlsconfig\n\nimport (\n\t\"crypto/tls\"\n)\n\n// Client TLS cipher suites (dropping CBC ciphers for client preferred suite set)\nvar clientCipherSuites = []uint16{\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\n\ttls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go",
    "content": "// +build !go1.5\n\n// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers.\n//\npackage tlsconfig\n\nimport (\n\t\"crypto/tls\"\n)\n\n// Client TLS cipher suites (dropping CBC ciphers for client preferred suite set)\nvar clientCipherSuites = []uint16{\n\ttls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\n\ttls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-units/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://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   Copyright 2015 Docker, Inc.\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       https://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/docker/go-units/README.md",
    "content": "[![GoDoc](https://godoc.org/github.com/docker/go-units?status.svg)](https://godoc.org/github.com/docker/go-units)\n\n# Introduction\n\ngo-units is a library to transform human friendly measurements into machine friendly values.\n\n## Usage\n\nSee the [docs in godoc](https://godoc.org/github.com/docker/go-units) for examples and documentation.\n\n## License\n\ngo-units is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full license text.\n"
  },
  {
    "path": "vendor/github.com/docker/go-units/circle.yml",
    "content": "dependencies:\n  post:\n    # install golint\n    - go get github.com/golang/lint/golint\n\ntest:\n  pre:\n    # run analysis before tests\n    - go vet ./...\n    - test -z \"$(golint ./... | tee /dev/stderr)\"\n    - test -z \"$(gofmt -s -l . | tee /dev/stderr)\"\n"
  },
  {
    "path": "vendor/github.com/docker/go-units/duration.go",
    "content": "// Package units provides helper function to parse and print size and time units\n// in human-readable format.\npackage units\n\nimport (\n\t\"fmt\"\n\t\"time\"\n)\n\n// HumanDuration returns a human-readable approximation of a duration\n// (eg. \"About a minute\", \"4 hours ago\", etc.).\nfunc HumanDuration(d time.Duration) string {\n\tif seconds := int(d.Seconds()); seconds < 1 {\n\t\treturn \"Less than a second\"\n\t} else if seconds < 60 {\n\t\treturn fmt.Sprintf(\"%d seconds\", seconds)\n\t} else if minutes := int(d.Minutes()); minutes == 1 {\n\t\treturn \"About a minute\"\n\t} else if minutes < 60 {\n\t\treturn fmt.Sprintf(\"%d minutes\", minutes)\n\t} else if hours := int(d.Hours()); hours == 1 {\n\t\treturn \"About an hour\"\n\t} else if hours < 48 {\n\t\treturn fmt.Sprintf(\"%d hours\", hours)\n\t} else if hours < 24*7*2 {\n\t\treturn fmt.Sprintf(\"%d days\", hours/24)\n\t} else if hours < 24*30*3 {\n\t\treturn fmt.Sprintf(\"%d weeks\", hours/24/7)\n\t} else if hours < 24*365*2 {\n\t\treturn fmt.Sprintf(\"%d months\", hours/24/30)\n\t}\n\treturn fmt.Sprintf(\"%d years\", int(d.Hours())/24/365)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-units/size.go",
    "content": "package units\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// See: http://en.wikipedia.org/wiki/Binary_prefix\nconst (\n\t// Decimal\n\n\tKB = 1000\n\tMB = 1000 * KB\n\tGB = 1000 * MB\n\tTB = 1000 * GB\n\tPB = 1000 * TB\n\n\t// Binary\n\n\tKiB = 1024\n\tMiB = 1024 * KiB\n\tGiB = 1024 * MiB\n\tTiB = 1024 * GiB\n\tPiB = 1024 * TiB\n)\n\ntype unitMap map[string]int64\n\nvar (\n\tdecimalMap = unitMap{\"k\": KB, \"m\": MB, \"g\": GB, \"t\": TB, \"p\": PB}\n\tbinaryMap  = unitMap{\"k\": KiB, \"m\": MiB, \"g\": GiB, \"t\": TiB, \"p\": PiB}\n\tsizeRegex  = regexp.MustCompile(`^(\\d+)([kKmMgGtTpP])?[bB]?$`)\n)\n\nvar decimapAbbrs = []string{\"B\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"}\nvar binaryAbbrs = []string{\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"}\n\n// CustomSize returns a human-readable approximation of a size\n// using custom format.\nfunc CustomSize(format string, size float64, base float64, _map []string) string {\n\ti := 0\n\tfor size >= base {\n\t\tsize = size / base\n\t\ti++\n\t}\n\treturn fmt.Sprintf(format, size, _map[i])\n}\n\n// HumanSize returns a human-readable approximation of a size\n// capped at 4 valid numbers (eg. \"2.746 MB\", \"796 KB\").\nfunc HumanSize(size float64) string {\n\treturn CustomSize(\"%.4g %s\", size, 1000.0, decimapAbbrs)\n}\n\n// BytesSize returns a human-readable size in bytes, kibibytes,\n// mebibytes, gibibytes, or tebibytes (eg. \"44kiB\", \"17MiB\").\nfunc BytesSize(size float64) string {\n\treturn CustomSize(\"%.4g %s\", size, 1024.0, binaryAbbrs)\n}\n\n// FromHumanSize returns an integer from a human-readable specification of a\n// size using SI standard (eg. \"44kB\", \"17MB\").\nfunc FromHumanSize(size string) (int64, error) {\n\treturn parseSize(size, decimalMap)\n}\n\n// RAMInBytes parses a human-readable string representing an amount of RAM\n// in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and\n// returns the number of bytes, or -1 if the string is unparseable.\n// Units are case-insensitive, and the 'b' suffix is optional.\nfunc RAMInBytes(size string) (int64, error) {\n\treturn parseSize(size, binaryMap)\n}\n\n// Parses the human-readable size string into the amount it represents.\nfunc parseSize(sizeStr string, uMap unitMap) (int64, error) {\n\tmatches := sizeRegex.FindStringSubmatch(sizeStr)\n\tif len(matches) != 3 {\n\t\treturn -1, fmt.Errorf(\"invalid size: '%s'\", sizeStr)\n\t}\n\n\tsize, err := strconv.ParseInt(matches[1], 10, 0)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\tunitPrefix := strings.ToLower(matches[2])\n\tif mul, ok := uMap[unitPrefix]; ok {\n\t\tsize *= mul\n\t}\n\n\treturn size, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/go-units/ulimit.go",
    "content": "package units\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Ulimit is a human friendly version of Rlimit.\ntype Ulimit struct {\n\tName string\n\tHard int64\n\tSoft int64\n}\n\n// Rlimit specifies the resource limits, such as max open files.\ntype Rlimit struct {\n\tType int    `json:\"type,omitempty\"`\n\tHard uint64 `json:\"hard,omitempty\"`\n\tSoft uint64 `json:\"soft,omitempty\"`\n}\n\nconst (\n\t// magic numbers for making the syscall\n\t// some of these are defined in the syscall package, but not all.\n\t// Also since Windows client doesn't get access to the syscall package, need to\n\t//\tdefine these here\n\trlimitAs         = 9\n\trlimitCore       = 4\n\trlimitCPU        = 0\n\trlimitData       = 2\n\trlimitFsize      = 1\n\trlimitLocks      = 10\n\trlimitMemlock    = 8\n\trlimitMsgqueue   = 12\n\trlimitNice       = 13\n\trlimitNofile     = 7\n\trlimitNproc      = 6\n\trlimitRss        = 5\n\trlimitRtprio     = 14\n\trlimitRttime     = 15\n\trlimitSigpending = 11\n\trlimitStack      = 3\n)\n\nvar ulimitNameMapping = map[string]int{\n\t//\"as\":         rlimitAs, // Disabled since this doesn't seem usable with the way Docker inits a container.\n\t\"core\":       rlimitCore,\n\t\"cpu\":        rlimitCPU,\n\t\"data\":       rlimitData,\n\t\"fsize\":      rlimitFsize,\n\t\"locks\":      rlimitLocks,\n\t\"memlock\":    rlimitMemlock,\n\t\"msgqueue\":   rlimitMsgqueue,\n\t\"nice\":       rlimitNice,\n\t\"nofile\":     rlimitNofile,\n\t\"nproc\":      rlimitNproc,\n\t\"rss\":        rlimitRss,\n\t\"rtprio\":     rlimitRtprio,\n\t\"rttime\":     rlimitRttime,\n\t\"sigpending\": rlimitSigpending,\n\t\"stack\":      rlimitStack,\n}\n\n// ParseUlimit parses and returns a Ulimit from the specified string.\nfunc ParseUlimit(val string) (*Ulimit, error) {\n\tparts := strings.SplitN(val, \"=\", 2)\n\tif len(parts) != 2 {\n\t\treturn nil, fmt.Errorf(\"invalid ulimit argument: %s\", val)\n\t}\n\n\tif _, exists := ulimitNameMapping[parts[0]]; !exists {\n\t\treturn nil, fmt.Errorf(\"invalid ulimit type: %s\", parts[0])\n\t}\n\n\tlimitVals := strings.SplitN(parts[1], \":\", 2)\n\tif len(limitVals) > 2 {\n\t\treturn nil, fmt.Errorf(\"too many limit value arguments - %s, can only have up to two, `soft[:hard]`\", parts[1])\n\t}\n\n\tsoft, err := strconv.ParseInt(limitVals[0], 10, 64)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thard := soft // in case no hard was set\n\tif len(limitVals) == 2 {\n\t\thard, err = strconv.ParseInt(limitVals[1], 10, 64)\n\t}\n\tif soft > hard {\n\t\treturn nil, fmt.Errorf(\"ulimit soft limit must be less than or equal to hard limit: %d > %d\", soft, hard)\n\t}\n\n\treturn &Ulimit{Name: parts[0], Soft: soft, Hard: hard}, nil\n}\n\n// GetRlimit returns the RLimit corresponding to Ulimit.\nfunc (u *Ulimit) GetRlimit() (*Rlimit, error) {\n\tt, exists := ulimitNameMapping[u.Name]\n\tif !exists {\n\t\treturn nil, fmt.Errorf(\"invalid ulimit name %s\", u.Name)\n\t}\n\n\treturn &Rlimit{Type: t, Soft: uint64(u.Soft), Hard: uint64(u.Hard)}, nil\n}\n\nfunc (u *Ulimit) String() string {\n\treturn fmt.Sprintf(\"%s=%d:%d\", u.Name, u.Soft, u.Hard)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/.dockerignore",
    "content": "bundles/\n**/*.test\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/.gitignore",
    "content": ".DS_Store\n/main/main\n/docker-compose*\n/libcompose-cli*\n*.log\n*.swp\nbundles\n.gopath\n.idea\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/CHANGELOG.md",
    "content": "Changelog\n==========\n\n# 0.0.0 (2015-07-09)\n\n## Features\n- We started\n- No where to go but up from here\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/CONTRIBUTING.md",
    "content": "# Contributing to libcompose\n\nWant to hack on Libcompose? Awesome! Here are instructions to get you\nstarted.\n\nLibcompose is part of the [Docker](https://www.docker.com) project, and\nfollows the same rules and principles. If you're already familiar with\nthe way Docker does things, you'll feel right at home.\n\nOtherwise, go read Docker's\n[contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md),\n[issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md),\n[review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and\n[branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md).\n\nHappy hacking!\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/Dockerfile",
    "content": "# This file describes the standard way to build libcompose, using docker\nFROM golang:1.6.2\n\n\n# virtualenv is necessary to run acceptance tests\nRUN apt-get update && \\\n    apt-get install -y iptables build-essential --no-install-recommends && \\\n    apt-get install -y python-setuptools && \\\n    easy_install pip && pip install virtualenv\n\n# Install build dependencies\nRUN go get github.com/aktau/github-release && \\\n    go get golang.org/x/tools/cmd/cover && \\\n    go get github.com/golang/lint/golint\n\n# Which docker version to test on and what default one to use\nENV DOCKER_VERSIONS 1.9.1 1.10.3 1.11.0\nENV DEFAULT_DOCKER_VERSION 1.10.3\n\n# Download docker\nRUN set -e; \\\n    for v in $(echo ${DOCKER_VERSIONS} | cut -f1); do \\\n        if test \"${v}\" = \"1.9.1\" || test \"${v}\" = \"1.10.3\"; then \\\n           mkdir -p /usr/local/bin/docker-${v}/; \\\n           curl https://get.docker.com/builds/Linux/x86_64/docker-${v} -o /usr/local/bin/docker-${v}/docker; \\\n           chmod +x /usr/local/bin/docker-${v}/docker; \\\n        else \\\n             curl https://get.docker.com/builds/Linux/x86_64/docker-${v}.tgz -o docker-${v}.tgz; \\\n             tar xzf docker-${v}.tgz -C /usr/local/bin/; \\\n             mv /usr/local/bin/docker /usr/local/bin/docker-${v}; \\\n             rm docker-${v}.tgz; \\\n        fi \\\n    done\n\n# Set the default Docker to be run\nRUN ln -s /usr/local/bin/docker-${DEFAULT_DOCKER_VERSION} /usr/local/bin/docker\n\nWORKDIR /go/src/github.com/docker/libcompose\n\n# Compose COMMIT for acceptance test version, update that commit when\n# you want to update the acceptance test version to support.\nENV COMPOSE_COMMIT e2cb7b0237085415ce48900309a61c73b5938520\nRUN virtualenv venv && \\\n    git clone https://github.com/docker/compose.git venv/compose && \\\n    cd venv/compose && \\\n    git checkout -q \"$COMPOSE_COMMIT\" && \\\n    ../bin/pip install \\\n               -r requirements.txt \\\n               -r requirements-dev.txt\n\nENV COMPOSE_BINARY /go/src/github.com/docker/libcompose/libcompose-cli\nENV USER root\n\n# Wrap all commands in the \"docker-in-docker\" script to allow nested containers\nENTRYPOINT [\"script/dind\"]\n\nCOPY . /go/src/github.com/docker/libcompose\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/Jenkinsfile",
    "content": "\nwrappedNode(label: 'linux && x86_64') {\n  deleteDir()\n  checkout scm\n  def image\n  try {\n    stage \"build image\"\n    image = docker.build(\"dockerbuildbot/libcompose:${gitCommit()}\")\n\n    stage \"validate\"\n    makeTask(image, \"validate\")\n\n    stage \"test\"\n    makeTask(image, \"test\", [\"TESTVERBOSE=1\", \"DAEMON_VERSION=all\"])\n\n    stage \"build\"\n    makeTask(image, \"cross-binary\")\n  } finally {\n    try { archive \"bundles\" } catch (Exception exc) {}\n    if (image) { sh \"docker rmi ${image.id} ||:\" }\n  }\n}\n\ndef makeTask(image, task, envVars=null) {\n  // could send in the full list of envVars for each call or provide default env vars like this:\n  withEnv((envVars ?: []) + [\"LIBCOMPOSE_IMAGE=${image.id}\"]) { // would need `def image` at top level of file instead of in the nested block\n    withChownWorkspace {\n      timeout(60) {\n        sh \"make -e ${task}\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/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   Copyright 2015 Docker, Inc.\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/docker/libcompose/MAINTAINERS",
    "content": "# Libcompose maintainers file\n#\n# This file describes who runs the docker/libcompose project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n\t[Org.\"Core maintainers\"]\n\t\tpeople = [\n\t\t\t\"aanand\",\n\t\t\t\"aduermael\",\n\t\t\t\"dnephin\",\n\t\t\t\"ibuildthecloud\",\n\t\t\t\"gdevillele\",\n\t\t\t\"vdemeester\",\n\t\t]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\n\t[people.aanand]\n\tName = \"Aanand Prasad\"\n\tEmail = \"aanand@docker.com\"\n\tGitHub = \"aanand\"\n\n\t[people.aduermael]\n\tName = \"Adrien Duermael\"\n\tEmail = \"adrien@docker.com\"\n\tGitHub = \"aduermael\"\n\n\t[people.dnephin]\n\tName = \"Daniel Nephin\"\n\tEmail = \"dnephin@gmail.com\"\n\tGitHub = \"dnephin\"\n\n\t[people.ibuildthecloud]\n\tName = \"Darren Shepherd\"\n\tEmail = \"darren@rancher.com\"\n\tGitHub = \"ibuildthecloud\"\n\n\t[people.gdevillele]\n\tName = \"Gaetan de Villele\"\n\tEmail = \"gaetan@docker.com\"\n\tGitHub = \"gdevillele\"\n\n\t[people.vdemeester]\n\tName = \"Vincent Demeester\"\n\tEmail = \"vincent@sbr.pm\"\n\tGitHub = \"vdemeester\"\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/Makefile",
    "content": ".PHONY: all test validate-dco validate-gofmt validate build\n\nLIBCOMPOSE_ENVS := \\\n\t-e OS_PLATFORM_ARG \\\n\t-e OS_ARCH_ARG \\\n\t-e DOCKER_TEST_HOST \\\n\t-e TESTDIRS \\\n\t-e TESTFLAGS \\\n\t-e TESTVERBOSE\n\n# (default to no bind mount if DOCKER_HOST is set)\nBIND_DIR := $(if $(DOCKER_HOST),,bundles)\nLIBCOMPOSE_MOUNT := $(if $(BIND_DIR),-v \"$(CURDIR)/$(BIND_DIR):/go/src/github.com/docker/libcompose/$(BIND_DIR)\")\n\nGIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)\nLIBCOMPOSE_IMAGE := libcompose-dev$(if $(GIT_BRANCH),:$(GIT_BRANCH))\n\nDAEMON_VERSION := $(if $(DAEMON_VERSION),$(DAEMON_VERSION),\"default\")\nTTY := $(shell [ -t 0 ] && echo \"-t\")\nDOCKER_RUN_LIBCOMPOSE := docker run --rm -i $(TTY) --privileged -e DAEMON_VERSION=\"$(DAEMON_VERSION)\" $(LIBCOMPOSE_ENVS) $(LIBCOMPOSE_MOUNT) \"$(LIBCOMPOSE_IMAGE)\"\n\ndefault: binary\n\nall: build ## validate all checks, build linux binary, run all tests\\ncross build non-linux binaries\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh\n\nbinary: build ## build the linux binary\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh binary\n\ncross-binary: build ## cross build the non linux binaries (windows, darwin)\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh cross-binary\n\ntest: build ## run the unit, integration and acceptance tests\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh binary test-unit test-integration test-acceptance\n\ntest-unit: build ## run the unit tests\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh test-unit\n\ntest-integration: build ## run the integration tests\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh binary test-integration\n\ntest-acceptance: build ## run the acceptance tests\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh binary test-acceptance\n\nvalidate: build ## validate DCO, git conflicts marks, gofmt, golint and go vet\n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh validate-dco validate-git-marks validate-gofmt validate-lint validate-vet\n\nshell: build ## start a shell inside the build env\n\t$(DOCKER_RUN_LIBCOMPOSE) bash\n\n# Build the docker image, should be prior almost any other goals\nbuild: bundles\n\tdocker build -t \"$(LIBCOMPOSE_IMAGE)\" .\n\nbundles:\n\tmkdir bundles\n\nclean: \n\t$(DOCKER_RUN_LIBCOMPOSE) ./script/make.sh clean\n\nhelp: ## this help\n\t@awk 'BEGIN {FS = \":.*?## \"} /^[a-zA-Z_-]+:.*?## / {sub(\"\\\\\\\\n\",sprintf(\"\\n%22c\",\" \"), $$2);printf \"\\033[36m%-20s\\033[0m %s\\n\", $$1, $$2}' $(MAKEFILE_LIST)\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/README.md",
    "content": "# libcompose\n\n[![GoDoc](https://godoc.org/github.com/docker/libcompose?status.png)](https://godoc.org/github.com/docker/libcompose)\n[![Build Status](https://jenkins.dockerproject.org/job/docker/job/libcompose/branch/master/badge/icon)](https://jenkins.dockerproject.org/job/docker/job/libcompose/branch/master/)\n\nA Go library for Docker Compose. It does everything the command-line tool does, but from within Go -- read Compose files, start them, scale them, etc.\n\n**Note: This is experimental and not intended to replace the [Docker Compose](https://github.com/docker/compose) command-line tool. If you're looking to use Compose, head over to the [Compose installation instructions](http://docs.docker.com/compose/install/) to get started with it.**\n\n```go\npackage main\n\nimport (\n\t\"log\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/libcompose/docker\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/options\"\n)\n\nfunc main() {\n\tproject, err := docker.NewProject(&docker.Context{\n\t\tContext: project.Context{\n\t\t\tComposeFiles: []string{\"docker-compose.yml\"},\n\t\t\tProjectName:  \"my-compose\",\n\t\t},\n\t}, nil)\n\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\terr = project.Up(context.Background(), options.Up{})\n\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n```\n\n## Building\n\nYou need either [Docker](http://github.com/docker/docker) and `make`,\nor `go` in order to build libcompose.\n\n### Building with `docker`\n\nYou need Docker and ``make`` and then run the ``binary`` target. This\nwill create binary for all platform in the `bundles` folder. \n\n```bash\n$ make binary\ndocker build -t \"libcompose-dev:refactor-makefile\" .\n# […]\n---> Making bundle: binary (in .)\nNumber of parallel builds: 4\n\n-->      darwin/386: github.com/docker/libcompose/cli/main\n-->    darwin/amd64: github.com/docker/libcompose/cli/main\n-->       linux/386: github.com/docker/libcompose/cli/main\n-->     linux/amd64: github.com/docker/libcompose/cli/main\n-->       linux/arm: github.com/docker/libcompose/cli/main\n-->     windows/386: github.com/docker/libcompose/cli/main\n-->   windows/amd64: github.com/docker/libcompose/cli/main\n\n$ ls bundles\nlibcompose-cli_darwin-386*    libcompose-cli_linux-amd64*      libcompose-cli_windows-amd64.exe*\nlibcompose-cli_darwin-amd64*  libcompose-cli_linux-arm*\nlibcompose-cli_linux-386*     libcompose-cli_windows-386.exe*\n```\n\n\n### Building with `go`\n\n- You need `go` v1.5 or greater\n- If you are not using `go` v1.6, you need to set export `GO15VENDOREXPERIMENT=1` environment variable\n- If your working copy is not in your `GOPATH`, you need to set it\naccordingly.\n\n```bash\n$ go generate\n# Generate some stuff\n$ go build -o libcompose ./cli/main\n```\n\n\n## Running\n\nA partial implementation of the libcompose-cli CLI is also implemented in Go. The primary purpose of this code is so one can easily test the behavior of libcompose.\n\nRun one of these:\n\n```\nlibcompose-cli_darwin-386\nlibcompose-cli_linux-amd64\nlibcompose-cli_windows-amd64.exe\nlibcompose-cli_darwin-amd64\nlibcompose-cli_linux-arm\nlibcompose-cli_linux-386\nlibcompose-cli_windows-386.exe\n```\n\n## Tests (unit & integration)\n\n\nYou can run unit tests using the `test-unit` target and the\nintegration test using the `test-integration` target. If you don't use\nDocker and `make` to build `libcompose`, you can use `go test` and the\nfollowing scripts : `script/test-unit` and `script/test-integration`.\n\n```bash\n$ make test-unit\ndocker build -t \"libcompose-dev:refactor-makefile\" .\n#[…]\n---> Making bundle: test-unit (in .)\n+ go test -cover -coverprofile=cover.out ./docker\nok      github.com/docker/libcompose/docker     0.019s  coverage: 4.6% of statements\n+ go test -cover -coverprofile=cover.out ./project\nok      github.com/docker/libcompose/project    0.010s  coverage: 8.4% of statements\n+ go test -cover -coverprofile=cover.out ./version\nok      github.com/docker/libcompose/version    0.002s  coverage: 0.0% of statements\n\nTest success\n```\n\n\n## Current status\n\nThe project is still being kickstarted... But it does a lot.  Please try it out and help us find bugs.\n\n## Contributing\n\nWant to hack on libcompose? [Docker's contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) apply.\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/app/app.go",
    "content": "package app\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/signal\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// ProjectAction is an adapter to allow the use of ordinary functions as libcompose actions.\n// Any function that has the appropriate signature can be register as an action on a codegansta/cli command.\n//\n// cli.Command{\n//\t\tName:   \"ps\",\n//\t\tUsage:  \"List containers\",\n//\t\tAction: app.WithProject(factory, app.ProjectPs),\n//\t}\ntype ProjectAction func(project project.APIProject, c *cli.Context) error\n\n// BeforeApp is an action that is executed before any cli command.\nfunc BeforeApp(c *cli.Context) error {\n\tif c.GlobalBool(\"verbose\") {\n\t\tlogrus.SetLevel(logrus.DebugLevel)\n\t}\n\tlogrus.Warning(\"Note: This is an experimental alternate implementation of the Compose CLI (https://github.com/docker/compose)\")\n\treturn nil\n}\n\n// WithProject is a helper function to create a cli.Command action with a ProjectFactory.\nfunc WithProject(factory ProjectFactory, action ProjectAction) func(context *cli.Context) error {\n\treturn func(context *cli.Context) error {\n\t\tp, err := factory.Create(context)\n\t\tif err != nil {\n\t\t\tlogrus.Fatalf(\"Failed to read project: %v\", err)\n\t\t}\n\t\treturn action(p, context)\n\t}\n}\n\n// ProjectPs lists the containers.\nfunc ProjectPs(p project.APIProject, c *cli.Context) error {\n\tqFlag := c.Bool(\"q\")\n\tallInfo, err := p.Ps(context.Background(), qFlag, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\tos.Stdout.WriteString(allInfo.String(!qFlag))\n\treturn nil\n}\n\n// ProjectPort prints the public port for a port binding.\nfunc ProjectPort(p project.APIProject, c *cli.Context) error {\n\tif len(c.Args()) != 2 {\n\t\treturn cli.NewExitError(\"Please pass arguments in the form: SERVICE PORT\", 1)\n\t}\n\n\tindex := c.Int(\"index\")\n\tprotocol := c.String(\"protocol\")\n\tserviceName := c.Args()[0]\n\tprivatePort := c.Args()[1]\n\n\tport, err := p.Port(context.Background(), index, protocol, serviceName, privatePort)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\tfmt.Println(port)\n\treturn nil\n}\n\n// ProjectStop stops all services.\nfunc ProjectStop(p project.APIProject, c *cli.Context) error {\n\terr := p.Stop(context.Background(), c.Int(\"timeout\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectDown brings all services down (stops and clean containers).\nfunc ProjectDown(p project.APIProject, c *cli.Context) error {\n\toptions := options.Down{\n\t\tRemoveVolume:  c.Bool(\"volumes\"),\n\t\tRemoveImages:  options.ImageType(c.String(\"rmi\")),\n\t\tRemoveOrphans: c.Bool(\"remove-orphans\"),\n\t}\n\terr := p.Down(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectBuild builds or rebuilds services.\nfunc ProjectBuild(p project.APIProject, c *cli.Context) error {\n\tconfig := options.Build{\n\t\tNoCache:     c.Bool(\"no-cache\"),\n\t\tForceRemove: c.Bool(\"force-rm\"),\n\t\tPull:        c.Bool(\"pull\"),\n\t}\n\terr := p.Build(context.Background(), config, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectCreate creates all services but do not start them.\nfunc ProjectCreate(p project.APIProject, c *cli.Context) error {\n\toptions := options.Create{\n\t\tNoRecreate:    c.Bool(\"no-recreate\"),\n\t\tForceRecreate: c.Bool(\"force-recreate\"),\n\t\tNoBuild:       c.Bool(\"no-build\"),\n\t}\n\terr := p.Create(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectUp brings all services up.\nfunc ProjectUp(p project.APIProject, c *cli.Context) error {\n\toptions := options.Up{\n\t\tCreate: options.Create{\n\t\t\tNoRecreate:    c.Bool(\"no-recreate\"),\n\t\t\tForceRecreate: c.Bool(\"force-recreate\"),\n\t\t\tNoBuild:       c.Bool(\"no-build\"),\n\t\t},\n\t}\n\tctx, cancelFun := context.WithCancel(context.Background())\n\terr := p.Up(ctx, options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\tif !c.Bool(\"d\") {\n\t\tsignalChan := make(chan os.Signal, 1)\n\t\tcleanupDone := make(chan bool)\n\t\tsignal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)\n\t\terrChan := make(chan error)\n\t\tgo func() {\n\t\t\terrChan <- p.Log(ctx, true, c.Args()...)\n\t\t}()\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-signalChan:\n\t\t\t\tfmt.Printf(\"\\nGracefully stopping...\\n\")\n\t\t\t\tcancelFun()\n\t\t\t\tProjectStop(p, c)\n\t\t\t\tcleanupDone <- true\n\t\t\tcase err := <-errChan:\n\t\t\t\tif err != nil {\n\t\t\t\t\tlogrus.Fatal(err)\n\t\t\t\t}\n\t\t\t\tcleanupDone <- true\n\t\t\t}\n\t\t}()\n\t\t<-cleanupDone\n\t\treturn nil\n\t}\n\treturn nil\n}\n\n// ProjectRun runs a given command within a service's container.\nfunc ProjectRun(p project.APIProject, c *cli.Context) error {\n\tif len(c.Args()) == 1 {\n\t\tlogrus.Fatal(\"No service specified\")\n\t}\n\n\tserviceName := c.Args()[0]\n\tcommandParts := c.Args()[1:]\n\n\texitCode, err := p.Run(context.Background(), serviceName, commandParts)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn cli.NewExitError(\"\", exitCode)\n}\n\n// ProjectStart starts services.\nfunc ProjectStart(p project.APIProject, c *cli.Context) error {\n\terr := p.Start(context.Background(), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectRestart restarts services.\nfunc ProjectRestart(p project.APIProject, c *cli.Context) error {\n\terr := p.Restart(context.Background(), c.Int(\"timeout\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectLog gets services logs.\nfunc ProjectLog(p project.APIProject, c *cli.Context) error {\n\terr := p.Log(context.Background(), c.Bool(\"follow\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectPull pulls images for services.\nfunc ProjectPull(p project.APIProject, c *cli.Context) error {\n\terr := p.Pull(context.Background(), c.Args()...)\n\tif err != nil && !c.Bool(\"ignore-pull-failures\") {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectDelete deletes services.\nfunc ProjectDelete(p project.APIProject, c *cli.Context) error {\n\toptions := options.Delete{\n\t\tRemoveVolume: c.Bool(\"v\"),\n\t}\n\tif !c.Bool(\"force\") {\n\t\toptions.BeforeDeleteCallback = func(stoppedContainers []string) bool {\n\t\t\tfmt.Printf(\"Going to remove %v\\nAre you sure? [yN]\\n\", strings.Join(stoppedContainers, \", \"))\n\t\t\tvar answer string\n\t\t\t_, err := fmt.Scanln(&answer)\n\t\t\tif err != nil {\n\t\t\t\tlogrus.Error(err)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif answer != \"y\" && answer != \"Y\" {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t}\n\terr := p.Delete(context.Background(), options, c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectKill forces stop service containers.\nfunc ProjectKill(p project.APIProject, c *cli.Context) error {\n\terr := p.Kill(context.Background(), c.String(\"signal\"), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectPause pauses service containers.\nfunc ProjectPause(p project.APIProject, c *cli.Context) error {\n\terr := p.Pause(context.Background(), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectUnpause unpauses service containers.\nfunc ProjectUnpause(p project.APIProject, c *cli.Context) error {\n\terr := p.Unpause(context.Background(), c.Args()...)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n\n// ProjectScale scales services.\nfunc ProjectScale(p project.APIProject, c *cli.Context) error {\n\tservicesScale := map[string]int{}\n\tfor _, arg := range c.Args() {\n\t\tkv := strings.SplitN(arg, \"=\", 2)\n\t\tif len(kv) != 2 {\n\t\t\treturn cli.NewExitError(fmt.Sprintf(\"Invalid scale parameter: %s\", arg), 2)\n\t\t}\n\n\t\tname := kv[0]\n\n\t\tcount, err := strconv.Atoi(kv[1])\n\t\tif err != nil {\n\t\t\treturn cli.NewExitError(fmt.Sprintf(\"Invalid scale parameter: %v\", err), 2)\n\t\t}\n\n\t\tservicesScale[name] = count\n\t}\n\n\terr := p.Scale(context.Background(), c.Int(\"timeout\"), servicesScale)\n\tif err != nil {\n\t\treturn cli.NewExitError(err.Error(), 1)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/app/types.go",
    "content": "package app\n\nimport (\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/project\"\n)\n\n// ProjectFactory is an interface that helps creating libcompose project.\ntype ProjectFactory interface {\n\t// Create creates a libcompose project from the command line options (codegangsta cli context).\n\tCreate(c *cli.Context) (project.APIProject, error)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/app/version.go",
    "content": "package app\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"text/template\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/version\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar versionTemplate = `Version:      {{.Version}} ({{.GitCommit}})\nGo version:   {{.GoVersion}}\nBuilt:        {{.BuildTime}}\nOS/Arch:      {{.Os}}/{{.Arch}}`\n\n// Version prints the libcompose version number and additionnal informations.\nfunc Version(c *cli.Context) {\n\tif c.Bool(\"short\") {\n\t\tfmt.Println(version.VERSION)\n\t\treturn\n\t}\n\n\ttmpl, err := template.New(\"\").Parse(versionTemplate)\n\tif err != nil {\n\t\tlogrus.Fatal(err)\n\t}\n\n\tv := struct {\n\t\tVersion   string\n\t\tGitCommit string\n\t\tGoVersion string\n\t\tBuildTime string\n\t\tOs        string\n\t\tArch      string\n\t}{\n\t\tVersion:   version.VERSION,\n\t\tGitCommit: version.GITCOMMIT,\n\t\tGoVersion: runtime.Version(),\n\t\tBuildTime: version.BUILDTIME,\n\t\tOs:        runtime.GOOS,\n\t\tArch:      runtime.GOARCH,\n\t}\n\n\tif err := tmpl.Execute(os.Stdout, v); err != nil {\n\t\tlogrus.Fatal(err)\n\t}\n\tfmt.Printf(\"\\n\")\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/docker/app/commands.go",
    "content": "package app\n\nimport (\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/docker\"\n\t\"github.com/docker/libcompose/docker/client\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// DockerClientFlags defines the flags that are specific to the docker client,\n// like configdir or tls related flags.\nfunc DockerClientFlags() []cli.Flag {\n\treturn []cli.Flag{\n\t\tcli.BoolFlag{\n\t\t\tName:  \"tls\",\n\t\t\tUsage: \"Use TLS; implied by --tlsverify\",\n\t\t},\n\t\tcli.BoolFlag{\n\t\t\tName:   \"tlsverify\",\n\t\t\tUsage:  \"Use TLS and verify the remote\",\n\t\t\tEnvVar: \"DOCKER_TLS_VERIFY\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"tlscacert\",\n\t\t\tUsage: \"Trust certs signed only by this CA\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"tlscert\",\n\t\t\tUsage: \"Path to TLS certificate file\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"tlskey\",\n\t\t\tUsage: \"Path to TLS key file\",\n\t\t},\n\t\tcli.StringFlag{\n\t\t\tName:  \"configdir\",\n\t\t\tUsage: \"Path to docker config dir, default ${HOME}/.docker\",\n\t\t},\n\t}\n}\n\n// Populate updates the specified docker context based on command line arguments and subcommands.\nfunc Populate(context *docker.Context, c *cli.Context) {\n\tcontext.ConfigDir = c.String(\"configdir\")\n\n\topts := client.Options{}\n\topts.TLS = c.GlobalBool(\"tls\")\n\topts.TLSVerify = c.GlobalBool(\"tlsverify\")\n\topts.TLSOptions.CAFile = c.GlobalString(\"tlscacert\")\n\topts.TLSOptions.CertFile = c.GlobalString(\"tlscert\")\n\topts.TLSOptions.KeyFile = c.GlobalString(\"tlskey\")\n\n\tclientFactory, err := project.NewDefaultClientFactory(opts)\n\tif err != nil {\n\t\tlogrus.Fatalf(\"Failed to construct Docker client: %v\", err)\n\t}\n\n\tcontext.ClientFactory = clientFactory\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/docker/app/factory.go",
    "content": "package app\n\nimport (\n\t\"os\"\n\n\t\"github.com/codegangsta/cli\"\n\t\"github.com/docker/libcompose/cli/logger\"\n\t\"github.com/docker/libcompose/docker\"\n\t\"github.com/docker/libcompose/project\"\n)\n\n// ProjectFactory is a struct that holds the app.ProjectFactory implementation.\ntype ProjectFactory struct {\n}\n\n// Create implements ProjectFactory.Create using docker client.\nfunc (p *ProjectFactory) Create(c *cli.Context) (project.APIProject, error) {\n\tcontext := &docker.Context{}\n\tcontext.LoggerFactory = logger.NewColorLoggerFactory()\n\tPopulate(context, c)\n\n\tcontext.ComposeFiles = c.GlobalStringSlice(\"file\")\n\n\tif len(context.ComposeFiles) == 0 {\n\t\tcontext.ComposeFiles = []string{\"docker-compose.yml\"}\n\t\tif _, err := os.Stat(\"docker-compose.override.yml\"); err == nil {\n\t\t\tcontext.ComposeFiles = append(context.ComposeFiles, \"docker-compose.override.yml\")\n\t\t}\n\t}\n\n\tcontext.ProjectName = c.GlobalString(\"project-name\")\n\n\treturn docker.NewProject(context, nil)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/logger/color_logger.go",
    "content": "package logger\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/docker/libcompose/logger\"\n\t\"golang.org/x/crypto/ssh/terminal\"\n)\n\n// ColorLoggerFactory implements logger.Factory interface using ColorLogger.\ntype ColorLoggerFactory struct {\n\tmaxLength int\n\ttty       bool\n}\n\n// ColorLogger implements logger.Logger interface with color support.\ntype ColorLogger struct {\n\tname        string\n\tcolorPrefix string\n\tfactory     *ColorLoggerFactory\n}\n\n// NewColorLoggerFactory creates a new ColorLoggerFactory.\nfunc NewColorLoggerFactory() *ColorLoggerFactory {\n\treturn &ColorLoggerFactory{\n\t\ttty: terminal.IsTerminal(int(os.Stdout.Fd())),\n\t}\n}\n\n// Create implements logger.Factory.Create.\nfunc (c *ColorLoggerFactory) Create(name string) logger.Logger {\n\tif c.maxLength < len(name) {\n\t\tc.maxLength = len(name)\n\t}\n\n\treturn &ColorLogger{\n\t\tname:        name,\n\t\tfactory:     c,\n\t\tcolorPrefix: <-colorPrefix,\n\t}\n}\n\n// Out implements logger.Logger.Out.\nfunc (c *ColorLogger) Out(bytes []byte) {\n\tif len(bytes) == 0 {\n\t\treturn\n\t}\n\tlogFmt, name := c.getLogFmt()\n\tmessage := fmt.Sprintf(logFmt, name, string(bytes))\n\tfmt.Print(message)\n}\n\n// Err implements logger.Logger.Err.\nfunc (c *ColorLogger) Err(bytes []byte) {\n\tif len(bytes) == 0 {\n\t\treturn\n\t}\n\tlogFmt, name := c.getLogFmt()\n\tmessage := fmt.Sprintf(logFmt, name, string(bytes))\n\tfmt.Fprint(os.Stderr, message)\n}\n\nfunc (c *ColorLogger) getLogFmt() (string, string) {\n\tpad := c.factory.maxLength\n\n\tlogFmt := \"%s | %s\"\n\tif c.factory.tty {\n\t\tlogFmt = c.colorPrefix + \" %s\"\n\t}\n\n\tname := fmt.Sprintf(\"%-\"+strconv.Itoa(pad)+\"s\", c.name)\n\n\treturn logFmt, name\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/cli/logger/colors.go",
    "content": "package logger\n\nimport \"fmt\"\n\nvar (\n\tcolorPrefix = make(chan string)\n)\n\nfunc generateColors() {\n\ti := 0\n\tcolorOrder := []string{\n\t\t\"36\",   // cyan\n\t\t\"33\",   // yellow\n\t\t\"32\",   // green\n\t\t\"35\",   // magenta\n\t\t\"31\",   // red\n\t\t\"34\",   // blue\n\t\t\"36;1\", // intense cyan\n\t\t\"33;1\", // intense yellow\n\t\t\"32;1\", // intense green\n\t\t\"35;1\", // intense magenta\n\t\t\"31;1\", // intense red\n\t\t\"34;1\", // intense blue\n\t}\n\n\tfor {\n\t\tcolorPrefix <- fmt.Sprintf(\"\\033[%sm%%s |\\033[0m\", colorOrder[i])\n\t\ti = (i + 1) % len(colorOrder)\n\t}\n}\n\nfunc init() {\n\tgo generateColors()\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/convert.go",
    "content": "package config\n\nimport \"github.com/docker/libcompose/utils\"\n\n// ConvertServices converts a set of v1 service configs to v2 service configs\nfunc ConvertServices(v1Services map[string]*ServiceConfigV1) (map[string]*ServiceConfig, error) {\n\tv2Services := make(map[string]*ServiceConfig)\n\treplacementFields := make(map[string]*ServiceConfig)\n\n\tfor name, service := range v1Services {\n\t\treplacementFields[name] = &ServiceConfig{\n\t\t\tBuild: Build{\n\t\t\t\tContext:    service.Build,\n\t\t\t\tDockerfile: service.Dockerfile,\n\t\t\t},\n\t\t\tLogging: Log{\n\t\t\t\tDriver:  service.LogDriver,\n\t\t\t\tOptions: service.LogOpt,\n\t\t\t},\n\t\t\tNetworkMode: service.Net,\n\t\t}\n\n\t\tv1Services[name].Build = \"\"\n\t\tv1Services[name].Dockerfile = \"\"\n\t\tv1Services[name].LogDriver = \"\"\n\t\tv1Services[name].LogOpt = nil\n\t\tv1Services[name].Net = \"\"\n\t}\n\n\tif err := utils.Convert(v1Services, &v2Services); err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor name := range v2Services {\n\t\tv2Services[name].Build = replacementFields[name].Build\n\t\tv2Services[name].Logging = replacementFields[name].Logging\n\t\tv2Services[name].NetworkMode = replacementFields[name].NetworkMode\n\t}\n\n\treturn v2Services, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/hash.go",
    "content": "package config\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"github.com/docker/libcompose/yaml\"\n)\n\n// GetServiceHash computes and returns a hash that will identify a service.\n// This hash will be then used to detect if the service definition/configuration\n// have changed and needs to be recreated.\nfunc GetServiceHash(name string, config *ServiceConfig) string {\n\thash := sha1.New()\n\n\tio.WriteString(hash, name)\n\n\t//Get values of Service through reflection\n\tval := reflect.ValueOf(config).Elem()\n\n\t//Create slice to sort the keys in Service Config, which allow constant hash ordering\n\tserviceKeys := []string{}\n\n\t//Create a data structure of map of values keyed by a string\n\tunsortedKeyValue := make(map[string]interface{})\n\n\t//Get all keys and values in Service Configuration\n\tfor i := 0; i < val.NumField(); i++ {\n\t\tvalueField := val.Field(i)\n\t\tkeyField := val.Type().Field(i)\n\n\t\tserviceKeys = append(serviceKeys, keyField.Name)\n\t\tunsortedKeyValue[keyField.Name] = valueField.Interface()\n\t}\n\n\t//Sort serviceKeys alphabetically\n\tsort.Strings(serviceKeys)\n\n\t//Go through keys and write hash\n\tfor _, serviceKey := range serviceKeys {\n\t\tserviceValue := unsortedKeyValue[serviceKey]\n\n\t\tio.WriteString(hash, fmt.Sprintf(\"\\n  %v: \", serviceKey))\n\n\t\tswitch s := serviceValue.(type) {\n\t\tcase yaml.SliceorMap:\n\t\t\tsliceKeys := []string{}\n\t\t\tfor lkey := range s {\n\t\t\t\tsliceKeys = append(sliceKeys, lkey)\n\t\t\t}\n\t\t\tsort.Strings(sliceKeys)\n\n\t\t\tfor _, sliceKey := range sliceKeys {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s=%v, \", sliceKey, s[sliceKey]))\n\t\t\t}\n\t\tcase yaml.MaporEqualSlice:\n\t\t\tfor _, sliceKey := range s {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tcase yaml.MaporColonSlice:\n\t\t\tfor _, sliceKey := range s {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tcase yaml.MaporSpaceSlice:\n\t\t\tfor _, sliceKey := range s {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tcase yaml.Command:\n\t\t\tfor _, sliceKey := range s {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tcase yaml.Stringorslice:\n\t\t\tsort.Strings(s)\n\n\t\t\tfor _, sliceKey := range s {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tcase []string:\n\t\t\tsliceKeys := s\n\t\t\tsort.Strings(sliceKeys)\n\n\t\t\tfor _, sliceKey := range sliceKeys {\n\t\t\t\tio.WriteString(hash, fmt.Sprintf(\"%s, \", sliceKey))\n\t\t\t}\n\t\tdefault:\n\t\t\tio.WriteString(hash, fmt.Sprintf(\"%v\", serviceValue))\n\t\t}\n\t}\n\n\treturn hex.EncodeToString(hash.Sum(nil))\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/interpolation.go",
    "content": "package config\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc isNum(c uint8) bool {\n\treturn c >= '0' && c <= '9'\n}\n\nfunc validVariableNameChar(c uint8) bool {\n\treturn c == '_' ||\n\t\tc >= 'A' && c <= 'Z' ||\n\t\tc >= 'a' && c <= 'z' ||\n\t\tisNum(c)\n}\n\nfunc parseVariable(line string, pos int, mapping func(string) string) (string, int, bool) {\n\tvar buffer bytes.Buffer\n\n\tfor ; pos < len(line); pos++ {\n\t\tc := line[pos]\n\n\t\tswitch {\n\t\tcase validVariableNameChar(c):\n\t\t\tbuffer.WriteByte(c)\n\t\tdefault:\n\t\t\treturn mapping(buffer.String()), pos - 1, true\n\t\t}\n\t}\n\n\treturn mapping(buffer.String()), pos, true\n}\n\nfunc parseVariableWithBraces(line string, pos int, mapping func(string) string) (string, int, bool) {\n\tvar buffer bytes.Buffer\n\n\tfor ; pos < len(line); pos++ {\n\t\tc := line[pos]\n\n\t\tswitch {\n\t\tcase c == '}':\n\t\t\tbufferString := buffer.String()\n\n\t\t\tif bufferString == \"\" {\n\t\t\t\treturn \"\", 0, false\n\t\t\t}\n\n\t\t\treturn mapping(buffer.String()), pos, true\n\t\tcase validVariableNameChar(c):\n\t\t\tbuffer.WriteByte(c)\n\t\tdefault:\n\t\t\treturn \"\", 0, false\n\t\t}\n\t}\n\n\treturn \"\", 0, false\n}\n\nfunc parseInterpolationExpression(line string, pos int, mapping func(string) string) (string, int, bool) {\n\tc := line[pos]\n\n\tswitch {\n\tcase c == '$':\n\t\treturn \"$\", pos, true\n\tcase c == '{':\n\t\treturn parseVariableWithBraces(line, pos+1, mapping)\n\tcase !isNum(c) && validVariableNameChar(c):\n\t\t// Variables can't start with a number\n\t\treturn parseVariable(line, pos, mapping)\n\tdefault:\n\t\treturn \"\", 0, false\n\t}\n}\n\nfunc parseLine(line string, mapping func(string) string) (string, bool) {\n\tvar buffer bytes.Buffer\n\n\tfor pos := 0; pos < len(line); pos++ {\n\t\tc := line[pos]\n\t\tswitch {\n\t\tcase c == '$':\n\t\t\tvar replaced string\n\t\t\tvar success bool\n\n\t\t\treplaced, pos, success = parseInterpolationExpression(line, pos+1, mapping)\n\n\t\t\tif !success {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\n\t\t\tbuffer.WriteString(replaced)\n\t\tdefault:\n\t\t\tbuffer.WriteByte(c)\n\t\t}\n\t}\n\n\treturn buffer.String(), true\n}\n\nfunc parseConfig(option, service string, data *interface{}, mapping func(string) string) error {\n\tswitch typedData := (*data).(type) {\n\tcase string:\n\t\tvar success bool\n\n\t\t*data, success = parseLine(typedData, mapping)\n\n\t\tif !success {\n\t\t\treturn fmt.Errorf(\"Invalid interpolation format for \\\"%s\\\" option in service \\\"%s\\\": \\\"%s\\\"\", option, service, typedData)\n\t\t}\n\tcase []interface{}:\n\t\tfor k, v := range typedData {\n\t\t\terr := parseConfig(option, service, &v, mapping)\n\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\ttypedData[k] = v\n\t\t}\n\tcase map[interface{}]interface{}:\n\t\tfor k, v := range typedData {\n\t\t\terr := parseConfig(option, service, &v, mapping)\n\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\ttypedData[k] = v\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Interpolate replaces variables in the raw map representation of the project file\nfunc Interpolate(environmentLookup EnvironmentLookup, config *RawServiceMap) error {\n\tfor k, v := range *config {\n\t\tfor k2, v2 := range v {\n\t\t\terr := parseConfig(k2, k, &v2, func(s string) string {\n\t\t\t\tvalues := environmentLookup.Lookup(s, k, nil)\n\n\t\t\t\tif len(values) == 0 {\n\t\t\t\t\tlogrus.Warnf(\"The %s variable is not set. Substituting a blank string.\", s)\n\t\t\t\t\treturn \"\"\n\t\t\t\t}\n\n\t\t\t\t// Use first result if many are given\n\t\t\t\tvalue := values[0]\n\n\t\t\t\t// Environment variables come in key=value format\n\t\t\t\t// Return everything past first '='\n\t\t\t\treturn strings.SplitN(value, \"=\", 2)[1]\n\t\t\t})\n\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t(*config)[k][k2] = v2\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/merge.go",
    "content": "package config\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/docker/docker/pkg/urlutil\"\n)\n\nvar (\n\tnoMerge = []string{\n\t\t\"links\",\n\t\t\"volumes_from\",\n\t}\n\tdefaultParseOptions = ParseOptions{\n\t\tInterpolate: true,\n\t\tValidate:    true,\n\t}\n)\n\n// Merge merges a compose file into an existing set of service configs\nfunc Merge(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, bytes []byte, options *ParseOptions) (map[string]*ServiceConfig, map[string]*VolumeConfig, map[string]*NetworkConfig, error) {\n\tif options == nil {\n\t\toptions = &defaultParseOptions\n\t}\n\n\tvar config Config\n\tif err := yaml.Unmarshal(bytes, &config); err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tvar serviceConfigs map[string]*ServiceConfig\n\tvar volumeConfigs map[string]*VolumeConfig\n\tvar networkConfigs map[string]*NetworkConfig\n\tif config.Version == \"2\" {\n\t\tvar err error\n\t\tserviceConfigs, err = MergeServicesV2(existingServices, environmentLookup, resourceLookup, file, bytes, options)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t\tvolumeConfigs, err = ParseVolumes(bytes)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t\tnetworkConfigs, err = ParseNetworks(bytes)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t} else {\n\t\tserviceConfigsV1, err := MergeServicesV1(existingServices, environmentLookup, resourceLookup, file, bytes, options)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t\tserviceConfigs, err = ConvertServices(serviceConfigsV1)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t}\n\n\tadjustValues(serviceConfigs)\n\n\tif options.Postprocess != nil {\n\t\tvar err error\n\t\tserviceConfigs, err = options.Postprocess(serviceConfigs)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t}\n\n\treturn serviceConfigs, volumeConfigs, networkConfigs, nil\n}\n\nfunc adjustValues(configs map[string]*ServiceConfig) {\n\t// yaml parser turns \"no\" into \"false\" but that is not valid for a restart policy\n\tfor _, v := range configs {\n\t\tif v.Restart == \"false\" {\n\t\t\tv.Restart = \"no\"\n\t\t}\n\t}\n}\n\nfunc readEnvFile(resourceLookup ResourceLookup, inFile string, serviceData RawService) (RawService, error) {\n\tif _, ok := serviceData[\"env_file\"]; !ok {\n\t\treturn serviceData, nil\n\t}\n\tenvFiles := serviceData[\"env_file\"].([]interface{})\n\tif len(envFiles) == 0 {\n\t\treturn serviceData, nil\n\t}\n\n\tif resourceLookup == nil {\n\t\treturn nil, fmt.Errorf(\"Can not use env_file in file %s no mechanism provided to load files\", inFile)\n\t}\n\n\tvar vars []interface{}\n\tif _, ok := serviceData[\"environment\"]; ok {\n\t\tvars = serviceData[\"environment\"].([]interface{})\n\t}\n\n\tfor i := len(envFiles) - 1; i >= 0; i-- {\n\t\tenvFile := envFiles[i].(string)\n\t\tcontent, _, err := resourceLookup.Lookup(envFile, inFile)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tscanner := bufio.NewScanner(bytes.NewBuffer(content))\n\t\tfor scanner.Scan() {\n\t\t\tline := strings.TrimSpace(scanner.Text())\n\t\t\tkey := strings.SplitAfter(line, \"=\")[0]\n\n\t\t\tfound := false\n\t\t\tfor _, v := range vars {\n\t\t\t\tif strings.HasPrefix(v.(string), key) {\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !found {\n\t\t\t\tvars = append(vars, line)\n\t\t\t}\n\t\t}\n\n\t\tif scanner.Err() != nil {\n\t\t\treturn nil, scanner.Err()\n\t\t}\n\t}\n\n\tserviceData[\"environment\"] = vars\n\n\tdelete(serviceData, \"env_file\")\n\n\treturn serviceData, nil\n}\n\nfunc mergeConfig(baseService, serviceData RawService) RawService {\n\tfor k, v := range serviceData {\n\t\t// Image and build are mutually exclusive in merge\n\t\tif k == \"image\" {\n\t\t\tdelete(baseService, \"build\")\n\t\t} else if k == \"build\" {\n\t\t\tdelete(baseService, \"image\")\n\t\t}\n\t\texisting, ok := baseService[k]\n\t\tif ok {\n\t\t\tbaseService[k] = merge(existing, v)\n\t\t} else {\n\t\t\tbaseService[k] = v\n\t\t}\n\t}\n\n\treturn baseService\n}\n\n// IsValidRemote checks if the specified string is a valid remote (for builds)\nfunc IsValidRemote(remote string) bool {\n\treturn urlutil.IsGitURL(remote) || urlutil.IsURL(remote)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/merge_v1.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/docker/libcompose/utils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// MergeServicesV1 merges a v1 compose file into an existing set of service configs\nfunc MergeServicesV1(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, bytes []byte, options *ParseOptions) (map[string]*ServiceConfigV1, error) {\n\tdatas := make(RawServiceMap)\n\tif err := yaml.Unmarshal(bytes, &datas); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif options.Interpolate {\n\t\tif err := Interpolate(environmentLookup, &datas); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif options.Preprocess != nil {\n\t\tvar err error\n\t\tdatas, err = options.Preprocess(datas)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif options.Validate {\n\t\tif err := validate(datas); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor name, data := range datas {\n\t\tdata, err := parseV1(resourceLookup, environmentLookup, file, data, datas, options)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to parse service %s: %v\", name, err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif serviceConfig, ok := existingServices.Get(name); ok {\n\t\t\tvar rawExistingService RawService\n\t\t\tif err := utils.Convert(serviceConfig, &rawExistingService); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tdata = mergeConfig(rawExistingService, data)\n\t\t}\n\n\t\tdatas[name] = data\n\t}\n\n\tif options.Validate {\n\t\tfor name, data := range datas {\n\t\t\terr := validateServiceConstraints(data, name)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\tserviceConfigs := make(map[string]*ServiceConfigV1)\n\tif err := utils.Convert(datas, &serviceConfigs); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn serviceConfigs, nil\n}\n\nfunc parseV1(resourceLookup ResourceLookup, environmentLookup EnvironmentLookup, inFile string, serviceData RawService, datas RawServiceMap, options *ParseOptions) (RawService, error) {\n\tserviceData, err := readEnvFile(resourceLookup, inFile, serviceData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tserviceData = resolveContextV1(inFile, serviceData)\n\n\tvalue, ok := serviceData[\"extends\"]\n\tif !ok {\n\t\treturn serviceData, nil\n\t}\n\n\tmapValue, ok := value.(map[interface{}]interface{})\n\tif !ok {\n\t\treturn serviceData, nil\n\t}\n\n\tif resourceLookup == nil {\n\t\treturn nil, fmt.Errorf(\"Can not use extends in file %s no mechanism provided to files\", inFile)\n\t}\n\n\tfile := asString(mapValue[\"file\"])\n\tservice := asString(mapValue[\"service\"])\n\n\tif service == \"\" {\n\t\treturn serviceData, nil\n\t}\n\n\tvar baseService RawService\n\n\tif file == \"\" {\n\t\tif serviceData, ok := datas[service]; ok {\n\t\t\tbaseService, err = parseV1(resourceLookup, environmentLookup, inFile, serviceData, datas, options)\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"Failed to find service %s to extend\", service)\n\t\t}\n\t} else {\n\t\tbytes, resolved, err := resourceLookup.Lookup(file, inFile)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to lookup file %s: %v\", file, err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar baseRawServices RawServiceMap\n\t\tif err := yaml.Unmarshal(bytes, &baseRawServices); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif options.Interpolate {\n\t\t\terr = Interpolate(environmentLookup, &baseRawServices)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif options.Preprocess != nil {\n\t\t\tvar err error\n\t\t\tbaseRawServices, err = options.Preprocess(baseRawServices)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif options.Validate {\n\t\t\tif err := validate(baseRawServices); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tbaseService, ok = baseRawServices[service]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"Failed to find service %s in file %s\", service, file)\n\t\t}\n\n\t\tbaseService, err = parseV1(resourceLookup, environmentLookup, resolved, baseService, baseRawServices, options)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbaseService = clone(baseService)\n\n\tlogrus.Debugf(\"Merging %#v, %#v\", baseService, serviceData)\n\n\tfor _, k := range noMerge {\n\t\tif _, ok := baseService[k]; ok {\n\t\t\tsource := file\n\t\t\tif source == \"\" {\n\t\t\t\tsource = inFile\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"Cannot extend service '%s' in %s: services with '%s' cannot be extended\", service, source, k)\n\t\t}\n\t}\n\n\tbaseService = mergeConfig(baseService, serviceData)\n\n\tlogrus.Debugf(\"Merged result %#v\", baseService)\n\n\treturn baseService, nil\n}\n\nfunc resolveContextV1(inFile string, serviceData RawService) RawService {\n\tcontext := asString(serviceData[\"build\"])\n\tif context == \"\" {\n\t\treturn serviceData\n\t}\n\n\tif IsValidRemote(context) {\n\t\treturn serviceData\n\t}\n\n\tcurrent := path.Dir(inFile)\n\n\tif context == \".\" {\n\t\tcontext = current\n\t} else {\n\t\tcurrent = path.Join(current, context)\n\t}\n\n\tserviceData[\"build\"] = current\n\n\treturn serviceData\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/merge_v2.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n\t\"github.com/docker/libcompose/utils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// MergeServicesV2 merges a v2 compose file into an existing set of service configs\nfunc MergeServicesV2(existingServices *ServiceConfigs, environmentLookup EnvironmentLookup, resourceLookup ResourceLookup, file string, bytes []byte, options *ParseOptions) (map[string]*ServiceConfig, error) {\n\tvar config Config\n\tif err := yaml.Unmarshal(bytes, &config); err != nil {\n\t\treturn nil, err\n\t}\n\n\tdatas := config.Services\n\n\tif options.Interpolate {\n\t\tif err := Interpolate(environmentLookup, &datas); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif options.Preprocess != nil {\n\t\tvar err error\n\t\tdatas, err = options.Preprocess(datas)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor name, data := range datas {\n\t\tdata, err := parseV2(resourceLookup, environmentLookup, file, data, datas, options)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to parse service %s: %v\", name, err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif serviceConfig, ok := existingServices.Get(name); ok {\n\t\t\tvar rawExistingService RawService\n\t\t\tif err := utils.Convert(serviceConfig, &rawExistingService); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tdata = mergeConfig(rawExistingService, data)\n\t\t}\n\n\t\tdatas[name] = data\n\t}\n\n\tserviceConfigs := make(map[string]*ServiceConfig)\n\tif err := utils.Convert(datas, &serviceConfigs); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn serviceConfigs, nil\n}\n\n// ParseVolumes parses volumes in a compose file\nfunc ParseVolumes(bytes []byte) (map[string]*VolumeConfig, error) {\n\tvolumeConfigs := make(map[string]*VolumeConfig)\n\n\tvar config Config\n\tif err := yaml.Unmarshal(bytes, &config); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := utils.Convert(config.Volumes, &volumeConfigs); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn volumeConfigs, nil\n}\n\n// ParseNetworks parses networks in a compose file\nfunc ParseNetworks(bytes []byte) (map[string]*NetworkConfig, error) {\n\tnetworkConfigs := make(map[string]*NetworkConfig)\n\n\tvar config Config\n\tif err := yaml.Unmarshal(bytes, &config); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := utils.Convert(config.Networks, &networkConfigs); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn networkConfigs, nil\n}\n\nfunc parseV2(resourceLookup ResourceLookup, environmentLookup EnvironmentLookup, inFile string, serviceData RawService, datas RawServiceMap, options *ParseOptions) (RawService, error) {\n\tserviceData, err := readEnvFile(resourceLookup, inFile, serviceData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tserviceData = resolveContextV2(inFile, serviceData)\n\n\tvalue, ok := serviceData[\"extends\"]\n\tif !ok {\n\t\treturn serviceData, nil\n\t}\n\n\tmapValue, ok := value.(map[interface{}]interface{})\n\tif !ok {\n\t\treturn serviceData, nil\n\t}\n\n\tif resourceLookup == nil {\n\t\treturn nil, fmt.Errorf(\"Can not use extends in file %s no mechanism provided to files\", inFile)\n\t}\n\n\tfile := asString(mapValue[\"file\"])\n\tservice := asString(mapValue[\"service\"])\n\n\tif service == \"\" {\n\t\treturn serviceData, nil\n\t}\n\n\tvar baseService RawService\n\n\tif file == \"\" {\n\t\tif serviceData, ok := datas[service]; ok {\n\t\t\tbaseService, err = parseV2(resourceLookup, environmentLookup, inFile, serviceData, datas, options)\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"Failed to find service %s to extend\", service)\n\t\t}\n\t} else {\n\t\tbytes, resolved, err := resourceLookup.Lookup(file, inFile)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to lookup file %s: %v\", file, err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar config Config\n\t\tif err := yaml.Unmarshal(bytes, &config); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tbaseRawServices := config.Services\n\n\t\tif options.Interpolate {\n\t\t\terr = Interpolate(environmentLookup, &baseRawServices)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tbaseService, ok = baseRawServices[service]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"Failed to find service %s in file %s\", service, file)\n\t\t}\n\n\t\tbaseService, err = parseV2(resourceLookup, environmentLookup, resolved, baseService, baseRawServices, options)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbaseService = clone(baseService)\n\n\tlogrus.Debugf(\"Merging %#v, %#v\", baseService, serviceData)\n\n\tfor _, k := range noMerge {\n\t\tif _, ok := baseService[k]; ok {\n\t\t\tsource := file\n\t\t\tif source == \"\" {\n\t\t\t\tsource = inFile\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"Cannot extend service '%s' in %s: services with '%s' cannot be extended\", service, source, k)\n\t\t}\n\t}\n\n\tbaseService = mergeConfig(baseService, serviceData)\n\n\tlogrus.Debugf(\"Merged result %#v\", baseService)\n\n\treturn baseService, nil\n}\n\nfunc resolveContextV2(inFile string, serviceData RawService) RawService {\n\tif _, ok := serviceData[\"build\"]; !ok {\n\t\treturn serviceData\n\t}\n\tbuild := serviceData[\"build\"].(map[interface{}]interface{})\n\tcontext := asString(build[\"context\"])\n\tif context == \"\" {\n\t\treturn serviceData\n\t}\n\n\tif IsValidRemote(context) {\n\t\treturn serviceData\n\t}\n\n\tcurrent := path.Dir(inFile)\n\n\tif context == \".\" {\n\t\tcontext = current\n\t} else {\n\t\tcurrent = path.Join(current, context)\n\t}\n\n\tbuild[\"context\"] = current\n\n\treturn serviceData\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/schema.go",
    "content": "package config\n\nvar schemaV1 = `{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"id\": \"config_schema_v1.json\",\n\n  \"type\": \"object\",\n\n  \"patternProperties\": {\n    \"^[a-zA-Z0-9._-]+$\": {\n      \"$ref\": \"#/definitions/service\"\n    }\n  },\n\n  \"additionalProperties\": false,\n\n  \"definitions\": {\n    \"service\": {\n      \"id\": \"#/definitions/service\",\n      \"type\": \"object\",\n\n      \"properties\": {\n        \"build\": {\"type\": \"string\"},\n        \"cap_add\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"cap_drop\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"cgroup_parent\": {\"type\": \"string\"},\n        \"command\": {\n          \"oneOf\": [\n            {\"type\": \"string\"},\n            {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n          ]\n        },\n        \"container_name\": {\"type\": \"string\"},\n        \"cpu_shares\": {\"type\": [\"number\", \"string\"]},\n        \"cpu_quota\": {\"type\": [\"number\", \"string\"]},\n        \"cpuset\": {\"type\": \"string\"},\n        \"devices\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"dns\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"dns_search\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"dockerfile\": {\"type\": \"string\"},\n        \"domainname\": {\"type\": \"string\"},\n        \"entrypoint\": {\n          \"oneOf\": [\n            {\"type\": \"string\"},\n            {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n          ]\n        },\n        \"env_file\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"environment\": {\"$ref\": \"#/definitions/list_or_dict\"},\n\n        \"expose\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": [\"string\", \"number\"],\n            \"format\": \"expose\"\n          },\n          \"uniqueItems\": true\n        },\n\n        \"extends\": {\n          \"oneOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\",\n\n              \"properties\": {\n                \"service\": {\"type\": \"string\"},\n                \"file\": {\"type\": \"string\"}\n              },\n              \"required\": [\"service\"],\n              \"additionalProperties\": false\n            }\n          ]\n        },\n\n        \"extra_hosts\": {\"$ref\": \"#/definitions/list_or_dict\"},\n        \"external_links\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"hostname\": {\"type\": \"string\"},\n        \"image\": {\"type\": \"string\"},\n        \"ipc\": {\"type\": \"string\"},\n        \"labels\": {\"$ref\": \"#/definitions/list_or_dict\"},\n        \"links\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"log_driver\": {\"type\": \"string\"},\n        \"log_opt\": {\"type\": \"object\"},\n        \"mac_address\": {\"type\": \"string\"},\n        \"mem_limit\": {\"type\": [\"number\", \"string\"]},\n        \"memswap_limit\": {\"type\": [\"number\", \"string\"]},\n        \"net\": {\"type\": \"string\"},\n        \"pid\": {\"type\": [\"string\", \"null\"]},\n\n        \"ports\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": [\"string\", \"number\"],\n            \"format\": \"ports\"\n          },\n          \"uniqueItems\": true\n        },\n\n        \"privileged\": {\"type\": \"boolean\"},\n        \"read_only\": {\"type\": \"boolean\"},\n        \"restart\": {\"type\": \"string\"},\n        \"security_opt\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"shm_size\": {\"type\": [\"number\", \"string\"]},\n        \"stdin_open\": {\"type\": \"boolean\"},\n        \"stop_signal\": {\"type\": \"string\"},\n        \"tty\": {\"type\": \"boolean\"},\n        \"ulimits\": {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \"^[a-z]+$\": {\n              \"oneOf\": [\n                {\"type\": \"integer\"},\n                {\n                  \"type\":\"object\",\n                  \"properties\": {\n                    \"hard\": {\"type\": \"integer\"},\n                    \"soft\": {\"type\": \"integer\"}\n                  },\n                  \"required\": [\"soft\", \"hard\"],\n                  \"additionalProperties\": false\n                }\n              ]\n            }\n          }\n        },\n        \"user\": {\"type\": \"string\"},\n        \"volumes\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"volume_driver\": {\"type\": \"string\"},\n        \"volumes_from\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"working_dir\": {\"type\": \"string\"}\n      },\n\n      \"dependencies\": {\n        \"memswap_limit\": [\"mem_limit\"]\n      },\n      \"additionalProperties\": false\n    },\n\n    \"string_or_list\": {\n      \"oneOf\": [\n        {\"type\": \"string\"},\n        {\"$ref\": \"#/definitions/list_of_strings\"}\n      ]\n    },\n\n    \"list_of_strings\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true\n    },\n\n    \"list_or_dict\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \".+\": {\n              \"type\": [\"string\", \"number\", \"null\"]\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true}\n      ]\n    },\n\n    \"constraints\": {\n      \"service\": {\n        \"id\": \"#/definitions/constraints/service\",\n        \"anyOf\": [\n          {\n            \"required\": [\"build\"],\n            \"not\": {\"required\": [\"image\"]}\n          },\n          {\n            \"required\": [\"image\"],\n            \"not\": {\"anyOf\": [\n              {\"required\": [\"build\"]},\n              {\"required\": [\"dockerfile\"]}\n            ]}\n          }\n        ]\n      }\n    }\n  }\n}\n`\n\nvar schemaV2 = `{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"id\": \"config_schema_v2.0.json\",\n  \"type\": \"object\",\n\n  \"properties\": {\n    \"version\": {\n      \"type\": \"string\"\n    },\n\n    \"services\": {\n      \"id\": \"#/properties/services\",\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^[a-zA-Z0-9._-]+$\": {\n          \"$ref\": \"#/definitions/service\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"networks\": {\n      \"id\": \"#/properties/networks\",\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^[a-zA-Z0-9._-]+$\": {\n          \"$ref\": \"#/definitions/network\"\n        }\n      }\n    },\n\n    \"volumes\": {\n      \"id\": \"#/properties/volumes\",\n      \"type\": \"object\",\n      \"patternProperties\": {\n        \"^[a-zA-Z0-9._-]+$\": {\n          \"$ref\": \"#/definitions/volume\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n\n  \"additionalProperties\": false,\n\n  \"definitions\": {\n\n    \"service\": {\n      \"id\": \"#/definitions/service\",\n      \"type\": \"object\",\n\n      \"properties\": {\n        \"build\": {\n          \"oneOf\": [\n            {\"type\": \"string\"},\n            {\n              \"type\": \"object\",\n              \"properties\": {\n                \"context\": {\"type\": \"string\"},\n                \"dockerfile\": {\"type\": \"string\"},\n                \"args\": {\"$ref\": \"#/definitions/list_or_dict\"}\n              },\n              \"additionalProperties\": false\n            }\n          ]\n        },\n        \"cap_add\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"cap_drop\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"cgroup_parent\": {\"type\": \"string\"},\n        \"command\": {\n          \"oneOf\": [\n            {\"type\": \"string\"},\n            {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n          ]\n        },\n        \"container_name\": {\"type\": \"string\"},\n        \"cpu_shares\": {\"type\": [\"number\", \"string\"]},\n        \"cpu_quota\": {\"type\": [\"number\", \"string\"]},\n        \"cpuset\": {\"type\": \"string\"},\n        \"depends_on\": {\"$ref\": \"#/definitions/list_of_strings\"},\n        \"devices\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"dns\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"dns_search\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"domainname\": {\"type\": \"string\"},\n        \"entrypoint\": {\n          \"oneOf\": [\n            {\"type\": \"string\"},\n            {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n          ]\n        },\n        \"env_file\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"environment\": {\"$ref\": \"#/definitions/list_or_dict\"},\n\n        \"expose\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": [\"string\", \"number\"],\n            \"format\": \"expose\"\n          },\n          \"uniqueItems\": true\n        },\n\n        \"extends\": {\n          \"oneOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\",\n\n              \"properties\": {\n                \"service\": {\"type\": \"string\"},\n                \"file\": {\"type\": \"string\"}\n              },\n              \"required\": [\"service\"],\n              \"additionalProperties\": false\n            }\n          ]\n        },\n\n        \"external_links\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"extra_hosts\": {\"$ref\": \"#/definitions/list_or_dict\"},\n        \"hostname\": {\"type\": \"string\"},\n        \"image\": {\"type\": \"string\"},\n        \"ipc\": {\"type\": \"string\"},\n        \"labels\": {\"$ref\": \"#/definitions/list_or_dict\"},\n        \"links\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n\n        \"logging\": {\n            \"type\": \"object\",\n\n            \"properties\": {\n                \"driver\": {\"type\": \"string\"},\n                \"options\": {\"type\": \"object\"}\n            },\n            \"additionalProperties\": false\n        },\n\n        \"mac_address\": {\"type\": \"string\"},\n        \"mem_limit\": {\"type\": [\"number\", \"string\"]},\n        \"memswap_limit\": {\"type\": [\"number\", \"string\"]},\n        \"network_mode\": {\"type\": \"string\"},\n\n        \"networks\": {\n          \"oneOf\": [\n            {\"$ref\": \"#/definitions/list_of_strings\"},\n            {\n              \"type\": \"object\",\n              \"patternProperties\": {\n                \"^[a-zA-Z0-9._-]+$\": {\n                  \"oneOf\": [\n                    {\n                      \"type\": \"object\",\n                      \"properties\": {\n                        \"aliases\": {\"$ref\": \"#/definitions/list_of_strings\"},\n                        \"ipv4_address\": {\"type\": \"string\"},\n                        \"ipv6_address\": {\"type\": \"string\"}\n                      },\n                      \"additionalProperties\": false\n                    },\n                    {\"type\": \"null\"}\n                  ]\n                }\n              },\n              \"additionalProperties\": false\n            }\n          ]\n        },\n        \"oom_score_adj\": {\"type\": \"integer\", \"minimum\": -1000, \"maximum\": 1000},\n        \"pid\": {\"type\": [\"string\", \"null\"]},\n\n        \"ports\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": [\"string\", \"number\"],\n            \"format\": \"ports\"\n          },\n          \"uniqueItems\": true\n        },\n\n        \"privileged\": {\"type\": \"boolean\"},\n        \"read_only\": {\"type\": \"boolean\"},\n        \"restart\": {\"type\": \"string\"},\n        \"security_opt\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"shm_size\": {\"type\": [\"number\", \"string\"]},\n        \"stdin_open\": {\"type\": \"boolean\"},\n        \"stop_signal\": {\"type\": \"string\"},\n        \"tmpfs\": {\"$ref\": \"#/definitions/string_or_list\"},\n        \"tty\": {\"type\": \"boolean\"},\n        \"ulimits\": {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \"^[a-z]+$\": {\n              \"oneOf\": [\n                {\"type\": \"integer\"},\n                {\n                  \"type\":\"object\",\n                  \"properties\": {\n                    \"hard\": {\"type\": \"integer\"},\n                    \"soft\": {\"type\": \"integer\"}\n                  },\n                  \"required\": [\"soft\", \"hard\"],\n                  \"additionalProperties\": false\n                }\n              ]\n            }\n          }\n        },\n        \"user\": {\"type\": \"string\"},\n        \"volumes\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"volume_driver\": {\"type\": \"string\"},\n        \"volumes_from\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true},\n        \"working_dir\": {\"type\": \"string\"}\n      },\n\n      \"dependencies\": {\n        \"memswap_limit\": [\"mem_limit\"]\n      },\n      \"additionalProperties\": false\n    },\n\n    \"network\": {\n      \"id\": \"#/definitions/network\",\n      \"type\": \"object\",\n      \"properties\": {\n        \"driver\": {\"type\": \"string\"},\n        \"driver_opts\": {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \"^.+$\": {\"type\": [\"string\", \"number\"]}\n          }\n        },\n        \"ipam\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"driver\": {\"type\": \"string\"},\n                \"config\": {\n                    \"type\": \"array\"\n                }\n            },\n            \"additionalProperties\": false\n        },\n        \"external\": {\n          \"type\": [\"boolean\", \"object\"],\n          \"properties\": {\n            \"name\": {\"type\": \"string\"}\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"additionalProperties\": false\n    },\n\n    \"volume\": {\n      \"id\": \"#/definitions/volume\",\n      \"type\": [\"object\", \"null\"],\n      \"properties\": {\n        \"driver\": {\"type\": \"string\"},\n        \"driver_opts\": {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \"^.+$\": {\"type\": [\"string\", \"number\"]}\n          }\n        },\n        \"external\": {\n          \"type\": [\"boolean\", \"object\"],\n          \"properties\": {\n            \"name\": {\"type\": \"string\"}\n          }\n        },\n        \"additionalProperties\": false\n      },\n      \"additionalProperties\": false\n    },\n\n    \"string_or_list\": {\n      \"oneOf\": [\n        {\"type\": \"string\"},\n        {\"$ref\": \"#/definitions/list_of_strings\"}\n      ]\n    },\n\n    \"list_of_strings\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true\n    },\n\n    \"list_or_dict\": {\n      \"oneOf\": [\n        {\n          \"type\": \"object\",\n          \"patternProperties\": {\n            \".+\": {\n              \"type\": [\"string\", \"number\", \"null\"]\n            }\n          },\n          \"additionalProperties\": false\n        },\n        {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"uniqueItems\": true}\n      ]\n    },\n\n    \"constraints\": {\n      \"service\": {\n        \"id\": \"#/definitions/constraints/service\",\n        \"anyOf\": [\n          {\"required\": [\"build\"]},\n          {\"required\": [\"image\"]}\n        ],\n        \"properties\": {\n          \"build\": {\n            \"required\": [\"context\"]\n          }\n        }\n      }\n    }\n  }\n}\n`\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/schema_helpers.go",
    "content": "package config\n\nimport (\n\t\"encoding/json\"\n\t\"strings\"\n\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/xeipuuv/gojsonschema\"\n)\n\nvar (\n\tschemaLoader           gojsonschema.JSONLoader\n\tconstraintSchemaLoader gojsonschema.JSONLoader\n\tschema                 map[string]interface{}\n)\n\ntype (\n\tenvironmentFormatChecker struct{}\n\tportsFormatChecker       struct{}\n)\n\nfunc (checker environmentFormatChecker) IsFormat(input string) bool {\n\t// If the value is a boolean, a warning should be given\n\t// However, we can't determine type since gojsonschema converts the value to a string\n\t// Adding a function with an interface{} parameter to gojsonschema is probably the best way to handle this\n\treturn true\n}\n\nfunc (checker portsFormatChecker) IsFormat(input string) bool {\n\t_, _, err := nat.ParsePortSpecs([]string{input})\n\treturn err == nil\n}\n\nfunc setupSchemaLoaders() error {\n\tif schema != nil {\n\t\treturn nil\n\t}\n\n\tvar schemaRaw interface{}\n\terr := json.Unmarshal([]byte(schemaV1), &schemaRaw)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tschema = schemaRaw.(map[string]interface{})\n\n\tgojsonschema.FormatCheckers.Add(\"environment\", environmentFormatChecker{})\n\tgojsonschema.FormatCheckers.Add(\"ports\", portsFormatChecker{})\n\tgojsonschema.FormatCheckers.Add(\"expose\", portsFormatChecker{})\n\tschemaLoader = gojsonschema.NewGoLoader(schemaRaw)\n\n\tdefinitions := schema[\"definitions\"].(map[string]interface{})\n\tconstraints := definitions[\"constraints\"].(map[string]interface{})\n\tservice := constraints[\"service\"].(map[string]interface{})\n\tconstraintSchemaLoader = gojsonschema.NewGoLoader(service)\n\n\treturn nil\n}\n\n// gojsonschema doesn't provide a list of valid types for a property\n// This parses the schema manually to find all valid types\nfunc parseValidTypesFromSchema(schema map[string]interface{}, context string) []string {\n\tcontextSplit := strings.Split(context, \".\")\n\tkey := contextSplit[len(contextSplit)-1]\n\n\tdefinitions := schema[\"definitions\"].(map[string]interface{})\n\tservice := definitions[\"service\"].(map[string]interface{})\n\tproperties := service[\"properties\"].(map[string]interface{})\n\tproperty := properties[key].(map[string]interface{})\n\n\tvar validTypes []string\n\n\tif val, ok := property[\"oneOf\"]; ok {\n\t\tvalidConditions := val.([]interface{})\n\n\t\tfor _, validCondition := range validConditions {\n\t\t\tcondition := validCondition.(map[string]interface{})\n\t\t\tvalidTypes = append(validTypes, condition[\"type\"].(string))\n\t\t}\n\t} else if val, ok := property[\"$ref\"]; ok {\n\t\treference := val.(string)\n\t\tif reference == \"#/definitions/string_or_list\" {\n\t\t\treturn []string{\"string\", \"array\"}\n\t\t} else if reference == \"#/definitions/list_of_strings\" {\n\t\t\treturn []string{\"array\"}\n\t\t} else if reference == \"#/definitions/list_or_dict\" {\n\t\t\treturn []string{\"array\", \"object\"}\n\t\t}\n\t}\n\n\treturn validTypes\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/types.go",
    "content": "package config\n\nimport (\n\t\"sync\"\n\n\t\"github.com/docker/libcompose/yaml\"\n)\n\n// EnvironmentLookup defines methods to provides environment variable loading.\ntype EnvironmentLookup interface {\n\tLookup(key, serviceName string, config *ServiceConfig) []string\n}\n\n// ResourceLookup defines methods to provides file loading.\ntype ResourceLookup interface {\n\tLookup(file, relativeTo string) ([]byte, string, error)\n\tResolvePath(path, inFile string) string\n}\n\n// ServiceConfigV1 holds version 1 of libcompose service configuration\ntype ServiceConfigV1 struct {\n\tBuild         string               `yaml:\"build,omitempty\"`\n\tCapAdd        []string             `yaml:\"cap_add,omitempty\"`\n\tCapDrop       []string             `yaml:\"cap_drop,omitempty\"`\n\tCgroupParent  string               `yaml:\"cgroup_parent,omitempty\"`\n\tCPUQuota      int64                `yaml:\"cpu_quota,omitempty\"`\n\tCPUSet        string               `yaml:\"cpuset,omitempty\"`\n\tCPUShares     int64                `yaml:\"cpu_shares,omitempty\"`\n\tCommand       yaml.Command         `yaml:\"command,flow,omitempty\"`\n\tContainerName string               `yaml:\"container_name,omitempty\"`\n\tDevices       []string             `yaml:\"devices,omitempty\"`\n\tDNS           yaml.Stringorslice   `yaml:\"dns,omitempty\"`\n\tDNSSearch     yaml.Stringorslice   `yaml:\"dns_search,omitempty\"`\n\tDockerfile    string               `yaml:\"dockerfile,omitempty\"`\n\tDomainName    string               `yaml:\"domainname,omitempty\"`\n\tEntrypoint    yaml.Command         `yaml:\"entrypoint,flow,omitempty\"`\n\tEnvFile       yaml.Stringorslice   `yaml:\"env_file,omitempty\"`\n\tEnvironment   yaml.MaporEqualSlice `yaml:\"environment,omitempty\"`\n\tHostname      string               `yaml:\"hostname,omitempty\"`\n\tImage         string               `yaml:\"image,omitempty\"`\n\tLabels        yaml.SliceorMap      `yaml:\"labels,omitempty\"`\n\tLinks         yaml.MaporColonSlice `yaml:\"links,omitempty\"`\n\tLogDriver     string               `yaml:\"log_driver,omitempty\"`\n\tMacAddress    string               `yaml:\"mac_address,omitempty\"`\n\tMemLimit      int64                `yaml:\"mem_limit,omitempty\"`\n\tMemSwapLimit  int64                `yaml:\"memswap_limit,omitempty\"`\n\tName          string               `yaml:\"name,omitempty\"`\n\tNet           string               `yaml:\"net,omitempty\"`\n\tOomScoreAdj   int                  `yaml:\"oom_score_adj,omitempty\"`\n\tPid           string               `yaml:\"pid,omitempty\"`\n\tUts           string               `yaml:\"uts,omitempty\"`\n\tIpc           string               `yaml:\"ipc,omitempty\"`\n\tPorts         []string             `yaml:\"ports,omitempty\"`\n\tPrivileged    bool                 `yaml:\"privileged,omitempty\"`\n\tRestart       string               `yaml:\"restart,omitempty\"`\n\tReadOnly      bool                 `yaml:\"read_only,omitempty\"`\n\tStdinOpen     bool                 `yaml:\"stdin_open,omitempty\"`\n\tSecurityOpt   []string             `yaml:\"security_opt,omitempty\"`\n\tTty           bool                 `yaml:\"tty,omitempty\"`\n\tUser          string               `yaml:\"user,omitempty\"`\n\tVolumeDriver  string               `yaml:\"volume_driver,omitempty\"`\n\tVolumes       []string             `yaml:\"volumes,omitempty\"`\n\tVolumesFrom   []string             `yaml:\"volumes_from,omitempty\"`\n\tWorkingDir    string               `yaml:\"working_dir,omitempty\"`\n\tExpose        []string             `yaml:\"expose,omitempty\"`\n\tExternalLinks []string             `yaml:\"external_links,omitempty\"`\n\tLogOpt        map[string]string    `yaml:\"log_opt,omitempty\"`\n\tExtraHosts    []string             `yaml:\"extra_hosts,omitempty\"`\n\tUlimits       yaml.Ulimits         `yaml:\"ulimits,omitempty\"`\n}\n\n// Build holds v2 build information\ntype Build struct {\n\tContext    string               `yaml:\"context,omitempty\"`\n\tDockerfile string               `yaml:\"dockerfile,omitempty\"`\n\tArgs       yaml.MaporEqualSlice `yaml:\"args,omitempty\"`\n}\n\n// Log holds v2 logging information\ntype Log struct {\n\tDriver  string            `yaml:\"driver,omitempty\"`\n\tOptions map[string]string `yaml:\"options,omitempty\"`\n}\n\n// ServiceConfig holds version 2 of libcompose service configuration\ntype ServiceConfig struct {\n\tBuild         Build                `yaml:\"build,omitempty\"`\n\tCapAdd        []string             `yaml:\"cap_add,omitempty\"`\n\tCapDrop       []string             `yaml:\"cap_drop,omitempty\"`\n\tCPUSet        string               `yaml:\"cpuset,omitempty\"`\n\tCPUShares     int64                `yaml:\"cpu_shares,omitempty\"`\n\tCPUQuota      int64                `yaml:\"cpu_quota,omitempty\"`\n\tCommand       yaml.Command         `yaml:\"command,flow,omitempty\"`\n\tCgroupParent  string               `yaml:\"cgroup_parrent,omitempty\"`\n\tContainerName string               `yaml:\"container_name,omitempty\"`\n\tDevices       []string             `yaml:\"devices,omitempty\"`\n\tDependsOn     []string             `yaml:\"depends_on,omitempty\"`\n\tDNS           yaml.Stringorslice   `yaml:\"dns,omitempty\"`\n\tDNSSearch     yaml.Stringorslice   `yaml:\"dns_search,omitempty\"`\n\tDomainName    string               `yaml:\"domain_name,omitempty\"`\n\tEntrypoint    yaml.Command         `yaml:\"entrypoint,flow,omitempty\"`\n\tEnvFile       yaml.Stringorslice   `yaml:\"env_file,omitempty\"`\n\tEnvironment   yaml.MaporEqualSlice `yaml:\"environment,omitempty\"`\n\tExpose        []string             `yaml:\"expose,omitempty\"`\n\tExtends       yaml.MaporEqualSlice `yaml:\"extends,omitempty\"`\n\tExternalLinks []string             `yaml:\"external_links,omitempty\"`\n\tExtraHosts    []string             `yaml:\"extra_hosts,omitempty\"`\n\tImage         string               `yaml:\"image,omitempty\"`\n\tHostname      string               `yaml:\"hostname,omitempty\"`\n\tIpc           string               `yaml:\"ipc,omitempty\"`\n\tLabels        yaml.SliceorMap      `yaml:\"labels,omitempty\"`\n\tLinks         yaml.MaporColonSlice `yaml:\"links,omitempty\"`\n\tLogging       Log                  `yaml:\"logging,omitempty\"`\n\tMacAddress    string               `yaml:\"mac_address,omitempty\"`\n\tMemLimit      int64                `yaml:\"mem_limit,omitempty\"`\n\tMemSwapLimit  int64                `yaml:\"memswap_limit,omitempty\"`\n\tNetworkMode   string               `yaml:\"network_mode,omitempty\"`\n\tNetworks      []string             `yaml:\"networks,omitempty\"`\n\tOomScoreAdj   int                  `yaml:\"oom_score_adj,omitempty\"`\n\tPid           string               `yaml:\"pid,omitempty\"`\n\tPorts         []string             `yaml:\"ports,omitempty\"`\n\tPrivileged    bool                 `yaml:\"privileged,omitempty\"`\n\tSecurityOpt   []string             `yaml:\"security_opt,omitempty\"`\n\tStopSignal    string               `yaml:\"stop_signal,omitempty\"`\n\tVolumeDriver  string               `yaml:\"volume_driver,omitempty\"`\n\tVolumes       []string             `yaml:\"volumes,omitempty\"`\n\tVolumesFrom   []string             `yaml:\"volumes_from,omitempty\"`\n\tUts           string               `yaml:\"uts,omitempty\"`\n\tRestart       string               `yaml:\"restart,omitempty\"`\n\tReadOnly      bool                 `yaml:\"read_only,omitempty\"`\n\tStdinOpen     bool                 `yaml:\"stdin_open,omitempty\"`\n\tTty           bool                 `yaml:\"tty,omitempty\"`\n\tUser          string               `yaml:\"user,omitempty\"`\n\tWorkingDir    string               `yaml:\"working_dir,omitempty\"`\n\tUlimits       yaml.Ulimits         `yaml:\"ulimits,omitempty\"`\n}\n\n// VolumeConfig holds v2 volume configuration\ntype VolumeConfig struct {\n\tDriver     string            `yaml:\"driver,omitempty\"`\n\tDriverOpts map[string]string `yaml:\"driver_opts,omitempty\"`\n\tExternal   bool              `yaml:\"external,omitempty\"`\n}\n\n// Ipam holds v2 network IPAM information\ntype Ipam struct {\n\tDriver string   `yaml:\"driver,omitempty\"`\n\tConfig []string `yaml:\"config,omitempty\"`\n}\n\n// NetworkConfig holds v2 network configuration\ntype NetworkConfig struct {\n\tDriver     string            `yaml:\"driver,omitempty\"`\n\tDriverOpts map[string]string `yaml:\"driver_opts,omitempty\"`\n\tExternal   bool              `yaml:\"external,omitempty\"`\n\tIpam       Ipam              `yaml:\"ipam,omitempty\"`\n}\n\n// Config holds libcompose top level configuration\ntype Config struct {\n\tVersion  string                    `yaml:\"version,omitempty\"`\n\tServices RawServiceMap             `yaml:\"services,omitempty\"`\n\tVolumes  map[string]*VolumeConfig  `yaml:\"volumes,omitempty\"`\n\tNetworks map[string]*NetworkConfig `yaml:\"networks,omitempty\"`\n}\n\n// NewServiceConfigs initializes a new Configs struct\nfunc NewServiceConfigs() *ServiceConfigs {\n\treturn &ServiceConfigs{\n\t\tm: make(map[string]*ServiceConfig),\n\t}\n}\n\n// ServiceConfigs holds a concurrent safe map of ServiceConfig\ntype ServiceConfigs struct {\n\tm  map[string]*ServiceConfig\n\tmu sync.RWMutex\n}\n\n// Has checks if the config map has the specified name\nfunc (c *ServiceConfigs) Has(name string) bool {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\t_, ok := c.m[name]\n\treturn ok\n}\n\n// Get returns the config and the presence of the specified name\nfunc (c *ServiceConfigs) Get(name string) (*ServiceConfig, bool) {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tservice, ok := c.m[name]\n\treturn service, ok\n}\n\n// Add add the specifed config with the specified name\nfunc (c *ServiceConfigs) Add(name string, service *ServiceConfig) {\n\tc.mu.Lock()\n\tc.m[name] = service\n\tc.mu.Unlock()\n}\n\n// Len returns the len of the configs\nfunc (c *ServiceConfigs) Len() int {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\treturn len(c.m)\n}\n\n// Keys returns the names of the config\nfunc (c *ServiceConfigs) Keys() []string {\n\tkeys := []string{}\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tfor name := range c.m {\n\t\tkeys = append(keys, name)\n\t}\n\treturn keys\n}\n\n// RawService is represent a Service in map form unparsed\ntype RawService map[string]interface{}\n\n// RawServiceMap is a collection of RawServices\ntype RawServiceMap map[string]RawService\n\n// ParseOptions are a set of options to customize the parsing process\ntype ParseOptions struct {\n\tInterpolate bool\n\tValidate    bool\n\tPreprocess  func(RawServiceMap) (RawServiceMap, error)\n\tPostprocess func(map[string]*ServiceConfig) (map[string]*ServiceConfig, error)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/utils.go",
    "content": "package config\n\nfunc merge(existing, value interface{}) interface{} {\n\t// append strings\n\tif left, lok := existing.([]interface{}); lok {\n\t\tif right, rok := value.([]interface{}); rok {\n\t\t\treturn append(left, right...)\n\t\t}\n\t}\n\n\t//merge maps\n\tif left, lok := existing.(map[interface{}]interface{}); lok {\n\t\tif right, rok := value.(map[interface{}]interface{}); rok {\n\t\t\tnewLeft := make(map[interface{}]interface{})\n\t\t\tfor k, v := range left {\n\t\t\t\tnewLeft[k] = v\n\t\t\t}\n\t\t\tfor k, v := range right {\n\t\t\t\tnewLeft[k] = v\n\t\t\t}\n\t\t\treturn newLeft\n\t\t}\n\t}\n\n\treturn value\n}\n\nfunc clone(in RawService) RawService {\n\tresult := RawService{}\n\tfor k, v := range in {\n\t\tresult[k] = v\n\t}\n\n\treturn result\n}\n\nfunc asString(obj interface{}) string {\n\tif v, ok := obj.(string); ok {\n\t\treturn v\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/config/validation.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/xeipuuv/gojsonschema\"\n)\n\nfunc serviceNameFromErrorField(field string) string {\n\tsplitKeys := strings.Split(field, \".\")\n\treturn splitKeys[0]\n}\n\nfunc keyNameFromErrorField(field string) string {\n\tsplitKeys := strings.Split(field, \".\")\n\n\tif len(splitKeys) > 0 {\n\t\treturn splitKeys[len(splitKeys)-1]\n\t}\n\n\treturn \"\"\n}\n\nfunc containsTypeError(resultError gojsonschema.ResultError) bool {\n\tcontextSplit := strings.Split(resultError.Context().String(), \".\")\n\t_, err := strconv.Atoi(contextSplit[len(contextSplit)-1])\n\treturn err == nil\n}\n\nfunc addArticle(s string) string {\n\tswitch s[0] {\n\tcase 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U':\n\t\treturn \"an \" + s\n\tdefault:\n\t\treturn \"a \" + s\n\t}\n}\n\n// Gets the value in a service map at a given error context\nfunc getValue(val interface{}, context string) string {\n\tkeys := strings.Split(context, \".\")\n\n\tif keys[0] == \"(root)\" {\n\t\tkeys = keys[1:]\n\t}\n\n\tfor i, k := range keys {\n\t\tswitch typedVal := (val).(type) {\n\t\tcase string:\n\t\t\treturn typedVal\n\t\tcase []interface{}:\n\t\t\tif index, err := strconv.Atoi(k); err == nil {\n\t\t\t\tval = typedVal[index]\n\t\t\t}\n\t\tcase RawServiceMap:\n\t\t\tval = typedVal[k]\n\t\tcase RawService:\n\t\t\tval = typedVal[k]\n\t\tcase map[interface{}]interface{}:\n\t\t\tval = typedVal[k]\n\t\t}\n\n\t\tif i == len(keys)-1 {\n\t\t\treturn fmt.Sprint(val)\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// Converts map[interface{}]interface{} to map[string]interface{} recursively\n// gojsonschema only accepts map[string]interface{}\nfunc convertServiceMapKeysToStrings(serviceMap RawServiceMap) RawServiceMap {\n\tnewServiceMap := make(RawServiceMap)\n\n\tfor k, v := range serviceMap {\n\t\tnewServiceMap[k] = convertServiceKeysToStrings(v)\n\t}\n\n\treturn newServiceMap\n}\n\nfunc convertServiceKeysToStrings(service RawService) RawService {\n\tnewService := make(RawService)\n\n\tfor k, v := range service {\n\t\tnewService[k] = convertKeysToStrings(v)\n\t}\n\n\treturn newService\n}\n\nfunc convertKeysToStrings(item interface{}) interface{} {\n\tswitch typedDatas := item.(type) {\n\n\tcase map[interface{}]interface{}:\n\t\tnewMap := make(map[string]interface{})\n\n\t\tfor key, value := range typedDatas {\n\t\t\tstringKey := key.(string)\n\t\t\tnewMap[stringKey] = convertKeysToStrings(value)\n\t\t}\n\t\treturn newMap\n\n\tcase []interface{}:\n\t\t// newArray := make([]interface{}, 0) will cause golint to complain\n\t\tvar newArray []interface{}\n\t\tnewArray = make([]interface{}, 0)\n\n\t\tfor _, value := range typedDatas {\n\t\t\tnewArray = append(newArray, convertKeysToStrings(value))\n\t\t}\n\t\treturn newArray\n\n\tdefault:\n\t\treturn item\n\t}\n}\n\nvar dockerConfigHints = map[string]string{\n\t\"cpu_share\":   \"cpu_shares\",\n\t\"add_host\":    \"extra_hosts\",\n\t\"hosts\":       \"extra_hosts\",\n\t\"extra_host\":  \"extra_hosts\",\n\t\"device\":      \"devices\",\n\t\"link\":        \"links\",\n\t\"memory_swap\": \"memswap_limit\",\n\t\"port\":        \"ports\",\n\t\"privilege\":   \"privileged\",\n\t\"priviliged\":  \"privileged\",\n\t\"privilige\":   \"privileged\",\n\t\"volume\":      \"volumes\",\n\t\"workdir\":     \"working_dir\",\n}\n\nfunc unsupportedConfigMessage(key string, nextErr gojsonschema.ResultError) string {\n\tservice := serviceNameFromErrorField(nextErr.Field())\n\n\tmessage := fmt.Sprintf(\"Unsupported config option for %s service: '%s'\", service, key)\n\tif val, ok := dockerConfigHints[key]; ok {\n\t\tmessage += fmt.Sprintf(\" (did you mean '%s'?)\", val)\n\t}\n\n\treturn message\n}\n\nfunc oneOfMessage(serviceMap RawServiceMap, schema map[string]interface{}, err, nextErr gojsonschema.ResultError) string {\n\tswitch nextErr.Type() {\n\tcase \"additional_property_not_allowed\":\n\t\tproperty := nextErr.Details()[\"property\"]\n\n\t\treturn fmt.Sprintf(\"contains unsupported option: '%s'\", property)\n\tcase \"invalid_type\":\n\t\tif containsTypeError(nextErr) {\n\t\t\texpectedType := addArticle(nextErr.Details()[\"expected\"].(string))\n\n\t\t\treturn fmt.Sprintf(\"contains %s, which is an invalid type, it should be %s\", getValue(serviceMap, nextErr.Context().String()), expectedType)\n\t\t}\n\n\t\tvalidTypes := parseValidTypesFromSchema(schema, err.Context().String())\n\n\t\tvalidTypesMsg := addArticle(strings.Join(validTypes, \" or \"))\n\n\t\treturn fmt.Sprintf(\"contains an invalid type, it should be %s\", validTypesMsg)\n\tcase \"unique\":\n\t\tcontextWithDuplicates := getValue(serviceMap, nextErr.Context().String())\n\n\t\treturn fmt.Sprintf(\"contains non unique items, please remove duplicates from %s\", contextWithDuplicates)\n\t}\n\n\treturn \"\"\n}\n\nfunc invalidTypeMessage(service, key string, err gojsonschema.ResultError) string {\n\texpectedTypesString := err.Details()[\"expected\"].(string)\n\tvar expectedTypes []string\n\n\tif strings.Contains(expectedTypesString, \",\") {\n\t\texpectedTypes = strings.Split(expectedTypesString[1:len(expectedTypesString)-1], \",\")\n\t} else {\n\t\texpectedTypes = []string{expectedTypesString}\n\t}\n\n\tvalidTypesMsg := addArticle(strings.Join(expectedTypes, \" or \"))\n\n\treturn fmt.Sprintf(\"Service '%s' configuration key '%s' contains an invalid type, it should be %s.\", service, key, validTypesMsg)\n}\n\nfunc validate(serviceMap RawServiceMap) error {\n\tif err := setupSchemaLoaders(); err != nil {\n\t\treturn err\n\t}\n\n\tserviceMap = convertServiceMapKeysToStrings(serviceMap)\n\n\tvar validationErrors []string\n\n\tdataLoader := gojsonschema.NewGoLoader(serviceMap)\n\n\tresult, err := gojsonschema.Validate(schemaLoader, dataLoader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// gojsonschema can create extraneous \"additional_property_not_allowed\" errors in some cases\n\t// If this is set, and the error is at root level, skip over that error\n\tskipRootAdditionalPropertyError := false\n\n\tif !result.Valid() {\n\t\tfor i := 0; i < len(result.Errors()); i++ {\n\t\t\terr := result.Errors()[i]\n\n\t\t\tif skipRootAdditionalPropertyError && err.Type() == \"additional_property_not_allowed\" && err.Context().String() == \"(root)\" {\n\t\t\t\tskipRootAdditionalPropertyError = false\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif err.Context().String() == \"(root)\" {\n\t\t\t\tswitch err.Type() {\n\t\t\t\tcase \"additional_property_not_allowed\":\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Invalid service name '%s' - only [a-zA-Z0-9\\\\._\\\\-] characters are allowed\", err.Field()))\n\t\t\t\tdefault:\n\t\t\t\t\tvalidationErrors = append(validationErrors, err.Description())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tskipRootAdditionalPropertyError = true\n\n\t\t\t\tserviceName := serviceNameFromErrorField(err.Field())\n\t\t\t\tkey := keyNameFromErrorField(err.Field())\n\n\t\t\t\tswitch err.Type() {\n\t\t\t\tcase \"additional_property_not_allowed\":\n\t\t\t\t\tvalidationErrors = append(validationErrors, unsupportedConfigMessage(key, result.Errors()[i+1]))\n\t\t\t\tcase \"number_one_of\":\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' configuration key '%s' %s\", serviceName, key, oneOfMessage(serviceMap, schema, err, result.Errors()[i+1])))\n\n\t\t\t\t\t// Next error handled in oneOfMessage, skip over it\n\t\t\t\t\ti++\n\t\t\t\tcase \"invalid_type\":\n\t\t\t\t\tvalidationErrors = append(validationErrors, invalidTypeMessage(serviceName, key, err))\n\t\t\t\tcase \"required\":\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' option '%s' is invalid, %s\", serviceName, key, err.Description()))\n\t\t\t\tcase \"missing_dependency\":\n\t\t\t\t\tdependency := err.Details()[\"dependency\"].(string)\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Invalid configuration for '%s' service: dependency '%s' is not satisfied\", serviceName, dependency))\n\t\t\t\tcase \"unique\":\n\t\t\t\t\tcontextWithDuplicates := getValue(serviceMap, err.Context().String())\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' configuration key '%s' value %s has non-unique elements\", serviceName, key, contextWithDuplicates))\n\t\t\t\tdefault:\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' configuration key %s value %s\", serviceName, key, err.Description()))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fmt.Errorf(strings.Join(validationErrors, \"\\n\"))\n\t}\n\n\treturn nil\n}\n\nfunc validateServiceConstraints(service RawService, serviceName string) error {\n\tif err := setupSchemaLoaders(); err != nil {\n\t\treturn err\n\t}\n\n\tservice = convertServiceKeysToStrings(service)\n\n\tvar validationErrors []string\n\n\tdataLoader := gojsonschema.NewGoLoader(service)\n\n\tresult, err := gojsonschema.Validate(constraintSchemaLoader, dataLoader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !result.Valid() {\n\t\tfor _, err := range result.Errors() {\n\t\t\tif err.Type() == \"number_any_of\" {\n\t\t\t\t_, containsImage := service[\"image\"]\n\t\t\t\t_, containsBuild := service[\"build\"]\n\t\t\t\t_, containsDockerfile := service[\"dockerfile\"]\n\n\t\t\t\tif containsImage && containsBuild {\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' has both an image and build path specified. A service can either be built to image or use an existing image, not both.\", serviceName))\n\t\t\t\t} else if !containsImage && !containsBuild {\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' has neither an image nor a build path specified. Exactly one must be provided.\", serviceName))\n\t\t\t\t} else if containsImage && containsDockerfile {\n\t\t\t\t\tvalidationErrors = append(validationErrors, fmt.Sprintf(\"Service '%s' has both an image and alternate Dockerfile. A service can either be built to image or use an existing image, not both.\", serviceName))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fmt.Errorf(strings.Join(validationErrors, \"\\n\"))\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/auth.go",
    "content": "package docker\n\nimport (\n\t\"github.com/docker/docker/registry\"\n\t\"github.com/docker/engine-api/types\"\n)\n\n// AuthLookup defines a method for looking up authentication information\ntype AuthLookup interface {\n\tAll() map[string]types.AuthConfig\n\tLookup(repoInfo *registry.RepositoryInfo) types.AuthConfig\n}\n\n// ConfigAuthLookup implements AuthLookup by reading a Docker config file\ntype ConfigAuthLookup struct {\n\tcontext *Context\n}\n\n// NewConfigAuthLookup creates a new ConfigAuthLookup for a given context\nfunc NewConfigAuthLookup(context *Context) *ConfigAuthLookup {\n\treturn &ConfigAuthLookup{\n\t\tcontext: context,\n\t}\n}\n\n// Lookup uses a Docker config file to lookup authentication information\nfunc (c *ConfigAuthLookup) Lookup(repoInfo *registry.RepositoryInfo) types.AuthConfig {\n\tif c.context.ConfigFile == nil || repoInfo == nil || repoInfo.Index == nil {\n\t\treturn types.AuthConfig{}\n\t}\n\treturn registry.ResolveAuthConfig(c.context.ConfigFile.AuthConfigs, repoInfo.Index)\n}\n\n// All uses a Docker config file to get all authentication information\nfunc (c *ConfigAuthLookup) All() map[string]types.AuthConfig {\n\tif c.context.ConfigFile == nil {\n\t\treturn map[string]types.AuthConfig{}\n\t}\n\treturn c.context.ConfigFile.AuthConfigs\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/builder/builder.go",
    "content": "package builder\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/docker/builder\"\n\t\"github.com/docker/docker/builder/dockerignore\"\n\t\"github.com/docker/docker/pkg/archive\"\n\t\"github.com/docker/docker/pkg/fileutils\"\n\t\"github.com/docker/docker/pkg/jsonmessage\"\n\t\"github.com/docker/docker/pkg/progress\"\n\t\"github.com/docker/docker/pkg/streamformatter\"\n\t\"github.com/docker/docker/pkg/term\"\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// DefaultDockerfileName is the default name of a Dockerfile\nconst DefaultDockerfileName = \"Dockerfile\"\n\n// Builder defines methods to provide a docker builder. This makes libcompose\n// not tied up to the docker daemon builder.\ntype Builder interface {\n\tBuild(imageName string) error\n}\n\n// DaemonBuilder is the daemon \"docker build\" Builder implementation.\ntype DaemonBuilder struct {\n\tClient           client.APIClient\n\tContextDirectory string\n\tDockerfile       string\n\tAuthConfigs      map[string]types.AuthConfig\n\tNoCache          bool\n\tForceRemove      bool\n\tPull             bool\n}\n\n// Build implements Builder. It consumes the docker build API endpoint and sends\n// a tar of the specified service build context.\nfunc (d *DaemonBuilder) Build(ctx context.Context, imageName string) error {\n\tbuildCtx, err := createTar(d.ContextDirectory, d.Dockerfile)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer buildCtx.Close()\n\n\tvar progBuff io.Writer = os.Stdout\n\tvar buildBuff io.Writer = os.Stdout\n\n\t// Setup an upload progress bar\n\tprogressOutput := streamformatter.NewStreamFormatter().NewProgressOutput(progBuff, true)\n\n\tvar body io.Reader = progress.NewProgressReader(buildCtx, progressOutput, 0, \"\", \"Sending build context to Docker daemon\")\n\n\tlogrus.Infof(\"Building %s...\", imageName)\n\n\toutFd, isTerminalOut := term.GetFdInfo(os.Stdout)\n\n\tresponse, err := d.Client.ImageBuild(ctx, types.ImageBuildOptions{\n\t\tContext:     body,\n\t\tTags:        []string{imageName},\n\t\tNoCache:     d.NoCache,\n\t\tRemove:      true,\n\t\tForceRemove: d.ForceRemove,\n\t\tPullParent:  d.Pull,\n\t\tDockerfile:  d.Dockerfile,\n\t\tAuthConfigs: d.AuthConfigs,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = jsonmessage.DisplayJSONMessagesStream(response.Body, buildBuff, outFd, isTerminalOut, nil)\n\tif err != nil {\n\t\tif jerr, ok := err.(*jsonmessage.JSONError); ok {\n\t\t\t// If no error code is set, default to 1\n\t\t\tif jerr.Code == 0 {\n\t\t\t\tjerr.Code = 1\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"Status: %s, Code: %d\", jerr.Message, jerr.Code)\n\t\t}\n\t}\n\treturn err\n}\n\n// CreateTar create a build context tar for the specified project and service name.\nfunc createTar(contextDirectory, dockerfile string) (io.ReadCloser, error) {\n\t// This code was ripped off from docker/api/client/build.go\n\tdockerfileName := filepath.Join(contextDirectory, dockerfile)\n\n\tabsContextDirectory, err := filepath.Abs(contextDirectory)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfilename := dockerfileName\n\n\tif dockerfile == \"\" {\n\t\t// No -f/--file was specified so use the default\n\t\tdockerfileName = DefaultDockerfileName\n\t\tfilename = filepath.Join(absContextDirectory, dockerfileName)\n\n\t\t// Just to be nice ;-) look for 'dockerfile' too but only\n\t\t// use it if we found it, otherwise ignore this check\n\t\tif _, err = os.Lstat(filename); os.IsNotExist(err) {\n\t\t\ttmpFN := path.Join(absContextDirectory, strings.ToLower(dockerfileName))\n\t\t\tif _, err = os.Lstat(tmpFN); err == nil {\n\t\t\t\tdockerfileName = strings.ToLower(dockerfileName)\n\t\t\t\tfilename = tmpFN\n\t\t\t}\n\t\t}\n\t}\n\n\torigDockerfile := dockerfileName // used for error msg\n\tif filename, err = filepath.Abs(filename); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now reset the dockerfileName to be relative to the build context\n\tdockerfileName, err = filepath.Rel(absContextDirectory, filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// And canonicalize dockerfile name to a platform-independent one\n\tdockerfileName, err = archive.CanonicalTarNameForPath(dockerfileName)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Cannot canonicalize dockerfile path %s: %v\", dockerfileName, err)\n\t}\n\n\tif _, err = os.Lstat(filename); os.IsNotExist(err) {\n\t\treturn nil, fmt.Errorf(\"Cannot locate Dockerfile: %s\", origDockerfile)\n\t}\n\tvar includes = []string{\".\"}\n\tvar excludes []string\n\n\tdockerIgnorePath := path.Join(contextDirectory, \".dockerignore\")\n\tdockerIgnore, err := os.Open(dockerIgnorePath)\n\tif err != nil {\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn nil, err\n\t\t}\n\t\tlogrus.Warnf(\"Error while reading .dockerignore (%s) : %s\", dockerIgnorePath, err.Error())\n\t\texcludes = make([]string, 0)\n\t} else {\n\t\texcludes, err = dockerignore.ReadAll(dockerIgnore)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// If .dockerignore mentions .dockerignore or the Dockerfile\n\t// then make sure we send both files over to the daemon\n\t// because Dockerfile is, obviously, needed no matter what, and\n\t// .dockerignore is needed to know if either one needs to be\n\t// removed.  The deamon will remove them for us, if needed, after it\n\t// parses the Dockerfile.\n\tkeepThem1, _ := fileutils.Matches(\".dockerignore\", excludes)\n\tkeepThem2, _ := fileutils.Matches(dockerfileName, excludes)\n\tif keepThem1 || keepThem2 {\n\t\tincludes = append(includes, \".dockerignore\", dockerfileName)\n\t}\n\n\tif err := builder.ValidateContextDirectory(contextDirectory, excludes); err != nil {\n\t\treturn nil, fmt.Errorf(\"Error checking context is accessible: '%s'. Please check permissions and try again.\", err)\n\t}\n\n\toptions := &archive.TarOptions{\n\t\tCompression:     archive.Uncompressed,\n\t\tExcludePatterns: excludes,\n\t\tIncludeFiles:    includes,\n\t}\n\n\treturn archive.TarWithOptions(contextDirectory, options)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/client/client.go",
    "content": "package client\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\n\t\"github.com/docker/docker/cliconfig\"\n\t\"github.com/docker/docker/pkg/homedir\"\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/go-connections/sockets\"\n\t\"github.com/docker/go-connections/tlsconfig\"\n\t\"github.com/docker/libcompose/version\"\n)\n\nconst (\n\t// DefaultAPIVersion is the default docker API version set by libcompose\n\tDefaultAPIVersion   = \"v1.31\"\n\tdefaultTrustKeyFile = \"key.json\"\n\tdefaultCaFile       = \"ca.pem\"\n\tdefaultKeyFile      = \"key.pem\"\n\tdefaultCertFile     = \"cert.pem\"\n)\n\nvar (\n\tdockerCertPath = os.Getenv(\"DOCKER_CERT_PATH\")\n)\n\nfunc init() {\n\tif dockerCertPath == \"\" {\n\t\tdockerCertPath = cliconfig.ConfigDir()\n\t}\n}\n\n// Options holds docker client options (host, tls, ..)\ntype Options struct {\n\tTLS        bool\n\tTLSVerify  bool\n\tTLSOptions tlsconfig.Options\n\tTrustKey   string\n\tHost       string\n\tAPIVersion string\n}\n\n// Create creates a docker client based on the specified options.\nfunc Create(c Options) (client.APIClient, error) {\n\tif c.Host == \"\" {\n\t\tif os.Getenv(\"DOCKER_API_VERSION\") == \"\" {\n\t\t\tos.Setenv(\"DOCKER_API_VERSION\", DefaultAPIVersion)\n\t\t}\n\t\tclient, err := client.NewEnvClient()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn client, nil\n\t}\n\n\tapiVersion := c.APIVersion\n\tif apiVersion == \"\" {\n\t\tapiVersion = DefaultAPIVersion\n\t}\n\n\tif c.TLSOptions.CAFile == \"\" {\n\t\tc.TLSOptions.CAFile = filepath.Join(dockerCertPath, defaultCaFile)\n\t}\n\tif c.TLSOptions.CertFile == \"\" {\n\t\tc.TLSOptions.CertFile = filepath.Join(dockerCertPath, defaultCertFile)\n\t}\n\tif c.TLSOptions.KeyFile == \"\" {\n\t\tc.TLSOptions.KeyFile = filepath.Join(dockerCertPath, defaultKeyFile)\n\t}\n\tif c.TrustKey == \"\" {\n\t\tc.TrustKey = filepath.Join(homedir.Get(), \".docker\", defaultTrustKeyFile)\n\t}\n\tif c.TLSVerify {\n\t\tc.TLS = true\n\t}\n\tif c.TLS {\n\t\tc.TLSOptions.InsecureSkipVerify = !c.TLSVerify\n\t}\n\n\tvar httpClient *http.Client\n\tif c.TLS {\n\t\tconfig, err := tlsconfig.Client(c.TLSOptions)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ttr := &http.Transport{\n\t\t\tTLSClientConfig: config,\n\t\t}\n\t\tproto, addr, _, err := client.ParseHost(c.Host)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := sockets.ConfigureTransport(tr, proto, addr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\thttpClient = &http.Client{\n\t\t\tTransport: tr,\n\t\t}\n\t}\n\n\tcustomHeaders := map[string]string{}\n\tcustomHeaders[\"User-Agent\"] = fmt.Sprintf(\"Libcompose-Client/%s (%s)\", version.VERSION, runtime.GOOS)\n\n\tclient, err := client.NewClient(c.Host, apiVersion, httpClient, customHeaders)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn client, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/container.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"strings\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/docker/pkg/promise\"\n\t\"github.com/docker/docker/pkg/stdcopy\"\n\t\"github.com/docker/docker/pkg/term\"\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/labels\"\n\t\"github.com/docker/libcompose/logger\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/events\"\n\tutil \"github.com/docker/libcompose/utils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Container holds information about a docker container and the service it is tied on.\ntype Container struct {\n\tname            string\n\tserviceName     string\n\tprojectName     string\n\tcontainerNumber int\n\toneOff          bool\n\teventNotifier   events.Notifier\n\tloggerFactory   logger.Factory\n\tclient          client.APIClient\n\n\t// FIXME(vdemeester) Remove this dependency\n\tservice *Service\n}\n\n// NewContainer creates a container struct with the specified docker client, name and service.\nfunc NewContainer(client client.APIClient, name string, containerNumber int, service *Service) *Container {\n\treturn &Container{\n\t\tclient:          client,\n\t\tname:            name,\n\t\tcontainerNumber: containerNumber,\n\n\t\t// TODO(vdemeester) Move these to arguments\n\t\tserviceName:   service.name,\n\t\tprojectName:   service.context.Project.Name,\n\t\teventNotifier: service.context.Project,\n\t\tloggerFactory: service.context.LoggerFactory,\n\n\t\t// TODO(vdemeester) Remove this dependency\n\t\tservice: service,\n\t}\n}\n\n// NewOneOffContainer creates a \"oneoff\" container struct with the specified docker client, name and service.\nfunc NewOneOffContainer(client client.APIClient, name string, containerNumber int, service *Service) *Container {\n\tc := NewContainer(client, name, containerNumber, service)\n\tc.oneOff = true\n\treturn c\n}\n\nfunc (c *Container) findExisting(ctx context.Context) (*types.ContainerJSON, error) {\n\treturn GetContainer(ctx, c.client, c.name)\n}\n\n// Info returns info about the container, like name, command, state or ports.\nfunc (c *Container) Info(ctx context.Context, qFlag bool) (project.Info, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn nil, err\n\t}\n\n\tinfos, err := GetContainersByFilter(ctx, c.client, map[string][]string{\n\t\t\"name\": {container.Name},\n\t})\n\tif err != nil || len(infos) == 0 {\n\t\treturn nil, err\n\t}\n\tinfo := infos[0]\n\n\tresult := project.Info{}\n\tif qFlag {\n\t\tresult = append(result, project.InfoPart{Key: \"Id\", Value: container.ID})\n\t} else {\n\t\tresult = append(result, project.InfoPart{Key: \"Name\", Value: name(info.Names)})\n\t\tresult = append(result, project.InfoPart{Key: \"Command\", Value: info.Command})\n\t\tresult = append(result, project.InfoPart{Key: \"State\", Value: info.Status})\n\t\tresult = append(result, project.InfoPart{Key: \"Ports\", Value: portString(info.Ports)})\n\t}\n\n\treturn result, nil\n}\n\nfunc portString(ports []types.Port) string {\n\tresult := []string{}\n\n\tfor _, port := range ports {\n\t\tif port.PublicPort > 0 {\n\t\t\tresult = append(result, fmt.Sprintf(\"%s:%d->%d/%s\", port.IP, port.PublicPort, port.PrivatePort, port.Type))\n\t\t} else {\n\t\t\tresult = append(result, fmt.Sprintf(\"%d/%s\", port.PrivatePort, port.Type))\n\t\t}\n\t}\n\n\treturn strings.Join(result, \", \")\n}\n\nfunc name(names []string) string {\n\tmax := math.MaxInt32\n\tvar current string\n\n\tfor _, v := range names {\n\t\tif len(v) < max {\n\t\t\tmax = len(v)\n\t\t\tcurrent = v\n\t\t}\n\t}\n\n\treturn current[1:]\n}\n\n// Recreate will not refresh the container by means of relaxation and enjoyment,\n// just delete it and create a new one with the current configuration\nfunc (c *Container) Recreate(ctx context.Context, imageName string) (*types.ContainerJSON, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn nil, err\n\t}\n\n\thash := container.Config.Labels[labels.HASH.Str()]\n\tlegacyHash := container.Config.Labels[labels.HASH_LEGACY.Str()]\n\n\tif hash == \"\" && legacyHash != \"\" {\n\t\thash = legacyHash\n\t}\n\tif hash == \"\" {\n\t\treturn nil, fmt.Errorf(\"Failed to find hash on old container: %s\", container.Name)\n\t}\n\n\tname := container.Name[1:]\n\tnewName := fmt.Sprintf(\"%s_%s\", name, container.ID[:12])\n\tlogrus.Debugf(\"Renaming %s => %s\", name, newName)\n\tif err := c.client.ContainerRename(ctx, container.ID, newName); err != nil {\n\t\tlogrus.Errorf(\"Failed to rename old container %s\", c.name)\n\t\treturn nil, err\n\t}\n\n\tnewContainer, err := c.createContainer(ctx, imageName, container.ID, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlogrus.Debugf(\"Created replacement container %s\", newContainer.ID)\n\n\tif err := c.client.ContainerRemove(ctx, types.ContainerRemoveOptions{\n\t\tContainerID:   container.ID,\n\t\tForce:         true,\n\t\tRemoveVolumes: false,\n\t}); err != nil {\n\t\tlogrus.Errorf(\"Failed to remove old container %s\", c.name)\n\t\treturn nil, err\n\t}\n\tlogrus.Debugf(\"Removed old container %s %s\", c.name, container.ID)\n\n\treturn newContainer, nil\n}\n\n// Create creates the container based on the specified image name and send an event\n// to notify the container has been created. If the container already exists, does\n// nothing.\nfunc (c *Container) Create(ctx context.Context, imageName string) (*types.ContainerJSON, error) {\n\treturn c.CreateWithOverride(ctx, imageName, nil)\n}\n\n// CreateWithOverride create container and override parts of the config to\n// allow special situations to override the config generated from the compose\n// file\nfunc (c *Container) CreateWithOverride(ctx context.Context, imageName string, configOverride *config.ServiceConfig) (*types.ContainerJSON, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif container == nil {\n\t\tcontainer, err = c.createContainer(ctx, imageName, \"\", configOverride)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tc.eventNotifier.Notify(events.ContainerCreated, c.serviceName, map[string]string{\n\t\t\t\"name\": c.Name(),\n\t\t})\n\t}\n\n\treturn container, err\n}\n\n// Stop stops the container.\nfunc (c *Container) Stop(ctx context.Context, timeout int) error {\n\treturn c.withContainer(ctx, func(container *types.ContainerJSON) error {\n\t\treturn c.client.ContainerStop(ctx, container.ID, timeout)\n\t})\n}\n\n// Pause pauses the container. If the containers are already paused, don't fail.\nfunc (c *Container) Pause(ctx context.Context) error {\n\treturn c.withContainer(ctx, func(container *types.ContainerJSON) error {\n\t\tif !container.State.Paused {\n\t\t\treturn c.client.ContainerPause(ctx, container.ID)\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// Unpause unpauses the container. If the containers are not paused, don't fail.\nfunc (c *Container) Unpause(ctx context.Context) error {\n\treturn c.withContainer(ctx, func(container *types.ContainerJSON) error {\n\t\tif container.State.Paused {\n\t\t\treturn c.client.ContainerUnpause(ctx, container.ID)\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// Kill kill the container.\nfunc (c *Container) Kill(ctx context.Context, signal string) error {\n\treturn c.withContainer(ctx, func(container *types.ContainerJSON) error {\n\t\treturn c.client.ContainerKill(ctx, container.ID, signal)\n\t})\n}\n\n// Delete removes the container if existing. If the container is running, it tries\n// to stop it first.\nfunc (c *Container) Delete(ctx context.Context, removeVolume bool) error {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn err\n\t}\n\n\tinfo, err := c.client.ContainerInspect(ctx, container.ID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !info.State.Running {\n\t\treturn c.client.ContainerRemove(ctx, types.ContainerRemoveOptions{\n\t\t\tContainerID:   container.ID,\n\t\t\tForce:         true,\n\t\t\tRemoveVolumes: removeVolume,\n\t\t})\n\t}\n\n\treturn nil\n}\n\n// IsRunning returns the running state of the container.\nfunc (c *Container) IsRunning(ctx context.Context) (bool, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn false, err\n\t}\n\n\tinfo, err := c.client.ContainerInspect(ctx, container.ID)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn info.State.Running, nil\n}\n\n// Run creates, start and attach to the container based on the image name,\n// the specified configuration.\n// It will always create a new container.\nfunc (c *Container) Run(ctx context.Context, imageName string, configOverride *config.ServiceConfig) (int, error) {\n\tvar (\n\t\terrCh       chan error\n\t\tout, stderr io.Writer\n\t\tin          io.ReadCloser\n\t)\n\n\tcontainer, err := c.createContainer(ctx, imageName, \"\", configOverride)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\tif configOverride.StdinOpen {\n\t\tin = os.Stdin\n\t}\n\tif configOverride.Tty {\n\t\tout = os.Stdout\n\t}\n\tif configOverride.Tty {\n\t\tstderr = os.Stderr\n\t}\n\n\toptions := types.ContainerAttachOptions{\n\t\tContainerID: container.ID,\n\t\tStream:      true,\n\t\tStdin:       configOverride.StdinOpen,\n\t\tStdout:      configOverride.Tty,\n\t\tStderr:      configOverride.Tty,\n\t}\n\n\tresp, err := c.client.ContainerAttach(ctx, options)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t// set raw terminal\n\tinFd, _ := term.GetFdInfo(in)\n\tstate, err := term.SetRawTerminal(inFd)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\t// restore raw terminal\n\tdefer term.RestoreTerminal(inFd, state)\n\t// holdHijackedConnection (in goroutine)\n\terrCh = promise.Go(func() error {\n\t\treturn holdHijackedConnection(configOverride.Tty, in, out, stderr, resp)\n\t})\n\n\tif err := c.client.ContainerStart(ctx, container.ID); err != nil {\n\t\treturn -1, err\n\t}\n\n\tif err := <-errCh; err != nil {\n\t\tlogrus.Debugf(\"Error hijack: %s\", err)\n\t\treturn -1, err\n\t}\n\n\texitedContainer, err := c.client.ContainerInspect(ctx, container.ID)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn exitedContainer.State.ExitCode, nil\n}\n\nfunc holdHijackedConnection(tty bool, inputStream io.ReadCloser, outputStream, errorStream io.Writer, resp types.HijackedResponse) error {\n\tvar err error\n\treceiveStdout := make(chan error, 1)\n\tif outputStream != nil || errorStream != nil {\n\t\tgo func() {\n\t\t\t// When TTY is ON, use regular copy\n\t\t\tif tty && outputStream != nil {\n\t\t\t\t_, err = io.Copy(outputStream, resp.Reader)\n\t\t\t} else {\n\t\t\t\t_, err = stdcopy.StdCopy(outputStream, errorStream, resp.Reader)\n\t\t\t}\n\t\t\tlogrus.Debugf(\"[hijack] End of stdout\")\n\t\t\treceiveStdout <- err\n\t\t}()\n\t}\n\n\tstdinDone := make(chan struct{})\n\tgo func() {\n\t\tif inputStream != nil {\n\t\t\tio.Copy(resp.Conn, inputStream)\n\t\t\tlogrus.Debugf(\"[hijack] End of stdin\")\n\t\t}\n\n\t\tif err := resp.CloseWrite(); err != nil {\n\t\t\tlogrus.Debugf(\"Couldn't send EOF: %s\", err)\n\t\t}\n\t\tclose(stdinDone)\n\t}()\n\n\tselect {\n\tcase err := <-receiveStdout:\n\t\tif err != nil {\n\t\t\tlogrus.Debugf(\"Error receiveStdout: %s\", err)\n\t\t\treturn err\n\t\t}\n\tcase <-stdinDone:\n\t\tif outputStream != nil || errorStream != nil {\n\t\t\tif err := <-receiveStdout; err != nil {\n\t\t\t\tlogrus.Debugf(\"Error receiveStdout: %s\", err)\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Up creates and start the container based on the image name and send an event\n// to notify the container has been created. If the container exists but is stopped\n// it tries to start it.\nfunc (c *Container) Up(ctx context.Context, imageName string) error {\n\tvar err error\n\n\tcontainer, err := c.Create(ctx, imageName)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !container.State.Running {\n\t\tc.Start(container)\n\t}\n\n\treturn nil\n}\n\n// Start the specified container with the specified host config\nfunc (c *Container) Start(container *types.ContainerJSON) error {\n\tlogrus.WithFields(logrus.Fields{\"container.ID\": container.ID, \"c.name\": c.name}).Debug(\"Starting container\")\n\tif err := c.client.ContainerStart(context.Background(), container.ID); err != nil {\n\t\tlogrus.WithFields(logrus.Fields{\"container.ID\": container.ID, \"c.name\": c.name}).Debug(\"Failed to start container\")\n\t\treturn err\n\t}\n\tc.eventNotifier.Notify(events.ContainerStarted, c.serviceName, map[string]string{\n\t\t\"name\": c.Name(),\n\t})\n\treturn nil\n}\n\n// OutOfSync checks if the container is out of sync with the service definition.\n// It looks if the the service hash container label is the same as the computed one.\nfunc (c *Container) OutOfSync(ctx context.Context, imageName string) (bool, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn false, err\n\t}\n\n\tif container.Config.Image != imageName {\n\t\tlogrus.Debugf(\"Images for %s do not match %s!=%s\", c.name, container.Config.Image, imageName)\n\t\treturn true, nil\n\t}\n\n\tif container.Config.Labels[labels.HASH.Str()] != c.getHash() {\n\t\tlogrus.Debugf(\"Hashes for %s do not match %s!=%s\", c.name, container.Config.Labels[labels.HASH.Str()], c.getHash())\n\t\treturn true, nil\n\t}\n\n\timage, _, err := c.client.ImageInspectWithRaw(ctx, container.Config.Image, false)\n\tif err != nil {\n\t\tif client.IsErrImageNotFound(err) {\n\t\t\tlogrus.Debugf(\"Image %s do not exist, do not know if it's out of sync\", container.Config.Image)\n\t\t\treturn false, nil\n\t\t}\n\t\treturn false, err\n\t}\n\n\tlogrus.Debugf(\"Checking existing image name vs id: %s == %s\", image.ID, container.Image)\n\treturn image.ID != container.Image, err\n}\n\nfunc (c *Container) getHash() string {\n\treturn config.GetServiceHash(c.serviceName, c.service.Config())\n}\n\nfunc volumeBinds(volumes map[string]struct{}, container *types.ContainerJSON) []string {\n\tresult := make([]string, 0, len(container.Mounts))\n\tfor _, mount := range container.Mounts {\n\t\tif _, ok := volumes[mount.Destination]; ok {\n\t\t\tresult = append(result, fmt.Sprint(mount.Source, \":\", mount.Destination))\n\t\t}\n\t}\n\treturn result\n}\n\nfunc (c *Container) createContainer(ctx context.Context, imageName, oldContainer string, configOverride *config.ServiceConfig) (*types.ContainerJSON, error) {\n\tserviceConfig := c.service.serviceConfig\n\tif configOverride != nil {\n\t\tserviceConfig.Command = configOverride.Command\n\t\tserviceConfig.Tty = configOverride.Tty\n\t\tserviceConfig.StdinOpen = configOverride.StdinOpen\n\t}\n\tconfigWrapper, err := ConvertToAPI(c.service)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconfigWrapper.Config.Image = imageName\n\n\tif configWrapper.Config.Labels == nil {\n\t\tconfigWrapper.Config.Labels = map[string]string{}\n\t}\n\n\toneOffString := \"False\"\n\tif c.oneOff {\n\t\toneOffString = \"True\"\n\t}\n\n\tconfigWrapper.Config.Labels[labels.SERVICE.Str()] = c.serviceName\n\tconfigWrapper.Config.Labels[labels.PROJECT.Str()] = c.projectName\n\tconfigWrapper.Config.Labels[labels.HASH.Str()] = c.getHash()\n\tconfigWrapper.Config.Labels[labels.ONEOFF.Str()] = oneOffString\n\tconfigWrapper.Config.Labels[labels.NUMBER.Str()] = fmt.Sprint(c.containerNumber)\n\tconfigWrapper.Config.Labels[labels.VERSION.Str()] = ComposeVersion\n\n\terr = c.populateAdditionalHostConfig(configWrapper.HostConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif oldContainer != \"\" {\n\t\tinfo, err := c.client.ContainerInspect(ctx, oldContainer)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tconfigWrapper.HostConfig.Binds = util.Merge(configWrapper.HostConfig.Binds, volumeBinds(configWrapper.Config.Volumes, &info))\n\t}\n\n\tnetworkConfig := configWrapper.NetworkingConfig\n\tif configWrapper.HostConfig.NetworkMode != \"\" && configWrapper.HostConfig.NetworkMode.IsUserDefined() {\n\t\tif networkConfig == nil {\n\t\t\t// check user docker label, assign the user define ipv4 address\n\t\t\tif _, ok := configWrapper.Config.Labels[\"io.rancher.user_docker.fix_ip\"]; ok {\n\t\t\t\tnetworkConfig = &network.NetworkingConfig{\n\t\t\t\t\tEndpointsConfig: map[string]*network.EndpointSettings{\n\t\t\t\t\t\tstring(configWrapper.HostConfig.NetworkMode): {\n\t\t\t\t\t\t\tIPAddress: configWrapper.Config.Labels[\"io.rancher.user_docker.fix_ip\"],\n\t\t\t\t\t\t\tIPAMConfig: &network.EndpointIPAMConfig{\n\t\t\t\t\t\t\t\tIPv4Address: configWrapper.Config.Labels[\"io.rancher.user_docker.fix_ip\"],\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\t}\n\t\t\t} else {\n\t\t\t\tnetworkConfig = &network.NetworkingConfig{\n\t\t\t\t\tEndpointsConfig: map[string]*network.EndpointSettings{\n\t\t\t\t\t\tstring(configWrapper.HostConfig.NetworkMode): {},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor key, value := range networkConfig.EndpointsConfig {\n\t\t\tconf := value\n\t\t\tif value.Aliases == nil {\n\t\t\t\tvalue.Aliases = []string{}\n\t\t\t}\n\t\t\tvalue.Aliases = append(value.Aliases, c.serviceName)\n\t\t\tnetworkConfig.EndpointsConfig[key] = conf\n\t\t}\n\t}\n\n\tlogrus.Debugf(\"Creating container %s %#v\", c.name, configWrapper)\n\n\tcontainer, err := c.client.ContainerCreate(ctx, configWrapper.Config, configWrapper.HostConfig, networkConfig, c.name)\n\tif err != nil {\n\t\tlogrus.Debugf(\"Failed to create container %s: %v\", c.name, err)\n\t\treturn nil, err\n\t}\n\n\treturn GetContainer(ctx, c.client, container.ID)\n}\n\nfunc (c *Container) populateAdditionalHostConfig(hostConfig *container.HostConfig) error {\n\tlinks := map[string]string{}\n\n\tfor _, link := range c.service.DependentServices() {\n\t\tif !c.service.context.Project.ServiceConfigs.Has(link.Target) {\n\t\t\tcontinue\n\t\t}\n\n\t\tservice, err := c.service.context.Project.CreateService(link.Target)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// FIXME(vdemeester) container should not know service\n\t\tcontainers, err := service.Containers(context.Background())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif link.Type == project.RelTypeLink {\n\t\t\tc.addLinks(links, service, link, containers)\n\t\t} else if link.Type == project.RelTypeIpcNamespace {\n\t\t\thostConfig, err = c.addIpc(hostConfig, service, containers)\n\t\t} else if link.Type == project.RelTypeNetNamespace {\n\t\t\thostConfig, err = c.addNetNs(hostConfig, service, containers)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\thostConfig.Links = []string{}\n\tfor k, v := range links {\n\t\thostConfig.Links = append(hostConfig.Links, strings.Join([]string{v, k}, \":\"))\n\t}\n\tfor _, v := range c.service.Config().ExternalLinks {\n\t\thostConfig.Links = append(hostConfig.Links, v)\n\t}\n\n\treturn nil\n}\n\nfunc (c *Container) addLinks(links map[string]string, service project.Service, rel project.ServiceRelationship, containers []project.Container) {\n\tfor _, container := range containers {\n\t\tif _, ok := links[rel.Alias]; !ok {\n\t\t\tlinks[rel.Alias] = container.Name()\n\t\t}\n\n\t\tlinks[container.Name()] = container.Name()\n\t}\n}\n\nfunc (c *Container) addIpc(config *container.HostConfig, service project.Service, containers []project.Container) (*container.HostConfig, error) {\n\tif len(containers) == 0 {\n\t\treturn nil, fmt.Errorf(\"Failed to find container for IPC %v\", c.service.Config().Ipc)\n\t}\n\n\tid, err := containers[0].ID()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconfig.IpcMode = container.IpcMode(\"container:\" + id)\n\treturn config, nil\n}\n\nfunc (c *Container) addNetNs(config *container.HostConfig, service project.Service, containers []project.Container) (*container.HostConfig, error) {\n\tif len(containers) == 0 {\n\t\treturn nil, fmt.Errorf(\"Failed to find container for networks ns %v\", c.service.Config().NetworkMode)\n\t}\n\n\tid, err := containers[0].ID()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconfig.NetworkMode = container.NetworkMode(\"container:\" + id)\n\treturn config, nil\n}\n\n// ID returns the container Id.\nfunc (c *Container) ID() (string, error) {\n\t// FIXME(vdemeester) container should not ask for his ID..\n\tcontainer, err := c.findExisting(context.Background())\n\tif container == nil {\n\t\treturn \"\", err\n\t}\n\treturn container.ID, err\n}\n\n// Name returns the container name.\nfunc (c *Container) Name() string {\n\treturn c.name\n}\n\n// Restart restarts the container if existing, does nothing otherwise.\nfunc (c *Container) Restart(ctx context.Context, timeout int) error {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil || container == nil {\n\t\treturn err\n\t}\n\n\treturn c.client.ContainerRestart(ctx, container.ID, timeout)\n}\n\n// Log forwards container logs to the project configured logger.\nfunc (c *Container) Log(ctx context.Context, follow bool) error {\n\tcontainer, err := c.findExisting(ctx)\n\tif container == nil || err != nil {\n\t\treturn err\n\t}\n\n\tinfo, err := c.client.ContainerInspect(ctx, container.ID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// FIXME(vdemeester) update container struct to do less API calls\n\tname := fmt.Sprintf(\"%s_%d\", c.service.name, c.containerNumber)\n\tl := c.loggerFactory.Create(name)\n\n\toptions := types.ContainerLogsOptions{\n\t\tContainerID: c.name,\n\t\tShowStdout:  true,\n\t\tShowStderr:  true,\n\t\tFollow:      follow,\n\t\tTail:        \"all\",\n\t}\n\tresponseBody, err := c.client.ContainerLogs(ctx, options)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer responseBody.Close()\n\n\tif info.Config.Tty {\n\t\t_, err = io.Copy(&logger.Wrapper{Logger: l}, responseBody)\n\t} else {\n\t\t_, err = stdcopy.StdCopy(&logger.Wrapper{Logger: l}, &logger.Wrapper{Logger: l, Err: true}, responseBody)\n\t}\n\tlogrus.WithFields(logrus.Fields{\"Logger\": l, \"err\": err}).Debug(\"c.client.Logs() returned error\")\n\n\treturn err\n}\n\nfunc (c *Container) withContainer(ctx context.Context, action func(*types.ContainerJSON) error) error {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif container != nil {\n\t\treturn action(container)\n\t}\n\n\treturn nil\n}\n\n// Port returns the host port the specified port is mapped on.\nfunc (c *Container) Port(ctx context.Context, port string) (string, error) {\n\tcontainer, err := c.findExisting(ctx)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif bindings, ok := container.NetworkSettings.Ports[nat.Port(port)]; ok {\n\t\tresult := []string{}\n\t\tfor _, binding := range bindings {\n\t\t\tresult = append(result, binding.HostIP+\":\"+binding.HostPort)\n\t\t}\n\n\t\treturn strings.Join(result, \"\\n\"), nil\n\t}\n\treturn \"\", nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/context.go",
    "content": "package docker\n\nimport (\n\t\"github.com/docker/docker/cliconfig\"\n\t\"github.com/docker/libcompose/project\"\n)\n\n// Context holds context meta information about a libcompose project and docker\n// client information (like configuration file, builder to use, …)\ntype Context struct {\n\tproject.Context\n\tClientFactory project.ClientFactory\n\tConfigDir     string\n\tConfigFile    *cliconfig.ConfigFile\n\tAuthLookup    AuthLookup\n}\n\nfunc (c *Context) open() error {\n\treturn c.LookupConfig()\n}\n\n// LookupConfig tries to load the docker configuration files, if any.\nfunc (c *Context) LookupConfig() error {\n\tif c.ConfigFile != nil {\n\t\treturn nil\n\t}\n\n\tconfig, err := cliconfig.Load(c.ConfigDir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc.ConfigFile = config\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/convert.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/docker/docker/runconfig/opts\"\n\t\"github.com/docker/engine-api/types/container\"\n\t\"github.com/docker/engine-api/types/network\"\n\t\"github.com/docker/engine-api/types/strslice\"\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/docker/go-units\"\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/utils\"\n)\n\n// ConfigWrapper wraps Config, HostConfig and NetworkingConfig for a container.\ntype ConfigWrapper struct {\n\tConfig           *container.Config\n\tHostConfig       *container.HostConfig\n\tNetworkingConfig *network.NetworkingConfig\n}\n\n// Filter filters the specified string slice with the specified function.\nfunc Filter(vs []string, f func(string) bool) []string {\n\tr := make([]string, 0, len(vs))\n\tfor _, v := range vs {\n\t\tif f(v) {\n\t\t\tr = append(r, v)\n\t\t}\n\t}\n\treturn r\n}\n\nfunc isBind(s string) bool {\n\treturn strings.ContainsRune(s, ':')\n}\n\nfunc isVolume(s string) bool {\n\treturn !isBind(s)\n}\n\n// ConvertToAPI converts a service configuration to a docker API container configuration.\nfunc ConvertToAPI(s *Service) (*ConfigWrapper, error) {\n\tconfig, hostConfig, err := Convert(s.serviceConfig, s.context.Context)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresult := ConfigWrapper{\n\t\tConfig:     config,\n\t\tHostConfig: hostConfig,\n\t}\n\treturn &result, nil\n}\n\nfunc isNamedVolume(volume string) bool {\n\treturn !strings.HasPrefix(volume, \".\") && !strings.HasPrefix(volume, \"/\") && !strings.HasPrefix(volume, \"~\")\n}\n\nfunc volumes(c *config.ServiceConfig, ctx project.Context) map[string]struct{} {\n\tvolumes := make(map[string]struct{}, len(c.Volumes))\n\tfor k, v := range c.Volumes {\n\t\tif len(ctx.ComposeFiles) > 0 && !isNamedVolume(v) {\n\t\t\tv = ctx.ResourceLookup.ResolvePath(v, ctx.ComposeFiles[0])\n\t\t}\n\n\t\tc.Volumes[k] = v\n\t\tif isVolume(v) {\n\t\t\tvolumes[v] = struct{}{}\n\t\t}\n\t}\n\treturn volumes\n}\n\nfunc restartPolicy(c *config.ServiceConfig) (*container.RestartPolicy, error) {\n\trestart, err := opts.ParseRestartPolicy(c.Restart)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &container.RestartPolicy{Name: restart.Name, MaximumRetryCount: restart.MaximumRetryCount}, nil\n}\n\nfunc ports(c *config.ServiceConfig) (map[nat.Port]struct{}, nat.PortMap, error) {\n\tports, binding, err := nat.ParsePortSpecs(c.Ports)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\texPorts, _, err := nat.ParsePortSpecs(c.Expose)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tfor k, v := range exPorts {\n\t\tports[k] = v\n\t}\n\n\texposedPorts := map[nat.Port]struct{}{}\n\tfor k, v := range ports {\n\t\texposedPorts[nat.Port(k)] = v\n\t}\n\n\tportBindings := nat.PortMap{}\n\tfor k, bv := range binding {\n\t\tdcbs := make([]nat.PortBinding, len(bv))\n\t\tfor k, v := range bv {\n\t\t\tdcbs[k] = nat.PortBinding{HostIP: v.HostIP, HostPort: v.HostPort}\n\t\t}\n\t\tportBindings[nat.Port(k)] = dcbs\n\t}\n\treturn exposedPorts, portBindings, nil\n}\n\n// Convert converts a service configuration to an docker API structures (Config and HostConfig)\nfunc Convert(c *config.ServiceConfig, ctx project.Context) (*container.Config, *container.HostConfig, error) {\n\trestartPolicy, err := restartPolicy(c)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\texposedPorts, portBindings, err := ports(c)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tdeviceMappings, err := parseDevices(c.Devices)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar volumesFrom []string\n\tif c.VolumesFrom != nil {\n\t\tvolumesFrom, err = getVolumesFrom(c.VolumesFrom, ctx.Project.ServiceConfigs, ctx.ProjectName)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tconfig := &container.Config{\n\t\tEntrypoint:   strslice.StrSlice(utils.CopySlice(c.Entrypoint)),\n\t\tHostname:     c.Hostname,\n\t\tDomainname:   c.DomainName,\n\t\tUser:         c.User,\n\t\tEnv:          utils.CopySlice(c.Environment),\n\t\tCmd:          strslice.StrSlice(utils.CopySlice(c.Command)),\n\t\tImage:        c.Image,\n\t\tLabels:       utils.CopyMap(c.Labels),\n\t\tExposedPorts: exposedPorts,\n\t\tTty:          c.Tty,\n\t\tOpenStdin:    c.StdinOpen,\n\t\tWorkingDir:   c.WorkingDir,\n\t\tVolumes:      volumes(c, ctx),\n\t\tMacAddress:   c.MacAddress,\n\t}\n\n\tulimits := []*units.Ulimit{}\n\tif c.Ulimits.Elements != nil {\n\t\tfor _, ulimit := range c.Ulimits.Elements {\n\t\t\tulimits = append(ulimits, &units.Ulimit{\n\t\t\t\tName: ulimit.Name,\n\t\t\t\tSoft: ulimit.Soft,\n\t\t\t\tHard: ulimit.Hard,\n\t\t\t})\n\t\t}\n\t}\n\n\tresources := container.Resources{\n\t\tCgroupParent: c.CgroupParent,\n\t\tMemory:       c.MemLimit,\n\t\tMemorySwap:   c.MemSwapLimit,\n\t\tCPUShares:    c.CPUShares,\n\t\tCPUQuota:     c.CPUQuota,\n\t\tCpusetCpus:   c.CPUSet,\n\t\tUlimits:      ulimits,\n\t\tDevices:      deviceMappings,\n\t}\n\n\thostConfig := &container.HostConfig{\n\t\tVolumesFrom: volumesFrom,\n\t\tCapAdd:      strslice.StrSlice(utils.CopySlice(c.CapAdd)),\n\t\tCapDrop:     strslice.StrSlice(utils.CopySlice(c.CapDrop)),\n\t\tExtraHosts:  utils.CopySlice(c.ExtraHosts),\n\t\tPrivileged:  c.Privileged,\n\t\tBinds:       Filter(c.Volumes, isBind),\n\t\tDNS:         utils.CopySlice(c.DNS),\n\t\tDNSSearch:   utils.CopySlice(c.DNSSearch),\n\t\tLogConfig: container.LogConfig{\n\t\t\tType:   c.Logging.Driver,\n\t\t\tConfig: utils.CopyMap(c.Logging.Options),\n\t\t},\n\t\tNetworkMode:    container.NetworkMode(c.NetworkMode),\n\t\tReadonlyRootfs: c.ReadOnly,\n\t\tOomScoreAdj:    c.OomScoreAdj,\n\t\tPidMode:        container.PidMode(c.Pid),\n\t\tUTSMode:        container.UTSMode(c.Uts),\n\t\tIpcMode:        container.IpcMode(c.Ipc),\n\t\tPortBindings:   portBindings,\n\t\tRestartPolicy:  *restartPolicy,\n\t\tSecurityOpt:    utils.CopySlice(c.SecurityOpt),\n\t\tVolumeDriver:   c.VolumeDriver,\n\t\tResources:      resources,\n\t}\n\n\treturn config, hostConfig, nil\n}\n\nfunc getVolumesFrom(volumesFrom []string, serviceConfigs *config.ServiceConfigs, projectName string) ([]string, error) {\n\tvolumes := []string{}\n\tfor _, volumeFrom := range volumesFrom {\n\t\tif serviceConfig, ok := serviceConfigs.Get(volumeFrom); ok {\n\t\t\t// It's a service - Use the first one\n\t\t\tname := fmt.Sprintf(\"%s_%s_1\", projectName, volumeFrom)\n\t\t\t// If a container name is specified, use that instead\n\t\t\tif serviceConfig.ContainerName != \"\" {\n\t\t\t\tname = serviceConfig.ContainerName\n\t\t\t}\n\t\t\tvolumes = append(volumes, name)\n\t\t} else {\n\t\t\tvolumes = append(volumes, volumeFrom)\n\t\t}\n\t}\n\treturn volumes, nil\n}\n\nfunc parseDevices(devices []string) ([]container.DeviceMapping, error) {\n\t// parse device mappings\n\tdeviceMappings := []container.DeviceMapping{}\n\tfor _, device := range devices {\n\t\tv, err := opts.ParseDevice(device)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdeviceMappings = append(deviceMappings, container.DeviceMapping{\n\t\t\tPathOnHost:        v.PathOnHost,\n\t\t\tPathInContainer:   v.PathInContainer,\n\t\t\tCgroupPermissions: v.CgroupPermissions,\n\t\t})\n\t}\n\n\treturn deviceMappings, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/functions.go",
    "content": "package docker\n\nimport (\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n)\n\n// GetContainersByFilter looks up the hosts containers with the specified filters and\n// returns a list of container matching it, or an error.\nfunc GetContainersByFilter(ctx context.Context, clientInstance client.APIClient, containerFilters ...map[string][]string) ([]types.Container, error) {\n\tfilterArgs := filters.NewArgs()\n\n\t// FIXME(vdemeester) I don't like 3 for loops >_<\n\tfor _, filter := range containerFilters {\n\t\tfor key, filterValue := range filter {\n\t\t\tfor _, value := range filterValue {\n\t\t\t\tfilterArgs.Add(key, value)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn clientInstance.ContainerList(ctx, types.ContainerListOptions{\n\t\tAll:    true,\n\t\tFilter: filterArgs,\n\t})\n}\n\n// GetContainer looks up the hosts containers with the specified ID\n// or name and returns it, or an error.\nfunc GetContainer(ctx context.Context, clientInstance client.APIClient, id string) (*types.ContainerJSON, error) {\n\tcontainer, err := clientInstance.ContainerInspect(ctx, id)\n\tif err != nil {\n\t\tif client.IsErrContainerNotFound(err) {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn &container, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/image.go",
    "content": "package docker\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/docker/pkg/jsonmessage\"\n\t\"github.com/docker/docker/pkg/term\"\n\t\"github.com/docker/docker/reference\"\n\t\"github.com/docker/docker/registry\"\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc removeImage(ctx context.Context, client client.APIClient, image string) error {\n\t_, err := client.ImageRemove(ctx, types.ImageRemoveOptions{\n\t\tImageID: image,\n\t})\n\treturn err\n}\n\nfunc pullImage(ctx context.Context, client client.APIClient, service *Service, image string) error {\n\tfmt.Fprintf(os.Stderr, \"Pulling %s (%s)...\\n\", service.name, image)\n\tdistributionRef, err := reference.ParseNamed(image)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trepoInfo, err := registry.ParseRepositoryInfo(distributionRef)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tauthConfig := service.context.AuthLookup.Lookup(repoInfo)\n\n\tencodedAuth, err := encodeAuthToBase64(authConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\toptions := types.ImagePullOptions{\n\t\tImageID:      distributionRef.String(),\n\t\tTag:          \"latest\",\n\t\tRegistryAuth: encodedAuth,\n\t}\n\tif named, ok := distributionRef.(reference.Named); ok {\n\t\toptions.ImageID = named.FullName()\n\t}\n\tif tagged, ok := distributionRef.(reference.NamedTagged); ok {\n\t\toptions.Tag = tagged.Tag()\n\t}\n\n\ttimeoutsRemaining := 3\n\tfor i := 0; i < 100; i++ {\n\t\tresponseBody, err := client.ImagePull(ctx, options, func() (string, error) {\n\t\t\treturn encodedAuth, nil\n\t\t})\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to pull image %s: %v\", image, err)\n\t\t\treturn err\n\t\t}\n\n\t\tvar writeBuff io.Writer = os.Stderr\n\n\t\toutFd, isTerminalOut := term.GetFdInfo(os.Stderr)\n\n\t\terr = jsonmessage.DisplayJSONMessagesStream(responseBody, writeBuff, outFd, isTerminalOut, nil)\n\t\tresponseBody.Close()\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t} else if strings.Contains(err.Error(), \"timed out\") {\n\t\t\ttimeoutsRemaining -= 1\n\t\t\tif timeoutsRemaining == 0 {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if strings.Contains(err.Error(), \"connection\") || strings.Contains(err.Error(), \"unreachable\") {\n\t\t\ttime.Sleep(300 * time.Millisecond)\n\t\t\tcontinue\n\t\t} else {\n\t\t\tif jerr, ok := err.(*jsonmessage.JSONError); ok {\n\t\t\t\t// If no error code is set, default to 1\n\t\t\t\tif jerr.Code == 0 {\n\t\t\t\t\tjerr.Code = 1\n\t\t\t\t}\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s\", writeBuff)\n\t\t\t\treturn fmt.Errorf(\"Status: %s, Code: %d\", jerr.Message, jerr.Code)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn err\n}\n\n// encodeAuthToBase64 serializes the auth configuration as JSON base64 payload\nfunc encodeAuthToBase64(authConfig types.AuthConfig) (string, error) {\n\tbuf, err := json.Marshal(authConfig)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn base64.URLEncoding.EncodeToString(buf), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/name.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"github.com/docker/libcompose/labels\"\n)\n\nconst format = \"%s_%s_%d\"\n\n// Namer defines method to provide container name.\ntype Namer interface {\n\tNext() (string, int)\n}\n\ntype defaultNamer struct {\n\tproject       string\n\tservice       string\n\toneOff        bool\n\tcurrentNumber int\n}\n\ntype singleNamer struct {\n\tname string\n}\n\n// NewSingleNamer returns a namer that only allows a single name.\nfunc NewSingleNamer(name string) Namer {\n\treturn &singleNamer{name}\n}\n\n// NewNamer returns a namer that returns names based on the specified project and\n// service name and an inner counter, e.g. project_service_1, project_service_2…\nfunc NewNamer(ctx context.Context, client client.APIClient, project, service string, oneOff bool) (Namer, error) {\n\tnamer := &defaultNamer{\n\t\tproject: project,\n\t\tservice: service,\n\t\toneOff:  oneOff,\n\t}\n\n\tfilter := filters.NewArgs()\n\tfilter.Add(\"label\", fmt.Sprintf(\"%s=%s\", labels.PROJECT.Str(), project))\n\tfilter.Add(\"label\", fmt.Sprintf(\"%s=%s\", labels.SERVICE.Str(), service))\n\tif oneOff {\n\t\tfilter.Add(\"label\", fmt.Sprintf(\"%s=%s\", labels.ONEOFF.Str(), \"True\"))\n\t} else {\n\t\tfilter.Add(\"label\", fmt.Sprintf(\"%s=%s\", labels.ONEOFF.Str(), \"False\"))\n\t}\n\n\tcontainers, err := client.ContainerList(ctx, types.ContainerListOptions{\n\t\tAll:    true,\n\t\tFilter: filter,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmaxNumber := 0\n\tfor _, container := range containers {\n\t\tnumberLabel := container.Labels[labels.NUMBER.Str()]\n\t\tif numberLabel == \"\" {\n\t\t\tnamer.currentNumber = 1\n\t\t\treturn namer, nil\n\t\t}\n\t\tnumber, err := strconv.Atoi(numberLabel)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif number > maxNumber {\n\t\t\tmaxNumber = number\n\t\t}\n\t}\n\tnamer.currentNumber = maxNumber + 1\n\n\treturn namer, nil\n}\n\nfunc (i *defaultNamer) Next() (string, int) {\n\tservice := i.service\n\tif i.oneOff {\n\t\tservice = i.service + \"_run\"\n\t}\n\tname := fmt.Sprintf(format, i.project, service, i.currentNumber)\n\tnumber := i.currentNumber\n\ti.currentNumber = i.currentNumber + 1\n\treturn name, number\n}\n\nfunc (s *singleNamer) Next() (string, int) {\n\treturn s.name, 1\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/project.go",
    "content": "package docker\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/docker/client\"\n\t\"github.com/docker/libcompose/lookup\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// ComposeVersion is name of docker-compose.yml file syntax supported version\nconst ComposeVersion = \"1.5.0\"\n\n// NewProject creates a Project with the specified context.\nfunc NewProject(context *Context, parseOptions *config.ParseOptions) (*project.Project, error) {\n\tif context.ResourceLookup == nil {\n\t\tcontext.ResourceLookup = &lookup.FileConfigLookup{}\n\t}\n\n\tif context.EnvironmentLookup == nil {\n\t\tcwd, err := os.Getwd()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcontext.EnvironmentLookup = &lookup.ComposableEnvLookup{\n\t\t\tLookups: []config.EnvironmentLookup{\n\t\t\t\t&lookup.EnvfileLookup{\n\t\t\t\t\tPath: filepath.Join(cwd, \".env\"),\n\t\t\t\t},\n\t\t\t\t&lookup.OsEnvLookup{},\n\t\t\t},\n\t\t}\n\t}\n\n\tif context.AuthLookup == nil {\n\t\tcontext.AuthLookup = NewConfigAuthLookup(context)\n\t}\n\n\tif context.ServiceFactory == nil {\n\t\tcontext.ServiceFactory = &ServiceFactory{\n\t\t\tcontext: context,\n\t\t}\n\t}\n\n\tif context.ClientFactory == nil {\n\t\tfactory, err := project.NewDefaultClientFactory(client.Options{})\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcontext.ClientFactory = factory\n\t}\n\n\t// FIXME(vdemeester) Remove the context duplication ?\n\tp := project.NewProject(context.ClientFactory, &context.Context, parseOptions)\n\n\terr := p.Parse()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err = context.open(); err != nil {\n\t\tlogrus.Errorf(\"Failed to open project %s: %v\", p.Name, err)\n\t\treturn nil, err\n\t}\n\n\treturn p, err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/service.go",
    "content": "package docker\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/network\"\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/client\"\n\t\"github.com/docker/go-connections/nat\"\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/docker/builder\"\n\t\"github.com/docker/libcompose/labels\"\n\t\"github.com/docker/libcompose/project\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"github.com/docker/libcompose/utils\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Service is a project.Service implementations.\ntype Service struct {\n\tname          string\n\tserviceConfig *config.ServiceConfig\n\tcontext       *Context\n}\n\n// NewService creates a service\nfunc NewService(name string, serviceConfig *config.ServiceConfig, context *Context) *Service {\n\treturn &Service{\n\t\tname:          name,\n\t\tserviceConfig: serviceConfig,\n\t\tcontext:       context,\n\t}\n}\n\n// Name returns the service name.\nfunc (s *Service) Name() string {\n\treturn s.name\n}\n\n// Config returns the configuration of the service (config.ServiceConfig).\nfunc (s *Service) Config() *config.ServiceConfig {\n\treturn s.serviceConfig\n}\n\n// DependentServices returns the dependent services (as an array of ServiceRelationship) of the service.\nfunc (s *Service) DependentServices() []project.ServiceRelationship {\n\treturn project.DefaultDependentServices(s.context.Project, s)\n}\n\n// Create implements Service.Create. It ensures the image exists or build it\n// if it can and then create a container.\nfunc (s *Service) Create(ctx context.Context, options options.Create) error {\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\timageName, err := s.ensureImageExists(ctx, options.NoBuild)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(containers) != 0 {\n\t\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\t\treturn s.recreateIfNeeded(ctx, imageName, c, options.NoRecreate, options.ForceRecreate)\n\t\t})\n\t}\n\n\t_, err = s.createOne(ctx, imageName)\n\treturn err\n}\n\nfunc (s *Service) collectContainers(ctx context.Context) ([]*Container, error) {\n\tclient := s.context.ClientFactory.Create(s)\n\tcontainers, err := GetContainersByFilter(ctx, client, labels.SERVICE.Eq(s.name), labels.PROJECT.Eq(s.context.Project.Name))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlegacyContainers, err := GetContainersByFilter(ctx, client, labels.SERVICE_LEGACY.Eq(s.name), labels.PROJECT_LEGACY.Eq(s.context.Project.Name))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(containers) == 0 && len(legacyContainers) > 0 {\n\t\tcontainers = legacyContainers\n\t}\n\n\tresult := []*Container{}\n\n\tfor _, container := range containers {\n\t\tnumberLabel := container.Labels[labels.NUMBER.Str()]\n\t\tname := strings.SplitAfter(container.Names[0], \"/\")\n\t\tif numberLabel == \"\" {\n\t\t\tresult = append(result, NewContainer(client, name[len(name)-1], 1, s))\n\t\t\treturn result, nil\n\t\t}\n\t\tcontainerNumber, err := strconv.Atoi(numberLabel)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Compose add \"/\" before ordinary container name,\n\t\t// Compose add \"/primary-container-name/\" before Linked container name,\n\t\t// so use Name[len(name)-1] to store actaul name\n\t\tresult = append(result, NewContainer(client, name[len(name)-1], containerNumber, s))\n\t}\n\n\treturn result, nil\n}\n\nfunc (s *Service) createOne(ctx context.Context, imageName string) (*Container, error) {\n\tcontainers, err := s.constructContainers(ctx, imageName, 1)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn containers[0], err\n}\n\nfunc (s *Service) ensureImageExists(ctx context.Context, noBuild bool) (string, error) {\n\terr := s.imageExists()\n\n\tif err == nil {\n\t\treturn s.imageName(), nil\n\t}\n\n\tif err != nil && !client.IsErrImageNotFound(err) {\n\t\treturn \"\", err\n\t}\n\n\tif s.Config().Build.Context != \"\" {\n\t\tif noBuild {\n\t\t\treturn \"\", fmt.Errorf(\"Service %q needs to be built, but no-build was specified\", s.name)\n\t\t}\n\t\treturn s.imageName(), s.build(ctx, options.Build{})\n\t}\n\n\treturn s.imageName(), s.Pull(ctx)\n}\n\nfunc (s *Service) imageExists() error {\n\tclient := s.context.ClientFactory.Create(s)\n\n\t_, _, err := client.ImageInspectWithRaw(context.Background(), s.imageName(), false)\n\treturn err\n}\n\nfunc (s *Service) imageName() string {\n\tif s.Config().Image != \"\" {\n\t\treturn s.Config().Image\n\t}\n\treturn fmt.Sprintf(\"%s_%s\", s.context.ProjectName, s.Name())\n}\n\n// Build implements Service.Build. If an imageName is specified or if the context has\n// no build to work with it will do nothing. Otherwise it will try to build\n// the image and returns an error if any.\nfunc (s *Service) Build(ctx context.Context, buildOptions options.Build) error {\n\tif s.Config().Image != \"\" {\n\t\treturn nil\n\t}\n\treturn s.build(ctx, buildOptions)\n}\n\nfunc (s *Service) build(ctx context.Context, buildOptions options.Build) error {\n\tif s.Config().Build.Context == \"\" {\n\t\treturn fmt.Errorf(\"Specified service does not have a build section\")\n\t}\n\tbuilder := &builder.DaemonBuilder{\n\t\tClient:           s.context.ClientFactory.Create(s),\n\t\tContextDirectory: s.Config().Build.Context,\n\t\tDockerfile:       s.Config().Build.Dockerfile,\n\t\tAuthConfigs:      s.context.AuthLookup.All(),\n\t\tNoCache:          buildOptions.NoCache,\n\t\tForceRemove:      buildOptions.ForceRemove,\n\t\tPull:             buildOptions.Pull,\n\t}\n\treturn builder.Build(ctx, s.imageName())\n}\n\nfunc (s *Service) constructContainers(ctx context.Context, imageName string, count int) ([]*Container, error) {\n\tresult, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tclient := s.context.ClientFactory.Create(s)\n\n\tvar namer Namer\n\n\tif s.serviceConfig.ContainerName != \"\" {\n\t\tif count > 1 {\n\t\t\tlogrus.Warnf(`The \"%s\" service is using the custom container name \"%s\". Docker requires each container to have a unique name. Remove the custom name to scale the service.`, s.name, s.serviceConfig.ContainerName)\n\t\t}\n\t\tnamer = NewSingleNamer(s.serviceConfig.ContainerName)\n\t} else {\n\t\tnamer, err = NewNamer(ctx, client, s.context.Project.Name, s.name, false)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor i := len(result); i < count; i++ {\n\t\tcontainerName, containerNumber := namer.Next()\n\n\t\tc := NewContainer(client, containerName, containerNumber, s)\n\n\t\tdockerContainer, err := c.Create(ctx, imageName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tlogrus.Debugf(\"Created container %s: %v\", dockerContainer.ID, dockerContainer.Name)\n\n\t\tresult = append(result, NewContainer(client, containerName, containerNumber, s))\n\t}\n\n\treturn result, nil\n}\n\n// Up implements Service.Up. It builds the image if needed, creates a container\n// and start it.\nfunc (s *Service) Up(ctx context.Context, options options.Up) error {\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar imageName = s.imageName()\n\tif len(containers) == 0 || !options.NoRecreate {\n\t\timageName, err = s.ensureImageExists(ctx, options.NoBuild)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn s.up(ctx, imageName, true, options)\n}\n\n// Run implements Service.Run. It runs a one of command within the service container.\nfunc (s *Service) Run(ctx context.Context, commandParts []string) (int, error) {\n\timageName, err := s.ensureImageExists(ctx, false)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\tclient := s.context.ClientFactory.Create(s)\n\n\tnamer, err := NewNamer(ctx, client, s.context.Project.Name, s.name, true)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\tcontainerName, containerNumber := namer.Next()\n\n\tc := NewOneOffContainer(client, containerName, containerNumber, s)\n\n\tif err := s.connectContainerToNetworks(ctx, c, true); err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn c.Run(ctx, imageName, &config.ServiceConfig{Command: commandParts, Tty: true, StdinOpen: true})\n}\n\n// Info implements Service.Info. It returns an project.InfoSet with the containers\n// related to this service (can be multiple if using the scale command).\nfunc (s *Service) Info(ctx context.Context, qFlag bool) (project.InfoSet, error) {\n\tresult := project.InfoSet{}\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, c := range containers {\n\t\tinfo, err := c.Info(ctx, qFlag)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresult = append(result, info)\n\t}\n\n\treturn result, nil\n}\n\n// Start implements Service.Start. It tries to start a container without creating it.\nfunc (s *Service) Start(ctx context.Context) error {\n\treturn s.up(ctx, \"\", false, options.Up{})\n}\n\nfunc (s *Service) up(ctx context.Context, imageName string, create bool, options options.Up) error {\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlogrus.Debugf(\"Found %d existing containers for service %s\", len(containers), s.name)\n\n\tif len(containers) == 0 && create {\n\t\tc, err := s.createOne(ctx, imageName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainers = []*Container{c}\n\t}\n\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\tif create {\n\t\t\tif err := s.recreateIfNeeded(ctx, imageName, c, options.NoRecreate, options.ForceRecreate); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif err := s.connectContainerToNetworks(ctx, c, false); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif options.Log {\n\t\t\tgo c.Log(ctx, true)\n\t\t}\n\n\t\treturn c.Up(ctx, imageName)\n\t})\n}\n\nfunc (s *Service) recreateIfNeeded(ctx context.Context, imageName string, c *Container, noRecreate, forceRecreate bool) error {\n\tif noRecreate {\n\t\treturn nil\n\t}\n\toutOfSync, err := c.OutOfSync(ctx, imageName)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlogrus.WithFields(logrus.Fields{\n\t\t\"outOfSync\":     outOfSync,\n\t\t\"ForceRecreate\": forceRecreate,\n\t\t\"NoRecreate\":    noRecreate}).Debug(\"Going to decide if recreate is needed\")\n\n\tif forceRecreate || outOfSync {\n\t\tlogrus.Infof(\"Recreating %s\", s.name)\n\t\tif _, err := c.Recreate(ctx, imageName); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (s *Service) eachContainer(ctx context.Context, action func(*Container) error) error {\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttasks := utils.InParallel{}\n\tfor _, container := range containers {\n\t\ttask := func(container *Container) func() error {\n\t\t\treturn func() error {\n\t\t\t\treturn action(container)\n\t\t\t}\n\t\t}(container)\n\n\t\ttasks.Add(task)\n\t}\n\n\treturn tasks.Wait()\n}\n\n// Stop implements Service.Stop. It stops any containers related to the service.\nfunc (s *Service) Stop(ctx context.Context, timeout int) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Stop(ctx, timeout)\n\t})\n}\n\n// Restart implements Service.Restart. It restarts any containers related to the service.\nfunc (s *Service) Restart(ctx context.Context, timeout int) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Restart(ctx, timeout)\n\t})\n}\n\n// Kill implements Service.Kill. It kills any containers related to the service.\nfunc (s *Service) Kill(ctx context.Context, signal string) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Kill(ctx, signal)\n\t})\n}\n\n// Delete implements Service.Delete. It removes any containers related to the service.\nfunc (s *Service) Delete(ctx context.Context, options options.Delete) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Delete(ctx, options.RemoveVolume)\n\t})\n}\n\n// Log implements Service.Log. It returns the docker logs for each container related to the service.\nfunc (s *Service) Log(ctx context.Context, follow bool) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Log(ctx, follow)\n\t})\n}\n\n// Scale implements Service.Scale. It creates or removes containers to have the specified number\n// of related container to the service to run.\nfunc (s *Service) Scale(ctx context.Context, scale int, timeout int) error {\n\tif s.specificiesHostPort() {\n\t\tlogrus.Warnf(\"The \\\"%s\\\" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.\", s.Name())\n\t}\n\n\tfoundCount := 0\n\terr := s.eachContainer(ctx, func(c *Container) error {\n\t\tfoundCount++\n\t\tif foundCount > scale {\n\t\t\terr := c.Stop(ctx, timeout)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// FIXME(vdemeester) remove volume in scale by default ?\n\t\t\treturn c.Delete(ctx, false)\n\t\t}\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif foundCount != scale {\n\t\timageName, err := s.ensureImageExists(ctx, false)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif _, err = s.constructContainers(ctx, imageName, scale); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn s.up(ctx, \"\", false, options.Up{})\n}\n\n// Pull implements Service.Pull. It pulls the image of the service and skip the service that\n// would need to be built.\nfunc (s *Service) Pull(ctx context.Context) error {\n\tif s.Config().Image == \"\" {\n\t\treturn nil\n\t}\n\n\treturn pullImage(ctx, s.context.ClientFactory.Create(s), s, s.Config().Image)\n}\n\n// Pause implements Service.Pause. It puts into pause the container(s) related\n// to the service.\nfunc (s *Service) Pause(ctx context.Context) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Pause(ctx)\n\t})\n}\n\n// Unpause implements Service.Pause. It brings back from pause the container(s)\n// related to the service.\nfunc (s *Service) Unpause(ctx context.Context) error {\n\treturn s.eachContainer(ctx, func(c *Container) error {\n\t\treturn c.Unpause(ctx)\n\t})\n}\n\n// RemoveImage implements Service.RemoveImage. It removes images used for the service\n// depending on the specified type.\nfunc (s *Service) RemoveImage(ctx context.Context, imageType options.ImageType) error {\n\tswitch imageType {\n\tcase \"local\":\n\t\tif s.Config().Image != \"\" {\n\t\t\treturn nil\n\t\t}\n\t\treturn removeImage(ctx, s.context.ClientFactory.Create(s), s.imageName())\n\tcase \"all\":\n\t\treturn removeImage(ctx, s.context.ClientFactory.Create(s), s.imageName())\n\tdefault:\n\t\t// Don't do a thing, should be validated up-front\n\t\treturn nil\n\t}\n}\n\n// Containers implements Service.Containers. It returns the list of containers\n// that are related to the service.\nfunc (s *Service) Containers(ctx context.Context) ([]project.Container, error) {\n\tresult := []project.Container{}\n\tcontainers, err := s.collectContainers(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, c := range containers {\n\t\tresult = append(result, c)\n\t}\n\n\treturn result, nil\n}\n\nfunc (s *Service) specificiesHostPort() bool {\n\t_, bindings, err := nat.ParsePortSpecs(s.Config().Ports)\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t}\n\n\tfor _, portBindings := range bindings {\n\t\tfor _, portBinding := range portBindings {\n\t\t\tif portBinding.HostPort != \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (s *Service) connectContainerToNetworks(ctx context.Context, c *Container, oneOff bool) error {\n\texistingContainer, err := c.findExisting(ctx)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tconnectedNetworks := existingContainer.NetworkSettings.Networks\n\n\tif _, ok := s.serviceConfig.Labels[\"io.rancher.user_docker.net\"]; ok {\n\t\tfor networkName, connectedNetwork := range connectedNetworks {\n\t\t\taliasPresent := false\n\t\t\tfor _, alias := range connectedNetwork.Aliases {\n\t\t\t\tID, _ := c.ID()\n\t\t\t\tID = ID[:12]\n\t\t\t\tif alias == ID {\n\t\t\t\t\taliasPresent = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif aliasPresent {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := s.NetworkDisconnect(ctx, c, networkName, oneOff); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif _, fipExist := s.serviceConfig.Labels[\"io.rancher.user_docker.fix_ip\"]; fipExist {\n\t\t\tif err := s.NetworkConnect(ctx, c, s.serviceConfig.Labels[\"io.rancher.user_docker.net\"], s.serviceConfig.Labels[\"io.rancher.user_docker.fix_ip\"], oneOff); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// NetworkConnect connects the container to the specified network\n// FIXME(vdemeester) will be refactor with Container refactoring\nfunc (s *Service) NetworkConnect(ctx context.Context, c *Container, net, ipv4 string, oneOff bool) error {\n\tcontainerID, err := c.ID()\n\tif err != nil {\n\t\treturn err\n\t}\n\tclient := s.context.ClientFactory.Create(s)\n\treturn client.NetworkConnect(ctx, net, containerID, &network.EndpointSettings{\n\t\tIPAddress: ipv4,\n\t\tIPAMConfig: &network.EndpointIPAMConfig{\n\t\t\tIPv4Address: ipv4,\n\t\t},\n\t})\n}\n\n// NetworkDisconnect disconnects the container from the specified network\nfunc (s *Service) NetworkDisconnect(ctx context.Context, c *Container, net string, oneOff bool) error {\n\tcontainerID, err := c.ID()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tclient := s.context.ClientFactory.Create(s)\n\treturn client.NetworkDisconnect(ctx, net, containerID, true)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/docker/service_factory.go",
    "content": "package docker\n\nimport (\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project\"\n)\n\n// ServiceFactory is an implementation of project.ServiceFactory.\ntype ServiceFactory struct {\n\tcontext *Context\n}\n\n// Create creates a Service based on the specified project, name and service configuration.\nfunc (s *ServiceFactory) Create(project *project.Project, name string, serviceConfig *config.ServiceConfig) (project.Service, error) {\n\treturn NewService(name, serviceConfig, s.context), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/labels/labels.go",
    "content": "package labels\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/docker/libcompose/utils\"\n)\n\n// Label represents a docker label.\ntype Label string\n\n// Libcompose default labels.\nconst (\n\tNUMBER  = Label(\"com.docker.compose.container-number\")\n\tONEOFF  = Label(\"com.docker.compose.oneoff\")\n\tPROJECT = Label(\"com.docker.compose.project\")\n\tSERVICE = Label(\"com.docker.compose.service\")\n\tHASH    = Label(\"com.docker.compose.config-hash\")\n\tVERSION = Label(\"com.docker.compose.version\")\n\n\tPROJECT_LEGACY = Label(\"io.docker.compose.project\")\n\tSERVICE_LEGACY = Label(\"io.docker.compose.service\")\n\tHASH_LEGACY    = Label(\"io.docker.compose.config-hash\")\n)\n\n// EqString returns a label json string representation with the specified value.\nfunc (f Label) EqString(value string) string {\n\treturn LabelFilterString(string(f), value)\n}\n\n// Eq returns a label map representation with the specified value.\nfunc (f Label) Eq(value string) map[string][]string {\n\treturn LabelFilter(string(f), value)\n}\n\n// AndString returns a json list of labels by merging the two specified values (left and right) serialized as string.\nfunc AndString(left, right string) string {\n\tleftMap := map[string][]string{}\n\trightMap := map[string][]string{}\n\n\t// Ignore errors\n\tjson.Unmarshal([]byte(left), &leftMap)\n\tjson.Unmarshal([]byte(right), &rightMap)\n\n\tfor k, v := range rightMap {\n\t\texisting, ok := leftMap[k]\n\t\tif ok {\n\t\t\tleftMap[k] = append(existing, v...)\n\t\t} else {\n\t\t\tleftMap[k] = v\n\t\t}\n\t}\n\n\tresult, _ := json.Marshal(leftMap)\n\n\treturn string(result)\n}\n\n// And returns a map of labels by merging the two specified values (left and right).\nfunc And(left, right map[string][]string) map[string][]string {\n\tresult := map[string][]string{}\n\tfor k, v := range left {\n\t\tresult[k] = v\n\t}\n\n\tfor k, v := range right {\n\t\texisting, ok := result[k]\n\t\tif ok {\n\t\t\tresult[k] = append(existing, v...)\n\t\t} else {\n\t\t\tresult[k] = v\n\t\t}\n\t}\n\n\treturn result\n}\n\n// Str returns the label name.\nfunc (f Label) Str() string {\n\treturn string(f)\n}\n\n// LabelFilterString returns a label json string representation of the specifed couple (key,value)\n// that is used as filter for docker.\nfunc LabelFilterString(key, value string) string {\n\treturn utils.FilterString(map[string][]string{\n\t\t\"label\": {fmt.Sprintf(\"%s=%s\", key, value)},\n\t})\n}\n\n// LabelFilter returns a label map representation of the specifed couple (key,value)\n// that is used as filter for docker.\nfunc LabelFilter(key, value string) map[string][]string {\n\treturn map[string][]string{\n\t\t\"label\": {fmt.Sprintf(\"%s=%s\", key, value)},\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/logger/null.go",
    "content": "package logger\n\n// NullLogger is a logger.Logger and logger.Factory implementation that does nothing.\ntype NullLogger struct {\n}\n\n// Out is a no-op function.\nfunc (n *NullLogger) Out(_ []byte) {\n}\n\n// Err is a no-op function.\nfunc (n *NullLogger) Err(_ []byte) {\n}\n\n// Create implements logger.Factory and returns a NullLogger.\nfunc (n *NullLogger) Create(_ string) Logger {\n\treturn &NullLogger{}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/logger/types.go",
    "content": "package logger\n\n// Factory defines methods a factory should implement, to create a Logger\n// based on the specified name.\ntype Factory interface {\n\tCreate(name string) Logger\n}\n\n// Logger defines methods to implement for being a logger.\ntype Logger interface {\n\tOut(bytes []byte)\n\tErr(bytes []byte)\n}\n\n// Wrapper is a wrapper around Logger that implements the Writer interface,\n// mainly use by docker/pkg/stdcopy functions.\ntype Wrapper struct {\n\tErr    bool\n\tLogger Logger\n}\n\nfunc (l *Wrapper) Write(bytes []byte) (int, error) {\n\tif l.Err {\n\t\tl.Logger.Err(bytes)\n\t} else {\n\t\tl.Logger.Out(bytes)\n\t}\n\treturn len(bytes), nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/lookup/composable.go",
    "content": "package lookup\n\nimport (\n\t\"github.com/docker/libcompose/config\"\n)\n\n// ComposableEnvLookup is a structure that implements the project.EnvironmentLookup interface.\n// It holds an ordered list of EnvironmentLookup to call to look for the environment value.\ntype ComposableEnvLookup struct {\n\tLookups []config.EnvironmentLookup\n}\n\n// Lookup creates a string slice of string containing a \"docker-friendly\" environment string\n// in the form of 'key=value'. It loop through the lookups and returns the latest value if\n// more than one lookup return a result.\nfunc (l *ComposableEnvLookup) Lookup(key, serviceName string, config *config.ServiceConfig) []string {\n\tresult := []string{}\n\tfor _, lookup := range l.Lookups {\n\t\tenv := lookup.Lookup(key, serviceName, config)\n\t\tif len(env) == 1 {\n\t\t\tresult = env\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/lookup/envfile.go",
    "content": "package lookup\n\nimport (\n\t\"strings\"\n\n\t\"github.com/docker/docker/runconfig/opts\"\n\t\"github.com/docker/libcompose/config\"\n)\n\n// EnvfileLookup is a structure that implements the project.EnvironmentLookup interface.\n// It holds the path of the file where to lookup environment values.\ntype EnvfileLookup struct {\n\tPath string\n}\n\n// Lookup creates a string slice of string containing a \"docker-friendly\" environment string\n// in the form of 'key=value'. It gets environment values using a '.env' file in the specified\n// path.\nfunc (l *EnvfileLookup) Lookup(key, serviceName string, config *config.ServiceConfig) []string {\n\tenvs, err := opts.ParseEnvFile(l.Path)\n\tif err != nil {\n\t\treturn []string{}\n\t}\n\tfor _, env := range envs {\n\t\te := strings.Split(env, \"=\")\n\t\tif e[0] == key {\n\t\t\treturn []string{env}\n\t\t}\n\t}\n\treturn []string{}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/lookup/file.go",
    "content": "package lookup\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\n// relativePath returns the proper relative path for the given file path. If\n// the relativeTo string equals \"-\", then it means that it's from the stdin,\n// and the returned path will be the current working directory. Otherwise, if\n// file is really an absolute path, then it will be returned without any\n// changes. Otherwise, the returned path will be a combination of relativeTo\n// and file.\nfunc relativePath(file, relativeTo string) string {\n\t// stdin: return the current working directory if possible.\n\tif relativeTo == \"-\" {\n\t\tif cwd, err := os.Getwd(); err == nil {\n\t\t\treturn cwd\n\t\t}\n\t}\n\n\t// If the given file is already an absolute path, just return it.\n\t// Otherwise, the returned path will be relative to the given relativeTo\n\t// path.\n\tif filepath.IsAbs(file) {\n\t\treturn file\n\t}\n\n\tabs, err := filepath.Abs(filepath.Join(path.Dir(relativeTo), file))\n\tif err != nil {\n\t\tlogrus.Errorf(\"Failed to get absolute directory: %s\", err)\n\t\treturn file\n\t}\n\treturn abs\n}\n\n// FileConfigLookup is a \"bare\" structure that implements the project.ResourceLookup interface\ntype FileConfigLookup struct {\n}\n\n// Lookup returns the content and the actual filename of the file that is \"built\" using the\n// specified file and relativeTo string. file and relativeTo are supposed to be file path.\n// If file starts with a slash ('/'), it tries to load it, otherwise it will build a\n// filename using the folder part of relativeTo joined with file.\nfunc (f *FileConfigLookup) Lookup(file, relativeTo string) ([]byte, string, error) {\n\tfile = relativePath(file, relativeTo)\n\tlogrus.Debugf(\"Reading file %s\", file)\n\tbytes, err := ioutil.ReadFile(file)\n\treturn bytes, file, err\n}\n\n// ResolvePath returns the path to be used for the given path volume. This\n// function already takes care of relative paths.\nfunc (f *FileConfigLookup) ResolvePath(path, inFile string) string {\n\tvs := strings.SplitN(path, \":\", 2)\n\tif len(vs) != 2 || filepath.IsAbs(vs[0]) {\n\t\treturn path\n\t}\n\tvs[0] = relativePath(vs[0], inFile)\n\treturn strings.Join(vs, \":\")\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/lookup/simple_env.go",
    "content": "package lookup\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/docker/libcompose/config\"\n)\n\n// OsEnvLookup is a \"bare\" structure that implements the project.EnvironmentLookup interface\ntype OsEnvLookup struct {\n}\n\n// Lookup creates a string slice of string containing a \"docker-friendly\" environment string\n// in the form of 'key=value'. It gets environment values using os.Getenv.\n// If the os environment variable does not exists, the slice is empty. serviceName and config\n// are not used at all in this implementation.\nfunc (o *OsEnvLookup) Lookup(key, serviceName string, config *config.ServiceConfig) []string {\n\tret := os.Getenv(key)\n\tif ret == \"\" {\n\t\treturn []string{}\n\t}\n\treturn []string{fmt.Sprintf(\"%s=%s\", key, ret)}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/client_factory.go",
    "content": "package project\n\nimport (\n\t\"github.com/docker/engine-api/client\"\n\tcomposeclient \"github.com/docker/libcompose/docker/client\"\n)\n\n// ClientFactory is a factory to create docker clients.\ntype ClientFactory interface {\n\t// Create constructs a Docker client for the given service. The passed in\n\t// config may be nil in which case a generic client for the project should\n\t// be returned.\n\tCreate(service Service) client.APIClient\n}\n\ntype defaultClientFactory struct {\n\tclient client.APIClient\n}\n\n// NewDefaultClientFactory creates and returns the default client factory that uses\n// github.com/docker/engine-api client.\nfunc NewDefaultClientFactory(opts composeclient.Options) (ClientFactory, error) {\n\tclient, err := composeclient.Create(opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &defaultClientFactory{\n\t\tclient: client,\n\t}, nil\n}\n\nfunc (s *defaultClientFactory) Create(service Service) client.APIClient {\n\treturn s.client\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/container.go",
    "content": "package project\n\nimport (\n\t\"golang.org/x/net/context\"\n)\n\n// Container defines what a libcompose container provides.\ntype Container interface {\n\tID() (string, error)\n\tName() string\n\tPort(ctx context.Context, port string) (string, error)\n\tIsRunning(ctx context.Context) (bool, error)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/context.go",
    "content": "package project\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/logger\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar projectRegexp = regexp.MustCompile(\"[^a-zA-Z0-9_.-]\")\n\n// Context holds context meta information about a libcompose project, like\n// the project name, the compose file, etc.\ntype Context struct {\n\tComposeFiles        []string\n\tComposeBytes        [][]byte\n\tProjectName         string\n\tisOpen              bool\n\tServiceFactory      ServiceFactory\n\tEnvironmentLookup   config.EnvironmentLookup\n\tResourceLookup      config.ResourceLookup\n\tLoggerFactory       logger.Factory\n\tIgnoreMissingConfig bool\n\tProject             *Project\n}\n\nfunc (c *Context) readComposeFiles() error {\n\tif c.ComposeBytes != nil {\n\t\treturn nil\n\t}\n\n\tlogrus.Debugf(\"Opening compose files: %s\", strings.Join(c.ComposeFiles, \",\"))\n\n\t// Handle STDIN (`-f -`)\n\tif len(c.ComposeFiles) == 1 && c.ComposeFiles[0] == \"-\" {\n\t\tcomposeBytes, err := ioutil.ReadAll(os.Stdin)\n\t\tif err != nil {\n\t\t\tlogrus.Errorf(\"Failed to read compose file from stdin: %v\", err)\n\t\t\treturn err\n\t\t}\n\t\tc.ComposeBytes = [][]byte{composeBytes}\n\t\treturn nil\n\t}\n\n\tfor _, composeFile := range c.ComposeFiles {\n\t\tcomposeBytes, err := ioutil.ReadFile(composeFile)\n\t\tif err != nil && !os.IsNotExist(err) {\n\t\t\tlogrus.Errorf(\"Failed to open the compose file: %s\", composeFile)\n\t\t\treturn err\n\t\t}\n\t\tif err != nil && !c.IgnoreMissingConfig {\n\t\t\tlogrus.Errorf(\"Failed to find the compose file: %s\", composeFile)\n\t\t\treturn err\n\t\t}\n\t\tc.ComposeBytes = append(c.ComposeBytes, composeBytes)\n\t}\n\n\treturn nil\n}\n\nfunc (c *Context) determineProject() error {\n\tname, err := c.lookupProjectName()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc.ProjectName = normalizeName(name)\n\n\tif c.ProjectName == \"\" {\n\t\treturn fmt.Errorf(\"Falied to determine project name\")\n\t}\n\n\treturn nil\n}\n\nfunc (c *Context) lookupProjectName() (string, error) {\n\tif c.ProjectName != \"\" {\n\t\treturn c.ProjectName, nil\n\t}\n\n\tif envProject := os.Getenv(\"COMPOSE_PROJECT_NAME\"); envProject != \"\" {\n\t\treturn envProject, nil\n\t}\n\n\tfile := \".\"\n\tif len(c.ComposeFiles) > 0 {\n\t\tfile = c.ComposeFiles[0]\n\t}\n\n\tf, err := filepath.Abs(file)\n\tif err != nil {\n\t\tlogrus.Errorf(\"Failed to get absolute directory for: %s\", file)\n\t\treturn \"\", err\n\t}\n\n\tf = toUnixPath(f)\n\n\tparent := path.Base(path.Dir(f))\n\tif parent != \"\" && parent != \".\" {\n\t\treturn parent, nil\n\t} else if wd, err := os.Getwd(); err != nil {\n\t\treturn \"\", err\n\t} else {\n\t\treturn path.Base(toUnixPath(wd)), nil\n\t}\n}\n\nfunc normalizeName(name string) string {\n\tr := regexp.MustCompile(\"[^a-z0-9]+\")\n\treturn r.ReplaceAllString(strings.ToLower(name), \"\")\n}\n\nfunc toUnixPath(p string) string {\n\treturn strings.Replace(p, \"\\\\\", \"/\", -1)\n}\n\nfunc (c *Context) open() error {\n\tif c.isOpen {\n\t\treturn nil\n\t}\n\n\tif err := c.readComposeFiles(); err != nil {\n\t\treturn err\n\t}\n\n\tif err := c.determineProject(); err != nil {\n\t\treturn err\n\t}\n\n\tc.isOpen = true\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/empty.go",
    "content": "package project\n\nimport (\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/libcompose/project/options\"\n)\n\n// EmptyService is a struct that implements Service but does nothing.\ntype EmptyService struct {\n}\n\n// Create implements Service.Create but does nothing.\nfunc (e *EmptyService) Create(ctx context.Context, options options.Create) error {\n\treturn nil\n}\n\n// Build implements Service.Build but does nothing.\nfunc (e *EmptyService) Build(ctx context.Context, buildOptions options.Build) error {\n\treturn nil\n}\n\n// Up implements Service.Up but does nothing.\nfunc (e *EmptyService) Up(ctx context.Context, options options.Up) error {\n\treturn nil\n}\n\n// Start implements Service.Start but does nothing.\nfunc (e *EmptyService) Start(ctx context.Context) error {\n\treturn nil\n}\n\n// Stop implements Service.Stop() but does nothing.\nfunc (e *EmptyService) Stop(ctx context.Context, timeout int) error {\n\treturn nil\n}\n\n// Delete implements Service.Delete but does nothing.\nfunc (e *EmptyService) Delete(ctx context.Context, options options.Delete) error {\n\treturn nil\n}\n\n// Restart implements Service.Restart but does nothing.\nfunc (e *EmptyService) Restart(ctx context.Context, timeout int) error {\n\treturn nil\n}\n\n// Log implements Service.Log but does nothing.\nfunc (e *EmptyService) Log(ctx context.Context, follow bool) error {\n\treturn nil\n}\n\n// Pull implements Service.Pull but does nothing.\nfunc (e *EmptyService) Pull(ctx context.Context) error {\n\treturn nil\n}\n\n// Kill implements Service.Kill but does nothing.\nfunc (e *EmptyService) Kill(ctx context.Context, signal string) error {\n\treturn nil\n}\n\n// Containers implements Service.Containers but does nothing.\nfunc (e *EmptyService) Containers(ctx context.Context) ([]Container, error) {\n\treturn []Container{}, nil\n}\n\n// Scale implements Service.Scale but does nothing.\nfunc (e *EmptyService) Scale(ctx context.Context, count int, timeout int) error {\n\treturn nil\n}\n\n// Info implements Service.Info but does nothing.\nfunc (e *EmptyService) Info(ctx context.Context, qFlag bool) (InfoSet, error) {\n\treturn InfoSet{}, nil\n}\n\n// Pause implements Service.Pause but does nothing.\nfunc (e *EmptyService) Pause(ctx context.Context) error {\n\treturn nil\n}\n\n// Unpause implements Service.Pause but does nothing.\nfunc (e *EmptyService) Unpause(ctx context.Context) error {\n\treturn nil\n}\n\n// Run implements Service.Run but does nothing.\nfunc (e *EmptyService) Run(ctx context.Context, commandParts []string) (int, error) {\n\treturn 0, nil\n}\n\n// RemoveImage implements Service.RemoveImage but does nothing.\nfunc (e *EmptyService) RemoveImage(ctx context.Context, imageType options.ImageType) error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/events/events.go",
    "content": "// Package events holds event structures, methods and functions.\npackage events\n\nimport (\n\t\"fmt\"\n)\n\n// Notifier defines the methods an event notifier should have.\ntype Notifier interface {\n\tNotify(eventType EventType, serviceName string, data map[string]string)\n}\n\n// Emitter defines the methods an event emitter should have.\ntype Emitter interface {\n\tAddListener(c chan<- Event)\n}\n\n// Event holds project-wide event informations.\ntype Event struct {\n\tEventType   EventType\n\tServiceName string\n\tData        map[string]string\n}\n\n// EventType defines a type of libcompose event.\ntype EventType int\n\n// Definitions of libcompose events\nconst (\n\tNoEvent = EventType(iota)\n\n\tContainerCreated = EventType(iota)\n\tContainerStarted = EventType(iota)\n\n\tServiceAdd          = EventType(iota)\n\tServiceUpStart      = EventType(iota)\n\tServiceUpIgnored    = EventType(iota)\n\tServiceUp           = EventType(iota)\n\tServiceCreateStart  = EventType(iota)\n\tServiceCreate       = EventType(iota)\n\tServiceDeleteStart  = EventType(iota)\n\tServiceDelete       = EventType(iota)\n\tServiceDownStart    = EventType(iota)\n\tServiceDown         = EventType(iota)\n\tServiceRestartStart = EventType(iota)\n\tServiceRestart      = EventType(iota)\n\tServicePullStart    = EventType(iota)\n\tServicePull         = EventType(iota)\n\tServiceKillStart    = EventType(iota)\n\tServiceKill         = EventType(iota)\n\tServiceStartStart   = EventType(iota)\n\tServiceStart        = EventType(iota)\n\tServiceBuildStart   = EventType(iota)\n\tServiceBuild        = EventType(iota)\n\tServicePauseStart   = EventType(iota)\n\tServicePause        = EventType(iota)\n\tServiceUnpauseStart = EventType(iota)\n\tServiceUnpause      = EventType(iota)\n\tServiceStopStart    = EventType(iota)\n\tServiceStop         = EventType(iota)\n\tServiceRunStart     = EventType(iota)\n\tServiceRun          = EventType(iota)\n\n\tVolumeAdd  = EventType(iota)\n\tNetworkAdd = EventType(iota)\n\n\tProjectDownStart     = EventType(iota)\n\tProjectDownDone      = EventType(iota)\n\tProjectCreateStart   = EventType(iota)\n\tProjectCreateDone    = EventType(iota)\n\tProjectUpStart       = EventType(iota)\n\tProjectUpDone        = EventType(iota)\n\tProjectDeleteStart   = EventType(iota)\n\tProjectDeleteDone    = EventType(iota)\n\tProjectRestartStart  = EventType(iota)\n\tProjectRestartDone   = EventType(iota)\n\tProjectReload        = EventType(iota)\n\tProjectReloadTrigger = EventType(iota)\n\tProjectKillStart     = EventType(iota)\n\tProjectKillDone      = EventType(iota)\n\tProjectStartStart    = EventType(iota)\n\tProjectStartDone     = EventType(iota)\n\tProjectBuildStart    = EventType(iota)\n\tProjectBuildDone     = EventType(iota)\n\tProjectPauseStart    = EventType(iota)\n\tProjectPauseDone     = EventType(iota)\n\tProjectUnpauseStart  = EventType(iota)\n\tProjectUnpauseDone   = EventType(iota)\n\tProjectStopStart     = EventType(iota)\n\tProjectStopDone      = EventType(iota)\n)\n\nfunc (e EventType) String() string {\n\tvar m string\n\tswitch e {\n\tcase ContainerCreated:\n\t\tm = \"Created container\"\n\tcase ContainerStarted:\n\t\tm = \"Started container\"\n\n\tcase ServiceAdd:\n\t\tm = \"Adding\"\n\tcase ServiceUpStart:\n\t\tm = \"Starting\"\n\tcase ServiceUpIgnored:\n\t\tm = \"Ignoring\"\n\tcase ServiceUp:\n\t\tm = \"Started\"\n\tcase ServiceCreateStart:\n\t\tm = \"Creating\"\n\tcase ServiceCreate:\n\t\tm = \"Created\"\n\tcase ServiceDeleteStart:\n\t\tm = \"Deleting\"\n\tcase ServiceDelete:\n\t\tm = \"Deleted\"\n\tcase ServiceStopStart:\n\t\tm = \"Stopping\"\n\tcase ServiceStop:\n\t\tm = \"Stopped\"\n\tcase ServiceDownStart:\n\t\tm = \"Stopping\"\n\tcase ServiceDown:\n\t\tm = \"Stopped\"\n\tcase ServiceRestartStart:\n\t\tm = \"Restarting\"\n\tcase ServiceRestart:\n\t\tm = \"Restarted\"\n\tcase ServicePullStart:\n\t\tm = \"Pulling\"\n\tcase ServicePull:\n\t\tm = \"Pulled\"\n\tcase ServiceKillStart:\n\t\tm = \"Killing\"\n\tcase ServiceKill:\n\t\tm = \"Killed\"\n\tcase ServiceStartStart:\n\t\tm = \"Starting\"\n\tcase ServiceStart:\n\t\tm = \"Started\"\n\tcase ServiceBuildStart:\n\t\tm = \"Building\"\n\tcase ServiceBuild:\n\t\tm = \"Built\"\n\tcase ServiceRunStart:\n\t\tm = \"Executing\"\n\tcase ServiceRun:\n\t\tm = \"Executed\"\n\n\tcase ProjectDownStart:\n\t\tm = \"Stopping project\"\n\tcase ProjectDownDone:\n\t\tm = \"Project stopped\"\n\tcase ProjectStopStart:\n\t\tm = \"Stopping project\"\n\tcase ProjectStopDone:\n\t\tm = \"Project stopped\"\n\tcase ProjectCreateStart:\n\t\tm = \"Creating project\"\n\tcase ProjectCreateDone:\n\t\tm = \"Project created\"\n\tcase ProjectUpStart:\n\t\tm = \"Starting project\"\n\tcase ProjectUpDone:\n\t\tm = \"Project started\"\n\tcase ProjectDeleteStart:\n\t\tm = \"Deleting project\"\n\tcase ProjectDeleteDone:\n\t\tm = \"Project deleted\"\n\tcase ProjectRestartStart:\n\t\tm = \"Restarting project\"\n\tcase ProjectRestartDone:\n\t\tm = \"Project restarted\"\n\tcase ProjectReload:\n\t\tm = \"Reloading project\"\n\tcase ProjectReloadTrigger:\n\t\tm = \"Triggering project reload\"\n\tcase ProjectKillStart:\n\t\tm = \"Killing project\"\n\tcase ProjectKillDone:\n\t\tm = \"Project killed\"\n\tcase ProjectStartStart:\n\t\tm = \"Starting project\"\n\tcase ProjectStartDone:\n\t\tm = \"Project started\"\n\tcase ProjectBuildStart:\n\t\tm = \"Building project\"\n\tcase ProjectBuildDone:\n\t\tm = \"Project built\"\n\t}\n\n\tif m == \"\" {\n\t\tm = fmt.Sprintf(\"EventType: %d\", int(e))\n\t}\n\n\treturn m\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/info.go",
    "content": "package project\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"text/tabwriter\"\n)\n\n// InfoPart holds key/value strings.\ntype InfoPart struct {\n\tKey, Value string\n}\n\n// InfoSet holds a list of Info.\ntype InfoSet []Info\n\n// Info holds a list of InfoPart.\ntype Info []InfoPart\n\nfunc (infos InfoSet) String(titleFlag bool) string {\n\t//no error checking, none of this should fail\n\tbuffer := bytes.NewBuffer(make([]byte, 0, 1024))\n\ttabwriter := tabwriter.NewWriter(buffer, 4, 4, 2, ' ', 0)\n\n\tfirst := true\n\tfor _, info := range infos {\n\t\tif first && titleFlag {\n\t\t\twriteLine(tabwriter, true, info)\n\t\t}\n\t\tfirst = false\n\t\twriteLine(tabwriter, false, info)\n\t}\n\n\ttabwriter.Flush()\n\treturn buffer.String()\n}\n\nfunc writeLine(writer io.Writer, key bool, info Info) {\n\tfirst := true\n\tfor _, part := range info {\n\t\tif !first {\n\t\t\twriter.Write([]byte{'\\t'})\n\t\t}\n\t\tfirst = false\n\t\tif key {\n\t\t\twriter.Write([]byte(part.Key))\n\t\t} else {\n\t\t\twriter.Write([]byte(part.Value))\n\t\t}\n\t}\n\n\twriter.Write([]byte{'\\n'})\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/interface.go",
    "content": "package project\n\nimport (\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project/events\"\n\t\"github.com/docker/libcompose/project/options\"\n)\n\n// APIProject is an interface defining the methods a libcompose project should implement.\ntype APIProject interface {\n\tevents.Notifier\n\tevents.Emitter\n\n\tBuild(ctx context.Context, options options.Build, sevice ...string) error\n\tCreate(ctx context.Context, options options.Create, services ...string) error\n\tDelete(ctx context.Context, options options.Delete, services ...string) error\n\tDown(ctx context.Context, options options.Down, services ...string) error\n\tKill(ctx context.Context, signal string, services ...string) error\n\tLog(ctx context.Context, follow bool, services ...string) error\n\tPause(ctx context.Context, services ...string) error\n\tPs(ctx context.Context, onlyID bool, services ...string) (InfoSet, error)\n\t// FIXME(vdemeester) we could use nat.Port instead ?\n\tPort(ctx context.Context, index int, protocol, serviceName, privatePort string) (string, error)\n\tPull(ctx context.Context, services ...string) error\n\tRestart(ctx context.Context, timeout int, services ...string) error\n\tRun(ctx context.Context, serviceName string, commandParts []string) (int, error)\n\tScale(ctx context.Context, timeout int, servicesScale map[string]int) error\n\tStart(ctx context.Context, services ...string) error\n\tStop(ctx context.Context, timeout int, services ...string) error\n\tUnpause(ctx context.Context, services ...string) error\n\tUp(ctx context.Context, options options.Up, services ...string) error\n\n\tParse() error\n\tCreateService(name string) (Service, error)\n\tAddConfig(name string, config *config.ServiceConfig) error\n\tLoad(bytes []byte) error\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/listener.go",
    "content": "package project\n\nimport (\n\t\"bytes\"\n\n\t\"github.com/docker/libcompose/project/events\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tinfoEvents = map[events.EventType]bool{\n\t\tevents.ProjectDeleteDone:   true,\n\t\tevents.ProjectDeleteStart:  true,\n\t\tevents.ProjectDownDone:     true,\n\t\tevents.ProjectDownStart:    true,\n\t\tevents.ProjectRestartDone:  true,\n\t\tevents.ProjectRestartStart: true,\n\t\tevents.ProjectUpDone:       true,\n\t\tevents.ProjectUpStart:      true,\n\t\tevents.ServiceDeleteStart:  true,\n\t\tevents.ServiceDelete:       true,\n\t\tevents.ServiceDownStart:    true,\n\t\tevents.ServiceDown:         true,\n\t\tevents.ServiceRestartStart: true,\n\t\tevents.ServiceRestart:      true,\n\t\tevents.ServiceUpStart:      true,\n\t\tevents.ServiceUp:           true,\n\t}\n)\n\ntype defaultListener struct {\n\tproject    *Project\n\tlistenChan chan events.Event\n\tupCount    int\n}\n\n// NewDefaultListener create a default listener for the specified project.\nfunc NewDefaultListener(p *Project) chan<- events.Event {\n\tl := defaultListener{\n\t\tlistenChan: make(chan events.Event),\n\t\tproject:    p,\n\t}\n\tgo l.start()\n\treturn l.listenChan\n}\n\nfunc (d *defaultListener) start() {\n\tfor event := range d.listenChan {\n\t\tbuffer := bytes.NewBuffer(nil)\n\t\tif event.Data != nil {\n\t\t\tfor k, v := range event.Data {\n\t\t\t\tif buffer.Len() > 0 {\n\t\t\t\t\tbuffer.WriteString(\", \")\n\t\t\t\t}\n\t\t\t\tbuffer.WriteString(k)\n\t\t\t\tbuffer.WriteString(\"=\")\n\t\t\t\tbuffer.WriteString(v)\n\t\t\t}\n\t\t}\n\n\t\tif event.EventType == events.ServiceUp {\n\t\t\td.upCount++\n\t\t}\n\n\t\tlogf := logrus.Debugf\n\n\t\tif infoEvents[event.EventType] {\n\t\t\tlogf = logrus.Infof\n\t\t}\n\n\t\tif event.ServiceName == \"\" {\n\t\t\tlogf(\"Project [%s]: %s %s\", d.project.Name, event.EventType, buffer.Bytes())\n\t\t} else {\n\t\t\tlogf(\"[%d/%d] [%s]: %s %s\", d.upCount, d.project.ServiceConfigs.Len(), event.ServiceName, event.EventType, buffer.Bytes())\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/options/types.go",
    "content": "package options\n\n// Build holds options of compose build.\ntype Build struct {\n\tNoCache     bool\n\tForceRemove bool\n\tPull        bool\n}\n\n// Delete holds options of compose rm.\ntype Delete struct {\n\tRemoveVolume         bool\n\tBeforeDeleteCallback func([]string) bool\n}\n\n// Down holds options of compose down.\ntype Down struct {\n\tRemoveVolume  bool\n\tRemoveImages  ImageType\n\tRemoveOrphans bool\n}\n\n// Create holds options of compose create.\ntype Create struct {\n\tNoRecreate    bool\n\tForceRecreate bool\n\tNoBuild       bool\n\t// ForceBuild bool\n}\n\n// Up holds options of compose up.\ntype Up struct {\n\tCreate\n\tLog bool\n}\n\n// ImageType defines the type of image (local, all)\ntype ImageType string\n\n// Valid indicates whether the image type is valid.\nfunc (i ImageType) Valid() bool {\n\tswitch string(i) {\n\tcase \"\", \"local\", \"all\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/project.go",
    "content": "package project\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/engine-api/types\"\n\t\"github.com/docker/engine-api/types/filters\"\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/labels\"\n\t\"github.com/docker/libcompose/logger\"\n\t\"github.com/docker/libcompose/project/events\"\n\t\"github.com/docker/libcompose/project/options\"\n\t\"github.com/docker/libcompose/utils\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype wrapperAction func(*serviceWrapper, map[string]*serviceWrapper)\ntype serviceAction func(service Service) error\n\n// Project holds libcompose project information.\ntype Project struct {\n\tName           string\n\tServiceConfigs *config.ServiceConfigs\n\tVolumeConfigs  map[string]*config.VolumeConfig\n\tNetworkConfigs map[string]*config.NetworkConfig\n\tFiles          []string\n\tReloadCallback func() error\n\tParseOptions   *config.ParseOptions\n\n\tcontext       *Context\n\tclientFactory ClientFactory\n\treload        []string\n\tupCount       int\n\tlisteners     []chan<- events.Event\n\thasListeners  bool\n}\n\n// NewProject creates a new project with the specified context.\nfunc NewProject(clientFactory ClientFactory, context *Context, parseOptions *config.ParseOptions) *Project {\n\tp := &Project{\n\t\tcontext:        context,\n\t\tclientFactory:  clientFactory,\n\t\tParseOptions:   parseOptions,\n\t\tServiceConfigs: config.NewServiceConfigs(),\n\t\tVolumeConfigs:  make(map[string]*config.VolumeConfig),\n\t\tNetworkConfigs: make(map[string]*config.NetworkConfig),\n\t}\n\n\tif context.LoggerFactory == nil {\n\t\tcontext.LoggerFactory = &logger.NullLogger{}\n\t}\n\n\tcontext.Project = p\n\n\tp.listeners = []chan<- events.Event{NewDefaultListener(p)}\n\n\treturn p\n}\n\n// Parse populates project information based on its context. It sets up the name,\n// the composefile and the composebytes (the composefile content).\nfunc (p *Project) Parse() error {\n\terr := p.context.open()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tp.Name = p.context.ProjectName\n\n\tp.Files = p.context.ComposeFiles\n\n\tif len(p.Files) == 1 && p.Files[0] == \"-\" {\n\t\tp.Files = []string{\".\"}\n\t}\n\n\tif p.context.ComposeBytes != nil {\n\t\tfor i, composeBytes := range p.context.ComposeBytes {\n\t\t\tfile := \"\"\n\t\t\tif i < len(p.context.ComposeFiles) {\n\t\t\t\tfile = p.Files[i]\n\t\t\t}\n\t\t\tif err := p.load(file, composeBytes); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CreateService creates a service with the specified name based. If there\n// is no config in the project for this service, it will return an error.\nfunc (p *Project) CreateService(name string) (Service, error) {\n\texisting, ok := p.ServiceConfigs.Get(name)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"Failed to find service: %s\", name)\n\t}\n\n\t// Copy because we are about to modify the environment\n\tconfig := *existing\n\n\tif p.context.EnvironmentLookup != nil {\n\t\tparsedEnv := make([]string, 0, len(config.Environment))\n\n\t\tfor _, env := range config.Environment {\n\t\t\tparts := strings.SplitN(env, \"=\", 2)\n\t\t\tif len(parts) > 1 && parts[1] != \"\" {\n\t\t\t\tparsedEnv = append(parsedEnv, env)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tenv = parts[0]\n\t\t\t}\n\n\t\t\tfor _, value := range p.context.EnvironmentLookup.Lookup(env, name, &config) {\n\t\t\t\tparsedEnv = append(parsedEnv, value)\n\t\t\t}\n\t\t}\n\n\t\tconfig.Environment = parsedEnv\n\t}\n\n\treturn p.context.ServiceFactory.Create(p, name, &config)\n}\n\n// AddConfig adds the specified service config for the specified name.\nfunc (p *Project) AddConfig(name string, config *config.ServiceConfig) error {\n\tp.Notify(events.ServiceAdd, name, nil)\n\n\tp.ServiceConfigs.Add(name, config)\n\tp.reload = append(p.reload, name)\n\n\treturn nil\n}\n\n// AddVolumeConfig adds the specified volume config for the specified name.\nfunc (p *Project) AddVolumeConfig(name string, config *config.VolumeConfig) error {\n\tp.Notify(events.VolumeAdd, name, nil)\n\tp.VolumeConfigs[name] = config\n\treturn nil\n}\n\n// AddNetworkConfig adds the specified network config for the specified name.\nfunc (p *Project) AddNetworkConfig(name string, config *config.NetworkConfig) error {\n\tp.Notify(events.NetworkAdd, name, nil)\n\tp.NetworkConfigs[name] = config\n\treturn nil\n}\n\n// Load loads the specified byte array (the composefile content) and adds the\n// service configuration to the project.\n// FIXME is it needed ?\nfunc (p *Project) Load(bytes []byte) error {\n\treturn p.load(\"\", bytes)\n}\n\nfunc (p *Project) load(file string, bytes []byte) error {\n\tserviceConfigs, volumeConfigs, networkConfigs, err := config.Merge(p.ServiceConfigs, p.context.EnvironmentLookup, p.context.ResourceLookup, file, bytes, p.ParseOptions)\n\tif err != nil {\n\t\tlog.Errorf(\"Could not parse config for project %s : %v\", p.Name, err)\n\t\treturn err\n\t}\n\n\tfor name, config := range serviceConfigs {\n\t\terr := p.AddConfig(name, config)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor name, config := range volumeConfigs {\n\t\terr := p.AddVolumeConfig(name, config)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor name, config := range networkConfigs {\n\t\terr := p.AddNetworkConfig(name, config)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (p *Project) loadWrappers(wrappers map[string]*serviceWrapper, servicesToConstruct []string) error {\n\tfor _, name := range servicesToConstruct {\n\t\twrapper, err := newServiceWrapper(name, p)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twrappers[name] = wrapper\n\t}\n\n\treturn nil\n}\n\n// Build builds the specified services (like docker build).\nfunc (p *Project) Build(ctx context.Context, buildOptions options.Build, services ...string) error {\n\treturn p.perform(events.ProjectBuildStart, events.ProjectBuildDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceBuildStart, events.ServiceBuild, func(service Service) error {\n\t\t\treturn service.Build(ctx, buildOptions)\n\t\t})\n\t}), nil)\n}\n\n// Create creates the specified services (like docker create).\nfunc (p *Project) Create(ctx context.Context, options options.Create, services ...string) error {\n\tif options.NoRecreate && options.ForceRecreate {\n\t\treturn fmt.Errorf(\"no-recreate and force-recreate cannot be combined\")\n\t}\n\treturn p.perform(events.ProjectCreateStart, events.ProjectCreateDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceCreateStart, events.ServiceCreate, func(service Service) error {\n\t\t\treturn service.Create(ctx, options)\n\t\t})\n\t}), nil)\n}\n\n// Stop stops the specified services (like docker stop).\nfunc (p *Project) Stop(ctx context.Context, timeout int, services ...string) error {\n\treturn p.perform(events.ProjectStopStart, events.ProjectStopDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServiceStopStart, events.ServiceStop, func(service Service) error {\n\t\t\treturn service.Stop(ctx, timeout)\n\t\t})\n\t}), nil)\n}\n\n// Down stops the specified services and clean related containers (like docker stop + docker rm).\nfunc (p *Project) Down(ctx context.Context, opts options.Down, services ...string) error {\n\tif !opts.RemoveImages.Valid() {\n\t\treturn fmt.Errorf(\"--rmi flag must be local, all or empty\")\n\t}\n\tif err := p.Stop(ctx, 10, services...); err != nil {\n\t\treturn err\n\t}\n\tif opts.RemoveOrphans {\n\t\tif err := p.removeOrphanContainers(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err := p.Delete(ctx, options.Delete{\n\t\tRemoveVolume: opts.RemoveVolume,\n\t}, services...); err != nil {\n\t\treturn err\n\t}\n\n\treturn p.forEach([]string{}, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.NoEvent, events.NoEvent, func(service Service) error {\n\t\t\treturn service.RemoveImage(ctx, opts.RemoveImages)\n\t\t})\n\t}), func(service Service) error {\n\t\treturn service.Create(ctx, options.Create{})\n\t})\n}\n\nfunc (p *Project) removeOrphanContainers() error {\n\tclient := p.clientFactory.Create(nil)\n\tfilter := filters.NewArgs()\n\tfilter.Add(\"label\", labels.PROJECT.EqString(p.Name))\n\tcontainers, err := client.ContainerList(context.Background(), types.ContainerListOptions{\n\t\tFilter: filter,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tcurrentServices := map[string]struct{}{}\n\tfor _, serviceName := range p.ServiceConfigs.Keys() {\n\t\tcurrentServices[serviceName] = struct{}{}\n\t}\n\tfor _, container := range containers {\n\t\tserviceLabel := container.Labels[labels.SERVICE.Str()]\n\t\tif _, ok := currentServices[serviceLabel]; !ok {\n\t\t\tif err := client.ContainerKill(context.Background(), container.ID, \"SIGKILL\"); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := client.ContainerRemove(context.Background(), types.ContainerRemoveOptions{\n\t\t\t\tContainerID: container.ID,\n\t\t\t\tForce:       true,\n\t\t\t}); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Restart restarts the specified services (like docker restart).\nfunc (p *Project) Restart(ctx context.Context, timeout int, services ...string) error {\n\treturn p.perform(events.ProjectRestartStart, events.ProjectRestartDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceRestartStart, events.ServiceRestart, func(service Service) error {\n\t\t\treturn service.Restart(ctx, timeout)\n\t\t})\n\t}), nil)\n}\n\n// Port returns the public port for a port binding of the specified service.\nfunc (p *Project) Port(ctx context.Context, index int, protocol, serviceName, privatePort string) (string, error) {\n\tservice, err := p.CreateService(serviceName)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tcontainers, err := service.Containers(ctx)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif index < 1 || index > len(containers) {\n\t\treturn \"\", fmt.Errorf(\"Invalid index %d\", index)\n\t}\n\n\treturn containers[index-1].Port(ctx, fmt.Sprintf(\"%s/%s\", privatePort, protocol))\n}\n\n// Ps list containers for the specified services.\nfunc (p *Project) Ps(ctx context.Context, onlyID bool, services ...string) (InfoSet, error) {\n\tallInfo := InfoSet{}\n\tfor _, name := range p.ServiceConfigs.Keys() {\n\t\tservice, err := p.CreateService(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tinfo, err := service.Info(ctx, onlyID)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tallInfo = append(allInfo, info...)\n\t}\n\treturn allInfo, nil\n}\n\n// Start starts the specified services (like docker start).\nfunc (p *Project) Start(ctx context.Context, services ...string) error {\n\treturn p.perform(events.ProjectStartStart, events.ProjectStartDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceStartStart, events.ServiceStart, func(service Service) error {\n\t\t\treturn service.Start(ctx)\n\t\t})\n\t}), nil)\n}\n\n// Run executes a one off command (like `docker run image command`).\nfunc (p *Project) Run(ctx context.Context, serviceName string, commandParts []string) (int, error) {\n\tif !p.ServiceConfigs.Has(serviceName) {\n\t\treturn 1, fmt.Errorf(\"%s is not defined in the template\", serviceName)\n\t}\n\n\tvar exitCode int\n\terr := p.forEach([]string{}, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceRunStart, events.ServiceRun, func(service Service) error {\n\t\t\tif service.Name() == serviceName {\n\t\t\t\tcode, err := service.Run(ctx, commandParts)\n\t\t\t\texitCode = code\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t}), func(service Service) error {\n\t\treturn service.Create(ctx, options.Create{})\n\t})\n\treturn exitCode, err\n}\n\n// Up creates and starts the specified services (kinda like docker run).\nfunc (p *Project) Up(ctx context.Context, options options.Up, services ...string) error {\n\treturn p.perform(events.ProjectUpStart, events.ProjectUpDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(wrappers, events.ServiceUpStart, events.ServiceUp, func(service Service) error {\n\t\t\treturn service.Up(ctx, options)\n\t\t})\n\t}), func(service Service) error {\n\t\treturn service.Create(ctx, options.Create)\n\t})\n}\n\n// Log aggregates and prints out the logs for the specified services.\nfunc (p *Project) Log(ctx context.Context, follow bool, services ...string) error {\n\treturn p.forEach(services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.NoEvent, events.NoEvent, func(service Service) error {\n\t\t\treturn service.Log(ctx, follow)\n\t\t})\n\t}), nil)\n}\n\n// Scale scales the specified services.\nfunc (p *Project) Scale(ctx context.Context, timeout int, servicesScale map[string]int) error {\n\t// This code is a bit verbose but I wanted to parse everything up front\n\torder := make([]string, 0, 0)\n\tservices := make(map[string]Service)\n\n\tfor name := range servicesScale {\n\t\tif !p.ServiceConfigs.Has(name) {\n\t\t\treturn fmt.Errorf(\"%s is not defined in the template\", name)\n\t\t}\n\n\t\tservice, err := p.CreateService(name)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to lookup service: %s: %v\", service, err)\n\t\t}\n\n\t\torder = append(order, name)\n\t\tservices[name] = service\n\t}\n\n\tfor _, name := range order {\n\t\tscale := servicesScale[name]\n\t\tlog.Infof(\"Setting scale %s=%d...\", name, scale)\n\t\terr := services[name].Scale(ctx, scale, timeout)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to set the scale %s=%d: %v\", name, scale, err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pull pulls the specified services (like docker pull).\nfunc (p *Project) Pull(ctx context.Context, services ...string) error {\n\treturn p.forEach(services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServicePullStart, events.ServicePull, func(service Service) error {\n\t\t\treturn service.Pull(ctx)\n\t\t})\n\t}), nil)\n}\n\n// listStoppedContainers lists the stopped containers for the specified services.\nfunc (p *Project) listStoppedContainers(ctx context.Context, services ...string) ([]string, error) {\n\tstoppedContainers := []string{}\n\terr := p.forEach(services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.NoEvent, events.NoEvent, func(service Service) error {\n\t\t\tcontainers, innerErr := service.Containers(ctx)\n\t\t\tif innerErr != nil {\n\t\t\t\treturn innerErr\n\t\t\t}\n\n\t\t\tfor _, container := range containers {\n\t\t\t\trunning, innerErr := container.IsRunning(ctx)\n\t\t\t\tif innerErr != nil {\n\t\t\t\t\tlog.Error(innerErr)\n\t\t\t\t}\n\t\t\t\tif !running {\n\t\t\t\t\tcontainerID, innerErr := container.ID()\n\t\t\t\t\tif innerErr != nil {\n\t\t\t\t\t\tlog.Error(innerErr)\n\t\t\t\t\t}\n\t\t\t\t\tstoppedContainers = append(stoppedContainers, containerID)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nil\n\t\t})\n\t}), nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn stoppedContainers, nil\n}\n\n// Delete removes the specified services (like docker rm).\nfunc (p *Project) Delete(ctx context.Context, options options.Delete, services ...string) error {\n\tstoppedContainers, err := p.listStoppedContainers(ctx, services...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(stoppedContainers) == 0 {\n\t\tp.Notify(events.ProjectDeleteDone, \"\", nil)\n\t\tfmt.Println(\"No stopped containers\")\n\t\treturn nil\n\t}\n\tif options.BeforeDeleteCallback != nil && !options.BeforeDeleteCallback(stoppedContainers) {\n\t\treturn nil\n\t}\n\treturn p.perform(events.ProjectDeleteStart, events.ProjectDeleteDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServiceDeleteStart, events.ServiceDelete, func(service Service) error {\n\t\t\treturn service.Delete(ctx, options)\n\t\t})\n\t}), nil)\n}\n\n// Kill kills the specified services (like docker kill).\nfunc (p *Project) Kill(ctx context.Context, signal string, services ...string) error {\n\treturn p.perform(events.ProjectKillStart, events.ProjectKillDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServiceKillStart, events.ServiceKill, func(service Service) error {\n\t\t\treturn service.Kill(ctx, signal)\n\t\t})\n\t}), nil)\n}\n\n// Pause pauses the specified services containers (like docker pause).\nfunc (p *Project) Pause(ctx context.Context, services ...string) error {\n\treturn p.perform(events.ProjectPauseStart, events.ProjectPauseDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServicePauseStart, events.ServicePause, func(service Service) error {\n\t\t\treturn service.Pause(ctx)\n\t\t})\n\t}), nil)\n}\n\n// Unpause pauses the specified services containers (like docker pause).\nfunc (p *Project) Unpause(ctx context.Context, services ...string) error {\n\treturn p.perform(events.ProjectUnpauseStart, events.ProjectUnpauseDone, services, wrapperAction(func(wrapper *serviceWrapper, wrappers map[string]*serviceWrapper) {\n\t\twrapper.Do(nil, events.ServiceUnpauseStart, events.ServiceUnpause, func(service Service) error {\n\t\t\treturn service.Unpause(ctx)\n\t\t})\n\t}), nil)\n}\n\nfunc (p *Project) perform(start, done events.EventType, services []string, action wrapperAction, cycleAction serviceAction) error {\n\tp.Notify(start, \"\", nil)\n\n\terr := p.forEach(services, action, cycleAction)\n\n\tp.Notify(done, \"\", nil)\n\treturn err\n}\n\nfunc isSelected(wrapper *serviceWrapper, selected map[string]bool) bool {\n\treturn len(selected) == 0 || selected[wrapper.name]\n}\n\nfunc (p *Project) forEach(services []string, action wrapperAction, cycleAction serviceAction) error {\n\tselected := make(map[string]bool)\n\twrappers := make(map[string]*serviceWrapper)\n\n\tfor _, s := range services {\n\t\tselected[s] = true\n\t}\n\n\treturn p.traverse(true, selected, wrappers, action, cycleAction)\n}\n\nfunc (p *Project) startService(wrappers map[string]*serviceWrapper, history []string, selected, launched map[string]bool, wrapper *serviceWrapper, action wrapperAction, cycleAction serviceAction) error {\n\tif launched[wrapper.name] {\n\t\treturn nil\n\t}\n\n\tlaunched[wrapper.name] = true\n\thistory = append(history, wrapper.name)\n\n\tfor _, dep := range wrapper.service.DependentServices() {\n\t\ttarget := wrappers[dep.Target]\n\t\tif target == nil {\n\t\t\tlog.Errorf(\"Failed to find %s\", dep.Target)\n\t\t\tcontinue\n\t\t}\n\n\t\tif utils.Contains(history, dep.Target) {\n\t\t\tcycle := strings.Join(append(history, dep.Target), \"->\")\n\t\t\tif dep.Optional {\n\t\t\t\tlog.Debugf(\"Ignoring cycle for %s\", cycle)\n\t\t\t\twrapper.IgnoreDep(dep.Target)\n\t\t\t\tif cycleAction != nil {\n\t\t\t\t\tvar err error\n\t\t\t\t\tlog.Debugf(\"Running cycle action for %s\", cycle)\n\t\t\t\t\terr = cycleAction(target.service)\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}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"Cycle detected in path %s\", cycle)\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\terr := p.startService(wrappers, history, selected, launched, target, action, cycleAction)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif isSelected(wrapper, selected) {\n\t\tlog.Debugf(\"Launching action for %s\", wrapper.name)\n\t\tgo action(wrapper, wrappers)\n\t} else {\n\t\twrapper.Ignore()\n\t}\n\n\treturn nil\n}\n\nfunc (p *Project) traverse(start bool, selected map[string]bool, wrappers map[string]*serviceWrapper, action wrapperAction, cycleAction serviceAction) error {\n\trestart := false\n\twrapperList := []string{}\n\n\tif start {\n\t\tfor _, name := range p.ServiceConfigs.Keys() {\n\t\t\twrapperList = append(wrapperList, name)\n\t\t}\n\t} else {\n\t\tfor _, wrapper := range wrappers {\n\t\t\tif err := wrapper.Reset(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\twrapperList = p.reload\n\t}\n\n\tp.loadWrappers(wrappers, wrapperList)\n\tp.reload = []string{}\n\n\t// check service name\n\tfor s := range selected {\n\t\tif wrappers[s] == nil {\n\t\t\treturn errors.New(\"No such service: \" + s)\n\t\t}\n\t}\n\n\tlaunched := map[string]bool{}\n\n\tfor _, wrapper := range wrappers {\n\t\tif err := p.startService(wrappers, []string{}, selected, launched, wrapper, action, cycleAction); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tvar firstError error\n\n\tfor _, wrapper := range wrappers {\n\t\tif !isSelected(wrapper, selected) {\n\t\t\tcontinue\n\t\t}\n\t\tif err := wrapper.Wait(); err == ErrRestart {\n\t\t\trestart = true\n\t\t} else if err != nil {\n\t\t\tlog.Errorf(\"Failed to start: %s : %v\", wrapper.name, err)\n\t\t\tif firstError == nil {\n\t\t\t\tfirstError = err\n\t\t\t}\n\t\t}\n\t}\n\n\tif restart {\n\t\tif p.ReloadCallback != nil {\n\t\t\tif err := p.ReloadCallback(); err != nil {\n\t\t\t\tlog.Errorf(\"Failed calling callback: %v\", err)\n\t\t\t}\n\t\t}\n\t\treturn p.traverse(false, selected, wrappers, action, cycleAction)\n\t}\n\treturn firstError\n}\n\n// AddListener adds the specified listener to the project.\n// This implements implicitly events.Emitter.\nfunc (p *Project) AddListener(c chan<- events.Event) {\n\tif !p.hasListeners {\n\t\tfor _, l := range p.listeners {\n\t\t\tclose(l)\n\t\t}\n\t\tp.hasListeners = true\n\t\tp.listeners = []chan<- events.Event{c}\n\t} else {\n\t\tp.listeners = append(p.listeners, c)\n\t}\n}\n\n// Notify notifies all project listener with the specified eventType, service name and datas.\n// This implements implicitly events.Notifier interface.\nfunc (p *Project) Notify(eventType events.EventType, serviceName string, data map[string]string) {\n\tif eventType == events.NoEvent {\n\t\treturn\n\t}\n\n\tevent := events.Event{\n\t\tEventType:   eventType,\n\t\tServiceName: serviceName,\n\t\tData:        data,\n\t}\n\n\tfor _, l := range p.listeners {\n\t\tl <- event\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/service-wrapper.go",
    "content": "package project\n\nimport (\n\t\"sync\"\n\n\t\"github.com/docker/libcompose/project/events\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype serviceWrapper struct {\n\tname    string\n\tservice Service\n\tdone    sync.WaitGroup\n\tstate   ServiceState\n\terr     error\n\tproject *Project\n\tnoWait  bool\n\tignored map[string]bool\n}\n\nfunc newServiceWrapper(name string, p *Project) (*serviceWrapper, error) {\n\twrapper := &serviceWrapper{\n\t\tname:    name,\n\t\tstate:   StateUnknown,\n\t\tproject: p,\n\t\tignored: map[string]bool{},\n\t}\n\n\treturn wrapper, wrapper.Reset()\n}\n\nfunc (s *serviceWrapper) IgnoreDep(name string) {\n\ts.ignored[name] = true\n}\n\nfunc (s *serviceWrapper) Reset() error {\n\tif s.state != StateExecuted {\n\t\tservice, err := s.project.CreateService(s.name)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to create service for %s : %v\", s.name, err)\n\t\t\treturn err\n\t\t}\n\n\t\ts.service = service\n\t}\n\n\tif s.err == ErrRestart {\n\t\ts.err = nil\n\t}\n\ts.done.Add(1)\n\n\treturn nil\n}\n\nfunc (s *serviceWrapper) Ignore() {\n\tdefer s.done.Done()\n\n\ts.state = StateExecuted\n\ts.project.Notify(events.ServiceUpIgnored, s.service.Name(), nil)\n}\n\nfunc (s *serviceWrapper) waitForDeps(wrappers map[string]*serviceWrapper) bool {\n\tif s.noWait {\n\t\treturn true\n\t}\n\n\tfor _, dep := range s.service.DependentServices() {\n\t\tif s.ignored[dep.Target] {\n\t\t\tcontinue\n\t\t}\n\n\t\tif wrapper, ok := wrappers[dep.Target]; ok {\n\t\t\tif wrapper.Wait() == ErrRestart {\n\t\t\t\ts.project.Notify(events.ProjectReload, wrapper.service.Name(), nil)\n\t\t\t\ts.err = ErrRestart\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\tlog.Errorf(\"Failed to find %s\", dep.Target)\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc (s *serviceWrapper) Do(wrappers map[string]*serviceWrapper, start, done events.EventType, action func(service Service) error) {\n\tdefer s.done.Done()\n\n\tif s.state == StateExecuted {\n\t\treturn\n\t}\n\n\tif wrappers != nil && !s.waitForDeps(wrappers) {\n\t\treturn\n\t}\n\n\ts.state = StateExecuted\n\n\ts.project.Notify(start, s.service.Name(), nil)\n\n\ts.err = action(s.service)\n\tif s.err == ErrRestart {\n\t\ts.project.Notify(done, s.service.Name(), nil)\n\t\ts.project.Notify(events.ProjectReloadTrigger, s.service.Name(), nil)\n\t} else if s.err != nil {\n\t\tlog.Errorf(\"Failed %s %s : %v\", start, s.name, s.err)\n\t} else {\n\t\ts.project.Notify(done, s.service.Name(), nil)\n\t}\n}\n\nfunc (s *serviceWrapper) Wait() error {\n\ts.done.Wait()\n\treturn s.err\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/service.go",
    "content": "package project\n\nimport (\n\t\"errors\"\n\n\t\"golang.org/x/net/context\"\n\n\t\"github.com/docker/libcompose/config\"\n\t\"github.com/docker/libcompose/project/options\"\n)\n\n// Service defines what a libcompose service provides.\ntype Service interface {\n\tBuild(ctx context.Context, buildOptions options.Build) error\n\tCreate(ctx context.Context, options options.Create) error\n\tDelete(ctx context.Context, options options.Delete) error\n\tInfo(ctx context.Context, qFlag bool) (InfoSet, error)\n\tLog(ctx context.Context, follow bool) error\n\tKill(ctx context.Context, signal string) error\n\tPause(ctx context.Context) error\n\tPull(ctx context.Context) error\n\tRestart(ctx context.Context, timeout int) error\n\tRun(ctx context.Context, commandParts []string) (int, error)\n\tScale(ctx context.Context, count int, timeout int) error\n\tStart(ctx context.Context) error\n\tStop(ctx context.Context, timeout int) error\n\tUnpause(ctx context.Context) error\n\tUp(ctx context.Context, options options.Up) error\n\n\tRemoveImage(ctx context.Context, imageType options.ImageType) error\n\tContainers(ctx context.Context) ([]Container, error)\n\tDependentServices() []ServiceRelationship\n\tConfig() *config.ServiceConfig\n\tName() string\n}\n\n// ServiceState holds the state of a service.\ntype ServiceState string\n\n// State definitions\nvar (\n\tStateExecuted = ServiceState(\"executed\")\n\tStateUnknown  = ServiceState(\"unknown\")\n)\n\n// Error definitions\nvar (\n\tErrRestart     = errors.New(\"Restart execution\")\n\tErrUnsupported = errors.New(\"UnsupportedOperation\")\n)\n\n// ServiceFactory is an interface factory to create Service object for the specified\n// project, with the specified name and service configuration.\ntype ServiceFactory interface {\n\tCreate(project *Project, name string, serviceConfig *config.ServiceConfig) (Service, error)\n}\n\n// ServiceRelationshipType defines the type of service relationship.\ntype ServiceRelationshipType string\n\n// RelTypeLink means the services are linked (docker links).\nconst RelTypeLink = ServiceRelationshipType(\"\")\n\n// RelTypeNetNamespace means the services share the same network namespace.\nconst RelTypeNetNamespace = ServiceRelationshipType(\"netns\")\n\n// RelTypeIpcNamespace means the service share the same ipc namespace.\nconst RelTypeIpcNamespace = ServiceRelationshipType(\"ipc\")\n\n// RelTypeVolumesFrom means the services share some volumes.\nconst RelTypeVolumesFrom = ServiceRelationshipType(\"volumesFrom\")\n\n// RelTypeDependsOn means the dependency was explicitly set using 'depends_on'.\nconst RelTypeDependsOn = ServiceRelationshipType(\"dependsOn\")\n\n// ServiceRelationship holds the relationship information between two services.\ntype ServiceRelationship struct {\n\tTarget, Alias string\n\tType          ServiceRelationshipType\n\tOptional      bool\n}\n\n// NewServiceRelationship creates a new Relationship based on the specified alias\n// and relationship type.\nfunc NewServiceRelationship(nameAlias string, relType ServiceRelationshipType) ServiceRelationship {\n\tname, alias := NameAlias(nameAlias)\n\treturn ServiceRelationship{\n\t\tTarget: name,\n\t\tAlias:  alias,\n\t\tType:   relType,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/project/utils.go",
    "content": "package project\n\nimport (\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/container\"\n)\n\n// DefaultDependentServices return the dependent services (as an array of ServiceRelationship)\n// for the specified project and service. It looks for : links, volumesFrom, net and ipc configuration.\nfunc DefaultDependentServices(p *Project, s Service) []ServiceRelationship {\n\tconfig := s.Config()\n\tif config == nil {\n\t\treturn []ServiceRelationship{}\n\t}\n\n\tresult := []ServiceRelationship{}\n\tfor _, link := range config.Links {\n\t\tresult = append(result, NewServiceRelationship(link, RelTypeLink))\n\t}\n\n\tfor _, volumesFrom := range config.VolumesFrom {\n\t\tresult = append(result, NewServiceRelationship(volumesFrom, RelTypeVolumesFrom))\n\t}\n\n\tfor _, dependsOn := range config.DependsOn {\n\t\tresult = append(result, NewServiceRelationship(dependsOn, RelTypeDependsOn))\n\t}\n\n\tresult = appendNs(p, result, s.Config().NetworkMode, RelTypeNetNamespace)\n\tresult = appendNs(p, result, s.Config().Ipc, RelTypeIpcNamespace)\n\n\treturn result\n}\n\nfunc appendNs(p *Project, rels []ServiceRelationship, conf string, relType ServiceRelationshipType) []ServiceRelationship {\n\tservice := GetContainerFromIpcLikeConfig(p, conf)\n\tif service != \"\" {\n\t\trels = append(rels, NewServiceRelationship(service, relType))\n\t}\n\treturn rels\n}\n\n// NameAlias returns the name and alias based on the specified string.\n// If the name contains a colon (like name:alias) it will split it, otherwise\n// it will return the specified name as name and alias.\nfunc NameAlias(name string) (string, string) {\n\tparts := strings.SplitN(name, \":\", 2)\n\tif len(parts) == 2 {\n\t\treturn parts[0], parts[1]\n\t}\n\treturn parts[0], parts[0]\n}\n\n// GetContainerFromIpcLikeConfig returns name of the service that shares the IPC\n// namespace with the specified service.\nfunc GetContainerFromIpcLikeConfig(p *Project, conf string) string {\n\tipc := container.IpcMode(conf)\n\tif !ipc.IsContainer() {\n\t\treturn \"\"\n\t}\n\n\tname := ipc.Container()\n\tif name == \"\" {\n\t\treturn \"\"\n\t}\n\n\tif p.ServiceConfigs.Has(name) {\n\t\treturn name\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/utils/util.go",
    "content": "package utils\n\nimport (\n\t\"encoding/json\"\n\t\"sync\"\n\n\t\"github.com/sirupsen/logrus\"\n\n\tyaml \"github.com/cloudfoundry-incubator/candiedyaml\"\n)\n\n// InParallel holds a pool and a waitgroup to execute tasks in parallel and to be able\n// to wait for completion of all tasks.\ntype InParallel struct {\n\twg   sync.WaitGroup\n\tpool sync.Pool\n}\n\n// Add runs the specified task in parallel and adds it to the waitGroup.\nfunc (i *InParallel) Add(task func() error) {\n\ti.wg.Add(1)\n\n\tgo func() {\n\t\tdefer i.wg.Done()\n\t\terr := task()\n\t\tif err != nil {\n\t\t\ti.pool.Put(err)\n\t\t}\n\t}()\n}\n\n// Wait waits for all tasks to complete and returns the latest error encountered if any.\nfunc (i *InParallel) Wait() error {\n\ti.wg.Wait()\n\tobj := i.pool.Get()\n\tif err, ok := obj.(error); ok {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ConvertByJSON converts a struct (src) to another one (target) using json marshalling/unmarshalling.\n// If the structure are not compatible, this will throw an error as the unmarshalling will fail.\nfunc ConvertByJSON(src, target interface{}) error {\n\tnewBytes, err := json.Marshal(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = json.Unmarshal(newBytes, target)\n\tif err != nil {\n\t\tlogrus.Errorf(\"Failed to unmarshall: %v\\n%s\", err, string(newBytes))\n\t}\n\treturn err\n}\n\n// Convert converts a struct (src) to another one (target) using yaml marshalling/unmarshalling.\n// If the structure are not compatible, this will throw an error as the unmarshalling will fail.\nfunc Convert(src, target interface{}) error {\n\tnewBytes, err := yaml.Marshal(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = yaml.Unmarshal(newBytes, target)\n\tif err != nil {\n\t\tlogrus.Errorf(\"Failed to unmarshall: %v\\n%s\", err, string(newBytes))\n\t}\n\treturn err\n}\n\n// CopySlice creates an exact copy of the provided string slice\nfunc CopySlice(s []string) []string {\n\tif s == nil {\n\t\treturn nil\n\t}\n\tr := make([]string, len(s))\n\tcopy(r, s)\n\treturn r\n}\n\n// CopyMap creates an exact copy of the provided string-to-string map\nfunc CopyMap(m map[string]string) map[string]string {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tr := map[string]string{}\n\tfor k, v := range m {\n\t\tr[k] = v\n\t}\n\treturn r\n}\n\n// FilterStringSet accepts a string set `s` (in the form of `map[string]bool`) and a filtering function `f`\n// and returns a string set containing only the strings `x` for which `f(x) == true`\nfunc FilterStringSet(s map[string]bool, f func(x string) bool) map[string]bool {\n\tresult := map[string]bool{}\n\tfor k := range s {\n\t\tif f(k) {\n\t\t\tresult[k] = true\n\t\t}\n\t}\n\treturn result\n}\n\n// FilterString returns a json representation of the specified map\n// that is used as filter for docker.\nfunc FilterString(data map[string][]string) string {\n\t// I can't imagine this would ever fail\n\tbytes, _ := json.Marshal(data)\n\treturn string(bytes)\n}\n\n// Contains checks if the specified string (key) is present in the specified collection.\nfunc Contains(collection []string, key string) bool {\n\tfor _, value := range collection {\n\t\tif value == key {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// Merge performs a union of two string slices: the result is an unordered slice\n// that includes every item from either argument exactly once\nfunc Merge(coll1, coll2 []string) []string {\n\tm := map[string]struct{}{}\n\tfor _, v := range append(coll1, coll2...) {\n\t\tm[v] = struct{}{}\n\t}\n\tr := make([]string, 0, len(m))\n\tfor k := range m {\n\t\tr = append(r, k)\n\t}\n\treturn r\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/version/version.go",
    "content": "package version\n\nvar (\n\t// VERSION should be updated by hand at each release\n\tVERSION = \"0.3.0-dev\"\n\n\t// GITCOMMIT will be overwritten automatically by the build system\n\tGITCOMMIT = \"HEAD\"\n\n\t// BUILDTIME will be overwritten automatically by the build system\n\tBUILDTIME = \"\"\n)\n"
  },
  {
    "path": "vendor/github.com/docker/libcompose/yaml/types_yaml.go",
    "content": "package yaml\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/docker/engine-api/types/strslice\"\n\t\"github.com/flynn/go-shlex\"\n)\n\n// Stringorslice represents a string or an array of strings.\n// Using engine-api Strslice and augment it with YAML marshalling stuff.\ntype Stringorslice strslice.StrSlice\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *Stringorslice) UnmarshalYAML(tag string, value interface{}) error {\n\tswitch value := value.(type) {\n\tcase []interface{}:\n\t\tparts, err := toStrings(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*s = parts\n\tcase string:\n\t\t*s = []string{value}\n\tdefault:\n\t\treturn fmt.Errorf(\"Failed to unmarshal Stringorslice: %#v\", value)\n\t}\n\treturn nil\n}\n\n// Ulimits represents a list of Ulimit.\n// It is, however, represented in yaml as keys (and thus map in Go)\ntype Ulimits struct {\n\tElements []Ulimit\n}\n\n// MarshalYAML implements the Marshaller interface.\nfunc (u Ulimits) MarshalYAML() (tag string, value interface{}, err error) {\n\tulimitMap := make(map[string]Ulimit)\n\tfor _, ulimit := range u.Elements {\n\t\tulimitMap[ulimit.Name] = ulimit\n\t}\n\treturn \"\", ulimitMap, nil\n}\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (u *Ulimits) UnmarshalYAML(tag string, value interface{}) error {\n\tulimits := make(map[string]Ulimit)\n\tyamlUlimits := reflect.ValueOf(value)\n\tswitch yamlUlimits.Kind() {\n\tcase reflect.Map:\n\t\tfor _, key := range yamlUlimits.MapKeys() {\n\t\t\tvar name string\n\t\t\tvar soft, hard int64\n\t\t\tmapValue := yamlUlimits.MapIndex(key).Elem()\n\t\t\tname = key.Elem().String()\n\t\t\tswitch mapValue.Kind() {\n\t\t\tcase reflect.Int64:\n\t\t\t\tsoft = mapValue.Int()\n\t\t\t\thard = mapValue.Int()\n\t\t\tcase reflect.Map:\n\t\t\t\tif len(mapValue.MapKeys()) != 2 {\n\t\t\t\t\treturn fmt.Errorf(\"Failed to unmarshal Ulimit: %#v\", mapValue)\n\t\t\t\t}\n\t\t\t\tfor _, subKey := range mapValue.MapKeys() {\n\t\t\t\t\tsubValue := mapValue.MapIndex(subKey).Elem()\n\t\t\t\t\tswitch subKey.Elem().String() {\n\t\t\t\t\tcase \"soft\":\n\t\t\t\t\t\tsoft = subValue.Int()\n\t\t\t\t\tcase \"hard\":\n\t\t\t\t\t\thard = subValue.Int()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"Failed to unmarshal Ulimit: %#v, %v\", mapValue, mapValue.Kind())\n\t\t\t}\n\t\t\tulimits[name] = Ulimit{\n\t\t\t\tName: name,\n\t\t\t\tulimitValues: ulimitValues{\n\t\t\t\t\tSoft: soft,\n\t\t\t\t\tHard: hard,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tkeys := make([]string, 0, len(ulimits))\n\t\tfor key := range ulimits {\n\t\t\tkeys = append(keys, key)\n\t\t}\n\t\tsort.Strings(keys)\n\t\tfor _, key := range keys {\n\t\t\tu.Elements = append(u.Elements, ulimits[key])\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"Failed to unmarshal Ulimit: %#v\", value)\n\t}\n\treturn nil\n}\n\n// Ulimit represents ulimit information.\ntype Ulimit struct {\n\tulimitValues\n\tName string\n}\n\ntype ulimitValues struct {\n\tSoft int64 `yaml:\"soft\"`\n\tHard int64 `yaml:\"hard\"`\n}\n\n// MarshalYAML implements the Marshaller interface.\nfunc (u Ulimit) MarshalYAML() (tag string, value interface{}, err error) {\n\tif u.Soft == u.Hard {\n\t\treturn \"\", u.Soft, nil\n\t}\n\treturn \"\", u.ulimitValues, err\n}\n\n// NewUlimit creates a Ulimit based on the specified parts.\nfunc NewUlimit(name string, soft int64, hard int64) Ulimit {\n\treturn Ulimit{\n\t\tName: name,\n\t\tulimitValues: ulimitValues{\n\t\t\tSoft: soft,\n\t\t\tHard: hard,\n\t\t},\n\t}\n}\n\n// Command represents a docker command, can be a string or an array of strings.\ntype Command strslice.StrSlice\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *Command) UnmarshalYAML(tag string, value interface{}) error {\n\tswitch value := value.(type) {\n\tcase []interface{}:\n\t\tparts, err := toStrings(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*s = parts\n\tcase string:\n\t\tparts, err := shlex.Split(value)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t*s = parts\n\tdefault:\n\t\treturn fmt.Errorf(\"Failed to unmarshal Command: %#v\", value)\n\t}\n\treturn nil\n}\n\n// SliceorMap represents a slice or a map of strings.\ntype SliceorMap map[string]string\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *SliceorMap) UnmarshalYAML(tag string, value interface{}) error {\n\tswitch value := value.(type) {\n\tcase map[interface{}]interface{}:\n\t\tparts := map[string]string{}\n\t\tfor k, v := range value {\n\t\t\tif sk, ok := k.(string); ok {\n\t\t\t\tif sv, ok := v.(string); ok {\n\t\t\t\t\tparts[sk] = sv\n\t\t\t\t} else {\n\t\t\t\t\treturn fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", v, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", k, k)\n\t\t\t}\n\t\t}\n\t\t*s = parts\n\tcase []interface{}:\n\t\tparts := map[string]string{}\n\t\tfor _, s := range value {\n\t\t\tif str, ok := s.(string); ok {\n\t\t\t\tstr := strings.TrimSpace(str)\n\t\t\t\tkeyValueSlice := strings.SplitN(str, \"=\", 2)\n\n\t\t\t\tkey := keyValueSlice[0]\n\t\t\t\tval := \"\"\n\t\t\t\tif len(keyValueSlice) == 2 {\n\t\t\t\t\tval = keyValueSlice[1]\n\t\t\t\t}\n\t\t\t\tparts[key] = val\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", s, s)\n\t\t\t}\n\t\t}\n\t\t*s = parts\n\tdefault:\n\t\treturn fmt.Errorf(\"Failed to unmarshal SliceorMap: %#v\", value)\n\t}\n\treturn nil\n}\n\n// MaporEqualSlice represents a slice of strings that gets unmarshal from a\n// YAML map into 'key=value' string.\ntype MaporEqualSlice []string\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *MaporEqualSlice) UnmarshalYAML(tag string, value interface{}) error {\n\tparts, err := unmarshalToStringOrSepMapParts(value, \"=\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*s = parts\n\treturn nil\n}\n\n// MaporColonSlice represents a slice of strings that gets unmarshal from a\n// YAML map into 'key:value' string.\ntype MaporColonSlice []string\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *MaporColonSlice) UnmarshalYAML(tag string, value interface{}) error {\n\tparts, err := unmarshalToStringOrSepMapParts(value, \":\")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*s = parts\n\treturn nil\n}\n\n// MaporSpaceSlice represents a slice of strings that gets unmarshal from a\n// YAML map into 'key value' string.\ntype MaporSpaceSlice []string\n\n// UnmarshalYAML implements the Unmarshaller interface.\nfunc (s *MaporSpaceSlice) UnmarshalYAML(tag string, value interface{}) error {\n\tparts, err := unmarshalToStringOrSepMapParts(value, \" \")\n\tif err != nil {\n\t\treturn err\n\t}\n\t*s = parts\n\treturn nil\n}\n\nfunc unmarshalToStringOrSepMapParts(value interface{}, key string) ([]string, error) {\n\tswitch value := value.(type) {\n\tcase []interface{}:\n\t\treturn toStrings(value)\n\tcase map[interface{}]interface{}:\n\t\treturn toSepMapParts(value, key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Failed to unmarshal Map or Slice: %#v\", value)\n\t}\n}\n\nfunc toSepMapParts(value map[interface{}]interface{}, sep string) ([]string, error) {\n\tif len(value) == 0 {\n\t\treturn nil, nil\n\t}\n\tparts := make([]string, 0, len(value))\n\tfor k, v := range value {\n\t\tif sk, ok := k.(string); ok {\n\t\t\tif sv, ok := v.(string); ok {\n\t\t\t\tparts = append(parts, sk+sep+sv)\n\t\t\t} else if sv, ok := v.(int64); ok {\n\t\t\t\tparts = append(parts, sk+sep+strconv.FormatInt(sv, 10))\n\t\t\t} else {\n\t\t\t\treturn nil, fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", v, v)\n\t\t\t}\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", k, k)\n\t\t}\n\t}\n\treturn parts, nil\n}\n\nfunc toStrings(s []interface{}) ([]string, error) {\n\tif len(s) == 0 {\n\t\treturn nil, nil\n\t}\n\tr := make([]string, len(s))\n\tfor k, v := range s {\n\t\tif sv, ok := v.(string); ok {\n\t\t\tr[k] = sv\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"Cannot unmarshal '%v' of type %T into a string value\", v, v)\n\t\t}\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/.dockerignore",
    "content": "*\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\nbin/\n\n# Folders\nintegration-tmp/\n_obj\n_test\n.vagrant\n\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\ncmd/dnet/dnet\n\n# Coverage\n*.tmp\n*.coverprofile\n\n# IDE files and folders\n.project\n.settings/\n\nlibnetworkbuild.created\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/CHANGELOG.md",
    "content": "# Changelog\n\n## 0.5.6 (2016-01-14)\n- Setup embedded DNS server correctly on container restart. Fixes docker/docker#19354\n\n## 0.5.5 (2016-01-14)\n- Allow network-scoped alias to be resolved for anonymous endpoint\n- Self repair corrupted IP database that could happen in 1.9.0 & 1.9.1\n- Skip IPTables cleanup if --iptables=false is set. Fixes docker/docker#19063\n\n## 0.5.4 (2016-01-12)\n- Removed the isNodeAlive protection when user forces an endpoint delete\n\n## 0.5.3 (2016-01-12)\n- Bridge driver supporting internal network option\n- Backend implementation to support \"force\" option to network disconnect\n- Fixing a regex in etchosts package to fix docker/docker#19080\n\n## 0.5.2 (2016-01-08)\n- Embedded DNS replacing /etc/hosts based Service Discovery\n- Container local alias and Network-scoped alias support\n- Backend support for internal network mode\n- Support for IPAM driver options\n- Fixes overlay veth cleanup issue : docker/docker#18814\n- fixes docker/docker#19139\n- disable IPv6 Duplicate Address Detection\n\n## 0.5.1 (2015-12-07)\n- Allowing user to assign IP Address for containers\n- Fixes docker/docker#18214\n- Fixes docker/docker#18380\n\n## 0.5.0 (2015-10-30)\n\n- Docker multi-host networking exiting experimental channel\n- Introduced IP Address Management and IPAM drivers\n- DEPRECATE service discovery from default bridge network\n- Introduced new network UX\n- Support for multiple networks in bridge driver\n- Local persistance with boltdb\n\n## 0.4.0 (2015-07-24)\n\n- Introduce experimental version of Overlay driver\n- Introduce experimental version of network plugins\n- Introduce experimental version of network & service UX\n- Introduced experimental /etc/hosts based service discovery\n- Integrated with libkv\n- Improving test coverage\n- Fixed a bunch of issues with osl namespace mgmt\n\n## 0.3.0 (2015-05-27)\n \n- Introduce CNM (Container Networking Model)\n- Replace docker networking with CNM & Bridge driver\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/Dockerfile.build",
    "content": "FROM golang:1.4-cross\nRUN apt-get update && apt-get -y install iptables\n\nRUN cd /go/src && mkdir -p golang.org/x && \\\n    cd golang.org/x && git clone https://github.com/golang/tools && \\\n    cd tools && git checkout release-branch.go1.5\n\nRUN go get github.com/tools/godep \\\n\t\tgithub.com/golang/lint/golint \\\n\t\tgolang.org/x/tools/cmd/vet \\\n\t\tgolang.org/x/tools/cmd/goimports \\\n\t\tgolang.org/x/tools/cmd/cover\\\n\t\tgithub.com/mattn/goveralls\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/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\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/MAINTAINERS",
    "content": "# Libnetwork maintainers file\n#\n# This file describes who runs the docker/libnetwork project and how.\n# This is a living document - if you see something out of date or missing, speak up!\n#\n# It is structured to be consumable by both humans and programs.\n# To extract its contents programmatically, use any TOML-compliant parser.\n#\n# This file is compiled into the MAINTAINERS file in docker/opensource.\n#\n[Org]\n\t[Org.\"Core maintainers\"]\n\t\tpeople = [\n\t\t\t\"aboch\",\n\t\t\t\"LK4D4\",\n\t\t\t\"icecrime\",\n\t\t\t\"mrjana\",\n\t\t\t\"mavenugo\",\n\t\t]\n\n[people]\n\n# A reference list of all people associated with the project.\n# All other sections should refer to people by their canonical key\n# in the people section.\n\n\t# ADD YOURSELF HERE IN ALPHABETICAL ORDER\n\n\t[people.aboch]\n\tName = \"Alessandro Boch\"\n\tEmail = \"aboch@docker.com\"\n\tGitHub = \"aboch\"\n\n\t[people.LK4D4]\n\tName = \"Alexandr Morozov\"\n\tEmail = \"lk4d4@docker.com\"\n\tGitHub = \"LK4D4\"\n\n\t[people.icecrime]\n\tName = \"Arnaud Porterie\"\n\tEmail = \"arnaud@docker.com\"\n\tGitHub = \"icecrime\"\n\n\t[people.mrjana]\n\tName = \"Jana Radhakrishnan\"\n\tEmail = \"mrjana@docker.com\"\n\tGitHub = \"mrjana\"\n\n\t[people.mavenugo]\n\tName = \"Madhu Venugopal\"\n\tEmail = \"madhu@docker.com\"\n\tGitHub = \"mavenugo\"\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/Makefile",
    "content": ".PHONY: all all-local build build-local clean cross cross-local check check-code check-format run-tests integration-tests check-local coveralls circle-ci-cross circle-ci-build circle-ci-check circle-ci\nSHELL=/bin/bash\nbuild_image=libnetworkbuild\ndockerargs = --privileged -v $(shell pwd):/go/src/github.com/docker/libnetwork -w /go/src/github.com/docker/libnetwork\ncontainer_env = -e \"INSIDECONTAINER=-incontainer=true\"\ndocker = docker run --rm -it ${dockerargs} $$EXTRA_ARGS ${container_env} ${build_image}\nciargs = -e CIRCLECI -e \"COVERALLS_TOKEN=$$COVERALLS_TOKEN\" -e \"INSIDECONTAINER=-incontainer=true\"\ncidocker = docker run ${dockerargs} ${ciargs} ${container_env} ${build_image}\nCROSS_PLATFORMS = linux/amd64 linux/386 linux/arm windows/amd64 windows/386\n\nall: ${build_image}.created build check integration-tests clean\n\nall-local: build-local check-local integration-tests-local clean\n\n${build_image}.created:\n\tdocker build -f Dockerfile.build -t ${build_image} .\n\ttouch ${build_image}.created\n\nbuild: ${build_image}.created\n\t@echo \"Building code... \"\n\t@${docker} ./wrapmake.sh build-local\n\t@echo \"Done building code\"\n\nbuild-local:\n\t@mkdir -p \"bin\"\n\t$(shell which godep) go build -o \"bin/dnet\" ./cmd/dnet\n\nclean:\n\t@if [ -d bin ]; then \\\n\t\techo \"Removing dnet binaries\"; \\\n\t\trm -rf bin; \\\n\tfi\n\ncross: ${build_image}.created\n\t@mkdir -p \"bin\"\n\t@for platform in ${CROSS_PLATFORMS}; do \\\n\t\tEXTRA_ARGS=\"-e GOOS=$${platform%/*} -e GOARCH=$${platform##*/}\" ; \\\n\t\techo \"$${platform}...\" ; \\\n\t\t${docker} make cross-local ; \\\n\tdone\n\ncross-local:\n\t$(shell which godep) go build -o \"bin/dnet-$$GOOS-$$GOARCH\" ./cmd/dnet\n\ncheck: ${build_image}.created\n\t@${docker} ./wrapmake.sh check-local\n\ncheck-code:\n\t@echo \"Checking code... \"\n\ttest -z \"$$(golint ./... | tee /dev/stderr)\"\n\tgo vet ./...\n\t@echo \"Done checking code\"\n\ncheck-format:\n\t@echo \"Checking format... \"\n\ttest -z \"$$(goimports -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)\"\n\t@echo \"Done checking format\"\n\nrun-tests:\n\t@echo \"Running tests... \"\n\t@echo \"mode: count\" > coverage.coverprofile\n\t@for dir in $$(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d); do \\\n\t    if ls $$dir/*.go &> /dev/null; then \\\n\t\tpushd . &> /dev/null ; \\\n\t\tcd $$dir ; \\\n\t\t$(shell which godep) go test ${INSIDECONTAINER} -test.parallel 3 -test.v -covermode=count -coverprofile=./profile.tmp ; \\\n\t\tret=$$? ;\\\n\t\tif [ $$ret -ne 0 ]; then exit $$ret; fi ;\\\n\t\tpopd &> /dev/null; \\\n\t\tif [ -f $$dir/profile.tmp ]; then \\\n\t\t\tcat $$dir/profile.tmp | tail -n +2 >> coverage.coverprofile ; \\\n\t\t\t\trm $$dir/profile.tmp ; \\\n\t    fi ; \\\n\tfi ; \\\n\tdone\n\t@echo \"Done running tests\"\n\ncheck-local:\tcheck-format check-code run-tests\n\nintegration-tests: ./bin/dnet\n\t@./test/integration/dnet/run-integration-tests.sh\n\n./bin/dnet:\n\tmake build\n\ncoveralls:\n\t-@goveralls -service circleci -coverprofile=coverage.coverprofile -repotoken $$COVERALLS_TOKEN\n\n# CircleCI's Docker fails when cleaning up using the --rm flag\n# The following targets are a workaround for this\ncircle-ci-cross: ${build_image}.created\n\t@mkdir -p \"bin\"\n\t@for platform in ${CROSS_PLATFORMS}; do \\\n\t\tEXTRA_ARGS=\"-e GOOS=$${platform%/*} -e GOARCH=$${platform##*/}\" ; \\\n\t\techo \"$${platform}...\" ; \\\n\t\t${cidocker} make cross-local ; \\\n\tdone\n\ncircle-ci-check: ${build_image}.created\n\t@${cidocker} make check-local coveralls\n\ncircle-ci-build: ${build_image}.created\n\t@${cidocker} make build-local\n\ncircle-ci: circle-ci-check circle-ci-build integration-tests\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/README.md",
    "content": "# libnetwork - networking for containers\n\n[![Circle CI](https://circleci.com/gh/docker/libnetwork/tree/master.svg?style=svg)](https://circleci.com/gh/docker/libnetwork/tree/master) [![Coverage Status](https://coveralls.io/repos/docker/libnetwork/badge.svg)](https://coveralls.io/r/docker/libnetwork) [![GoDoc](https://godoc.org/github.com/docker/libnetwork?status.svg)](https://godoc.org/github.com/docker/libnetwork)\n\nLibnetwork provides a native Go implementation for connecting containers\n\nThe goal of libnetwork is to deliver a robust Container Network Model that provides a consistent programming interface and the required network abstractions for applications.\n\n#### Design\nPlease refer to the [design](docs/design.md) for more information.\n\n#### Using libnetwork\n\nThere are many networking solutions available to suit a broad range of use-cases. libnetwork uses a driver / plugin model to support all of these solutions while abstracting the complexity of the driver implementations by exposing a simple and consistent Network Model to users.\n\n\n```go\nfunc main() {\n\tif reexec.Init() {\n\t\treturn\n\t}\n\n\t// Select and configure the network driver\n\tnetworkType := \"bridge\"\n\n\t// Create a new controller instance\n\tdriverOptions := options.Generic{}\n\tgenericOption := make(map[string]interface{})\n\tgenericOption[netlabel.GenericData] = driverOptions\n\tcontroller, err := libnetwork.New(config.OptionDriverConfig(networkType, genericOption))\n\tif err != nil {\n\t\tlog.Fatalf(\"libnetwork.New: %s\", err)\n\t}\n\n\t// Create a network for containers to join.\n\t// NewNetwork accepts Variadic optional arguments that libnetwork and Drivers can use.\n\tnetwork, err := controller.NewNetwork(networkType, \"network1\")\n\tif err != nil {\n\t\tlog.Fatalf(\"controller.NewNetwork: %s\", err)\n\t}\n\n\t// For each new container: allocate IP and interfaces. The returned network\n\t// settings will be used for container infos (inspect and such), as well as\n\t// iptables rules for port publishing. This info is contained or accessible\n\t// from the returned endpoint.\n\tep, err := network.CreateEndpoint(\"Endpoint1\")\n\tif err != nil {\n\t\tlog.Fatalf(\"network.CreateEndpoint: %s\", err)\n\t}\n\n\t// Create the sandbox for the container.\n\t// NewSandbox accepts Variadic optional arguments which libnetwork can use.\n\tsbx, err := controller.NewSandbox(\"container1\",\n\t\tlibnetwork.OptionHostname(\"test\"),\n\t\tlibnetwork.OptionDomainname(\"docker.io\"))\n\tif err != nil {\n\t\tlog.Fatalf(\"controller.NewSandbox: %s\", err)\n\t}\n\n\t// A sandbox can join the endpoint via the join api.\n\terr = ep.Join(sbx)\n\tif err != nil {\n\t\tlog.Fatalf(\"ep.Join: %s\", err)\n\t}\n\n\t// libnetwork client can check the endpoint's operational data via the Info() API\n\tepInfo, err := ep.DriverInfo()\n\tif err != nil {\n\t\tlog.Fatalf(\"ep.DriverInfo: %s\", err)\n\t}\n\n\tmacAddress, ok := epInfo[netlabel.MacAddress]\n\tif !ok {\n\t\tlog.Fatalf(\"failed to get mac address from endpoint info\")\n\t}\n\n\tfmt.Printf(\"Joined endpoint %s (%s) to sandbox %s (%s)\\n\", ep.Name(), macAddress, sbx.ContainerID(), sbx.Key())\n}\n```\n\n## Future\nPlease refer to [roadmap](ROADMAP.md) for more information.\n\n## Contributing\n\nWant to hack on libnetwork? [Docker's contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) apply.\n\n## Copyright and license\nCode and documentation copyright 2015 Docker, inc. Code released under the Apache 2.0 license. Docs released under Creative commons.\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/ROADMAP.md",
    "content": "# Roadmap\n\nThis document defines the high-level goals of the libnetwork project. See [Project Planning](#project-planning) for information on Releases.\n\n## Long-term Goal\n\nlibnetwork project will follow Docker and Linux philosophy of delivering small, highly modular and composable tools that works well independently. \nlibnetwork aims to satisfy that composable need for Networking in Containers.\n\n## Short-term Goals\n\n- Modularize the networking logic in Docker Engine and libcontainer in to a single, reusable library\n- Replace the networking subsystem of Docker Engine, with libnetwork\n- Define a flexible model that allows local and remote drivers to provide networking to containers\n- Provide a stand-alone tool \"dnet\" for managing and testing libnetwork\n\nProject Planning\n================\n\n[Project Pages](https://github.com/docker/libnetwork/wiki) define the goals for each Milestone and identify the release-relationship to the Docker Platform.\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/Vagrantfile",
    "content": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!\nVAGRANTFILE_API_VERSION = \"2\"\n\n$consul=<<SCRIPT\napt-get update\napt-get -y install wget\nwget -qO- https://experimental.docker.com/ | sh\ngpasswd -a vagrant docker\nservice docker restart\ndocker run -d -p 8500:8500 -p 8300-8302:8300-8302/tcp -p 8300-8302:8300-8302/udp -h consul progrium/consul -server -bootstrap\nSCRIPT\n\n$bootstrap=<<SCRIPT\napt-get update\napt-get -y install wget curl\napt-get -y install bridge-utils\nwget -qO- https://experimental.docker.com/ | sh\ngpasswd -a vagrant docker\necho DOCKER_OPTS=\\\\\"--cluster-store=consul://192.168.33.10:8500 --cluster-advertise=${1}:0\\\\\" >> /etc/default/docker\ncp /vagrant/docs/vagrant-systemd/docker.service /etc/systemd/system/\nsystemctl daemon-reload\nsystemctl restart docker.service\nSCRIPT\n\nVagrant.configure(VAGRANTFILE_API_VERSION) do |config|\n  config.ssh.shell = \"bash -c 'BASH_ENV=/etc/profile exec bash'\"\n  num_nodes = 2\n  base_ip = \"192.168.33.\"\n  net_ips = num_nodes.times.collect { |n| base_ip + \"#{n+11}\" }\n\n  config.vm.define \"consul-server\" do |consul|\n    consul.vm.box = \"ubuntu/trusty64\"\n    consul.vm.hostname = \"consul-server\"\n    consul.vm.network :private_network, ip: \"192.168.33.10\"\n    consul.vm.provider \"virtualbox\" do |vb|\n     vb.customize [\"modifyvm\", :id, \"--memory\", \"512\"]\n    end\n    consul.vm.provision :shell, inline: $consul\n  end\n\n  num_nodes.times do |n|\n    config.vm.define \"net-#{n+1}\" do |net|\n      net.vm.box = \"ubuntu/vivid64\"\n      net_ip = net_ips[n]\n      net_index = n+1\n      net.vm.hostname = \"net-#{net_index}\"\n      net.vm.provider \"virtualbox\" do |vb|\n        vb.customize [\"modifyvm\", :id, \"--memory\", \"1024\"]\n      end\n      net.vm.network :private_network, ip: \"#{net_ip}\"\n      net.vm.provision :shell, inline: $bootstrap, :args => \"#{net_ip}\"\n    end\n  end\n\nend\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/circle.yml",
    "content": "machine:\n  services:\n    - docker\n\ndependencies:\n  override:\n    - sudo apt-get update; sudo apt-get install -y iptables zookeeperd \n    - go get golang.org/x/tools/cmd/vet\n    - go get golang.org/x/tools/cmd/goimports\n    - go get golang.org/x/tools/cmd/cover\n    - go get github.com/tools/godep\n    - go get github.com/golang/lint/golint\n    - go get github.com/mattn/goveralls\n\ntest:\n  override:\n    - make circle-ci\n\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/machines",
    "content": "#/bin/sh\n\nset -e\n\nusage()\n{\ncat << EOF\nNAME:\n    machines - Create Test Environments for Docker Networking\n\nVERSION:\n    0.1\n\nUSAGE:\n    $0 <command> [command_options] [arguments...]\n\nCOMMANDS:\n    help    \n            Help and usage\n\n    up <kv-store> <scale>    \n            Create environment with given KV store\n            zookeeper | etcd | consul (default)\n\t    Create N nodes, default = 2\n\n    destroy \n            Destroy Environment\n\nEOF\n}\n\nstep() {\n    printf \"\\033[0;36m-----> $@\\033[0m\\n\"\n}\n\nup()\n{\n\tstep \"Creating KV Store Machine\"\n\tdocker-machine create \\\n\t    -d virtualbox \\\n\t    mh-kv\n\n\tstep \"KV Store is $1\"\n        step \"Starting KV Container\"\n        case \"$1\" in\n            etcd)\n            cluster_store=\"cluster-store=etcd://$(docker-machine ip mh-kv):2379\"\n            docker $(docker-machine config mh-kv) run -d \\\n                -p \"2379:2379\" \\\n                -h \"etcd\" \\\n                --name \"etcd\" \\\n                quay.io/coreos/etcd:v2.2.1 \\\n\t\t--listen-client-urls=\"http://0.0.0.0:2379\" \\\n                --advertise-client-urls=\"http://$(docker-machine ip mh-kv):2379\"\n           ;;\n            zookeeper)\n            cluster_store=\"cluster-store=zk://$(docker-machine ip mh-kv):2181\" \n            docker $(docker-machine config mh-kv) run -d \\\n                -p \"2181:2181\" \\\n                -h \"zookeeper\" \\\n                --name \"zookeeper\" \\\n                tianon/zookeeper\n            ;;\n            *)\n            cluster_store=\"cluster-store=consul://$(docker-machine ip mh-kv):8500\"\n            docker $(docker-machine config mh-kv) run -d \\\n\t        -p \"8500:8500\" \\\n\t        -h \"consul\" \\\n                --name \"consul\" \\\n\t        progrium/consul -server -bootstrap-expect 1\n            ;;\n        esac\n\n\tmachines=$2\n        if [ -z machines ]; then\n            machines=2\n        fi\n\tstep \"Creating $machines Machines\"       \n \n        for i in $(seq $machines); do\n\t    step \"Creating machine $i\"\n            docker-machine create \\\n\t        -d virtualbox \\\n\t        --engine-opt=\"cluster-advertise=eth1:2376\" \\\n\t        --engine-opt=\"$cluster_store\" \\\n\t        mh-$i\n        done\t\t\t\t\n}\n\ndestroy()\n{\n    for x in $(docker-machine ls | grep mh- | awk '{ print $1 }'); do\n\tdocker-machine rm $x\n    done\n}\n\ncase \"$1\" in\n    up)\n        shift\n        up $@\n        ;;\n    destroy)\n        destroy $@\n        ;;\n    help)\n        usage\n        ;;\n    *)\n\tusage\n        ;;\nesac\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/resolvconf/README.md",
    "content": "Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/resolvconf/dns/resolvconf.go",
    "content": "package dns\n\nimport (\n\t\"regexp\"\n)\n\n// IPLocalhost is a regex patter for localhost IP address range.\nconst IPLocalhost = `((127\\.([0-9]{1,3}\\.){2}[0-9]{1,3})|(::1)$)`\n\nvar localhostIPRegexp = regexp.MustCompile(IPLocalhost)\n\n// IsLocalhost returns true if ip matches the localhost IP regular expression.\n// Used for determining if nameserver settings are being passed which are\n// localhost addresses\nfunc IsLocalhost(ip string) bool {\n\treturn localhostIPRegexp.MatchString(ip)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/resolvconf/resolvconf.go",
    "content": "// Package resolvconf provides utility code to query and update DNS configuration in /etc/resolv.conf\npackage resolvconf\n\nimport (\n\t\"bytes\"\n\t\"io/ioutil\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/docker/docker/pkg/ioutils\"\n\t\"github.com/docker/libnetwork/resolvconf/dns\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar (\n\t// Note: the default IPv4 & IPv6 resolvers are set to Google's Public DNS\n\tdefaultIPv4Dns = []string{\"nameserver 8.8.8.8\", \"nameserver 8.8.4.4\"}\n\tdefaultIPv6Dns = []string{\"nameserver 2001:4860:4860::8888\", \"nameserver 2001:4860:4860::8844\"}\n\tipv4NumBlock   = `(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)`\n\tipv4Address    = `(` + ipv4NumBlock + `\\.){3}` + ipv4NumBlock\n\t// This is not an IPv6 address verifier as it will accept a super-set of IPv6, and also\n\t// will *not match* IPv4-Embedded IPv6 Addresses (RFC6052), but that and other variants\n\t// -- e.g. other link-local types -- either won't work in containers or are unnecessary.\n\t// For readability and sufficiency for Docker purposes this seemed more reasonable than a\n\t// 1000+ character regexp with exact and complete IPv6 validation\n\tipv6Address = `([0-9A-Fa-f]{0,4}:){2,7}([0-9A-Fa-f]{0,4})`\n\n\tlocalhostNSRegexp = regexp.MustCompile(`(?m)^nameserver\\s+` + dns.IPLocalhost + `\\s*\\n*`)\n\tnsIPv6Regexp      = regexp.MustCompile(`(?m)^nameserver\\s+` + ipv6Address + `\\s*\\n*`)\n\tnsRegexp          = regexp.MustCompile(`^\\s*nameserver\\s*((` + ipv4Address + `)|(` + ipv6Address + `))\\s*$`)\n\tsearchRegexp      = regexp.MustCompile(`^\\s*search\\s*(([^\\s]+\\s*)*)$`)\n\toptionsRegexp     = regexp.MustCompile(`^\\s*options\\s*(([^\\s]+\\s*)*)$`)\n)\n\nvar lastModified struct {\n\tsync.Mutex\n\tsha256   string\n\tcontents []byte\n}\n\n// File contains the resolv.conf content and its hash\ntype File struct {\n\tContent []byte\n\tHash    string\n}\n\n// Get returns the contents of /etc/resolv.conf and its hash\nfunc Get() (*File, error) {\n\tresolv, err := ioutil.ReadFile(\"/etc/resolv.conf\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\thash, err := ioutils.HashData(bytes.NewReader(resolv))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &File{Content: resolv, Hash: hash}, nil\n}\n\n// GetSpecific returns the contents of the user specified resolv.conf file and its hash\nfunc GetSpecific(path string) (*File, error) {\n\tresolv, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\thash, err := ioutils.HashData(bytes.NewReader(resolv))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &File{Content: resolv, Hash: hash}, nil\n}\n\n// GetIfChanged retrieves the host /etc/resolv.conf file, checks against the last hash\n// and, if modified since last check, returns the bytes and new hash.\n// This feature is used by the resolv.conf updater for containers\nfunc GetIfChanged() (*File, error) {\n\tlastModified.Lock()\n\tdefer lastModified.Unlock()\n\n\tresolv, err := ioutil.ReadFile(\"/etc/resolv.conf\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnewHash, err := ioutils.HashData(bytes.NewReader(resolv))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif lastModified.sha256 != newHash {\n\t\tlastModified.sha256 = newHash\n\t\tlastModified.contents = resolv\n\t\treturn &File{Content: resolv, Hash: newHash}, nil\n\t}\n\t// nothing changed, so return no data\n\treturn nil, nil\n}\n\n// GetLastModified retrieves the last used contents and hash of the host resolv.conf.\n// Used by containers updating on restart\nfunc GetLastModified() *File {\n\tlastModified.Lock()\n\tdefer lastModified.Unlock()\n\n\treturn &File{Content: lastModified.contents, Hash: lastModified.sha256}\n}\n\n// FilterResolvDNS cleans up the config in resolvConf.  It has two main jobs:\n// 1. It looks for localhost (127.*|::1) entries in the provided\n//    resolv.conf, removing local nameserver entries, and, if the resulting\n//    cleaned config has no defined nameservers left, adds default DNS entries\n// 2. Given the caller provides the enable/disable state of IPv6, the filter\n//    code will remove all IPv6 nameservers if it is not enabled for containers\n//\nfunc FilterResolvDNS(resolvConf []byte, ipv6Enabled bool) (*File, error) {\n\tcleanedResolvConf := localhostNSRegexp.ReplaceAll(resolvConf, []byte{})\n\t// if IPv6 is not enabled, also clean out any IPv6 address nameserver\n\tif !ipv6Enabled {\n\t\tcleanedResolvConf = nsIPv6Regexp.ReplaceAll(cleanedResolvConf, []byte{})\n\t}\n\t// if the resulting resolvConf has no more nameservers defined, add appropriate\n\t// default DNS servers for IPv4 and (optionally) IPv6\n\tif len(GetNameservers(cleanedResolvConf)) == 0 {\n\t\tlogrus.Infof(\"No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : %v\", defaultIPv4Dns)\n\t\tdns := defaultIPv4Dns\n\t\tif ipv6Enabled {\n\t\t\tlogrus.Infof(\"IPv6 enabled; Adding default IPv6 external servers : %v\", defaultIPv6Dns)\n\t\t\tdns = append(dns, defaultIPv6Dns...)\n\t\t}\n\t\tcleanedResolvConf = append(cleanedResolvConf, []byte(\"\\n\"+strings.Join(dns, \"\\n\"))...)\n\t}\n\thash, err := ioutils.HashData(bytes.NewReader(cleanedResolvConf))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &File{Content: cleanedResolvConf, Hash: hash}, nil\n}\n\n// getLines parses input into lines and strips away comments.\nfunc getLines(input []byte, commentMarker []byte) [][]byte {\n\tlines := bytes.Split(input, []byte(\"\\n\"))\n\tvar output [][]byte\n\tfor _, currentLine := range lines {\n\t\tvar commentIndex = bytes.Index(currentLine, commentMarker)\n\t\tif commentIndex == -1 {\n\t\t\toutput = append(output, currentLine)\n\t\t} else {\n\t\t\toutput = append(output, currentLine[:commentIndex])\n\t\t}\n\t}\n\treturn output\n}\n\n// GetNameservers returns nameservers (if any) listed in /etc/resolv.conf\nfunc GetNameservers(resolvConf []byte) []string {\n\tnameservers := []string{}\n\tfor _, line := range getLines(resolvConf, []byte(\"#\")) {\n\t\tvar ns = nsRegexp.FindSubmatch(line)\n\t\tif len(ns) > 0 {\n\t\t\tnameservers = append(nameservers, string(ns[1]))\n\t\t}\n\t}\n\treturn nameservers\n}\n\n// GetNameserversAsCIDR returns nameservers (if any) listed in\n// /etc/resolv.conf as CIDR blocks (e.g., \"1.2.3.4/32\")\n// This function's output is intended for net.ParseCIDR\nfunc GetNameserversAsCIDR(resolvConf []byte) []string {\n\tnameservers := []string{}\n\tfor _, nameserver := range GetNameservers(resolvConf) {\n\t\tnameservers = append(nameservers, nameserver+\"/32\")\n\t}\n\treturn nameservers\n}\n\n// GetSearchDomains returns search domains (if any) listed in /etc/resolv.conf\n// If more than one search line is encountered, only the contents of the last\n// one is returned.\nfunc GetSearchDomains(resolvConf []byte) []string {\n\tdomains := []string{}\n\tfor _, line := range getLines(resolvConf, []byte(\"#\")) {\n\t\tmatch := searchRegexp.FindSubmatch(line)\n\t\tif match == nil {\n\t\t\tcontinue\n\t\t}\n\t\tdomains = strings.Fields(string(match[1]))\n\t}\n\treturn domains\n}\n\n// GetOptions returns options (if any) listed in /etc/resolv.conf\n// If more than one options line is encountered, only the contents of the last\n// one is returned.\nfunc GetOptions(resolvConf []byte) []string {\n\toptions := []string{}\n\tfor _, line := range getLines(resolvConf, []byte(\"#\")) {\n\t\tmatch := optionsRegexp.FindSubmatch(line)\n\t\tif match == nil {\n\t\t\tcontinue\n\t\t}\n\t\toptions = strings.Fields(string(match[1]))\n\t}\n\treturn options\n}\n\n// Build writes a configuration file to path containing a \"nameserver\" entry\n// for every element in dns, a \"search\" entry for every element in\n// dnsSearch, and an \"options\" entry for every element in dnsOptions.\nfunc Build(path string, dns, dnsSearch, dnsOptions []string) (*File, error) {\n\tcontent := bytes.NewBuffer(nil)\n\tif len(dnsSearch) > 0 {\n\t\tif searchString := strings.Join(dnsSearch, \" \"); strings.Trim(searchString, \" \") != \".\" {\n\t\t\tif _, err := content.WriteString(\"search \" + searchString + \"\\n\"); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\tfor _, dns := range dns {\n\t\tif _, err := content.WriteString(\"nameserver \" + dns + \"\\n\"); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif len(dnsOptions) > 0 {\n\t\tif optsString := strings.Join(dnsOptions, \" \"); strings.Trim(optsString, \" \") != \"\" {\n\t\t\tif _, err := content.WriteString(\"options \" + optsString + \"\\n\"); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\thash, err := ioutils.HashData(bytes.NewReader(content.Bytes()))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &File{Content: content.Bytes(), Hash: hash}, ioutil.WriteFile(path, content.Bytes(), 0644)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/libnetwork/wrapmake.sh",
    "content": "#!/usr/bin/env bash\n\nset -e\n\nfunction raise()\n{\n    kill -$1 0\n}\n\ntrap \"raise SIGINT\" SIGINT\nmake $1\n"
  },
  {
    "path": "vendor/github.com/docker/machine/.dockerignore",
    "content": "docker-machine*\n.git\n"
  },
  {
    "path": "vendor/github.com/docker/machine/.gitignore",
    "content": "docker-machine*\n*.log\n"
  },
  {
    "path": "vendor/github.com/docker/machine/.godir",
    "content": "github.com/docker/machine\n"
  },
  {
    "path": "vendor/github.com/docker/machine/.travis.yml",
    "content": "language: go\nsudo: false\ngo:\n- 1.3\ninstall:\n- export GOPATH=${TRAVIS_BUILD_DIR}/Godeps/_workspace:$GOPATH\n- export PATH=${TRAVIS_BUILD_DIR}/Godeps/_workspace/bin:$PATH\n- go get -t -v ./...\n- go get code.google.com/p/go.tools/cmd/cover\nscript:\n- script/validate-dco\n- script/validate-gofmt\n- go test -v -short ./...\n- script/generate-coverage\n"
  },
  {
    "path": "vendor/github.com/docker/machine/CHANGELOG.md",
    "content": "Changelog\n==========\n\n# 0.3.0 (2015-06-18)\n\n## Features\n- Engine option configuration (ability to configure all engine options)\n- Swarm option configuration (ability to configure all swarm options)\n- New Provisioning system to allow for greater flexibility and stability for installing and configuring Docker\n- New Provisioners\n  - Rancher OS\n  - RedHat Enterprise Linux 7.0+ (experimental)\n  - Fedora 21+ (experimental)\n  - Debian 8+ (experimental)\n- PowerShell support (configure Windows Docker CLI)\n- Command Prompt (cmd.exe) support (configure Windows Docker CLI)\n- Filter command help by driver\n- Ability to import Boot2Docker instances\n- Boot2Docker CLI migration guide (experimental)\n- Format option for `inspect` command\n- New logging output format to improve readability and display across platforms \n- Updated \"active\" machine concept - now is implicit according to `DOCKER_HOST` environment variable.  Note: this removes the implicit \"active\" machine and can no longer be specified with the `active` command.  You change the \"active\" host by using the `env` command instead.\n- Specify Swarm version (`--swarm-image` flag)\n\n## Drivers\n- New: Exoscale Driver\n- New: Generic Driver (provision any host with supported base OS and SSH)\n- Amazon EC2\n  - SSH user is configurable\n  - Support for Spot instances\n  - Add option to use private address only\n  - Base AMI updated to 20150417\n- Google\n  - Support custom disk types\n  - Updated base image to v20150316\n- Openstack\n  - Support for Keystone v3 domains\n- Rackspace\n  - Misc fixes including environment variable for Flavor Id and stability\n- Softlayer\n  - Enable local disk as provisioning option\n  - Fixes for SSH access errors\n  - Fixed bug where public IP would always be returned when requesting private\n  - Add support for specifying public and private VLAN IDs\n- VirtualBox\n  - Use Intel network interface driver (adds great stability)\n  - Stability fixes for NAT access\n  - Use DNS pass through\n  - Default CPU to single core for improved performance\n  - Enable shared folder support for Windows hosts\n- VMware Fusion\n  - Boot2Docker ISO updated\n  - Shared folder support\n\n## Fixes\n- Provisioning improvements to ensure Docker is available\n- SSH improvements for provisioning stability\n- Fixed SSH key generation bug on Windows\n- Help formatting for improved readability\n\n## Breaking Changes\n- \"Short-Form\" name reference no longer supported Instead of \"docker-machine \" implying the active host you must now use docker-machine\n- VMware shared folders require Boot2Docker 1.7\n\n## Special Thanks                                                                        \nWe would like to thank all contributors.  Machine would not be where it is\nwithout you.  We would also like to give special thanks to the following\ncontributors for outstanding contributions to the project:\n\n- @frapposelli for VMware updates and fixes\n- @hairyhenderson for several improvements to Softlayer driver, inspect formatting and lots of fixes\n- @ibuildthecloud for rancher os provisioning\n- @sthulb for portable SSH library                                              \n- @vincentbernat for exoscale                                                   \n- @zchee for Amazon updates and great doc updates\n\n# 0.2.0 (2015-04-16)\n\nCore Stability and Driver Updates\n\n## Core\n\n- Support for system proxy environment\n- New command to regenerate TLS certificates\n  - Note: this will restart the Docker engine to apply\n- Updates to driver operations (create, start, stop, etc) for better reliability\n- New internal `libmachine` package for internal api (not ready for public usage)\n- Updated Driver Interface\n  - [Driver Spec](https://github.com/docker/machine/blob/master/docs/DRIVER_SPEC.md)\n  - Removed host provisioning from Drivers to enable a more consistent install\n  - Removed SSH commands from each Driver for more consistent operations\n- Swarm: machine now uses Swarm default binpacking strategy\n\n## Driver Updates\n\n- All drivers updated to new Driver interface\n- Amazon EC2\n  - Better checking for subnets on creation\n  - Support for using Private IPs in VPC\n  - Fixed bug with duplicate security group authorization with Swarm\n  - Support for IAM instance profile\n  - Fixed bug where IP was not properly detected upon stop\n- DigitalOcean\n  - IPv6 support\n  - Backup option\n  - Private Networking\n- Openstack / Rackspace\n  - Gophercloud updated to latest version\n  - New insecure flag to disable TLS (use with caution)\n- Google\n  - Google source image updated\n  - Ability to specify auth token via file\n- VMware Fusion\n  - Paravirtualized driver for disk (pvscsi)\n  - Enhanced paravirtualized NIC (vmxnet3)\n  - Power option updates\n  - SSH keys persistent across reboots\n  - Stop now gracefully stops VM\n  - vCPUs now match host CPUs\n- SoftLayer\n  - Fixed provision bug where `curl` was not present\n- VirtualBox\n  - Correct power operations with Saved VM state\n  - Fixed bug where image option was ignored\n\n## CLI\n\n- Auto-regeneration of TLS certificates when TLS error is detected\n  - Note: this will restart the Docker engine to apply\n- Minor UI updates including improved sorting and updated command docs\n- Bug with `config` and `env` with spaces fixed\n  - Note: you now must use `eval $(docker-machine env machine)` to load environment settings\n- Updates to better support `fish` shell\n- Use `--tlsverify` for both `config` and `env` commands\n- Commands now use eval for better interoperability with shell\n\n## Testing\n- New integration test framework (bats)\n\n\n# 0.1.0 (2015-02-26)\n\nInitial beta release.\n\n- Provision Docker Engines using multiple drivers\n- Provide light management for the machines\n  - Create, Start, Stop, Restart, Kill, Remove, SSH\n- Configure the Docker Engine for secure communication (TLS)\n- Easily switch target machine for fast configuration of Docker Engine client\n- Provision Swarm clusters (experimental)\n\n## Included drivers\n\n- Amazon EC2\n- Digital Ocean\n- Google\n- Microsoft Azure\n- Microsoft Hyper-V\n- Openstack\n- Rackspace\n- VirtualBox\n- VMware Fusion\n- VMware vCloud Air\n- VMware vSphere\n"
  },
  {
    "path": "vendor/github.com/docker/machine/CONTRIBUTING.md",
    "content": "# Contributing to machine\n\n[![GoDoc](https://godoc.org/github.com/docker/machine?status.png)](https://godoc.org/github.com/docker/machine)\n[![Build Status](https://travis-ci.org/docker/machine.svg?branch=master)](https://travis-ci.org/docker/machine)\n\nWant to hack on Machine? Awesome! Here are instructions to get you\nstarted.\n\nMachine is a part of the [Docker](https://www.docker.com) project, and follows\nthe same rules and principles. If you're already familiar with the way\nDocker does things, you'll feel right at home.\n\nOtherwise, go read\n[Docker's contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md).\n\nThe requirements to build Machine are:\n\n1. A running instance of Docker\n2. The `bash` shell\n\nTo build, run:\n\n    $ script/build\n\nFrom the Machine repository's root.  Machine will run the build inside of a\nDocker container and the compiled binaries will appear in the project directory\non the host.\n\nBy default, Machine will run a build which cross-compiles binaries for a variety\nof architectures and operating systems.  If you know that you are only compiling\nfor a particular architecture and/or operating system, you can speed up\ncompilation by overriding the default argument that the build script passes\nto [gox](https://github.com/mitchellh/gox).  This is very useful if you want\nto iterate quickly on a new feature, bug fix, etc.\n\nFor instance, if you only want to compile for use on OS X with the x86_64 arch,\nrun:\n\n    $ script/build -osarch=\"darwin/amd64\"\n\nIf you don't need to run the `docker build` to generate the image on each\ncompile, i.e. if you have built the image already, you can skip the image build\nusing the `SKIP_BUILD` environment variable, for instance:\n\n    $ SKIP_BUILD=1 script/build -osarch=\"darwin/amd64\"\n\nIf you have any questions we're in #docker-machine on Freenode.\n\n## Unit Tests\n\nTo run the unit tests for the whole project, using the following script:\n\n    $ script/test\n\nThis will run the unit tests inside of a container, so you don't have to worry\nabout configuring your environment properly before doing so.\n\nTo run the unit tests for only a specific subdirectory of the project, you can\npass an argument to that script to specify which directory, e.g.:\n\n    $ script/test ./drivers/amazonec2\n\nIf you make a pull request, it is highly encouraged that you submit tests for\nthe code that you have added or modified in the same pull request.\n\n## Code Coverage\n\nMachine includes a script to check for missing `*_test.go` files and to generate\nan [HTML-based representation of which code is covered by tests](http://blog.golang.org/cover#TOC_5.).\n\nTo run the code coverage script, execute:\n\n```console\n$ ./script/coverage serve\n```\n\nYou will see the results of the code coverage check as they come in.\n\nThis will also generate the code coverage website and serve it from a container\non port 8000.  By default, `/` will show you the source files from the base\ndirectory, and you can navigate to the coverage for any particular subdirectory\nof the Docker Machine repo's root by going to that path.  For instance, to see\nthe coverage for the VirtualBox driver's package, browse to `/drivers/virtualbox`.\n\n![](/docs/img/coverage.png)\n\nYou can hit `CTRL+C` to stop the server.\n\n## Integration Tests\n\n### Setup\n\nWe utilize [BATS](https://github.com/sstephenson/bats) for integration testing.\nThis runs tests against the generated binary.  To use, first make sure to\n[install BATS](https://github.com/sstephenson/bats).  Then run `./script/build`\nto generate the binary for your system.\n\n### Basic Usage\n\nOnce you have the binary, the integration tests can be invoked using the\n`test/integration/run-bats.sh` wrapper script.\n\nUsing this wrapper script, you can invoke a test or subset of tests for a\nparticular driver.  To set the driver, use the `DRIVER` environment variable.\n\nThe following examples are all shown relative to the project's root directory,\nbut you should be able to invoke them from any directory without issue.\n\nTo invoke just one test:\n\n```console\n$ DRIVER=virtualbox ./test/integration/run-bats.sh test/integration/core/core-commands.bats\n ✓ virtualbox: machine should not exist\n ✓ virtualbox: create\n ✓ virtualbox: ls\n ✓ virtualbox: run busybox container\n ✓ virtualbox: url\n ✓ virtualbox: ip\n ✓ virtualbox: ssh\n ✓ virtualbox: docker commands with the socket should work\n ✓ virtualbox: stop\n ✓ virtualbox: machine should show stopped after stop\n ✓ virtualbox: machine should now allow upgrade when stopped\n ✓ virtualbox: start\n ✓ virtualbox: machine should show running after start\n ✓ virtualbox: kill\n ✓ virtualbox: machine should show stopped after kill\n ✓ virtualbox: restart\n ✓ virtualbox: machine should show running after restart\n\n17 tests, 0 failures\nCleaning up machines...\nSuccessfully removed bats-virtualbox-test\n```\n\nTo invoke a shared test with a different driver:\n\n```console\n$ DRIVER=digitalocean ./test/integration/run-bats.sh test/integration/core/core-commands.bats\n...\n```\n\nTo invoke a directory of tests recursively:\n\n```console\n$ DRIVER=virtualbox ./test/integration/run-bats.sh test/integration/core/\n...\n```\n\nIf you want to invoke a group of tests across two or more different drivers at\nonce (e.g. every test in the `drivers` directory), at the time of writing there\nis no first-class support to do so - you will have to write your own wrapper\nscripts, bash loops, etc.  However, in the future, this may gain first-class\nsupport as usage patterns become more clear.\n\n### Extra Create Arguments\n\nIn some cases, for instance to test the creation of a specific base OS (e.g.\nRHEL) as opposed to the default with the common tests, you may want to run\ncommon tests with different create arguments than you get out of the box.\n\nKeep in mind that Machine supports environment variables for many of these\nflags.  So, for instance, you could run the command (substituting, of course,\nthe proper secrets):\n\n```\n$ DRIVER=amazonec2 \\\n  AWS_VPC_ID=vpc-xxxxxxx \\\n  AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyy \\\n  AWS_ACCESS_KEY_ID=zzzzzzzzzzzzzzzz \\\n  AWS_AMI=ami-12663b7a \\\n  AWS_SSH_USER=ec2-user \\\n  ./test/integration/run-bats.sh test/integration/core\n```\n\nin order to run the core tests on Red Hat Enterprise Linux on Amazon.\n\n### Layout\n\nThe `test/integration` directory is layed out to divide up tests based on the\nareas which the test.  If you are uncertain where to put yours, we are happy to\nguide you.\n\nAt the time of writing, there is:\n\n1. A `core` directory which contains tests that are applicable to all drivers.\n2. A `drivers` directory which contains tests that are applicable only to\nspecific drivers with sub-directories for each provider.\n3. A `cli` directory which is meant for testing functionality of the command\nline interface, without much regard for driver-specific details.\n\n### Guidelines\n\nThe best practices for writing integration tests on Docker Machine are still a\nwork in progress, but here are some general guidelines from the maintainers:\n\n1.  Ideally, each test file should have only one concern.\n2.  Tests generally should not spin up more than one machine unless the test is\ndeliberately testing something which involves multiple machines, such as an `ls`\ntest which involves several machines, or a test intended to create and check\nsome property of a Swarm cluster.\n3.  BATS will print the output of commands executed during a test if the test\nfails.  This can be useful, for instance to dump the magic `$output` variable\nthat BATS provides and/or to get debugging information.\n4.  It is not strictly needed to clean up the machines as part of the test.  The\nBATS wrapper script has a hook to take care of cleaning up all created machines\nafter each test.\n\n# Drivers\n\nDocker Machine has several included drivers that supports provisioning hosts\nin various providers.  If you wish to contribute a driver, we ask the following\nto ensure we keep the driver in a consistent and stable state:\n\n- Address issues filed against this driver in a timely manner\n- Review PRs for the driver\n- Be responsible for maintaining the infrastructure to run unit tests\nand integration tests on the new supported environment\n- Participate in a weekly driver maintainer meeting\n\nIf you can commit to those, the next step is to make sure the driver adheres\nto the [spec](https://github.com/docker/machine/blob/master/docs/DRIVER_SPEC.md).\n\nOnce you have created and tested the driver, you can open a PR.\n\nNote: even if those are met does not guarantee a driver will be accepted.\nIf you have questions, please do not hesitate to contact us on IRC.\n"
  },
  {
    "path": "vendor/github.com/docker/machine/Dockerfile",
    "content": "FROM golang:1.4.2-cross\n\n# TODO: Vendor these `go get` commands using Godep.\nRUN go get github.com/mitchellh/gox\nRUN go get github.com/aktau/github-release\nRUN go get github.com/tools/godep\nRUN go get golang.org/x/tools/cmd/cover\n\nENV GOPATH /go/src/github.com/docker/machine/Godeps/_workspace:/go\nENV MACHINE_BINARY /go/src/github.com/docker/machine/docker-machine\nENV USER root\n\nWORKDIR /go/src/github.com/docker/machine\n\nADD . /go/src/github.com/docker/machine\n"
  },
  {
    "path": "vendor/github.com/docker/machine/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   Copyright 2014 Docker, Inc.\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/docker/machine/MAINTAINERS",
    "content": "Ben Firshman <ben@firshman.co.uk> (@bfirsh)\nEvan Hazlett <ejhazlett@gmail.com> (@ehazlett)\nNathan LeClaire <nathan.leclaire@docker.com> (@nathanleclaire)\n"
  },
  {
    "path": "vendor/github.com/docker/machine/Makefile",
    "content": ".PHONY: all test validate-dco validate-gofmt validate build\n\nall: validate test build\n\ntest:\n\tscript/test\n\nvalidate-dco:\n\tscript/validate-dco\n\nvalidate-gofmt:\n\tscript/validate-gofmt\n\nvalidate: validate-dco validate-gofmt\n\nbuild:\n\tscript/build\n\n"
  },
  {
    "path": "vendor/github.com/docker/machine/README.md",
    "content": "# Docker Machine\n\n![](/docs/img/logo.png)\n\nMachine lets you create Docker hosts on your computer, on cloud providers, and\ninside your own data center. It creates servers, installs Docker on them, then\nconfigures the Docker client to talk to them.\n\nIt works a bit like this:\n\n```console\n$ docker-machine create -d virtualbox dev\nCreating CA: /home/username/.docker/machine/certs/ca.pem\nCreating client certificate: /home/username/.docker/machine/certs/cert.pem\nImage cache does not exist, creating it at /home/username/.docker/machine/cache...\nNo default boot2docker iso found locally, downloading the latest release...\nDownloading https://github.com/boot2docker/boot2docker/releases/download/v1.6.2/boot2docker.iso to /home/username/.docker/machine/cache/boot2docker.iso...\nCreating VirtualBox VM...\nCreating SSH key...\nStarting VirtualBox VM...\nStarting VM...\nTo see how to connect Docker to this machine, run: docker-machine env dev\n\n$ docker-machine ls\nNAME   ACTIVE   DRIVER       STATE     URL                         SWARM\ndev    *        virtualbox   Running   tcp://192.168.99.127:2376\n\n$ eval \"$(docker-machine env dev)\"\n\n$ docker run busybox echo hello world\nUnable to find image 'busybox:latest' locally\n511136ea3c5a: Pull complete\ndf7546f9f060: Pull complete\nea13149945cb: Pull complete\n4986bf8c1536: Pull complete\nhello world\n\n$ docker-machine create -d digitalocean --digitalocean-access-token=secret staging\nCreating SSH key...\nCreating Digital Ocean droplet...\nTo see how to connect Docker to this machine, run: docker-machine env staging\n\n$ docker-machine ls\nNAME      ACTIVE   DRIVER         STATE     URL                          SWARM\ndev                virtualbox     Running   tcp://192.168.99.127:2376\nstaging   *        digitalocean   Running   tcp://104.236.253.181:2376\n```\n\n## Installation and documentation\n\nFull documentation [is available here](https://docs.docker.com/machine/).\n\n## Contributing\n\nWant to hack on Machine? Please start with the [Contributing Guide](https://github.com/docker/machine/blob/master/CONTRIBUTING.md).\n\n"
  },
  {
    "path": "vendor/github.com/docker/machine/ROADMAP.md",
    "content": "# Machine Roadmap\n\nMachine currently works really well for development and test environments. The\ngoal is to make it work better for provisioning and managing production\nenvironments.\n\nThis is not a simple task -- production is inherently far more complex than\ndevelopment -- but there are three things which are big steps towards that goal:\n**client/server architecture**, **swarm integration** and **flexible\nprovisioning**.\n\n(Note: this document is a high-level overview of where we are taking Machine.\nFor what is coming in specific releases, see our [upcoming\nmilestones](https://github.com/docker/machine/milestones).)\n\n### Docker Engine / Swarm Configuration\nCurrently there are only a few things that can be configured in the Docker Engine and Swarm.  This will enable more operations such as Engine labels and Swarm strategies.\n\n### Boot2Docker Migration Support\nCurrently both Machine and Boot2Docker provider similar functionality.  This will enable users to migrate from boot2docker to machine.\n\n### Expand Provisioner\nMachine currently supports running Boot2Docker for \"local\" providers and Ubuntu for \"remote\" providers.  This will expand the provisioning capabilities to include other base operating systems such as Red Hat-like distributions and possibly other \"just enough\" operating systems.\n\n### Windows Experience\nCurrently, the Machine on Windows experience is not as good as the Mac / Linux.  There is no \"recommended\" path to use Machine and there are several inconsistencies on Windows such as logging and output formatting.\n\nProject Planning\n================\n\nAn [Open-Source Planning Process](https://github.com/docker/machine/wiki/Open-Source-Planning-Process) is used to define the Roadmap. [Project Pages](https://github.com/docker/machine/wiki) define the goals for each Milestone and identify current progress.\n"
  },
  {
    "path": "vendor/github.com/docker/machine/log/log.go",
    "content": "package log\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n)\n\n// Why the interface?  We may only want to print to STDOUT and STDERR for now,\n// but it won't neccessarily be that way forever.  This interface is intended\n// to provide a \"framework\" for a variety of different logging types in the\n// future (log to file, log to logstash, etc.) There could be a driver model\n// similar to what is done with OS or machine providers.\ntype Logger interface {\n\tDebug(...interface{})\n\tDebugf(string, ...interface{})\n\n\tError(...interface{})\n\tErrorf(string, ...interface{})\n\tErrorln(...interface{})\n\n\tInfo(...interface{})\n\tInfof(string, ...interface{})\n\tInfoln(...interface{})\n\n\tFatal(...interface{})\n\tFatalf(string, ...interface{})\n\n\tPrint(...interface{})\n\tPrintf(string, ...interface{})\n\n\tWarn(...interface{})\n\tWarnf(string, ...interface{})\n\n\tWithFields(Fields) Logger\n}\n\nvar (\n\tl = TerminalLogger{}\n)\n\n// TODO: I think this is superflous and can be replaced by one check for if\n// debug is on that sets a variable in this module.\nfunc isDebug() bool {\n\tdebugEnv := os.Getenv(\"DEBUG\")\n\tif debugEnv != \"\" {\n\t\tshowDebug, err := strconv.ParseBool(debugEnv)\n\t\tif err != nil {\n\t\t\tfmt.Fprintln(os.Stderr, \"Error parsing boolean value from DEBUG: %s\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\treturn showDebug\n\t}\n\treturn false\n}\n\ntype Fields map[string]interface{}\n\nfunc Debug(args ...interface{}) {\n\tl.Debug(args...)\n}\n\nfunc Debugf(fmtString string, args ...interface{}) {\n\tl.Debugf(fmtString, args...)\n}\n\nfunc Error(args ...interface{}) {\n\tl.Error(args...)\n}\n\nfunc Errorf(fmtString string, args ...interface{}) {\n\tl.Errorf(fmtString, args...)\n}\n\nfunc Errorln(args ...interface{}) {\n\tl.Errorln(args...)\n}\n\nfunc Info(args ...interface{}) {\n\tl.Info(args...)\n}\n\nfunc Infof(fmtString string, args ...interface{}) {\n\tl.Infof(fmtString, args...)\n}\n\nfunc Infoln(args ...interface{}) {\n\tl.Infoln(args...)\n}\n\nfunc Fatal(args ...interface{}) {\n\tl.Fatal(args...)\n}\n\nfunc Fatalf(fmtString string, args ...interface{}) {\n\tl.Fatalf(fmtString, args...)\n}\n\nfunc Print(args ...interface{}) {\n\tl.Print(args...)\n}\n\nfunc Printf(fmtString string, args ...interface{}) {\n\tl.Printf(fmtString, args...)\n}\n\nfunc Warn(args ...interface{}) {\n\tl.Warn(args...)\n}\n\nfunc Warnf(fmtString string, args ...interface{}) {\n\tl.Warnf(fmtString, args...)\n}\n\nfunc WithField(fieldName string, field interface{}) Logger {\n\treturn l.WithFields(Fields{\n\t\tfieldName: field,\n\t})\n}\n\nfunc WithFields(fields Fields) Logger {\n\treturn l.WithFields(fields)\n}\n"
  },
  {
    "path": "vendor/github.com/docker/machine/log/terminal.go",
    "content": "package log\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n)\n\ntype TerminalLogger struct {\n\t// fieldOut is used to do log.WithFields correctly\n\tfieldOut string\n}\n\nfunc (t TerminalLogger) log(args ...interface{}) {\n\tfmt.Print(args...)\n\tfmt.Print(t.fieldOut, \"\\n\")\n\tt.fieldOut = \"\"\n}\n\nfunc (t TerminalLogger) logf(fmtString string, args ...interface{}) {\n\tfmt.Printf(fmtString, args...)\n\tfmt.Print(t.fieldOut, \"\\n\")\n\tt.fieldOut = \"\"\n}\n\nfunc (t TerminalLogger) err(args ...interface{}) {\n\tfmt.Fprint(os.Stderr, args...)\n\tfmt.Fprint(os.Stderr, t.fieldOut, \"\\n\")\n\tt.fieldOut = \"\"\n}\n\nfunc (t TerminalLogger) errf(fmtString string, args ...interface{}) {\n\tfmt.Fprintf(os.Stderr, fmtString, args...)\n\tfmt.Fprint(os.Stderr, t.fieldOut, \"\\n\")\n\tt.fieldOut = \"\"\n}\n\nfunc (t TerminalLogger) Debug(args ...interface{}) {\n\tif isDebug() {\n\t\tt.log(args...)\n\t}\n}\n\nfunc (t TerminalLogger) Debugf(fmtString string, args ...interface{}) {\n\tif isDebug() {\n\t\tt.logf(fmtString, args...)\n\t}\n}\n\nfunc (t TerminalLogger) Error(args ...interface{}) {\n\tt.err(args...)\n}\n\nfunc (t TerminalLogger) Errorf(fmtString string, args ...interface{}) {\n\tt.errf(fmtString, args...)\n}\n\nfunc (t TerminalLogger) Errorln(args ...interface{}) {\n\tt.err(args...)\n}\n\nfunc (t TerminalLogger) Info(args ...interface{}) {\n\tt.log(args...)\n}\n\nfunc (t TerminalLogger) Infof(fmtString string, args ...interface{}) {\n\tt.logf(fmtString, args...)\n}\n\nfunc (t TerminalLogger) Infoln(args ...interface{}) {\n\tt.log(args...)\n}\n\nfunc (t TerminalLogger) Fatal(args ...interface{}) {\n\tt.err(args...)\n\tos.Exit(1)\n}\n\nfunc (t TerminalLogger) Fatalf(fmtString string, args ...interface{}) {\n\tt.errf(fmtString, args...)\n\tos.Exit(1)\n}\n\nfunc (t TerminalLogger) Print(args ...interface{}) {\n\tt.log(args...)\n}\n\nfunc (t TerminalLogger) Printf(fmtString string, args ...interface{}) {\n\tt.logf(fmtString, args...)\n}\n\nfunc (t TerminalLogger) Warn(args ...interface{}) {\n\tt.log(args...)\n}\n\nfunc (t TerminalLogger) Warnf(fmtString string, args ...interface{}) {\n\tt.logf(fmtString, args...)\n}\n\nfunc (t TerminalLogger) WithFields(fields Fields) Logger {\n\t// When the user calls WithFields, we make a string which gets appended\n\t// to the output of the final [Info|Warn|Error] call for the\n\t// descriptive fields.  Because WithFields returns the proper Logger\n\t// (with the fieldOut string set correctly), the logrus syntax will\n\t// still work.\n\tkvpairs := []string{}\n\n\t// Why the string slice song and dance?  Because Go's map iteration\n\t// order is random, we will get inconsistent results if we don't sort\n\t// the fields (or their resulting string K/V pairs, like we have here).\n\t// Otherwise, we couldn't test this reliably.\n\tfor k, v := range fields {\n\t\tkvpairs = append(kvpairs, fmt.Sprintf(\"%s=%v\", k, v))\n\t}\n\n\tsort.Strings(kvpairs)\n\n\t// TODO:\n\t// 1. Is this thread-safe?\n\t// 2. Add more tabs?\n\tt.fieldOut = \"\\t\\t\"\n\n\tfor _, s := range kvpairs {\n\t\t// TODO: Is %v the correct format string here?\n\t\tt.fieldOut = fmt.Sprintf(\"%s %s\", t.fieldOut, s)\n\t}\n\n\treturn t\n}\n"
  },
  {
    "path": "vendor/github.com/docker/machine/utils/b2d.go",
    "content": "package utils\n\nimport (\n\t//\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"time\"\n\n\t\"github.com/docker/machine/log\"\n)\n\nconst (\n\ttimeout = time.Second * 5\n)\n\nfunc defaultTimeout(network, addr string) (net.Conn, error) {\n\treturn net.DialTimeout(network, addr, timeout)\n}\n\nfunc getClient() *http.Client {\n\ttransport := http.Transport{\n\t\tDisableKeepAlives: true,\n\t\tProxy:             http.ProxyFromEnvironment,\n\t\tDial:              defaultTimeout,\n\t}\n\n\tclient := http.Client{\n\t\tTransport: &transport,\n\t}\n\n\treturn &client\n}\n\ntype B2dUtils struct {\n\tisoFilename      string\n\tcommonIsoPath    string\n\timgCachePath     string\n\tgithubApiBaseUrl string\n\tgithubBaseUrl    string\n}\n\nfunc NewB2dUtils(githubApiBaseUrl, githubBaseUrl, isoFilename string) *B2dUtils {\n\tdefaultBaseApiUrl := \"https://api.github.com\"\n\tdefaultBaseUrl := \"https://github.com\"\n\timgCachePath := GetMachineCacheDir()\n\n\tif githubApiBaseUrl == \"\" {\n\t\tgithubApiBaseUrl = defaultBaseApiUrl\n\t}\n\n\tif githubBaseUrl == \"\" {\n\t\tgithubBaseUrl = defaultBaseUrl\n\t}\n\n\treturn &B2dUtils{\n\t\tisoFilename:      isoFilename,\n\t\timgCachePath:     GetMachineCacheDir(),\n\t\tcommonIsoPath:    filepath.Join(imgCachePath, isoFilename),\n\t\tgithubApiBaseUrl: githubApiBaseUrl,\n\t\tgithubBaseUrl:    githubBaseUrl,\n\t}\n}\n\n// Get the latest boot2docker release tag name (e.g. \"v0.6.0\").\n// FIXME: find or create some other way to get the \"latest release\" of boot2docker since the GitHub API has a pretty low rate limit on API requests\nfunc (b *B2dUtils) GetLatestBoot2DockerReleaseURL() (string, error) {\n\t//client := getClient()\n\t//apiUrl := fmt.Sprintf(\"%s/repos/boot2docker/boot2docker/releases\", b.githubApiBaseUrl)\n\t//rsp, err := client.Get(apiUrl)\n\t//if err != nil {\n\t//\treturn \"\", err\n\t//}\n\t//defer rsp.Body.Close()\n\n\t//var t []struct {\n\t//\tTagName    string `json:\"tag_name\"`\n\t//\tPreRelease bool   `json:\"prerelease\"`\n\t//}\n\t//if err := json.NewDecoder(rsp.Body).Decode(&t); err != nil {\n\t//\treturn \"\", fmt.Errorf(\"Error demarshaling the Github API response: %s\\nYou may be getting rate limited by Github.\", err)\n\t//}\n\t//if len(t) == 0 {\n\t//\treturn \"\", fmt.Errorf(\"no releases found\")\n\t//}\n\n\t//// find the latest \"released\" release (i.e. not pre-release)\n\t//isoUrl := \"\"\n\t//for _, r := range t {\n\t//\tif !r.PreRelease {\n\t//\t\ttag := r.TagName\n\t//\t\tisoUrl = fmt.Sprintf(\"%s/boot2docker/boot2docker/releases/download/%s/boot2docker.iso\", b.githubBaseUrl, tag)\n\t//\t\tbreak\n\t//\t}\n\t//}\n\t//return isoUrl, nil\n\n\t// TODO: once we decide on the final versioning and location we will\n\t// enable the above \"check for latest\"\n\tu := fmt.Sprintf(\"https://s3.amazonaws.com/docker-mcn/public/b2d-next/%s\", b.isoFilename)\n\treturn u, nil\n\n}\n\nfunc removeFileIfExists(name string) error {\n\tif _, err := os.Stat(name); err == nil {\n\t\tif err := os.Remove(name); err != nil {\n\t\t\tlog.Fatalf(\"Error removing temporary download file: %s\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\n// Download boot2docker ISO image for the given tag and save it at dest.\nfunc (b *B2dUtils) DownloadISO(dir, file, isoUrl string) error {\n\tu, err := url.Parse(isoUrl)\n\tvar src io.ReadCloser\n\tif u.Scheme == \"file\" || u.Scheme == \"\" {\n\t\ts, err := os.Open(u.Path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsrc = s\n\t} else {\n\t\tclient := getClient()\n\t\ts, err := client.Get(isoUrl)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsrc = s.Body\n\t}\n\n\tdefer src.Close()\n\n\t// Download to a temp file first then rename it to avoid partial download.\n\tf, err := ioutil.TempFile(dir, file+\".tmp\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tif err := removeFileIfExists(f.Name()); err != nil {\n\t\t\tlog.Fatalf(\"Error removing file: %s\", err)\n\t\t}\n\t}()\n\n\tif _, err := io.Copy(f, src); err != nil {\n\t\t// TODO: display download progress?\n\t\treturn err\n\t}\n\n\tif err := f.Close(); err != nil {\n\t\treturn err\n\t}\n\n\t// Dest is the final path of the boot2docker.iso file.\n\tdest := filepath.Join(dir, file)\n\n\t// Windows can't rename in place, so remove the old file before\n\t// renaming the temporary downloaded file.\n\tif err := removeFileIfExists(dest); err != nil {\n\t\treturn err\n\t}\n\n\tif err := os.Rename(f.Name(), dest); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (b *B2dUtils) DownloadLatestBoot2Docker() error {\n\tlatestReleaseUrl, err := b.GetLatestBoot2DockerReleaseURL()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn b.DownloadISOFromURL(latestReleaseUrl)\n}\n\nfunc (b *B2dUtils) DownloadISOFromURL(latestReleaseUrl string) error {\n\tlog.Infof(\"Downloading %s to %s...\", latestReleaseUrl, b.commonIsoPath)\n\tif err := b.DownloadISO(b.imgCachePath, b.isoFilename, latestReleaseUrl); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (b *B2dUtils) CopyIsoToMachineDir(isoURL, machineName string) error {\n\tmachinesDir := GetMachineDir()\n\tmachineIsoPath := filepath.Join(machinesDir, machineName, b.isoFilename)\n\n\t// just in case the cache dir has been manually deleted,\n\t// check for it and recreate it if it's gone\n\tif _, err := os.Stat(b.imgCachePath); os.IsNotExist(err) {\n\t\tlog.Infof(\"Image cache does not exist, creating it at %s...\", b.imgCachePath)\n\t\tif err := os.Mkdir(b.imgCachePath, 0700); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// By default just copy the existing \"cached\" iso to\n\t// the machine's directory...\n\tif isoURL == \"\" {\n\t\tif err := b.copyDefaultIsoToMachine(machineIsoPath); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\t// But if ISO is specified go get it directly\n\t\tlog.Infof(\"Downloading %s from %s...\", b.isoFilename, isoURL)\n\t\tif err := b.DownloadISO(filepath.Join(machinesDir, machineName), b.isoFilename, isoURL); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (b *B2dUtils) copyDefaultIsoToMachine(machineIsoPath string) error {\n\tif _, err := os.Stat(b.commonIsoPath); os.IsNotExist(err) {\n\t\tlog.Info(\"No default boot2docker iso found locally, downloading the latest release...\")\n\t\tif err := b.DownloadLatestBoot2Docker(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := CopyFile(b.commonIsoPath, machineIsoPath); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/machine/utils/certs.go",
    "content": "package utils\n\nimport (\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"crypto/x509/pkix\"\n\t\"encoding/pem\"\n\t\"io/ioutil\"\n\t\"math/big\"\n\t\"net\"\n\t\"os\"\n\t\"time\"\n)\n\nfunc getTLSConfig(caCert, cert, key []byte, allowInsecure bool) (*tls.Config, error) {\n\t// TLS config\n\tvar tlsConfig tls.Config\n\ttlsConfig.InsecureSkipVerify = allowInsecure\n\tcertPool := x509.NewCertPool()\n\n\tcertPool.AppendCertsFromPEM(caCert)\n\ttlsConfig.RootCAs = certPool\n\tkeypair, err := tls.X509KeyPair(cert, key)\n\tif err != nil {\n\t\treturn &tlsConfig, err\n\t}\n\ttlsConfig.Certificates = []tls.Certificate{keypair}\n\tif allowInsecure {\n\t\ttlsConfig.InsecureSkipVerify = true\n\t}\n\n\treturn &tlsConfig, nil\n}\n\nfunc newCertificate(org string) (*x509.Certificate, error) {\n\tnow := time.Now()\n\t// need to set notBefore slightly in the past to account for time\n\t// skew in the VMs otherwise the certs sometimes are not yet valid\n\tnotBefore := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute()-5, 0, 0, time.Local)\n\tnotAfter := notBefore.Add(time.Hour * 24 * 1080)\n\n\tserialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)\n\tserialNumber, err := rand.Int(rand.Reader, serialNumberLimit)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &x509.Certificate{\n\t\tSerialNumber: serialNumber,\n\t\tSubject: pkix.Name{\n\t\t\tOrganization: []string{org},\n\t\t},\n\t\tNotBefore: notBefore,\n\t\tNotAfter:  notAfter,\n\n\t\tKeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageKeyAgreement,\n\t\tBasicConstraintsValid: true,\n\t}, nil\n\n}\n\n// GenerateCACertificate generates a new certificate authority from the specified org\n// and bit size and stores the resulting certificate and key file\n// in the arguments.\nfunc GenerateCACertificate(certFile, keyFile, org string, bits int) error {\n\ttemplate, err := newCertificate(org)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttemplate.IsCA = true\n\ttemplate.KeyUsage |= x509.KeyUsageCertSign\n\ttemplate.KeyUsage |= x509.KeyUsageKeyEncipherment\n\ttemplate.KeyUsage |= x509.KeyUsageKeyAgreement\n\n\tpriv, err := rsa.GenerateKey(rand.Reader, bits)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tderBytes, err := x509.CreateCertificate(rand.Reader, template, template, &priv.PublicKey, priv)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcertOut, err := os.Create(certFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpem.Encode(certOut, &pem.Block{Type: \"CERTIFICATE\", Bytes: derBytes})\n\tcertOut.Close()\n\n\tkeyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)\n\tif err != nil {\n\t\treturn err\n\n\t}\n\n\tpem.Encode(keyOut, &pem.Block{Type: \"RSA PRIVATE KEY\", Bytes: x509.MarshalPKCS1PrivateKey(priv)})\n\tkeyOut.Close()\n\n\treturn nil\n}\n\n// GenerateCert generates a new certificate signed using the provided\n// certificate authority files and stores the result in the certificate\n// file and key provided.  The provided host names are set to the\n// appropriate certificate fields.\nfunc GenerateCert(hosts []string, certFile, keyFile, caFile, caKeyFile, org string, bits int) error {\n\ttemplate, err := newCertificate(org)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// client\n\tif len(hosts) == 1 && hosts[0] == \"\" {\n\t\ttemplate.ExtKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}\n\t\ttemplate.KeyUsage = x509.KeyUsageDigitalSignature\n\t} else { // server\n\t\ttemplate.ExtKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth}\n\t\tfor _, h := range hosts {\n\t\t\tif ip := net.ParseIP(h); ip != nil {\n\t\t\t\ttemplate.IPAddresses = append(template.IPAddresses, ip)\n\t\t\t} else {\n\t\t\t\ttemplate.DNSNames = append(template.DNSNames, h)\n\t\t\t}\n\t\t}\n\t}\n\n\ttlsCert, err := tls.LoadX509KeyPair(caFile, caKeyFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpriv, err := rsa.GenerateKey(rand.Reader, bits)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tx509Cert, err := x509.ParseCertificate(tlsCert.Certificate[0])\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tderBytes, err := x509.CreateCertificate(rand.Reader, template, x509Cert, &priv.PublicKey, tlsCert.PrivateKey)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcertOut, err := os.Create(certFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpem.Encode(certOut, &pem.Block{Type: \"CERTIFICATE\", Bytes: derBytes})\n\tcertOut.Close()\n\n\tkeyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpem.Encode(keyOut, &pem.Block{Type: \"RSA PRIVATE KEY\", Bytes: x509.MarshalPKCS1PrivateKey(priv)})\n\tkeyOut.Close()\n\n\treturn nil\n}\n\nfunc ValidateCertificate(addr, caCertPath, serverCertPath, serverKeyPath string) (bool, error) {\n\tcaCert, err := ioutil.ReadFile(caCertPath)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tserverCert, err := ioutil.ReadFile(serverCertPath)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tserverKey, err := ioutil.ReadFile(serverKeyPath)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\ttlsConfig, err := getTLSConfig(caCert, serverCert, serverKey, false)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tdialer := &net.Dialer{\n\t\tTimeout: time.Second * 2,\n\t}\n\n\t_, err = tls.DialWithDialer(dialer, \"tcp\", addr, tlsConfig)\n\tif err != nil {\n\t\treturn false, nil\n\t}\n\n\treturn true, nil\n}\n"
  },
  {
    "path": "vendor/github.com/docker/machine/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/hex\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/docker/machine/log\"\n)\n\nfunc GetHomeDir() string {\n\tif runtime.GOOS == \"windows\" {\n\t\treturn os.Getenv(\"USERPROFILE\")\n\t}\n\treturn os.Getenv(\"HOME\")\n}\n\nfunc GetBaseDir() string {\n\tbaseDir := os.Getenv(\"MACHINE_STORAGE_PATH\")\n\tif baseDir == \"\" {\n\t\tbaseDir = filepath.Join(GetHomeDir(), \".docker\", \"machine\")\n\t}\n\treturn baseDir\n}\n\nfunc GetDockerDir() string {\n\treturn filepath.Join(GetHomeDir(), \".docker\")\n}\n\nfunc GetMachineDir() string {\n\treturn filepath.Join(GetBaseDir(), \"machines\")\n}\n\nfunc GetMachineCertDir() string {\n\treturn filepath.Join(GetBaseDir(), \"certs\")\n}\n\nfunc GetMachineCacheDir() string {\n\treturn filepath.Join(GetBaseDir(), \"cache\")\n}\n\nfunc GetUsername() string {\n\tu := \"unknown\"\n\tosUser := \"\"\n\n\tswitch runtime.GOOS {\n\tcase \"darwin\", \"linux\":\n\t\tosUser = os.Getenv(\"USER\")\n\tcase \"windows\":\n\t\tosUser = os.Getenv(\"USERNAME\")\n\t}\n\n\tif osUser != \"\" {\n\t\tu = osUser\n\t}\n\n\treturn u\n}\n\nfunc CopyFile(src, dst string) error {\n\tin, err := os.Open(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer in.Close()\n\n\tout, err := os.Create(dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, err = io.Copy(out, in); err != nil {\n\t\treturn err\n\t}\n\n\tfi, err := os.Stat(src)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := os.Chmod(dst, fi.Mode()); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc WaitForSpecificOrError(f func() (bool, error), maxAttempts int, waitInterval time.Duration) error {\n\tfor i := 0; i < maxAttempts; i++ {\n\t\tstop, err := f()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif stop {\n\t\t\treturn nil\n\t\t}\n\t\ttime.Sleep(waitInterval)\n\t}\n\treturn fmt.Errorf(\"Maximum number of retries (%d) exceeded\", maxAttempts)\n}\n\nfunc WaitForSpecific(f func() bool, maxAttempts int, waitInterval time.Duration) error {\n\treturn WaitForSpecificOrError(func() (bool, error) {\n\t\treturn f(), nil\n\t}, maxAttempts, waitInterval)\n}\n\nfunc WaitFor(f func() bool) error {\n\treturn WaitForSpecific(f, 60, 3*time.Second)\n}\n\nfunc WaitForDocker(ip string, daemonPort int) error {\n\treturn WaitFor(func() bool {\n\t\tconn, err := net.Dial(\"tcp\", fmt.Sprintf(\"%s:%d\", ip, daemonPort))\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"Daemon not responding yet: %s\", err)\n\t\t\treturn false\n\t\t}\n\t\tconn.Close()\n\t\treturn true\n\t})\n}\n\nfunc DumpVal(vals ...interface{}) {\n\tfor _, val := range vals {\n\t\tprettyJSON, err := json.MarshalIndent(val, \"\", \"    \")\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tlog.Debug(string(prettyJSON))\n\t}\n}\n\n// Following two functions are from github.com/docker/docker/utils module. It\n// was way overkill to include the whole module, so we just have these bits\n// that we're using here.\nfunc TruncateID(id string) string {\n\tshortLen := 12\n\tif len(id) < shortLen {\n\t\tshortLen = len(id)\n\t}\n\treturn id[:shortLen]\n}\n\n// GenerateRandomID returns an unique id\nfunc GenerateRandomID() string {\n\tfor {\n\t\tid := make([]byte, 32)\n\t\tif _, err := io.ReadFull(rand.Reader, id); err != nil {\n\t\t\tpanic(err) // This shouldn't happen\n\t\t}\n\t\tvalue := hex.EncodeToString(id)\n\t\t// if we try to parse the truncated for as an int and we don't have\n\t\t// an error then the value is all numberic and causes issues when\n\t\t// used as a hostname. ref #3869\n\t\tif _, err := strconv.ParseInt(TruncateID(value), 10, 64); err == nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn value\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/.travis.yml",
    "content": "language: go\ngo: \n - 1.6\n - tip\nsudo: false\nbefore_install:\n- go get github.com/axw/gocov/gocov\n- go get github.com/mattn/goveralls\n- if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi\nscript:\n- $HOME/gopath/bin/goveralls -service=travis-ci\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Fatih Arslan\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."
  },
  {
    "path": "vendor/github.com/fatih/structs/README.md",
    "content": "# Structs [![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/fatih/structs) [![Build Status](http://img.shields.io/travis/fatih/structs.svg?style=flat-square)](https://travis-ci.org/fatih/structs) [![Coverage Status](http://img.shields.io/coveralls/fatih/structs.svg?style=flat-square)](https://coveralls.io/r/fatih/structs)\n\nStructs contains various utilities to work with Go (Golang) structs. It was\ninitially used by me to convert a struct into a `map[string]interface{}`. With\ntime I've added other utilities for structs.  It's basically a high level\npackage based on primitives from the reflect package. Feel free to add new\nfunctions or improve the existing code.\n\n## Install\n\n```bash\ngo get github.com/fatih/structs\n```\n\n## Usage and Examples\n\nJust like the standard lib `strings`, `bytes` and co packages, `structs` has\nmany global functions to manipulate or organize your struct data. Lets define\nand declare a struct:\n\n```go\ntype Server struct {\n\tName        string `json:\"name,omitempty\"`\n\tID          int\n\tEnabled     bool\n\tusers       []string // not exported\n\thttp.Server          // embedded\n}\n\nserver := &Server{\n\tName:    \"gopher\",\n\tID:      123456,\n\tEnabled: true,\n}\n```\n\n```go\n// Convert a struct to a map[string]interface{}\n// => {\"Name\":\"gopher\", \"ID\":123456, \"Enabled\":true}\nm := structs.Map(server)\n\n// Convert the values of a struct to a []interface{}\n// => [\"gopher\", 123456, true]\nv := structs.Values(server)\n\n// Convert the names of a struct to a []string\n// (see \"Names methods\" for more info about fields)\nn := structs.Names(server)\n\n// Convert the values of a struct to a []*Field\n// (see \"Field methods\" for more info about fields)\nf := structs.Fields(server)\n\n// Return the struct name => \"Server\"\nn := structs.Name(server)\n\n// Check if any field of a struct is initialized or not.\nh := structs.HasZero(server)\n\n// Check if all fields of a struct is initialized or not.\nz := structs.IsZero(server)\n\n// Check if server is a struct or a pointer to struct\ni := structs.IsStruct(server)\n```\n\n### Struct methods\n\nThe structs functions can be also used as independent methods by creating a new\n`*structs.Struct`. This is handy if you want to have more control over the\nstructs (such as retrieving a single Field).\n\n```go\n// Create a new struct type:\ns := structs.New(server)\n\nm := s.Map()              // Get a map[string]interface{}\nv := s.Values()           // Get a []interface{}\nf := s.Fields()           // Get a []*Field\nn := s.Names()            // Get a []string\nf := s.Field(name)        // Get a *Field based on the given field name\nf, ok := s.FieldOk(name)  // Get a *Field based on the given field name\nn := s.Name()             // Get the struct name\nh := s.HasZero()          // Check if any field is initialized\nz := s.IsZero()           // Check if all fields are initialized\n```\n\n### Field methods\n\nWe can easily examine a single Field for more detail. Below you can see how we\nget and interact with various field methods:\n\n\n```go\ns := structs.New(server)\n\n// Get the Field struct for the \"Name\" field\nname := s.Field(\"Name\")\n\n// Get the underlying value,  value => \"gopher\"\nvalue := name.Value().(string)\n\n// Set the field's value\nname.Set(\"another gopher\")\n\n// Get the field's kind, kind =>  \"string\"\nname.Kind()\n\n// Check if the field is exported or not\nif name.IsExported() {\n\tfmt.Println(\"Name field is exported\")\n}\n\n// Check if the value is a zero value, such as \"\" for string, 0 for int\nif !name.IsZero() {\n\tfmt.Println(\"Name is initialized\")\n}\n\n// Check if the field is an anonymous (embedded) field\nif !name.IsEmbedded() {\n\tfmt.Println(\"Name is not an embedded field\")\n}\n\n// Get the Field's tag value for tag name \"json\", tag value => \"name,omitempty\"\ntagValue := name.Tag(\"json\")\n```\n\nNested structs are supported too:\n\n```go\naddrField := s.Field(\"Server\").Field(\"Addr\")\n\n// Get the value for addr\na := addrField.Value().(string)\n\n// Or get all fields\nhttpServer := s.Field(\"Server\").Fields()\n```\n\nWe can also get a slice of Fields from the Struct type to iterate over all\nfields. This is handy if you wish to examine all fields:\n\n```go\ns := structs.New(server)\n\nfor _, f := range s.Fields() {\n\tfmt.Printf(\"field name: %+v\\n\", f.Name())\n\n\tif f.IsExported() {\n\t\tfmt.Printf(\"value   : %+v\\n\", f.Value())\n\t\tfmt.Printf(\"is zero : %+v\\n\", f.IsZero())\n\t}\n}\n```\n\n## Credits\n\n * [Fatih Arslan](https://github.com/fatih)\n * [Cihangir Savas](https://github.com/cihangir)\n\n## License\n\nThe MIT License (MIT) - see LICENSE.md for more details\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/field.go",
    "content": "package structs\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n)\n\nvar (\n\terrNotExported = errors.New(\"field is not exported\")\n\terrNotSettable = errors.New(\"field is not settable\")\n)\n\n// Field represents a single struct field that encapsulates high level\n// functions around the field.\ntype Field struct {\n\tvalue      reflect.Value\n\tfield      reflect.StructField\n\tdefaultTag string\n}\n\n// Tag returns the value associated with key in the tag string. If there is no\n// such key in the tag, Tag returns the empty string.\nfunc (f *Field) Tag(key string) string {\n\treturn f.field.Tag.Get(key)\n}\n\n// Value returns the underlying value of the field. It panics if the field\n// is not exported.\nfunc (f *Field) Value() interface{} {\n\treturn f.value.Interface()\n}\n\n// IsEmbedded returns true if the given field is an anonymous field (embedded)\nfunc (f *Field) IsEmbedded() bool {\n\treturn f.field.Anonymous\n}\n\n// IsExported returns true if the given field is exported.\nfunc (f *Field) IsExported() bool {\n\treturn f.field.PkgPath == \"\"\n}\n\n// IsZero returns true if the given field is not initialized (has a zero value).\n// It panics if the field is not exported.\nfunc (f *Field) IsZero() bool {\n\tzero := reflect.Zero(f.value.Type()).Interface()\n\tcurrent := f.Value()\n\n\treturn reflect.DeepEqual(current, zero)\n}\n\n// Name returns the name of the given field\nfunc (f *Field) Name() string {\n\treturn f.field.Name\n}\n\n// Kind returns the fields kind, such as \"string\", \"map\", \"bool\", etc ..\nfunc (f *Field) Kind() reflect.Kind {\n\treturn f.value.Kind()\n}\n\n// Set sets the field to given value v. It returns an error if the field is not\n// settable (not addressable or not exported) or if the given value's type\n// doesn't match the fields type.\nfunc (f *Field) Set(val interface{}) error {\n\t// we can't set unexported fields, so be sure this field is exported\n\tif !f.IsExported() {\n\t\treturn errNotExported\n\t}\n\n\t// do we get here? not sure...\n\tif !f.value.CanSet() {\n\t\treturn errNotSettable\n\t}\n\n\tgiven := reflect.ValueOf(val)\n\n\tif f.value.Kind() != given.Kind() {\n\t\treturn fmt.Errorf(\"wrong kind. got: %s want: %s\", given.Kind(), f.value.Kind())\n\t}\n\n\tf.value.Set(given)\n\treturn nil\n}\n\n// Zero sets the field to its zero value. It returns an error if the field is not\n// settable (not addressable or not exported).\nfunc (f *Field) Zero() error {\n\tzero := reflect.Zero(f.value.Type()).Interface()\n\treturn f.Set(zero)\n}\n\n// Fields returns a slice of Fields. This is particular handy to get the fields\n// of a nested struct . A struct tag with the content of \"-\" ignores the\n// checking of that particular field. Example:\n//\n//   // Field is ignored by this package.\n//   Field *http.Request `structs:\"-\"`\n//\n// It panics if field is not exported or if field's kind is not struct\nfunc (f *Field) Fields() []*Field {\n\treturn getFields(f.value, f.defaultTag)\n}\n\n// Field returns the field from a nested struct. It panics if the nested struct\n// is not exported or if the field was not found.\nfunc (f *Field) Field(name string) *Field {\n\tfield, ok := f.FieldOk(name)\n\tif !ok {\n\t\tpanic(\"field not found\")\n\t}\n\n\treturn field\n}\n\n// FieldOk returns the field from a nested struct. The boolean returns whether\n// the field was found (true) or not (false).\nfunc (f *Field) FieldOk(name string) (*Field, bool) {\n\tvalue := &f.value\n\t// value must be settable so we need to make sure it holds the address of the\n\t// variable and not a copy, so we can pass the pointer to strctVal instead of a\n\t// copy (which is not assigned to any variable, hence not settable).\n\t// see \"https://blog.golang.org/laws-of-reflection#TOC_8.\"\n\tif f.value.Kind() != reflect.Ptr {\n\t\ta := f.value.Addr()\n\t\tvalue = &a\n\t}\n\tv := strctVal(value.Interface())\n\tt := v.Type()\n\n\tfield, ok := t.FieldByName(name)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\treturn &Field{\n\t\tfield: field,\n\t\tvalue: v.FieldByName(name),\n\t}, true\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/structs.go",
    "content": "// Package structs contains various utilities functions to work with structs.\npackage structs\n\nimport (\n\t\"fmt\"\n\n\t\"reflect\"\n)\n\nvar (\n\t// DefaultTagName is the default tag name for struct fields which provides\n\t// a more granular to tweak certain structs. Lookup the necessary functions\n\t// for more info.\n\tDefaultTagName = \"structs\" // struct's field default tag name\n)\n\n// Struct encapsulates a struct type to provide several high level functions\n// around the struct.\ntype Struct struct {\n\traw     interface{}\n\tvalue   reflect.Value\n\tTagName string\n}\n\n// New returns a new *Struct with the struct s. It panics if the s's kind is\n// not struct.\nfunc New(s interface{}) *Struct {\n\treturn &Struct{\n\t\traw:     s,\n\t\tvalue:   strctVal(s),\n\t\tTagName: DefaultTagName,\n\t}\n}\n\n// Map converts the given struct to a map[string]interface{}, where the keys\n// of the map are the field names and the values of the map the associated\n// values of the fields. The default key string is the struct field name but\n// can be changed in the struct field's tag value. The \"structs\" key in the\n// struct's field tag value is the key name. Example:\n//\n//   // Field appears in map as key \"myName\".\n//   Name string `structs:\"myName\"`\n//\n// A tag value with the content of \"-\" ignores that particular field. Example:\n//\n//   // Field is ignored by this package.\n//   Field bool `structs:\"-\"`\n//\n// A tag value with the content of \"string\" uses the stringer to get the value. Example:\n//\n//   // The value will be output of Animal's String() func.\n//   // Map will panic if Animal does not implement String().\n//   Field *Animal `structs:\"field,string\"`\n//\n// A tag value with the option of \"flatten\" used in a struct field is to flatten its fields\n// in the output map. Example:\n//\n//   // The FieldStruct's fields will be flattened into the output map.\n//   FieldStruct time.Time `structs:\",flatten\"`\n//\n// A tag value with the option of \"omitnested\" stops iterating further if the type\n// is a struct. Example:\n//\n//   // Field is not processed further by this package.\n//   Field time.Time     `structs:\"myName,omitnested\"`\n//   Field *http.Request `structs:\",omitnested\"`\n//\n// A tag value with the option of \"omitempty\" ignores that particular field if\n// the field value is empty. Example:\n//\n//   // Field appears in map as key \"myName\", but the field is\n//   // skipped if empty.\n//   Field string `structs:\"myName,omitempty\"`\n//\n//   // Field appears in map as key \"Field\" (the default), but\n//   // the field is skipped if empty.\n//   Field string `structs:\",omitempty\"`\n//\n// Note that only exported fields of a struct can be accessed, non exported\n// fields will be neglected.\nfunc (s *Struct) Map() map[string]interface{} {\n\tout := make(map[string]interface{})\n\ts.FillMap(out)\n\treturn out\n}\n\n// FillMap is the same as Map. Instead of returning the output, it fills the\n// given map.\nfunc (s *Struct) FillMap(out map[string]interface{}) {\n\tif out == nil {\n\t\treturn\n\t}\n\n\tfields := s.structFields()\n\n\tfor _, field := range fields {\n\t\tname := field.Name\n\t\tval := s.value.FieldByName(name)\n\t\tisSubStruct := false\n\t\tvar finalVal interface{}\n\n\t\ttagName, tagOpts := parseTag(field.Tag.Get(s.TagName))\n\t\tif tagName != \"\" {\n\t\t\tname = tagName\n\t\t}\n\n\t\t// if the value is a zero value and the field is marked as omitempty do\n\t\t// not include\n\t\tif tagOpts.Has(\"omitempty\") {\n\t\t\tzero := reflect.Zero(val.Type()).Interface()\n\t\t\tcurrent := val.Interface()\n\n\t\t\tif reflect.DeepEqual(current, zero) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif !tagOpts.Has(\"omitnested\") {\n\t\t\tfinalVal = s.nested(val)\n\n\t\t\tv := reflect.ValueOf(val.Interface())\n\t\t\tif v.Kind() == reflect.Ptr {\n\t\t\t\tv = v.Elem()\n\t\t\t}\n\n\t\t\tswitch v.Kind() {\n\t\t\tcase reflect.Map, reflect.Struct:\n\t\t\t\tisSubStruct = true\n\t\t\t}\n\t\t} else {\n\t\t\tfinalVal = val.Interface()\n\t\t}\n\n\t\tif tagOpts.Has(\"string\") {\n\t\t\ts, ok := val.Interface().(fmt.Stringer)\n\t\t\tif ok {\n\t\t\t\tout[name] = s.String()\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif isSubStruct && (tagOpts.Has(\"flatten\")) {\n\t\t\tfor k := range finalVal.(map[string]interface{}) {\n\t\t\t\tout[k] = finalVal.(map[string]interface{})[k]\n\t\t\t}\n\t\t} else {\n\t\t\tout[name] = finalVal\n\t\t}\n\t}\n}\n\n// Values converts the given s struct's field values to a []interface{}.  A\n// struct tag with the content of \"-\" ignores the that particular field.\n// Example:\n//\n//   // Field is ignored by this package.\n//   Field int `structs:\"-\"`\n//\n// A value with the option of \"omitnested\" stops iterating further if the type\n// is a struct. Example:\n//\n//   // Fields is not processed further by this package.\n//   Field time.Time     `structs:\",omitnested\"`\n//   Field *http.Request `structs:\",omitnested\"`\n//\n// A tag value with the option of \"omitempty\" ignores that particular field and\n// is not added to the values if the field value is empty. Example:\n//\n//   // Field is skipped if empty\n//   Field string `structs:\",omitempty\"`\n//\n// Note that only exported fields of a struct can be accessed, non exported\n// fields  will be neglected.\nfunc (s *Struct) Values() []interface{} {\n\tfields := s.structFields()\n\n\tvar t []interface{}\n\n\tfor _, field := range fields {\n\t\tval := s.value.FieldByName(field.Name)\n\n\t\t_, tagOpts := parseTag(field.Tag.Get(s.TagName))\n\n\t\t// if the value is a zero value and the field is marked as omitempty do\n\t\t// not include\n\t\tif tagOpts.Has(\"omitempty\") {\n\t\t\tzero := reflect.Zero(val.Type()).Interface()\n\t\t\tcurrent := val.Interface()\n\n\t\t\tif reflect.DeepEqual(current, zero) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif tagOpts.Has(\"string\") {\n\t\t\ts, ok := val.Interface().(fmt.Stringer)\n\t\t\tif ok {\n\t\t\t\tt = append(t, s.String())\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif IsStruct(val.Interface()) && !tagOpts.Has(\"omitnested\") {\n\t\t\t// look out for embedded structs, and convert them to a\n\t\t\t// []interface{} to be added to the final values slice\n\t\t\tfor _, embeddedVal := range Values(val.Interface()) {\n\t\t\t\tt = append(t, embeddedVal)\n\t\t\t}\n\t\t} else {\n\t\t\tt = append(t, val.Interface())\n\t\t}\n\t}\n\n\treturn t\n}\n\n// Fields returns a slice of Fields. A struct tag with the content of \"-\"\n// ignores the checking of that particular field. Example:\n//\n//   // Field is ignored by this package.\n//   Field bool `structs:\"-\"`\n//\n// It panics if s's kind is not struct.\nfunc (s *Struct) Fields() []*Field {\n\treturn getFields(s.value, s.TagName)\n}\n\n// Names returns a slice of field names. A struct tag with the content of \"-\"\n// ignores the checking of that particular field. Example:\n//\n//   // Field is ignored by this package.\n//   Field bool `structs:\"-\"`\n//\n// It panics if s's kind is not struct.\nfunc (s *Struct) Names() []string {\n\tfields := getFields(s.value, s.TagName)\n\n\tnames := make([]string, len(fields))\n\n\tfor i, field := range fields {\n\t\tnames[i] = field.Name()\n\t}\n\n\treturn names\n}\n\nfunc getFields(v reflect.Value, tagName string) []*Field {\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tt := v.Type()\n\n\tvar fields []*Field\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfield := t.Field(i)\n\n\t\tif tag := field.Tag.Get(tagName); tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tf := &Field{\n\t\t\tfield: field,\n\t\t\tvalue: v.FieldByName(field.Name),\n\t\t}\n\n\t\tfields = append(fields, f)\n\n\t}\n\n\treturn fields\n}\n\n// Field returns a new Field struct that provides several high level functions\n// around a single struct field entity. It panics if the field is not found.\nfunc (s *Struct) Field(name string) *Field {\n\tf, ok := s.FieldOk(name)\n\tif !ok {\n\t\tpanic(\"field not found\")\n\t}\n\n\treturn f\n}\n\n// FieldOk returns a new Field struct that provides several high level functions\n// around a single struct field entity. The boolean returns true if the field\n// was found.\nfunc (s *Struct) FieldOk(name string) (*Field, bool) {\n\tt := s.value.Type()\n\n\tfield, ok := t.FieldByName(name)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\n\treturn &Field{\n\t\tfield:      field,\n\t\tvalue:      s.value.FieldByName(name),\n\t\tdefaultTag: s.TagName,\n\t}, true\n}\n\n// IsZero returns true if all fields in a struct is a zero value (not\n// initialized) A struct tag with the content of \"-\" ignores the checking of\n// that particular field. Example:\n//\n//   // Field is ignored by this package.\n//   Field bool `structs:\"-\"`\n//\n// A value with the option of \"omitnested\" stops iterating further if the type\n// is a struct. Example:\n//\n//   // Field is not processed further by this package.\n//   Field time.Time     `structs:\"myName,omitnested\"`\n//   Field *http.Request `structs:\",omitnested\"`\n//\n// Note that only exported fields of a struct can be accessed, non exported\n// fields  will be neglected. It panics if s's kind is not struct.\nfunc (s *Struct) IsZero() bool {\n\tfields := s.structFields()\n\n\tfor _, field := range fields {\n\t\tval := s.value.FieldByName(field.Name)\n\n\t\t_, tagOpts := parseTag(field.Tag.Get(s.TagName))\n\n\t\tif IsStruct(val.Interface()) && !tagOpts.Has(\"omitnested\") {\n\t\t\tok := IsZero(val.Interface())\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// zero value of the given field, such as \"\" for string, 0 for int\n\t\tzero := reflect.Zero(val.Type()).Interface()\n\n\t\t//  current value of the given field\n\t\tcurrent := val.Interface()\n\n\t\tif !reflect.DeepEqual(current, zero) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// HasZero returns true if a field in a struct is not initialized (zero value).\n// A struct tag with the content of \"-\" ignores the checking of that particular\n// field. Example:\n//\n//   // Field is ignored by this package.\n//   Field bool `structs:\"-\"`\n//\n// A value with the option of \"omitnested\" stops iterating further if the type\n// is a struct. Example:\n//\n//   // Field is not processed further by this package.\n//   Field time.Time     `structs:\"myName,omitnested\"`\n//   Field *http.Request `structs:\",omitnested\"`\n//\n// Note that only exported fields of a struct can be accessed, non exported\n// fields  will be neglected. It panics if s's kind is not struct.\nfunc (s *Struct) HasZero() bool {\n\tfields := s.structFields()\n\n\tfor _, field := range fields {\n\t\tval := s.value.FieldByName(field.Name)\n\n\t\t_, tagOpts := parseTag(field.Tag.Get(s.TagName))\n\n\t\tif IsStruct(val.Interface()) && !tagOpts.Has(\"omitnested\") {\n\t\t\tok := HasZero(val.Interface())\n\t\t\tif ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// zero value of the given field, such as \"\" for string, 0 for int\n\t\tzero := reflect.Zero(val.Type()).Interface()\n\n\t\t//  current value of the given field\n\t\tcurrent := val.Interface()\n\n\t\tif reflect.DeepEqual(current, zero) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// Name returns the structs's type name within its package. For more info refer\n// to Name() function.\nfunc (s *Struct) Name() string {\n\treturn s.value.Type().Name()\n}\n\n// structFields returns the exported struct fields for a given s struct. This\n// is a convenient helper method to avoid duplicate code in some of the\n// functions.\nfunc (s *Struct) structFields() []reflect.StructField {\n\tt := s.value.Type()\n\n\tvar f []reflect.StructField\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfield := t.Field(i)\n\t\t// we can't access the value of unexported fields\n\t\tif field.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// don't check if it's omitted\n\t\tif tag := field.Tag.Get(s.TagName); tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tf = append(f, field)\n\t}\n\n\treturn f\n}\n\nfunc strctVal(s interface{}) reflect.Value {\n\tv := reflect.ValueOf(s)\n\n\t// if pointer get the underlying element≤\n\tfor v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tif v.Kind() != reflect.Struct {\n\t\tpanic(\"not struct\")\n\t}\n\n\treturn v\n}\n\n// Map converts the given struct to a map[string]interface{}. For more info\n// refer to Struct types Map() method. It panics if s's kind is not struct.\nfunc Map(s interface{}) map[string]interface{} {\n\treturn New(s).Map()\n}\n\n// FillMap is the same as Map. Instead of returning the output, it fills the\n// given map.\nfunc FillMap(s interface{}, out map[string]interface{}) {\n\tNew(s).FillMap(out)\n}\n\n// Values converts the given struct to a []interface{}. For more info refer to\n// Struct types Values() method.  It panics if s's kind is not struct.\nfunc Values(s interface{}) []interface{} {\n\treturn New(s).Values()\n}\n\n// Fields returns a slice of *Field. For more info refer to Struct types\n// Fields() method.  It panics if s's kind is not struct.\nfunc Fields(s interface{}) []*Field {\n\treturn New(s).Fields()\n}\n\n// Names returns a slice of field names. For more info refer to Struct types\n// Names() method.  It panics if s's kind is not struct.\nfunc Names(s interface{}) []string {\n\treturn New(s).Names()\n}\n\n// IsZero returns true if all fields is equal to a zero value. For more info\n// refer to Struct types IsZero() method.  It panics if s's kind is not struct.\nfunc IsZero(s interface{}) bool {\n\treturn New(s).IsZero()\n}\n\n// HasZero returns true if any field is equal to a zero value. For more info\n// refer to Struct types HasZero() method.  It panics if s's kind is not struct.\nfunc HasZero(s interface{}) bool {\n\treturn New(s).HasZero()\n}\n\n// IsStruct returns true if the given variable is a struct or a pointer to\n// struct.\nfunc IsStruct(s interface{}) bool {\n\tv := reflect.ValueOf(s)\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\t// uninitialized zero value of a struct\n\tif v.Kind() == reflect.Invalid {\n\t\treturn false\n\t}\n\n\treturn v.Kind() == reflect.Struct\n}\n\n// Name returns the structs's type name within its package. It returns an\n// empty string for unnamed types. It panics if s's kind is not struct.\nfunc Name(s interface{}) string {\n\treturn New(s).Name()\n}\n\n// nested retrieves recursively all types for the given value and returns the\n// nested value.\nfunc (s *Struct) nested(val reflect.Value) interface{} {\n\tvar finalVal interface{}\n\n\tv := reflect.ValueOf(val.Interface())\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\tn := New(val.Interface())\n\t\tn.TagName = s.TagName\n\t\tm := n.Map()\n\n\t\t// do not add the converted value if there are no exported fields, ie:\n\t\t// time.Time\n\t\tif len(m) == 0 {\n\t\t\tfinalVal = val.Interface()\n\t\t} else {\n\t\t\tfinalVal = m\n\t\t}\n\tcase reflect.Map:\n\t\tv := val.Type().Elem()\n\t\tif v.Kind() == reflect.Ptr {\n\t\t\tv = v.Elem()\n\t\t}\n\n\t\t// only iterate over struct types, ie: map[string]StructType,\n\t\t// map[string][]StructType,\n\t\tif v.Kind() == reflect.Struct ||\n\t\t\t(v.Kind() == reflect.Slice && v.Elem().Kind() == reflect.Struct) {\n\t\t\tm := make(map[string]interface{}, val.Len())\n\t\t\tfor _, k := range val.MapKeys() {\n\t\t\t\tm[k.String()] = s.nested(val.MapIndex(k))\n\t\t\t}\n\t\t\tfinalVal = m\n\t\t\tbreak\n\t\t}\n\n\t\t// TODO(arslan): should this be optional?\n\t\tfinalVal = val.Interface()\n\tcase reflect.Slice, reflect.Array:\n\t\tif val.Type().Kind() == reflect.Interface {\n\t\t\tfinalVal = val.Interface()\n\t\t\tbreak\n\t\t}\n\n\t\t// TODO(arslan): should this be optional?\n\t\t// do not iterate of non struct types, just pass the value. Ie: []int,\n\t\t// []string, co... We only iterate further if it's a struct.\n\t\t// i.e []foo or []*foo\n\t\tif val.Type().Elem().Kind() != reflect.Struct &&\n\t\t\t!(val.Type().Elem().Kind() == reflect.Ptr &&\n\t\t\t\tval.Type().Elem().Elem().Kind() == reflect.Struct) {\n\t\t\tfinalVal = val.Interface()\n\t\t\tbreak\n\t\t}\n\n\t\tslices := make([]interface{}, val.Len(), val.Len())\n\t\tfor x := 0; x < val.Len(); x++ {\n\t\t\tslices[x] = s.nested(val.Index(x))\n\t\t}\n\t\tfinalVal = slices\n\tdefault:\n\t\tfinalVal = val.Interface()\n\t}\n\n\treturn finalVal\n}\n"
  },
  {
    "path": "vendor/github.com/fatih/structs/tags.go",
    "content": "package structs\n\nimport \"strings\"\n\n// tagOptions contains a slice of tag options\ntype tagOptions []string\n\n// Has returns true if the given optiton is available in tagOptions\nfunc (t tagOptions) Has(opt string) bool {\n\tfor _, tagOpt := range t {\n\t\tif tagOpt == opt {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// parseTag splits a struct field's tag into its name and a list of options\n// which comes after a name. A tag is in the form of: \"name,option1,option2\".\n// The name can be neglectected.\nfunc parseTag(tag string) (string, tagOptions) {\n\t// tag is one of followings:\n\t// \"\"\n\t// \"name\"\n\t// \"name,opt\"\n\t// \"name,opt,opt2\"\n\t// \",opt\"\n\n\tres := strings.Split(tag, \",\")\n\treturn res[0], res[1:]\n}\n"
  },
  {
    "path": "vendor/github.com/flynn/go-shlex/COPYING",
    "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/flynn/go-shlex/Makefile",
    "content": "# Copyright 2011 Google Inc. 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\ninclude $(GOROOT)/src/Make.inc\n\nTARG=shlex\nGOFILES=\\\n\tshlex.go\\\n\ninclude $(GOROOT)/src/Make.pkg\n"
  },
  {
    "path": "vendor/github.com/flynn/go-shlex/README.md",
    "content": "go-shlex is a simple lexer for go that supports shell-style quoting,\ncommenting, and escaping.\n"
  },
  {
    "path": "vendor/github.com/flynn/go-shlex/shlex.go",
    "content": "/*\nCopyright 2012 Google Inc. All Rights Reserved.\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*/\n\npackage shlex\n\n/*\nPackage shlex implements a simple lexer which splits input in to tokens using\nshell-style rules for quoting and commenting.\n*/\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\n/*\nA TokenType is a top-level token; a word, space, comment, unknown.\n*/\ntype TokenType int\n\n/*\nA RuneTokenType is the type of a UTF-8 character; a character, quote, space, escape.\n*/\ntype RuneTokenType int\n\ntype lexerState int\n\ntype Token struct {\n\ttokenType TokenType\n\tvalue     string\n}\n\n/*\nTwo tokens are equal if both their types and values are equal. A nil token can\nnever equal another token.\n*/\nfunc (a *Token) Equal(b *Token) bool {\n\tif a == nil || b == nil {\n\t\treturn false\n\t}\n\tif a.tokenType != b.tokenType {\n\t\treturn false\n\t}\n\treturn a.value == b.value\n}\n\nconst (\n\tRUNE_CHAR              string = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-,/@$*()+=><:;&^%~|!?[]{}\"\n\tRUNE_SPACE             string = \" \\t\\r\\n\"\n\tRUNE_ESCAPING_QUOTE    string = \"\\\"\"\n\tRUNE_NONESCAPING_QUOTE string = \"'\"\n\tRUNE_ESCAPE                   = \"\\\\\"\n\tRUNE_COMMENT                  = \"#\"\n\n\tRUNETOKEN_UNKNOWN           RuneTokenType = 0\n\tRUNETOKEN_CHAR              RuneTokenType = 1\n\tRUNETOKEN_SPACE             RuneTokenType = 2\n\tRUNETOKEN_ESCAPING_QUOTE    RuneTokenType = 3\n\tRUNETOKEN_NONESCAPING_QUOTE RuneTokenType = 4\n\tRUNETOKEN_ESCAPE            RuneTokenType = 5\n\tRUNETOKEN_COMMENT           RuneTokenType = 6\n\tRUNETOKEN_EOF               RuneTokenType = 7\n\n\tTOKEN_UNKNOWN TokenType = 0\n\tTOKEN_WORD    TokenType = 1\n\tTOKEN_SPACE   TokenType = 2\n\tTOKEN_COMMENT TokenType = 3\n\n\tSTATE_START           lexerState = 0\n\tSTATE_INWORD          lexerState = 1\n\tSTATE_ESCAPING        lexerState = 2\n\tSTATE_ESCAPING_QUOTED lexerState = 3\n\tSTATE_QUOTED_ESCAPING lexerState = 4\n\tSTATE_QUOTED          lexerState = 5\n\tSTATE_COMMENT         lexerState = 6\n\n\tINITIAL_TOKEN_CAPACITY int = 100\n)\n\n/*\nA type for classifying characters. This allows for different sorts of\nclassifiers - those accepting extended non-ascii chars, or strict posix\ncompatibility, for example.\n*/\ntype TokenClassifier struct {\n\ttypeMap map[int32]RuneTokenType\n}\n\nfunc addRuneClass(typeMap *map[int32]RuneTokenType, runes string, tokenType RuneTokenType) {\n\tfor _, rune := range runes {\n\t\t(*typeMap)[int32(rune)] = tokenType\n\t}\n}\n\n/*\nCreate a new classifier for basic ASCII characters.\n*/\nfunc NewDefaultClassifier() *TokenClassifier {\n\ttypeMap := map[int32]RuneTokenType{}\n\taddRuneClass(&typeMap, RUNE_CHAR, RUNETOKEN_CHAR)\n\taddRuneClass(&typeMap, RUNE_SPACE, RUNETOKEN_SPACE)\n\taddRuneClass(&typeMap, RUNE_ESCAPING_QUOTE, RUNETOKEN_ESCAPING_QUOTE)\n\taddRuneClass(&typeMap, RUNE_NONESCAPING_QUOTE, RUNETOKEN_NONESCAPING_QUOTE)\n\taddRuneClass(&typeMap, RUNE_ESCAPE, RUNETOKEN_ESCAPE)\n\taddRuneClass(&typeMap, RUNE_COMMENT, RUNETOKEN_COMMENT)\n\treturn &TokenClassifier{\n\t\ttypeMap: typeMap}\n}\n\nfunc (classifier *TokenClassifier) ClassifyRune(rune int32) RuneTokenType {\n\treturn classifier.typeMap[rune]\n}\n\n/*\nA type for turning an input stream in to a sequence of strings. Whitespace and\ncomments are skipped.\n*/\ntype Lexer struct {\n\ttokenizer *Tokenizer\n}\n\n/*\nCreate a new lexer.\n*/\nfunc NewLexer(r io.Reader) (*Lexer, error) {\n\n\ttokenizer, err := NewTokenizer(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlexer := &Lexer{tokenizer: tokenizer}\n\treturn lexer, nil\n}\n\n/*\nReturn the next word, and an error value. If there are no more words, the error\nwill be io.EOF.\n*/\nfunc (l *Lexer) NextWord() (string, error) {\n\tvar token *Token\n\tvar err error\n\tfor {\n\t\ttoken, err = l.tokenizer.NextToken()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tswitch token.tokenType {\n\t\tcase TOKEN_WORD:\n\t\t\t{\n\t\t\t\treturn token.value, nil\n\t\t\t}\n\t\tcase TOKEN_COMMENT:\n\t\t\t{\n\t\t\t\t// skip comments\n\t\t\t}\n\t\tdefault:\n\t\t\t{\n\t\t\t\tpanic(fmt.Sprintf(\"Unknown token type: %v\", token.tokenType))\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", io.EOF\n}\n\n/*\nA type for turning an input stream in to a sequence of typed tokens.\n*/\ntype Tokenizer struct {\n\tinput      *bufio.Reader\n\tclassifier *TokenClassifier\n}\n\n/*\nCreate a new tokenizer.\n*/\nfunc NewTokenizer(r io.Reader) (*Tokenizer, error) {\n\tinput := bufio.NewReader(r)\n\tclassifier := NewDefaultClassifier()\n\ttokenizer := &Tokenizer{\n\t\tinput:      input,\n\t\tclassifier: classifier}\n\treturn tokenizer, nil\n}\n\n/*\nScan the stream for the next token.\n\nThis uses an internal state machine. It will panic if it encounters a character\nwhich it does not know how to handle.\n*/\nfunc (t *Tokenizer) scanStream() (*Token, error) {\n\tstate := STATE_START\n\tvar tokenType TokenType\n\tvalue := make([]int32, 0, INITIAL_TOKEN_CAPACITY)\n\tvar (\n\t\tnextRune     int32\n\t\tnextRuneType RuneTokenType\n\t\terr          error\n\t)\nSCAN:\n\tfor {\n\t\tnextRune, _, err = t.input.ReadRune()\n\t\tnextRuneType = t.classifier.ClassifyRune(nextRune)\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tnextRuneType = RUNETOKEN_EOF\n\t\t\t\terr = nil\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tswitch state {\n\t\tcase STATE_START: // no runes read yet\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, io.EOF\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR:\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenType = TOKEN_WORD\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t\tstate = STATE_INWORD\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_SPACE:\n\t\t\t\t\t{\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenType = TOKEN_WORD\n\t\t\t\t\t\tstate = STATE_QUOTED_ESCAPING\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_NONESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenType = TOKEN_WORD\n\t\t\t\t\t\tstate = STATE_QUOTED\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPE:\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenType = TOKEN_WORD\n\t\t\t\t\t\tstate = STATE_ESCAPING\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\ttokenType = TOKEN_COMMENT\n\t\t\t\t\t\tstate = STATE_COMMENT\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Unknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_INWORD: // in a regular word\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_SPACE:\n\t\t\t\t\t{\n\t\t\t\t\t\tt.input.UnreadRune()\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_QUOTED_ESCAPING\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_NONESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_QUOTED\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_ESCAPING\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_ESCAPING: // the next rune after an escape character\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\terr = errors.New(\"EOF found after escape character\")\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_SPACE, RUNETOKEN_ESCAPING_QUOTE, RUNETOKEN_NONESCAPING_QUOTE, RUNETOKEN_ESCAPE, RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_INWORD\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_ESCAPING_QUOTED: // the next rune after an escape character, in double quotes\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\terr = errors.New(\"EOF found after escape character\")\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_SPACE, RUNETOKEN_ESCAPING_QUOTE, RUNETOKEN_NONESCAPING_QUOTE, RUNETOKEN_ESCAPE, RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_QUOTED_ESCAPING\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_QUOTED_ESCAPING: // in escaping double quotes\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\terr = errors.New(\"EOF found when expecting closing quote.\")\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_UNKNOWN, RUNETOKEN_SPACE, RUNETOKEN_NONESCAPING_QUOTE, RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_INWORD\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_ESCAPE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_ESCAPING_QUOTED\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_QUOTED: // in non-escaping single quotes\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\terr = errors.New(\"EOF found when expecting closing quote.\")\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_UNKNOWN, RUNETOKEN_SPACE, RUNETOKEN_ESCAPING_QUOTE, RUNETOKEN_ESCAPE, RUNETOKEN_COMMENT:\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_NONESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = STATE_INWORD\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase STATE_COMMENT:\n\t\t\t{\n\t\t\t\tswitch nextRuneType {\n\t\t\t\tcase RUNETOKEN_EOF:\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_CHAR, RUNETOKEN_UNKNOWN, RUNETOKEN_ESCAPING_QUOTE, RUNETOKEN_ESCAPE, RUNETOKEN_COMMENT, RUNETOKEN_NONESCAPING_QUOTE:\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t}\n\t\t\t\tcase RUNETOKEN_SPACE:\n\t\t\t\t\t{\n\t\t\t\t\t\tif nextRune == '\\n' {\n\t\t\t\t\t\t\tstate = STATE_START\n\t\t\t\t\t\t\tbreak SCAN\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue = append(value, nextRune)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\treturn nil, errors.New(fmt.Sprintf(\"Uknown rune: %v\", nextRune))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\t{\n\t\t\t\tpanic(fmt.Sprintf(\"Unexpected state: %v\", state))\n\t\t\t}\n\t\t}\n\t}\n\ttoken := &Token{\n\t\ttokenType: tokenType,\n\t\tvalue:     string(value)}\n\treturn token, err\n}\n\n/*\nReturn the next token in the stream, and an error value. If there are no more\ntokens available, the error value will be io.EOF.\n*/\nfunc (t *Tokenizer) NextToken() (*Token, error) {\n\treturn t.scanStream()\n}\n\n/*\nSplit a string in to a slice of strings, based upon shell-style rules for\nquoting, escaping, and spaces.\n*/\nfunc Split(s string) ([]string, error) {\n\tl, err := NewLexer(strings.NewReader(s))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsubStrings := []string{}\n\tfor {\n\t\tword, err := l.NextWord()\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn subStrings, nil\n\t\t\t}\n\t\t\treturn subStrings, err\n\t\t}\n\t\tsubStrings = append(subStrings, word)\n\t}\n\treturn subStrings, nil\n}\n"
  },
  {
    "path": "vendor/github.com/gorilla/context/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.0\n  - 1.1\n  - 1.2\n  - tip\n"
  },
  {
    "path": "vendor/github.com/gorilla/context/LICENSE",
    "content": "Copyright (c) 2012 Rodrigo Moraes. 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\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * 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\t * 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/gorilla/context/README.md",
    "content": "context\n=======\n[![Build Status](https://travis-ci.org/gorilla/context.png?branch=master)](https://travis-ci.org/gorilla/context)\n\ngorilla/context is a general purpose registry for global request variables.\n\nRead the full documentation here: http://www.gorillatoolkit.org/pkg/context\n"
  },
  {
    "path": "vendor/github.com/gorilla/context/context.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights 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 context\n\nimport (\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar (\n\tmutex sync.RWMutex\n\tdata  = make(map[*http.Request]map[interface{}]interface{})\n\tdatat = make(map[*http.Request]int64)\n)\n\n// Set stores a value for a given key in a given request.\nfunc Set(r *http.Request, key, val interface{}) {\n\tmutex.Lock()\n\tif data[r] == nil {\n\t\tdata[r] = make(map[interface{}]interface{})\n\t\tdatat[r] = time.Now().Unix()\n\t}\n\tdata[r][key] = val\n\tmutex.Unlock()\n}\n\n// Get returns a value stored for a given key in a given request.\nfunc Get(r *http.Request, key interface{}) interface{} {\n\tmutex.RLock()\n\tif ctx := data[r]; ctx != nil {\n\t\tvalue := ctx[key]\n\t\tmutex.RUnlock()\n\t\treturn value\n\t}\n\tmutex.RUnlock()\n\treturn nil\n}\n\n// GetOk returns stored value and presence state like multi-value return of map access.\nfunc GetOk(r *http.Request, key interface{}) (interface{}, bool) {\n\tmutex.RLock()\n\tif _, ok := data[r]; ok {\n\t\tvalue, ok := data[r][key]\n\t\tmutex.RUnlock()\n\t\treturn value, ok\n\t}\n\tmutex.RUnlock()\n\treturn nil, false\n}\n\n// GetAll returns all stored values for the request as a map. Nil is returned for invalid requests.\nfunc GetAll(r *http.Request) map[interface{}]interface{} {\n\tmutex.RLock()\n\tif context, ok := data[r]; ok {\n\t\tresult := make(map[interface{}]interface{}, len(context))\n\t\tfor k, v := range context {\n\t\t\tresult[k] = v\n\t\t}\n\t\tmutex.RUnlock()\n\t\treturn result\n\t}\n\tmutex.RUnlock()\n\treturn nil\n}\n\n// GetAllOk returns all stored values for the request as a map and a boolean value that indicates if\n// the request was registered.\nfunc GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) {\n\tmutex.RLock()\n\tcontext, ok := data[r]\n\tresult := make(map[interface{}]interface{}, len(context))\n\tfor k, v := range context {\n\t\tresult[k] = v\n\t}\n\tmutex.RUnlock()\n\treturn result, ok\n}\n\n// Delete removes a value stored for a given key in a given request.\nfunc Delete(r *http.Request, key interface{}) {\n\tmutex.Lock()\n\tif data[r] != nil {\n\t\tdelete(data[r], key)\n\t}\n\tmutex.Unlock()\n}\n\n// Clear removes all values stored for a given request.\n//\n// This is usually called by a handler wrapper to clean up request\n// variables at the end of a request lifetime. See ClearHandler().\nfunc Clear(r *http.Request) {\n\tmutex.Lock()\n\tclear(r)\n\tmutex.Unlock()\n}\n\n// clear is Clear without the lock.\nfunc clear(r *http.Request) {\n\tdelete(data, r)\n\tdelete(datat, r)\n}\n\n// Purge removes request data stored for longer than maxAge, in seconds.\n// It returns the amount of requests removed.\n//\n// If maxAge <= 0, all request data is removed.\n//\n// This is only used for sanity check: in case context cleaning was not\n// properly set some request data can be kept forever, consuming an increasing\n// amount of memory. In case this is detected, Purge() must be called\n// periodically until the problem is fixed.\nfunc Purge(maxAge int) int {\n\tmutex.Lock()\n\tcount := 0\n\tif maxAge <= 0 {\n\t\tcount = len(data)\n\t\tdata = make(map[*http.Request]map[interface{}]interface{})\n\t\tdatat = make(map[*http.Request]int64)\n\t} else {\n\t\tmin := time.Now().Unix() - int64(maxAge)\n\t\tfor r := range data {\n\t\t\tif datat[r] < min {\n\t\t\t\tclear(r)\n\t\t\t\tcount++\n\t\t\t}\n\t\t}\n\t}\n\tmutex.Unlock()\n\treturn count\n}\n\n// ClearHandler wraps an http.Handler and clears request values at the end\n// of a request lifetime.\nfunc ClearHandler(h http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tdefer Clear(r)\n\t\th.ServeHTTP(w, r)\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/gorilla/context/doc.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights reserved.\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 context stores values shared during a request lifetime.\n\nFor example, a router can set variables extracted from the URL and later\napplication handlers can access those values, or it can be used to store\nsessions values to be saved at the end of a request. There are several\nothers common uses.\n\nThe idea was posted by Brad Fitzpatrick to the go-nuts mailing list:\n\n\thttp://groups.google.com/group/golang-nuts/msg/e2d679d303aa5d53\n\nHere's the basic usage: first define the keys that you will need. The key\ntype is interface{} so a key can be of any type that supports equality.\nHere we define a key using a custom int type to avoid name collisions:\n\n\tpackage foo\n\n\timport (\n\t\t\"github.com/gorilla/context\"\n\t)\n\n\ttype key int\n\n\tconst MyKey key = 0\n\nThen set a variable. Variables are bound to an http.Request object, so you\nneed a request instance to set a value:\n\n\tcontext.Set(r, MyKey, \"bar\")\n\nThe application can later access the variable using the same key you provided:\n\n\tfunc MyHandler(w http.ResponseWriter, r *http.Request) {\n\t\t// val is \"bar\".\n\t\tval := context.Get(r, foo.MyKey)\n\n\t\t// returns (\"bar\", true)\n\t\tval, ok := context.GetOk(r, foo.MyKey)\n\t\t// ...\n\t}\n\nAnd that's all about the basic usage. We discuss some other ideas below.\n\nAny type can be stored in the context. To enforce a given type, make the key\nprivate and wrap Get() and Set() to accept and return values of a specific\ntype:\n\n\ttype key int\n\n\tconst mykey key = 0\n\n\t// GetMyKey returns a value for this package from the request values.\n\tfunc GetMyKey(r *http.Request) SomeType {\n\t\tif rv := context.Get(r, mykey); rv != nil {\n\t\t\treturn rv.(SomeType)\n\t\t}\n\t\treturn nil\n\t}\n\n\t// SetMyKey sets a value for this package in the request values.\n\tfunc SetMyKey(r *http.Request, val SomeType) {\n\t\tcontext.Set(r, mykey, val)\n\t}\n\nVariables must be cleared at the end of a request, to remove all values\nthat were stored. This can be done in an http.Handler, after a request was\nserved. Just call Clear() passing the request:\n\n\tcontext.Clear(r)\n\n...or use ClearHandler(), which conveniently wraps an http.Handler to clear\nvariables at the end of a request lifetime.\n\nThe Routers from the packages gorilla/mux and gorilla/pat call Clear()\nso if you are using either of them you don't need to clear the context manually.\n*/\npackage context\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.0\n  - 1.1\n  - 1.2\n  - tip\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/LICENSE",
    "content": "Copyright (c) 2012 Rodrigo Moraes. 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\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * 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\t * 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/gorilla/mux/README.md",
    "content": "mux\n===\n[![Build Status](https://travis-ci.org/gorilla/mux.png?branch=master)](https://travis-ci.org/gorilla/mux)\n\ngorilla/mux is a powerful URL router and dispatcher.\n\nRead the full documentation here: http://www.gorillatoolkit.org/pkg/mux\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/doc.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights reserved.\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 gorilla/mux implements a request router and dispatcher.\n\nThe name mux stands for \"HTTP request multiplexer\". Like the standard\nhttp.ServeMux, mux.Router matches incoming requests against a list of\nregistered routes and calls a handler for the route that matches the URL\nor other conditions. The main features are:\n\n\t* Requests can be matched based on URL host, path, path prefix, schemes,\n\t  header and query values, HTTP methods or using custom matchers.\n\t* URL hosts and paths can have variables with an optional regular\n\t  expression.\n\t* Registered URLs can be built, or \"reversed\", which helps maintaining\n\t  references to resources.\n\t* Routes can be used as subrouters: nested routes are only tested if the\n\t  parent route matches. This is useful to define groups of routes that\n\t  share common conditions like a host, a path prefix or other repeated\n\t  attributes. As a bonus, this optimizes request matching.\n\t* It implements the http.Handler interface so it is compatible with the\n\t  standard http.ServeMux.\n\nLet's start registering a couple of URL paths and handlers:\n\n\tfunc main() {\n\t\tr := mux.NewRouter()\n\t\tr.HandleFunc(\"/\", HomeHandler)\n\t\tr.HandleFunc(\"/products\", ProductsHandler)\n\t\tr.HandleFunc(\"/articles\", ArticlesHandler)\n\t\thttp.Handle(\"/\", r)\n\t}\n\nHere we register three routes mapping URL paths to handlers. This is\nequivalent to how http.HandleFunc() works: if an incoming request URL matches\none of the paths, the corresponding handler is called passing\n(http.ResponseWriter, *http.Request) as parameters.\n\nPaths can have variables. They are defined using the format {name} or\n{name:pattern}. If a regular expression pattern is not defined, the matched\nvariable will be anything until the next slash. For example:\n\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/products/{key}\", ProductHandler)\n\tr.HandleFunc(\"/articles/{category}/\", ArticlesCategoryHandler)\n\tr.HandleFunc(\"/articles/{category}/{id:[0-9]+}\", ArticleHandler)\n\nThe names are used to create a map of route variables which can be retrieved\ncalling mux.Vars():\n\n\tvars := mux.Vars(request)\n\tcategory := vars[\"category\"]\n\nAnd this is all you need to know about the basic usage. More advanced options\nare explained below.\n\nRoutes can also be restricted to a domain or subdomain. Just define a host\npattern to be matched. They can also have variables:\n\n\tr := mux.NewRouter()\n\t// Only matches if domain is \"www.domain.com\".\n\tr.Host(\"www.domain.com\")\n\t// Matches a dynamic subdomain.\n\tr.Host(\"{subdomain:[a-z]+}.domain.com\")\n\nThere are several other matchers that can be added. To match path prefixes:\n\n\tr.PathPrefix(\"/products/\")\n\n...or HTTP methods:\n\n\tr.Methods(\"GET\", \"POST\")\n\n...or URL schemes:\n\n\tr.Schemes(\"https\")\n\n...or header values:\n\n\tr.Headers(\"X-Requested-With\", \"XMLHttpRequest\")\n\n...or query values:\n\n\tr.Queries(\"key\", \"value\")\n\n...or to use a custom matcher function:\n\n\tr.MatcherFunc(func(r *http.Request, rm *RouteMatch) bool {\n\t\treturn r.ProtoMajor == 0\n    })\n\n...and finally, it is possible to combine several matchers in a single route:\n\n\tr.HandleFunc(\"/products\", ProductsHandler).\n\t  Host(\"www.domain.com\").\n\t  Methods(\"GET\").\n\t  Schemes(\"http\")\n\nSetting the same matching conditions again and again can be boring, so we have\na way to group several routes that share the same requirements.\nWe call it \"subrouting\".\n\nFor example, let's say we have several URLs that should only match when the\nhost is \"www.domain.com\". Create a route for that host and get a \"subrouter\"\nfrom it:\n\n\tr := mux.NewRouter()\n\ts := r.Host(\"www.domain.com\").Subrouter()\n\nThen register routes in the subrouter:\n\n\ts.HandleFunc(\"/products/\", ProductsHandler)\n\ts.HandleFunc(\"/products/{key}\", ProductHandler)\n\ts.HandleFunc(\"/articles/{category}/{id:[0-9]+}\"), ArticleHandler)\n\nThe three URL paths we registered above will only be tested if the domain is\n\"www.domain.com\", because the subrouter is tested first. This is not\nonly convenient, but also optimizes request matching. You can create\nsubrouters combining any attribute matchers accepted by a route.\n\nSubrouters can be used to create domain or path \"namespaces\": you define\nsubrouters in a central place and then parts of the app can register its\npaths relatively to a given subrouter.\n\nThere's one more thing about subroutes. When a subrouter has a path prefix,\nthe inner routes use it as base for their paths:\n\n\tr := mux.NewRouter()\n\ts := r.PathPrefix(\"/products\").Subrouter()\n\t// \"/products/\"\n\ts.HandleFunc(\"/\", ProductsHandler)\n\t// \"/products/{key}/\"\n\ts.HandleFunc(\"/{key}/\", ProductHandler)\n\t// \"/products/{key}/details\"\n\ts.HandleFunc(\"/{key}/details\", ProductDetailsHandler)\n\nNow let's see how to build registered URLs.\n\nRoutes can be named. All routes that define a name can have their URLs built,\nor \"reversed\". We define a name calling Name() on a route. For example:\n\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/articles/{category}/{id:[0-9]+}\", ArticleHandler).\n\t  Name(\"article\")\n\nTo build a URL, get the route and call the URL() method, passing a sequence of\nkey/value pairs for the route variables. For the previous route, we would do:\n\n\turl, err := r.Get(\"article\").URL(\"category\", \"technology\", \"id\", \"42\")\n\n...and the result will be a url.URL with the following path:\n\n\t\"/articles/technology/42\"\n\nThis also works for host variables:\n\n\tr := mux.NewRouter()\n\tr.Host(\"{subdomain}.domain.com\").\n\t  Path(\"/articles/{category}/{id:[0-9]+}\").\n\t  HandlerFunc(ArticleHandler).\n\t  Name(\"article\")\n\n\t// url.String() will be \"http://news.domain.com/articles/technology/42\"\n\turl, err := r.Get(\"article\").URL(\"subdomain\", \"news\",\n\t\t\t\t\t\t\t\t\t \"category\", \"technology\",\n\t\t\t\t\t\t\t\t\t \"id\", \"42\")\n\nAll variables defined in the route are required, and their values must\nconform to the corresponding patterns. These requirements guarantee that a\ngenerated URL will always match a registered route -- the only exception is\nfor explicitly defined \"build-only\" routes which never match.\n\nThere's also a way to build only the URL host or path for a route:\nuse the methods URLHost() or URLPath() instead. For the previous route,\nwe would do:\n\n\t// \"http://news.domain.com/\"\n\thost, err := r.Get(\"article\").URLHost(\"subdomain\", \"news\")\n\n\t// \"/articles/technology/42\"\n\tpath, err := r.Get(\"article\").URLPath(\"category\", \"technology\", \"id\", \"42\")\n\nAnd if you use subrouters, host and path defined separately can be built\nas well:\n\n\tr := mux.NewRouter()\n\ts := r.Host(\"{subdomain}.domain.com\").Subrouter()\n\ts.Path(\"/articles/{category}/{id:[0-9]+}\").\n\t  HandlerFunc(ArticleHandler).\n\t  Name(\"article\")\n\n\t// \"http://news.domain.com/articles/technology/42\"\n\turl, err := r.Get(\"article\").URL(\"subdomain\", \"news\",\n\t\t\t\t\t\t\t\t\t \"category\", \"technology\",\n\t\t\t\t\t\t\t\t\t \"id\", \"42\")\n*/\npackage mux\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/mux.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights 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 mux\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"path\"\n\n\t\"github.com/gorilla/context\"\n)\n\n// NewRouter returns a new router instance.\nfunc NewRouter() *Router {\n\treturn &Router{namedRoutes: make(map[string]*Route), KeepContext: false}\n}\n\n// Router registers routes to be matched and dispatches a handler.\n//\n// It implements the http.Handler interface, so it can be registered to serve\n// requests:\n//\n//     var router = mux.NewRouter()\n//\n//     func main() {\n//         http.Handle(\"/\", router)\n//     }\n//\n// Or, for Google App Engine, register it in a init() function:\n//\n//     func init() {\n//         http.Handle(\"/\", router)\n//     }\n//\n// This will send all incoming requests to the router.\ntype Router struct {\n\t// Configurable Handler to be used when no route matches.\n\tNotFoundHandler http.Handler\n\t// Parent route, if this is a subrouter.\n\tparent parentRoute\n\t// Routes to be matched, in order.\n\troutes []*Route\n\t// Routes by name for URL building.\n\tnamedRoutes map[string]*Route\n\t// See Router.StrictSlash(). This defines the flag for new routes.\n\tstrictSlash bool\n\t// If true, do not clear the request context after handling the request\n\tKeepContext bool\n}\n\n// Match matches registered routes against the request.\nfunc (r *Router) Match(req *http.Request, match *RouteMatch) bool {\n\tfor _, route := range r.routes {\n\t\tif route.Match(req, match) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ServeHTTP dispatches the handler registered in the matched route.\n//\n// When there is a match, the route variables can be retrieved calling\n// mux.Vars(request).\nfunc (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {\n\t// Clean path to canonical form and redirect.\n\tif p := cleanPath(req.URL.Path); p != req.URL.Path {\n\n\t\t// Added 3 lines (Philip Schlump) - It was droping the query string and #whatever from query.\n\t\t// This matches with fix in go 1.2 r.c. 4 for same problem.  Go Issue:\n\t\t// http://code.google.com/p/go/issues/detail?id=5252\n\t\turl := *req.URL\n\t\turl.Path = p\n\t\tp = url.String()\n\n\t\tw.Header().Set(\"Location\", p)\n\t\tw.WriteHeader(http.StatusMovedPermanently)\n\t\treturn\n\t}\n\tvar match RouteMatch\n\tvar handler http.Handler\n\tif r.Match(req, &match) {\n\t\thandler = match.Handler\n\t\tsetVars(req, match.Vars)\n\t\tsetCurrentRoute(req, match.Route)\n\t}\n\tif handler == nil {\n\t\thandler = r.NotFoundHandler\n\t\tif handler == nil {\n\t\t\thandler = http.NotFoundHandler()\n\t\t}\n\t}\n\tif !r.KeepContext {\n\t\tdefer context.Clear(req)\n\t}\n\thandler.ServeHTTP(w, req)\n}\n\n// Get returns a route registered with the given name.\nfunc (r *Router) Get(name string) *Route {\n\treturn r.getNamedRoutes()[name]\n}\n\n// GetRoute returns a route registered with the given name. This method\n// was renamed to Get() and remains here for backwards compatibility.\nfunc (r *Router) GetRoute(name string) *Route {\n\treturn r.getNamedRoutes()[name]\n}\n\n// StrictSlash defines the trailing slash behavior for new routes. The initial\n// value is false.\n//\n// When true, if the route path is \"/path/\", accessing \"/path\" will redirect\n// to the former and vice versa. In other words, your application will always\n// see the path as specified in the route.\n//\n// When false, if the route path is \"/path\", accessing \"/path/\" will not match\n// this route and vice versa.\n//\n// Special case: when a route sets a path prefix using the PathPrefix() method,\n// strict slash is ignored for that route because the redirect behavior can't\n// be determined from a prefix alone. However, any subrouters created from that\n// route inherit the original StrictSlash setting.\nfunc (r *Router) StrictSlash(value bool) *Router {\n\tr.strictSlash = value\n\treturn r\n}\n\n// ----------------------------------------------------------------------------\n// parentRoute\n// ----------------------------------------------------------------------------\n\n// getNamedRoutes returns the map where named routes are registered.\nfunc (r *Router) getNamedRoutes() map[string]*Route {\n\tif r.namedRoutes == nil {\n\t\tif r.parent != nil {\n\t\t\tr.namedRoutes = r.parent.getNamedRoutes()\n\t\t} else {\n\t\t\tr.namedRoutes = make(map[string]*Route)\n\t\t}\n\t}\n\treturn r.namedRoutes\n}\n\n// getRegexpGroup returns regexp definitions from the parent route, if any.\nfunc (r *Router) getRegexpGroup() *routeRegexpGroup {\n\tif r.parent != nil {\n\t\treturn r.parent.getRegexpGroup()\n\t}\n\treturn nil\n}\n\n// ----------------------------------------------------------------------------\n// Route factories\n// ----------------------------------------------------------------------------\n\n// NewRoute registers an empty route.\nfunc (r *Router) NewRoute() *Route {\n\troute := &Route{parent: r, strictSlash: r.strictSlash}\n\tr.routes = append(r.routes, route)\n\treturn route\n}\n\n// Handle registers a new route with a matcher for the URL path.\n// See Route.Path() and Route.Handler().\nfunc (r *Router) Handle(path string, handler http.Handler) *Route {\n\treturn r.NewRoute().Path(path).Handler(handler)\n}\n\n// HandleFunc registers a new route with a matcher for the URL path.\n// See Route.Path() and Route.HandlerFunc().\nfunc (r *Router) HandleFunc(path string, f func(http.ResponseWriter,\n\t*http.Request)) *Route {\n\treturn r.NewRoute().Path(path).HandlerFunc(f)\n}\n\n// Headers registers a new route with a matcher for request header values.\n// See Route.Headers().\nfunc (r *Router) Headers(pairs ...string) *Route {\n\treturn r.NewRoute().Headers(pairs...)\n}\n\n// Host registers a new route with a matcher for the URL host.\n// See Route.Host().\nfunc (r *Router) Host(tpl string) *Route {\n\treturn r.NewRoute().Host(tpl)\n}\n\n// MatcherFunc registers a new route with a custom matcher function.\n// See Route.MatcherFunc().\nfunc (r *Router) MatcherFunc(f MatcherFunc) *Route {\n\treturn r.NewRoute().MatcherFunc(f)\n}\n\n// Methods registers a new route with a matcher for HTTP methods.\n// See Route.Methods().\nfunc (r *Router) Methods(methods ...string) *Route {\n\treturn r.NewRoute().Methods(methods...)\n}\n\n// Path registers a new route with a matcher for the URL path.\n// See Route.Path().\nfunc (r *Router) Path(tpl string) *Route {\n\treturn r.NewRoute().Path(tpl)\n}\n\n// PathPrefix registers a new route with a matcher for the URL path prefix.\n// See Route.PathPrefix().\nfunc (r *Router) PathPrefix(tpl string) *Route {\n\treturn r.NewRoute().PathPrefix(tpl)\n}\n\n// Queries registers a new route with a matcher for URL query values.\n// See Route.Queries().\nfunc (r *Router) Queries(pairs ...string) *Route {\n\treturn r.NewRoute().Queries(pairs...)\n}\n\n// Schemes registers a new route with a matcher for URL schemes.\n// See Route.Schemes().\nfunc (r *Router) Schemes(schemes ...string) *Route {\n\treturn r.NewRoute().Schemes(schemes...)\n}\n\n// ----------------------------------------------------------------------------\n// Context\n// ----------------------------------------------------------------------------\n\n// RouteMatch stores information about a matched route.\ntype RouteMatch struct {\n\tRoute   *Route\n\tHandler http.Handler\n\tVars    map[string]string\n}\n\ntype contextKey int\n\nconst (\n\tvarsKey contextKey = iota\n\trouteKey\n)\n\n// Vars returns the route variables for the current request, if any.\nfunc Vars(r *http.Request) map[string]string {\n\tif rv := context.Get(r, varsKey); rv != nil {\n\t\treturn rv.(map[string]string)\n\t}\n\treturn nil\n}\n\n// CurrentRoute returns the matched route for the current request, if any.\nfunc CurrentRoute(r *http.Request) *Route {\n\tif rv := context.Get(r, routeKey); rv != nil {\n\t\treturn rv.(*Route)\n\t}\n\treturn nil\n}\n\nfunc setVars(r *http.Request, val interface{}) {\n\tcontext.Set(r, varsKey, val)\n}\n\nfunc setCurrentRoute(r *http.Request, val interface{}) {\n\tcontext.Set(r, routeKey, val)\n}\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n// cleanPath returns the canonical path for p, eliminating . and .. elements.\n// Borrowed from the net/http package.\nfunc cleanPath(p string) string {\n\tif p == \"\" {\n\t\treturn \"/\"\n\t}\n\tif p[0] != '/' {\n\t\tp = \"/\" + p\n\t}\n\tnp := path.Clean(p)\n\t// path.Clean removes trailing slash except for root;\n\t// put the trailing slash back if necessary.\n\tif p[len(p)-1] == '/' && np != \"/\" {\n\t\tnp += \"/\"\n\t}\n\treturn np\n}\n\n// uniqueVars returns an error if two slices contain duplicated strings.\nfunc uniqueVars(s1, s2 []string) error {\n\tfor _, v1 := range s1 {\n\t\tfor _, v2 := range s2 {\n\t\t\tif v1 == v2 {\n\t\t\t\treturn fmt.Errorf(\"mux: duplicated route variable %q\", v2)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// mapFromPairs converts variadic string parameters to a string map.\nfunc mapFromPairs(pairs ...string) (map[string]string, error) {\n\tlength := len(pairs)\n\tif length%2 != 0 {\n\t\treturn nil, fmt.Errorf(\n\t\t\t\"mux: number of parameters must be multiple of 2, got %v\", pairs)\n\t}\n\tm := make(map[string]string, length/2)\n\tfor i := 0; i < length; i += 2 {\n\t\tm[pairs[i]] = pairs[i+1]\n\t}\n\treturn m, nil\n}\n\n// matchInArray returns true if the given string value is in the array.\nfunc matchInArray(arr []string, value string) bool {\n\tfor _, v := range arr {\n\t\tif v == value {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// matchMap returns true if the given key/value pairs exist in a given map.\nfunc matchMap(toCheck map[string]string, toMatch map[string][]string,\n\tcanonicalKey bool) bool {\n\tfor k, v := range toCheck {\n\t\t// Check if key exists.\n\t\tif canonicalKey {\n\t\t\tk = http.CanonicalHeaderKey(k)\n\t\t}\n\t\tif values := toMatch[k]; values == nil {\n\t\t\treturn false\n\t\t} else if v != \"\" {\n\t\t\t// If value was defined as an empty string we only check that the\n\t\t\t// key exists. Otherwise we also check for equality.\n\t\t\tvalueExists := false\n\t\t\tfor _, value := range values {\n\t\t\t\tif v == value {\n\t\t\t\t\tvalueExists = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !valueExists {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/regexp.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights 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 mux\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// newRouteRegexp parses a route template and returns a routeRegexp,\n// used to match a host, a path or a query string.\n//\n// It will extract named variables, assemble a regexp to be matched, create\n// a \"reverse\" template to build URLs and compile regexps to validate variable\n// values used in URL building.\n//\n// Previously we accepted only Python-like identifiers for variable\n// names ([a-zA-Z_][a-zA-Z0-9_]*), but currently the only restriction is that\n// name and pattern can't be empty, and names can't contain a colon.\nfunc newRouteRegexp(tpl string, matchHost, matchPrefix, matchQuery, strictSlash bool) (*routeRegexp, error) {\n\t// Check if it is well-formed.\n\tidxs, errBraces := braceIndices(tpl)\n\tif errBraces != nil {\n\t\treturn nil, errBraces\n\t}\n\t// Backup the original.\n\ttemplate := tpl\n\t// Now let's parse it.\n\tdefaultPattern := \"[^/]+\"\n\tif matchQuery {\n\t\tdefaultPattern = \"[^?&]+\"\n\t\tmatchPrefix = true\n\t} else if matchHost {\n\t\tdefaultPattern = \"[^.]+\"\n\t\tmatchPrefix = false\n\t}\n\t// Only match strict slash if not matching\n\tif matchPrefix || matchHost || matchQuery {\n\t\tstrictSlash = false\n\t}\n\t// Set a flag for strictSlash.\n\tendSlash := false\n\tif strictSlash && strings.HasSuffix(tpl, \"/\") {\n\t\ttpl = tpl[:len(tpl)-1]\n\t\tendSlash = true\n\t}\n\tvarsN := make([]string, len(idxs)/2)\n\tvarsR := make([]*regexp.Regexp, len(idxs)/2)\n\tpattern := bytes.NewBufferString(\"\")\n\tif !matchQuery {\n\t\tpattern.WriteByte('^')\n\t}\n\treverse := bytes.NewBufferString(\"\")\n\tvar end int\n\tvar err error\n\tfor i := 0; i < len(idxs); i += 2 {\n\t\t// Set all values we are interested in.\n\t\traw := tpl[end:idxs[i]]\n\t\tend = idxs[i+1]\n\t\tparts := strings.SplitN(tpl[idxs[i]+1:end-1], \":\", 2)\n\t\tname := parts[0]\n\t\tpatt := defaultPattern\n\t\tif len(parts) == 2 {\n\t\t\tpatt = parts[1]\n\t\t}\n\t\t// Name or pattern can't be empty.\n\t\tif name == \"\" || patt == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"mux: missing name or pattern in %q\",\n\t\t\t\ttpl[idxs[i]:end])\n\t\t}\n\t\t// Build the regexp pattern.\n\t\tfmt.Fprintf(pattern, \"%s(%s)\", regexp.QuoteMeta(raw), patt)\n\t\t// Build the reverse template.\n\t\tfmt.Fprintf(reverse, \"%s%%s\", raw)\n\t\t// Append variable name and compiled pattern.\n\t\tvarsN[i/2] = name\n\t\tvarsR[i/2], err = regexp.Compile(fmt.Sprintf(\"^%s$\", patt))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\t// Add the remaining.\n\traw := tpl[end:]\n\tpattern.WriteString(regexp.QuoteMeta(raw))\n\tif strictSlash {\n\t\tpattern.WriteString(\"[/]?\")\n\t}\n\tif !matchPrefix {\n\t\tpattern.WriteByte('$')\n\t}\n\treverse.WriteString(raw)\n\tif endSlash {\n\t\treverse.WriteByte('/')\n\t}\n\t// Compile full regexp.\n\treg, errCompile := regexp.Compile(pattern.String())\n\tif errCompile != nil {\n\t\treturn nil, errCompile\n\t}\n\t// Done!\n\treturn &routeRegexp{\n\t\ttemplate:    template,\n\t\tmatchHost:   matchHost,\n\t\tmatchQuery:  matchQuery,\n\t\tstrictSlash: strictSlash,\n\t\tregexp:      reg,\n\t\treverse:     reverse.String(),\n\t\tvarsN:       varsN,\n\t\tvarsR:       varsR,\n\t}, nil\n}\n\n// routeRegexp stores a regexp to match a host or path and information to\n// collect and validate route variables.\ntype routeRegexp struct {\n\t// The unmodified template.\n\ttemplate string\n\t// True for host match, false for path or query string match.\n\tmatchHost bool\n\t// True for query string match, false for path and host match.\n\tmatchQuery bool\n\t// The strictSlash value defined on the route, but disabled if PathPrefix was used.\n\tstrictSlash bool\n\t// Expanded regexp.\n\tregexp *regexp.Regexp\n\t// Reverse template.\n\treverse string\n\t// Variable names.\n\tvarsN []string\n\t// Variable regexps (validators).\n\tvarsR []*regexp.Regexp\n}\n\n// Match matches the regexp against the URL host or path.\nfunc (r *routeRegexp) Match(req *http.Request, match *RouteMatch) bool {\n\tif !r.matchHost {\n\t\tif r.matchQuery {\n\t\t\treturn r.regexp.MatchString(req.URL.RawQuery)\n\t\t} else {\n\t\t\treturn r.regexp.MatchString(req.URL.Path)\n\t\t}\n\t}\n\treturn r.regexp.MatchString(getHost(req))\n}\n\n// url builds a URL part using the given values.\nfunc (r *routeRegexp) url(pairs ...string) (string, error) {\n\tvalues, err := mapFromPairs(pairs...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\turlValues := make([]interface{}, len(r.varsN))\n\tfor k, v := range r.varsN {\n\t\tvalue, ok := values[v]\n\t\tif !ok {\n\t\t\treturn \"\", fmt.Errorf(\"mux: missing route variable %q\", v)\n\t\t}\n\t\turlValues[k] = value\n\t}\n\trv := fmt.Sprintf(r.reverse, urlValues...)\n\tif !r.regexp.MatchString(rv) {\n\t\t// The URL is checked against the full regexp, instead of checking\n\t\t// individual variables. This is faster but to provide a good error\n\t\t// message, we check individual regexps if the URL doesn't match.\n\t\tfor k, v := range r.varsN {\n\t\t\tif !r.varsR[k].MatchString(values[v]) {\n\t\t\t\treturn \"\", fmt.Errorf(\n\t\t\t\t\t\"mux: variable %q doesn't match, expected %q\", values[v],\n\t\t\t\t\tr.varsR[k].String())\n\t\t\t}\n\t\t}\n\t}\n\treturn rv, nil\n}\n\n// braceIndices returns the first level curly brace indices from a string.\n// It returns an error in case of unbalanced braces.\nfunc braceIndices(s string) ([]int, error) {\n\tvar level, idx int\n\tidxs := make([]int, 0)\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '{':\n\t\t\tif level++; level == 1 {\n\t\t\t\tidx = i\n\t\t\t}\n\t\tcase '}':\n\t\t\tif level--; level == 0 {\n\t\t\t\tidxs = append(idxs, idx, i+1)\n\t\t\t} else if level < 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"mux: unbalanced braces in %q\", s)\n\t\t\t}\n\t\t}\n\t}\n\tif level != 0 {\n\t\treturn nil, fmt.Errorf(\"mux: unbalanced braces in %q\", s)\n\t}\n\treturn idxs, nil\n}\n\n// ----------------------------------------------------------------------------\n// routeRegexpGroup\n// ----------------------------------------------------------------------------\n\n// routeRegexpGroup groups the route matchers that carry variables.\ntype routeRegexpGroup struct {\n\thost    *routeRegexp\n\tpath    *routeRegexp\n\tqueries []*routeRegexp\n}\n\n// setMatch extracts the variables from the URL once a route matches.\nfunc (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) {\n\t// Store host variables.\n\tif v.host != nil {\n\t\thostVars := v.host.regexp.FindStringSubmatch(getHost(req))\n\t\tif hostVars != nil {\n\t\t\tfor k, v := range v.host.varsN {\n\t\t\t\tm.Vars[v] = hostVars[k+1]\n\t\t\t}\n\t\t}\n\t}\n\t// Store path variables.\n\tif v.path != nil {\n\t\tpathVars := v.path.regexp.FindStringSubmatch(req.URL.Path)\n\t\tif pathVars != nil {\n\t\t\tfor k, v := range v.path.varsN {\n\t\t\t\tm.Vars[v] = pathVars[k+1]\n\t\t\t}\n\t\t\t// Check if we should redirect.\n\t\t\tif v.path.strictSlash {\n\t\t\t\tp1 := strings.HasSuffix(req.URL.Path, \"/\")\n\t\t\t\tp2 := strings.HasSuffix(v.path.template, \"/\")\n\t\t\t\tif p1 != p2 {\n\t\t\t\t\tu, _ := url.Parse(req.URL.String())\n\t\t\t\t\tif p1 {\n\t\t\t\t\t\tu.Path = u.Path[:len(u.Path)-1]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tu.Path += \"/\"\n\t\t\t\t\t}\n\t\t\t\t\tm.Handler = http.RedirectHandler(u.String(), 301)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Store query string variables.\n\trawQuery := req.URL.RawQuery\n\tfor _, q := range v.queries {\n\t\tqueryVars := q.regexp.FindStringSubmatch(rawQuery)\n\t\tif queryVars != nil {\n\t\t\tfor k, v := range q.varsN {\n\t\t\t\tm.Vars[v] = queryVars[k+1]\n\t\t\t}\n\t\t}\n\t}\n}\n\n// getHost tries its best to return the request host.\nfunc getHost(r *http.Request) string {\n\tif r.URL.IsAbs() {\n\t\treturn r.URL.Host\n\t}\n\thost := r.Host\n\t// Slice off any port information.\n\tif i := strings.Index(host, \":\"); i != -1 {\n\t\thost = host[:i]\n\t}\n\treturn host\n\n}\n"
  },
  {
    "path": "vendor/github.com/gorilla/mux/route.go",
    "content": "// Copyright 2012 The Gorilla Authors. All rights 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 mux\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n)\n\n// Route stores information to match a request and build URLs.\ntype Route struct {\n\t// Parent where the route was registered (a Router).\n\tparent parentRoute\n\t// Request handler for the route.\n\thandler http.Handler\n\t// List of matchers.\n\tmatchers []matcher\n\t// Manager for the variables from host and path.\n\tregexp *routeRegexpGroup\n\t// If true, when the path pattern is \"/path/\", accessing \"/path\" will\n\t// redirect to the former and vice versa.\n\tstrictSlash bool\n\t// If true, this route never matches: it is only used to build URLs.\n\tbuildOnly bool\n\t// The name used to build URLs.\n\tname string\n\t// Error resulted from building a route.\n\terr error\n}\n\n// Match matches the route against the request.\nfunc (r *Route) Match(req *http.Request, match *RouteMatch) bool {\n\tif r.buildOnly || r.err != nil {\n\t\treturn false\n\t}\n\t// Match everything.\n\tfor _, m := range r.matchers {\n\t\tif matched := m.Match(req, match); !matched {\n\t\t\treturn false\n\t\t}\n\t}\n\t// Yay, we have a match. Let's collect some info about it.\n\tif match.Route == nil {\n\t\tmatch.Route = r\n\t}\n\tif match.Handler == nil {\n\t\tmatch.Handler = r.handler\n\t}\n\tif match.Vars == nil {\n\t\tmatch.Vars = make(map[string]string)\n\t}\n\t// Set variables.\n\tif r.regexp != nil {\n\t\tr.regexp.setMatch(req, match, r)\n\t}\n\treturn true\n}\n\n// ----------------------------------------------------------------------------\n// Route attributes\n// ----------------------------------------------------------------------------\n\n// GetError returns an error resulted from building the route, if any.\nfunc (r *Route) GetError() error {\n\treturn r.err\n}\n\n// BuildOnly sets the route to never match: it is only used to build URLs.\nfunc (r *Route) BuildOnly() *Route {\n\tr.buildOnly = true\n\treturn r\n}\n\n// Handler --------------------------------------------------------------------\n\n// Handler sets a handler for the route.\nfunc (r *Route) Handler(handler http.Handler) *Route {\n\tif r.err == nil {\n\t\tr.handler = handler\n\t}\n\treturn r\n}\n\n// HandlerFunc sets a handler function for the route.\nfunc (r *Route) HandlerFunc(f func(http.ResponseWriter, *http.Request)) *Route {\n\treturn r.Handler(http.HandlerFunc(f))\n}\n\n// GetHandler returns the handler for the route, if any.\nfunc (r *Route) GetHandler() http.Handler {\n\treturn r.handler\n}\n\n// Name -----------------------------------------------------------------------\n\n// Name sets the name for the route, used to build URLs.\n// If the name was registered already it will be overwritten.\nfunc (r *Route) Name(name string) *Route {\n\tif r.name != \"\" {\n\t\tr.err = fmt.Errorf(\"mux: route already has name %q, can't set %q\",\n\t\t\tr.name, name)\n\t}\n\tif r.err == nil {\n\t\tr.name = name\n\t\tr.getNamedRoutes()[name] = r\n\t}\n\treturn r\n}\n\n// GetName returns the name for the route, if any.\nfunc (r *Route) GetName() string {\n\treturn r.name\n}\n\n// ----------------------------------------------------------------------------\n// Matchers\n// ----------------------------------------------------------------------------\n\n// matcher types try to match a request.\ntype matcher interface {\n\tMatch(*http.Request, *RouteMatch) bool\n}\n\n// addMatcher adds a matcher to the route.\nfunc (r *Route) addMatcher(m matcher) *Route {\n\tif r.err == nil {\n\t\tr.matchers = append(r.matchers, m)\n\t}\n\treturn r\n}\n\n// addRegexpMatcher adds a host or path matcher and builder to a route.\nfunc (r *Route) addRegexpMatcher(tpl string, matchHost, matchPrefix, matchQuery bool) error {\n\tif r.err != nil {\n\t\treturn r.err\n\t}\n\tr.regexp = r.getRegexpGroup()\n\tif !matchHost && !matchQuery {\n\t\tif len(tpl) == 0 || tpl[0] != '/' {\n\t\t\treturn fmt.Errorf(\"mux: path must start with a slash, got %q\", tpl)\n\t\t}\n\t\tif r.regexp.path != nil {\n\t\t\ttpl = strings.TrimRight(r.regexp.path.template, \"/\") + tpl\n\t\t}\n\t}\n\trr, err := newRouteRegexp(tpl, matchHost, matchPrefix, matchQuery, r.strictSlash)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, q := range r.regexp.queries {\n\t\tif err = uniqueVars(rr.varsN, q.varsN); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif matchHost {\n\t\tif r.regexp.path != nil {\n\t\t\tif err = uniqueVars(rr.varsN, r.regexp.path.varsN); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tr.regexp.host = rr\n\t} else {\n\t\tif r.regexp.host != nil {\n\t\t\tif err = uniqueVars(rr.varsN, r.regexp.host.varsN); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif matchQuery {\n\t\t\tr.regexp.queries = append(r.regexp.queries, rr)\n\t\t} else {\n\t\t\tr.regexp.path = rr\n\t\t}\n\t}\n\tr.addMatcher(rr)\n\treturn nil\n}\n\n// Headers --------------------------------------------------------------------\n\n// headerMatcher matches the request against header values.\ntype headerMatcher map[string]string\n\nfunc (m headerMatcher) Match(r *http.Request, match *RouteMatch) bool {\n\treturn matchMap(m, r.Header, true)\n}\n\n// Headers adds a matcher for request header values.\n// It accepts a sequence of key/value pairs to be matched. For example:\n//\n//     r := mux.NewRouter()\n//     r.Headers(\"Content-Type\", \"application/json\",\n//               \"X-Requested-With\", \"XMLHttpRequest\")\n//\n// The above route will only match if both request header values match.\n//\n// It the value is an empty string, it will match any value if the key is set.\nfunc (r *Route) Headers(pairs ...string) *Route {\n\tif r.err == nil {\n\t\tvar headers map[string]string\n\t\theaders, r.err = mapFromPairs(pairs...)\n\t\treturn r.addMatcher(headerMatcher(headers))\n\t}\n\treturn r\n}\n\n// Host -----------------------------------------------------------------------\n\n// Host adds a matcher for the URL host.\n// It accepts a template with zero or more URL variables enclosed by {}.\n// Variables can define an optional regexp pattern to me matched:\n//\n// - {name} matches anything until the next dot.\n//\n// - {name:pattern} matches the given regexp pattern.\n//\n// For example:\n//\n//     r := mux.NewRouter()\n//     r.Host(\"www.domain.com\")\n//     r.Host(\"{subdomain}.domain.com\")\n//     r.Host(\"{subdomain:[a-z]+}.domain.com\")\n//\n// Variable names must be unique in a given route. They can be retrieved\n// calling mux.Vars(request).\nfunc (r *Route) Host(tpl string) *Route {\n\tr.err = r.addRegexpMatcher(tpl, true, false, false)\n\treturn r\n}\n\n// MatcherFunc ----------------------------------------------------------------\n\n// MatcherFunc is the function signature used by custom matchers.\ntype MatcherFunc func(*http.Request, *RouteMatch) bool\n\nfunc (m MatcherFunc) Match(r *http.Request, match *RouteMatch) bool {\n\treturn m(r, match)\n}\n\n// MatcherFunc adds a custom function to be used as request matcher.\nfunc (r *Route) MatcherFunc(f MatcherFunc) *Route {\n\treturn r.addMatcher(f)\n}\n\n// Methods --------------------------------------------------------------------\n\n// methodMatcher matches the request against HTTP methods.\ntype methodMatcher []string\n\nfunc (m methodMatcher) Match(r *http.Request, match *RouteMatch) bool {\n\treturn matchInArray(m, r.Method)\n}\n\n// Methods adds a matcher for HTTP methods.\n// It accepts a sequence of one or more methods to be matched, e.g.:\n// \"GET\", \"POST\", \"PUT\".\nfunc (r *Route) Methods(methods ...string) *Route {\n\tfor k, v := range methods {\n\t\tmethods[k] = strings.ToUpper(v)\n\t}\n\treturn r.addMatcher(methodMatcher(methods))\n}\n\n// Path -----------------------------------------------------------------------\n\n// Path adds a matcher for the URL path.\n// It accepts a template with zero or more URL variables enclosed by {}. The\n// template must start with a \"/\".\n// Variables can define an optional regexp pattern to me matched:\n//\n// - {name} matches anything until the next slash.\n//\n// - {name:pattern} matches the given regexp pattern.\n//\n// For example:\n//\n//     r := mux.NewRouter()\n//     r.Path(\"/products/\").Handler(ProductsHandler)\n//     r.Path(\"/products/{key}\").Handler(ProductsHandler)\n//     r.Path(\"/articles/{category}/{id:[0-9]+}\").\n//       Handler(ArticleHandler)\n//\n// Variable names must be unique in a given route. They can be retrieved\n// calling mux.Vars(request).\nfunc (r *Route) Path(tpl string) *Route {\n\tr.err = r.addRegexpMatcher(tpl, false, false, false)\n\treturn r\n}\n\n// PathPrefix -----------------------------------------------------------------\n\n// PathPrefix adds a matcher for the URL path prefix. This matches if the given\n// template is a prefix of the full URL path. See Route.Path() for details on\n// the tpl argument.\n//\n// Note that it does not treat slashes specially (\"/foobar/\" will be matched by\n// the prefix \"/foo\") so you may want to use a trailing slash here.\n//\n// Also note that the setting of Router.StrictSlash() has no effect on routes\n// with a PathPrefix matcher.\nfunc (r *Route) PathPrefix(tpl string) *Route {\n\tr.err = r.addRegexpMatcher(tpl, false, true, false)\n\treturn r\n}\n\n// Query ----------------------------------------------------------------------\n\n// Queries adds a matcher for URL query values.\n// It accepts a sequence of key/value pairs. Values may define variables.\n// For example:\n//\n//     r := mux.NewRouter()\n//     r.Queries(\"foo\", \"bar\", \"id\", \"{id:[0-9]+}\")\n//\n// The above route will only match if the URL contains the defined queries\n// values, e.g.: ?foo=bar&id=42.\n//\n// It the value is an empty string, it will match any value if the key is set.\n//\n// Variables can define an optional regexp pattern to me matched:\n//\n// - {name} matches anything until the next slash.\n//\n// - {name:pattern} matches the given regexp pattern.\nfunc (r *Route) Queries(pairs ...string) *Route {\n\tlength := len(pairs)\n\tif length%2 != 0 {\n\t\tr.err = fmt.Errorf(\n\t\t\t\"mux: number of parameters must be multiple of 2, got %v\", pairs)\n\t\treturn nil\n\t}\n\tfor i := 0; i < length; i += 2 {\n\t\tif r.err = r.addRegexpMatcher(pairs[i]+\"=\"+pairs[i+1], false, true, true); r.err != nil {\n\t\t\treturn r\n\t\t}\n\t}\n\n\treturn r\n}\n\n// Schemes --------------------------------------------------------------------\n\n// schemeMatcher matches the request against URL schemes.\ntype schemeMatcher []string\n\nfunc (m schemeMatcher) Match(r *http.Request, match *RouteMatch) bool {\n\treturn matchInArray(m, r.URL.Scheme)\n}\n\n// Schemes adds a matcher for URL schemes.\n// It accepts a sequence of schemes to be matched, e.g.: \"http\", \"https\".\nfunc (r *Route) Schemes(schemes ...string) *Route {\n\tfor k, v := range schemes {\n\t\tschemes[k] = strings.ToLower(v)\n\t}\n\treturn r.addMatcher(schemeMatcher(schemes))\n}\n\n// Subrouter ------------------------------------------------------------------\n\n// Subrouter creates a subrouter for the route.\n//\n// It will test the inner routes only if the parent route matched. For example:\n//\n//     r := mux.NewRouter()\n//     s := r.Host(\"www.domain.com\").Subrouter()\n//     s.HandleFunc(\"/products/\", ProductsHandler)\n//     s.HandleFunc(\"/products/{key}\", ProductHandler)\n//     s.HandleFunc(\"/articles/{category}/{id:[0-9]+}\"), ArticleHandler)\n//\n// Here, the routes registered in the subrouter won't be tested if the host\n// doesn't match.\nfunc (r *Route) Subrouter() *Router {\n\trouter := &Router{parent: r, strictSlash: r.strictSlash}\n\tr.addMatcher(router)\n\treturn router\n}\n\n// ----------------------------------------------------------------------------\n// URL building\n// ----------------------------------------------------------------------------\n\n// URL builds a URL for the route.\n//\n// It accepts a sequence of key/value pairs for the route variables. For\n// example, given this route:\n//\n//     r := mux.NewRouter()\n//     r.HandleFunc(\"/articles/{category}/{id:[0-9]+}\", ArticleHandler).\n//       Name(\"article\")\n//\n// ...a URL for it can be built using:\n//\n//     url, err := r.Get(\"article\").URL(\"category\", \"technology\", \"id\", \"42\")\n//\n// ...which will return an url.URL with the following path:\n//\n//     \"/articles/technology/42\"\n//\n// This also works for host variables:\n//\n//     r := mux.NewRouter()\n//     r.Host(\"{subdomain}.domain.com\").\n//       HandleFunc(\"/articles/{category}/{id:[0-9]+}\", ArticleHandler).\n//       Name(\"article\")\n//\n//     // url.String() will be \"http://news.domain.com/articles/technology/42\"\n//     url, err := r.Get(\"article\").URL(\"subdomain\", \"news\",\n//                                      \"category\", \"technology\",\n//                                      \"id\", \"42\")\n//\n// All variables defined in the route are required, and their values must\n// conform to the corresponding patterns.\nfunc (r *Route) URL(pairs ...string) (*url.URL, error) {\n\tif r.err != nil {\n\t\treturn nil, r.err\n\t}\n\tif r.regexp == nil {\n\t\treturn nil, errors.New(\"mux: route doesn't have a host or path\")\n\t}\n\tvar scheme, host, path string\n\tvar err error\n\tif r.regexp.host != nil {\n\t\t// Set a default scheme.\n\t\tscheme = \"http\"\n\t\tif host, err = r.regexp.host.url(pairs...); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif r.regexp.path != nil {\n\t\tif path, err = r.regexp.path.url(pairs...); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &url.URL{\n\t\tScheme: scheme,\n\t\tHost:   host,\n\t\tPath:   path,\n\t}, nil\n}\n\n// URLHost builds the host part of the URL for a route. See Route.URL().\n//\n// The route must have a host defined.\nfunc (r *Route) URLHost(pairs ...string) (*url.URL, error) {\n\tif r.err != nil {\n\t\treturn nil, r.err\n\t}\n\tif r.regexp == nil || r.regexp.host == nil {\n\t\treturn nil, errors.New(\"mux: route doesn't have a host\")\n\t}\n\thost, err := r.regexp.host.url(pairs...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &url.URL{\n\t\tScheme: \"http\",\n\t\tHost:   host,\n\t}, nil\n}\n\n// URLPath builds the path part of the URL for a route. See Route.URL().\n//\n// The route must have a path defined.\nfunc (r *Route) URLPath(pairs ...string) (*url.URL, error) {\n\tif r.err != nil {\n\t\treturn nil, r.err\n\t}\n\tif r.regexp == nil || r.regexp.path == nil {\n\t\treturn nil, errors.New(\"mux: route doesn't have a path\")\n\t}\n\tpath, err := r.regexp.path.url(pairs...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &url.URL{\n\t\tPath: path,\n\t}, nil\n}\n\n// ----------------------------------------------------------------------------\n// parentRoute\n// ----------------------------------------------------------------------------\n\n// parentRoute allows routes to know about parent host and path definitions.\ntype parentRoute interface {\n\tgetNamedRoutes() map[string]*Route\n\tgetRegexpGroup() *routeRegexpGroup\n}\n\n// getNamedRoutes returns the map where named routes are registered.\nfunc (r *Route) getNamedRoutes() map[string]*Route {\n\tif r.parent == nil {\n\t\t// During tests router is not always set.\n\t\tr.parent = NewRouter()\n\t}\n\treturn r.parent.getNamedRoutes()\n}\n\n// getRegexpGroup returns regexp definitions from this route.\nfunc (r *Route) getRegexpGroup() *routeRegexpGroup {\n\tif r.regexp == nil {\n\t\tif r.parent == nil {\n\t\t\t// During tests router is not always set.\n\t\t\tr.parent = NewRouter()\n\t\t}\n\t\tregexp := r.parent.getRegexpGroup()\n\t\tif regexp == nil {\n\t\t\tr.regexp = new(routeRegexpGroup)\n\t\t} else {\n\t\t\t// Copy.\n\t\t\tr.regexp = &routeRegexpGroup{\n\t\t\t\thost:    regexp.host,\n\t\t\t\tpath:    regexp.path,\n\t\t\t\tqueries: regexp.queries,\n\t\t\t}\n\t\t}\n\t}\n\treturn r.regexp\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/.gitignore",
    "content": "vendor/pkg\n/runc\nGodeps/_workspace/src/github.com/opencontainers/runc\nman/man8\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/CONTRIBUTING.md",
    "content": "## Contribution Guidelines\n\n### Pull requests are always welcome\n\nWe are always thrilled to receive pull requests, and do our best to\nprocess them as fast as possible. Not sure if that typo is worth a pull\nrequest? Do it! We will appreciate it.\n\nIf your pull request is not accepted on the first try, don't be\ndiscouraged! If there's a problem with the implementation, hopefully you\nreceived feedback on what to improve.\n\nWe're trying very hard to keep runc lean and focused. We don't want it\nto do everything for everybody. This means that we might decide against\nincorporating a new feature. However, there might be a way to implement\nthat feature *on top of* runc.\n\n\n### Conventions\n\nFork the repo and make changes on your fork in a feature branch:\n\n- If it's a bugfix branch, name it XXX-something where XXX is the number of the\n  issue\n- If it's a feature branch, create an enhancement issue to announce your\n  intentions, and name it XXX-something where XXX is the number of the issue.\n\nSubmit unit tests for your changes.  Go has a great test framework built in; use\nit! Take a look at existing tests for inspiration. Run the full test suite on\nyour branch before submitting a pull request.\n\nUpdate the documentation when creating or modifying features. Test\nyour documentation changes for clarity, concision, and correctness, as\nwell as a clean documentation build. See ``docs/README.md`` for more\ninformation on building the docs and how docs get released.\n\nWrite clean code. Universally formatted code promotes ease of writing, reading,\nand maintenance. Always run `gofmt -s -w file.go` on each changed file before\ncommitting your changes. Most editors have plugins that do this automatically.\n\nPull requests descriptions should be as clear as possible and include a\nreference to all the issues that they address.\n\nPull requests must not contain commits from other users or branches.\n\nCommit messages must start with a capitalized and short summary (max. 50\nchars) written in the imperative, followed by an optional, more detailed\nexplanatory text which is separated from the summary by an empty line.\n\nCode review comments may be added to your pull request. Discuss, then make the\nsuggested modifications and push additional commits to your feature branch. Be\nsure to post a comment after pushing. The new commits will show up in the pull\nrequest automatically, but the reviewers will not be notified unless you\ncomment.\n\nBefore the pull request is merged, make sure that you squash your commits into\nlogical units of work using `git rebase -i` and `git push -f`. After every\ncommit the test suite should be passing. Include documentation changes in the\nsame commit so that a revert would remove all traces of the feature or fix.\n\nCommits that fix or close an issue should include a reference like `Closes #XXX`\nor `Fixes #XXX`, which will automatically close the issue when merged.\n\n### Sign your work\n\nThe sign-off is a simple line at the end of the explanation for the\npatch, which certifies that you wrote it or otherwise have the right to\npass it on as an open-source patch.  The rules are pretty simple: if you\ncan certify the below (from\n[developercertificate.org](http://developercertificate.org/)):\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n660 York Street, Suite 102,\nSan Francisco, CA 94110 USA\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n\nthen you just add a line to every git commit message:\n\n    Signed-off-by: Joe Smith <joe@gmail.com>\n\nusing your real name (sorry, no pseudonyms or anonymous contributions.)\n\nYou can add the sign off when creating the git commit via `git commit -s`.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/Dockerfile",
    "content": "FROM runc_test\nADD . /go/src/github.com/opencontainers/runc\nRUN make\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/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   Copyright 2014 Docker, Inc.\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/opencontainers/runc/MAINTAINERS",
    "content": "Michael Crosby <michael@docker.com> (@crosbymichael)\nRohit Jnagal <jnagal@google.com> (@rjnagal)\nVictor Marmol <vmarmol@google.com> (@vmarmol)\nMrunal Patel <mpatel@redhat.com> (@mrunalp)\nAlexander Morozov <lk4d4@docker.com> (@LK4D4)\nDaniel, Dao Quang Minh <dqminh89@gmail.com> (@dqminh)\nAndrey Vagin <avagin@virtuozzo.com> (@avagin)\nQiang Huang <h.huangqiang@huawei.com> (@hqhq)\nAleksa Sarai <asarai@suse.de> (@cyphar)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/MAINTAINERS_GUIDE.md",
    "content": "## Introduction\n\nDear maintainer. Thank you for investing the time and energy to help\nmake runc as useful as possible. Maintaining a project is difficult,\nsometimes unrewarding work.  Sure, you will get to contribute cool\nfeatures to the project. But most of your time will be spent reviewing,\ncleaning up, documenting, answering questions, justifying design\ndecisions - while everyone has all the fun! But remember - the quality\nof the maintainers work is what distinguishes the good projects from the\ngreat.  So please be proud of your work, even the unglamourous parts,\nand encourage a culture of appreciation and respect for *every* aspect\nof improving the project - not just the hot new features.\n\nThis document is a manual for maintainers old and new. It explains what\nis expected of maintainers, how they should work, and what tools are\navailable to them.\n\nThis is a living document - if you see something out of date or missing,\nspeak up!\n\n## What are a maintainer's responsibility?\n\nIt is every maintainer's responsibility to:\n\n* 1) Expose a clear roadmap for improving their component.\n* 2) Deliver prompt feedback and decisions on pull requests.\n* 3) Be available to anyone with questions, bug reports, criticism etc.\n  on their component. This includes IRC and GitHub issues and pull requests.\n* 4) Make sure their component respects the philosophy, design and\n  roadmap of the project.\n\n## How are decisions made?\n\nShort answer: with pull requests to the runc repository.\n\nrunc is an open-source project with an open design philosophy. This\nmeans that the repository is the source of truth for EVERY aspect of the\nproject, including its philosophy, design, roadmap and APIs. *If it's\npart of the project, it's in the repo. It's in the repo, it's part of\nthe project.*\n\nAs a result, all decisions can be expressed as changes to the\nrepository. An implementation change is a change to the source code. An\nAPI change is a change to the API specification. A philosophy change is\na change to the philosophy manifesto. And so on.\n\nAll decisions affecting runc, big and small, follow the same 3 steps:\n\n* Step 1: Open a pull request. Anyone can do this.\n\n* Step 2: Discuss the pull request. Anyone can do this.\n\n* Step 3: Accept (`LGTM`) or refuse a pull request. The relevant maintainers do \nthis (see below \"Who decides what?\")\n\n### I'm a maintainer, should I make pull requests too?\n\nYes. Nobody should ever push to master directly. All changes should be\nmade through a pull request.\n\n## Who decides what?\n\nAll decisions are pull requests, and the relevant maintainers make\ndecisions by accepting or refusing the pull request. Review and acceptance\nby anyone is denoted by adding a comment in the pull request: `LGTM`. \nHowever, only currently listed `MAINTAINERS` are counted towards the required\ntwo LGTMs.\n\nOverall the maintainer system works because of mutual respect across the\nmaintainers of the project.  The maintainers trust one another to make decisions\nin the best interests of the project.  Sometimes maintainers can disagree and \nthis is part of a healthy project to represent the point of views of various people.\nIn the case where maintainers cannot find agreement on a specific change the \nrole of a Chief Maintainer comes into play.  \n\nThe Chief Maintainer for the project is responsible for overall architecture \nof the project to maintain conceptual integrity.  Large decisions and \narchitecture changes should be reviewed by the chief maintainer.  \nThe current chief maintainer for the project is Michael Crosby (@crosbymichael).  \n\nEven though the maintainer system is built on trust, if there is a conflict\nwith the chief maintainer on a decision, their decision can be challenged \nand brought to the technical oversight board if two-thirds of the \nmaintainers vote for an appeal. It is expected that this would be a \nvery exceptional event.\n\n\n### How are maintainers added?\n\nThe best maintainers have a vested interest in the project.  Maintainers\nare first and foremost contributors that have shown they are committed to\nthe long term success of the project.  Contributors wanting to become \nmaintainers are expected to be deeply involved in contributing code, \npull request review, and triage of issues in the project for more than two months.\n\nJust contributing does not make you a maintainer, it is about building trust \nwith the current maintainers of the project and being a person that they can\ndepend on and trust to make decisions in the best interest of the project.  The\nfinal vote to add a new maintainer should be approved by over 66% of the current\nmaintainers with the chief maintainer having veto power.  In case of a veto, \nconflict resolution rules expressed above apply.  The voting period is\nfive business days on the Pull Request to add the new maintainer.\n\n\n### What is expected of maintainers?\n\nPart of a healthy project is to have active maintainers to support the community\nin contributions and perform tasks to keep the project running.  Maintainers are\nexpected to be able to respond in a timely manner if their help is required on specific\nissues where they are pinged.  Being a maintainer is a time consuming commitment and should\nnot be taken lightly.\n\nWhen a maintainer is unable to perform the required duties they can be removed with\na vote by 66% of the current maintainers with the chief maintainer having veto power.\nThe voting period is ten business days.  Issues related to a maintainer's performance should\nbe discussed with them among the other maintainers so that they are not surprised by\na pull request removing them.\n\n\n\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/Makefile",
    "content": "RUNC_IMAGE=runc_dev\nRUNC_TEST_IMAGE=runc_test\nPROJECT=github.com/opencontainers/runc\nTEST_DOCKERFILE=script/test_Dockerfile\nBUILDTAGS=seccomp\nRUNC_BUILD_PATH=/go/src/github.com/opencontainers/runc/runc\nRUNC_INSTANCE=runc_dev\nCOMMIT=$(shell git rev-parse HEAD 2> /dev/null || true)\nRUNC_LINK=$(CURDIR)/Godeps/_workspace/src/github.com/opencontainers/runc\nexport GOPATH:=$(CURDIR)/Godeps/_workspace:$(GOPATH)\n\n.PHONY=dbuild\n\nall:\nifneq ($(RUNC_LINK), $(wildcard $(RUNC_LINK)))\n\tln -sfn $(CURDIR) $(RUNC_LINK)\nendif\n\tgo build -ldflags \"-X main.gitCommit=${COMMIT}\" -tags \"$(BUILDTAGS)\" -o runc .\n\nstatic:\n\tCGO_ENABLED=1 go build -tags \"$(BUILDTAGS) cgo static_build\" -ldflags \"-w -extldflags -static -X main.gitCommit=${COMMIT}\" -o runc .\n\nlint:\n\tgo vet ./...\n\tgo fmt ./...\n\nrunctestimage:\n\tdocker build -t $(RUNC_TEST_IMAGE) -f $(TEST_DOCKERFILE) .\n\ntest: runctestimage\n\tdocker run -e TESTFLAGS -ti --privileged --rm -v $(CURDIR):/go/src/$(PROJECT) $(RUNC_TEST_IMAGE) make localtest\n\ttests/sniffTest\n\nlocaltest: all\n\tgo test -tags \"$(BUILDTAGS)\" ${TESTFLAGS} -v ./...\n\ndbuild: runctestimage\n\tdocker build -t $(RUNC_IMAGE) .\n\tdocker create --name=$(RUNC_INSTANCE) $(RUNC_IMAGE)\n\tdocker cp $(RUNC_INSTANCE):$(RUNC_BUILD_PATH) .\n\tdocker rm $(RUNC_INSTANCE)\n\ninstall:\n\tinstall -D -m0755 runc /usr/local/sbin/runc\n\nuninstall:\n\trm -f /usr/local/sbin/runc\n\nclean:\n\trm -f runc\n\trm -f $(RUNC_LINK)\n\nvalidate:\n\tscript/validate-gofmt\n\tgo vet ./...\n\nci: validate localtest\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/NOTICE",
    "content": "runc\n\nCopyright 2012-2015 Docker, Inc.\n\nThis product includes software developed at Docker, Inc. (http://www.docker.com).\n\nThe following is courtesy of our legal counsel:\n\n\nUse and transfer of Docker may be subject to certain restrictions by the\nUnited States and other governments.  \nIt is your responsibility to ensure that your use and/or transfer does not\nviolate applicable laws. \n\nFor more information, please see http://www.bis.doc.gov\n\nSee also http://www.apache.org/dev/crypto.html and/or seek legal counsel.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/PRINCIPLES.md",
    "content": "# runc principles\n\nIn the design and development of runc and libcontainer we try to follow these principles:\n\n(Work in progress)\n\n* Don't try to replace every tool. Instead, be an ingredient to improve them.\n* Less code is better.\n* Fewer components are better. Do you really need to add one more class?\n* 50 lines of straightforward, readable code is better than 10 lines of magic that nobody can understand.\n* Don't do later what you can do now. \"//TODO: refactor\" is not acceptable in new code.\n* When hesitating between two options, choose the one that is easier to reverse.\n* \"No\" is temporary; \"Yes\" is forever. If you're not sure about a new feature, say no. You can change your mind later.\n* Containers must be portable to the greatest possible number of machines. Be suspicious of any change which makes machines less interchangeable.\n* The fewer moving parts in a container, the better.\n* Don't merge it unless you document it.\n* Don't document it unless you can keep it up-to-date.\n* Don't merge it unless you test it!\n* Everyone's problem is slightly different. Focus on the part that is the same for everyone, and solve that.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/README.md",
    "content": "[![Build Status](https://jenkins.dockerproject.org/buildStatus/icon?job=runc Master)](https://jenkins.dockerproject.org/job/runc Master)\n\n## runc\n\n`runc` is a CLI tool for spawning and running containers according to the OCF specification.\n\n## State of the project\n\nCurrently `runc` is an implementation of the OCI specification.  We are currently sprinting\nto have a v1 of the spec out. So the `runc` config format will be constantly changing until\nthe spec is finalized. However, we encourage you to try out the tool and give feedback.\n\n### OCF\n\nHow does `runc` integrate with the Open Container Initiative Specification?\n`runc` depends on the types specified in the\n[specs](https://github.com/opencontainers/runtime-spec) repository. Whenever the\nspecification is updated and ready to be versioned `runc` will update its dependency\non the specs repository and support the update spec.\n\n### Building:\n\nAt the time of writing, runc only builds on the Linux platform.\n\n```bash\n# create a 'github.com/opencontainers' in your GOPATH/src\ncd github.com/opencontainers\ngit clone https://github.com/opencontainers/runc\ncd runc\nmake\nsudo make install\n```\n\nIn order to enable seccomp support you will need to install libseccomp on your platform.\nIf you do not want to build `runc` with seccomp support you can add `BUILDTAGS=\"\"` when running make.\n\n#### Build Tags\n\n`runc` supports optional build tags for compiling in support for various features.\n\n\n| Build Tag | Feature                            | Dependency  |\n|-----------|------------------------------------|-------------|\n| seccomp   | Syscall filtering                  | libseccomp  |\n| selinux   | selinux process and mount labeling | <none>      |\n| apparmor  | apparmor profile support           | libapparmor |\n\n### Testing:\n\nYou can run tests for runC by using command:\n\n```bash\n# make test\n```\n\nNote that test cases are run in Docker container, so you need to install\n`docker` first. And test requires mounting cgroups inside container, it's\ndone by docker now, so you need a docker version newer than 1.8.0-rc2.\n\nYou can also run specific test cases by:\n\n```bash\n# make test TESTFLAGS=\"-run=SomeTestFunction\"\n```\n\n### Using:\n\nTo run a container with the id \"test\", execute `runc start` with the containers id as arg one \nin the bundle's root directory:\n\n```bash\nrunc start test\n/ $ ps\nPID   USER     COMMAND\n1     daemon   sh\n5     daemon   sh\n/ $\n```\n\n### OCI Container JSON Format:\n\nOCI container JSON format is based on OCI [specs](https://github.com/opencontainers/runtime-spec).\nYou can generate JSON files by using `runc spec`.\nIt assumes that the file-system is found in a directory called\n`rootfs` and there is a user with uid and gid of `0` defined within that file-system.\n\n### Examples:\n\n#### Using a Docker image (requires version 1.3 or later)\n\nTo test using Docker's `busybox` image follow these steps:\n* Install `docker` and download the `busybox` image: `docker pull busybox`\n* Create a container from that image and export its contents to a tar file:\n`docker export $(docker create busybox) > busybox.tar`\n* Untar the contents to create your filesystem directory:\n```\nmkdir rootfs\ntar -C rootfs -xf busybox.tar\n```\n* Create `config.json` by using `runc spec`.\n* Execute `runc start` and you should be placed into a shell where you can run `ps`:\n```\n$ runc start test\n/ # ps\nPID   USER     COMMAND\n    1 root     sh\n    9 root     ps\n```\n\n#### Using runc with systemd\n\nTo use runc with systemd, you can create a unit file\n`/usr/lib/systemd/system/minecraft.service` as below (edit your\nown Description or WorkingDirectory or service name as you need).\n\n```service\n[Unit]\nDescription=Minecraft Build Server\nDocumentation=http://minecraft.net\nAfter=network.target\n\n[Service]\nCPUQuota=200%\nMemoryLimit=1536M\nExecStart=/usr/local/bin/runc start minecraft\nRestart=on-failure\nWorkingDirectory=/containers/minecraftbuild\n\n[Install]\nWantedBy=multi-user.target\n```\n\nMake sure you have the bundle's root directory and JSON configs in\nyour WorkingDirectory, then use systemd commands to start the service:\n\n```bash\nsystemctl daemon-reload\nsystemctl start minecraft.service\n```\n\nNote that if you use JSON configs by `runc spec`, you need to modify\n`config.json` and change `process.terminal` to false so runc won't\ncreate tty, because we can't set terminal from the stdin when using\nsystemd service.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/README.md",
    "content": "Libcontainer provides a native Go implementation for creating containers\nwith namespaces, cgroups, capabilities, and filesystem access controls.\nIt allows you to manage the lifecycle of the container performing additional operations\nafter the container is created.\n\n\n#### Container\nA container is a self contained execution environment that shares the kernel of the\nhost system and which is (optionally) isolated from other containers in the system.\n\n#### Using libcontainer\n\nBecause containers are spawned in a two step process you will need a binary that\nwill be executed as the init process for the container. In libcontainer, we use\nthe current binary (/proc/self/exe) to be executed as the init process, and use\narg \"init\", we call the first step process \"bootstrap\", so you always need a \"init\"\nfunction as the entry of \"bootstrap\".\n\n```go\nfunc init() {\n\tif len(os.Args) > 1 && os.Args[1] == \"init\" {\n\t\truntime.GOMAXPROCS(1)\n\t\truntime.LockOSThread()\n\t\tfactory, _ := libcontainer.New(\"\")\n\t\tif err := factory.StartInitialization(); err != nil {\n\t\t\tlogrus.Fatal(err)\n\t\t}\n\t\tpanic(\"--this line should have never been executed, congratulations--\")\n\t}\n}\n```\n\nThen to create a container you first have to initialize an instance of a factory\nthat will handle the creation and initialization for a container.\n\n```go\nfactory, err := libcontainer.New(\"/var/lib/container\", libcontainer.Cgroupfs, libcontainer.InitArgs(os.Args[0], \"init\"))\nif err != nil {\n\tlogrus.Fatal(err)\n\treturn\n}\n```\n\nOnce you have an instance of the factory created we can create a configuration\nstruct describing how the container is to be created. A sample would look similar to this:\n\n```go\ndefaultMountFlags := syscall.MS_NOEXEC | syscall.MS_NOSUID | syscall.MS_NODEV\nconfig := &configs.Config{\n\tRootfs: \"/your/path/to/rootfs\",\n\tCapabilities: []string{\n\t\t\"CAP_CHOWN\",\n\t\t\"CAP_DAC_OVERRIDE\",\n\t\t\"CAP_FSETID\",\n\t\t\"CAP_FOWNER\",\n\t\t\"CAP_MKNOD\",\n\t\t\"CAP_NET_RAW\",\n\t\t\"CAP_SETGID\",\n\t\t\"CAP_SETUID\",\n\t\t\"CAP_SETFCAP\",\n\t\t\"CAP_SETPCAP\",\n\t\t\"CAP_NET_BIND_SERVICE\",\n\t\t\"CAP_SYS_CHROOT\",\n\t\t\"CAP_KILL\",\n\t\t\"CAP_AUDIT_WRITE\",\n\t},\n\tNamespaces: configs.Namespaces([]configs.Namespace{\n\t\t{Type: configs.NEWNS},\n\t\t{Type: configs.NEWUTS},\n\t\t{Type: configs.NEWIPC},\n\t\t{Type: configs.NEWPID},\n\t\t{Type: configs.NEWUSER},\n\t\t{Type: configs.NEWNET},\n\t}),\n\tCgroups: &configs.Cgroup{\n\t\tName:   \"test-container\",\n\t\tParent: \"system\",\n\t\tResources: &configs.Resources{\n\t\t\tMemorySwappiness: nil,\n\t\t\tAllowAllDevices:  false,\n\t\t\tAllowedDevices:   configs.DefaultAllowedDevices,\n\t\t},\n\t},\n\tMaskPaths: []string{\n\t\t\"/proc/kcore\",\n\t},\n\tReadonlyPaths: []string{\n\t\t\"/proc/sys\", \"/proc/sysrq-trigger\", \"/proc/irq\", \"/proc/bus\",\n\t},\n\tDevices:  configs.DefaultAutoCreatedDevices,\n\tHostname: \"testing\",\n\tMounts: []*configs.Mount{\n\t\t{\n\t\t\tSource:      \"proc\",\n\t\t\tDestination: \"/proc\",\n\t\t\tDevice:      \"proc\",\n\t\t\tFlags:       defaultMountFlags,\n\t\t},\n\t\t{\n\t\t\tSource:      \"tmpfs\",\n\t\t\tDestination: \"/dev\",\n\t\t\tDevice:      \"tmpfs\",\n\t\t\tFlags:       syscall.MS_NOSUID | syscall.MS_STRICTATIME,\n\t\t\tData:        \"mode=755\",\n\t\t},\n\t\t{\n\t\t\tSource:      \"devpts\",\n\t\t\tDestination: \"/dev/pts\",\n\t\t\tDevice:      \"devpts\",\n\t\t\tFlags:       syscall.MS_NOSUID | syscall.MS_NOEXEC,\n\t\t\tData:        \"newinstance,ptmxmode=0666,mode=0620,gid=5\",\n\t\t},\n\t\t{\n\t\t\tDevice:      \"tmpfs\",\n\t\t\tSource:      \"shm\",\n\t\t\tDestination: \"/dev/shm\",\n\t\t\tData:        \"mode=1777,size=65536k\",\n\t\t\tFlags:       defaultMountFlags,\n\t\t},\n\t\t{\n\t\t\tSource:      \"mqueue\",\n\t\t\tDestination: \"/dev/mqueue\",\n\t\t\tDevice:      \"mqueue\",\n\t\t\tFlags:       defaultMountFlags,\n\t\t},\n\t\t{\n\t\t\tSource:      \"sysfs\",\n\t\t\tDestination: \"/sys\",\n\t\t\tDevice:      \"sysfs\",\n\t\t\tFlags:       defaultMountFlags | syscall.MS_RDONLY,\n\t\t},\n\t},\n\tUidMappings: []configs.IDMap{\n\t\t{\n\t\t\tContainerID: 0,\n\t\t\tHostID: 1000,\n\t\t\tSize: 65536,\n\t\t},\n\t},\n\tGidMappings: []configs.IDMap{\n\t\t{\n\t\t\tContainerID: 0,\n\t\t\tHostID: 1000,\n\t\t\tSize: 65536,\n\t\t},\n\t},\n\tNetworks: []*configs.Network{\n\t\t{\n\t\t\tType:    \"loopback\",\n\t\t\tAddress: \"127.0.0.1/0\",\n\t\t\tGateway: \"localhost\",\n\t\t},\n\t},\n\tRlimits: []configs.Rlimit{\n\t\t{\n\t\t\tType: syscall.RLIMIT_NOFILE,\n\t\t\tHard: uint64(1025),\n\t\t\tSoft: uint64(1025),\n\t\t},\n\t},\n}\n```\n\nOnce you have the configuration populated you can create a container:\n\n```go\ncontainer, err := factory.Create(\"container-id\", config)\nif err != nil {\n\tlogrus.Fatal(err)\n\treturn\n}\n```\n\nTo spawn bash as the initial process inside the container and have the\nprocesses pid returned in order to wait, signal, or kill the process:\n\n```go\nprocess := &libcontainer.Process{\n\tArgs:   []string{\"/bin/bash\"},\n\tEnv:    []string{\"PATH=/bin\"},\n\tUser:   \"daemon\",\n\tStdin:  os.Stdin,\n\tStdout: os.Stdout,\n\tStderr: os.Stderr,\n}\n\nerr := container.Start(process)\nif err != nil {\n\tlogrus.Fatal(err)\n\tcontainer.Destroy()\n\treturn\n}\n\n// wait for the process to finish.\n_, err := process.Wait()\nif err != nil {\n\tlogrus.Fatal(err)\n}\n\n// destroy the container.\ncontainer.Destroy()\n```\n\nAdditional ways to interact with a running container are:\n\n```go\n// return all the pids for all processes running inside the container.\nprocesses, err := container.Processes()\n\n// get detailed cpu, memory, io, and network statistics for the container and\n// it's processes.\nstats, err := container.Stats()\n\n// pause all processes inside the container.\ncontainer.Pause()\n\n// resume all paused processes.\ncontainer.Resume()\n\n// send signal to container's init process.\ncontainer.Signal(signal)\n```\n\n\n#### Checkpoint & Restore\n\nlibcontainer now integrates [CRIU](http://criu.org/) for checkpointing and restoring containers.\nThis let's you save the state of a process running inside a container to disk, and then restore\nthat state into a new process, on the same machine or on another machine.\n\n`criu` version 1.5.2 or higher is required to use checkpoint and restore.\nIf you don't already  have `criu` installed, you can build it from source, following the\n[online instructions](http://criu.org/Installation). `criu` is also installed in the docker image\ngenerated when building libcontainer with docker.\n\n\n## Copyright and license\n\nCode and documentation copyright 2014 Docker, inc. Code released under the Apache 2.0 license.\nDocs released under Creative commons.\n\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/SPEC.md",
    "content": "## Container Specification - v1\n\nThis is the standard configuration for version 1 containers.  It includes\nnamespaces, standard filesystem setup, a default Linux capability set, and\ninformation about resource reservations.  It also has information about any \npopulated environment settings for the processes running inside a container.\n\nAlong with the configuration of how a container is created the standard also\ndiscusses actions that can be performed on a container to manage and inspect\ninformation about the processes running inside.\n\nThe v1 profile is meant to be able to accommodate the majority of applications\nwith a strong security configuration.\n\n### System Requirements and Compatibility\n\nMinimum requirements:\n* Kernel version - 3.10 recommended 2.6.2x minimum(with backported patches)\n* Mounted cgroups with each subsystem in its own hierarchy\n\n\n### Namespaces\n\n|     Flag      | Enabled | \n| ------------  | ------- |\n| CLONE_NEWPID  |    1    |\n| CLONE_NEWUTS  |    1    |\n| CLONE_NEWIPC  |    1    |\n| CLONE_NEWNET  |    1    |\n| CLONE_NEWNS   |    1    |\n| CLONE_NEWUSER |    1    |\n\nNamespaces are created for the container via the `clone` syscall.  \n\n\n### Filesystem\n\nA root filesystem must be provided to a container for execution.  The container\nwill use this root filesystem (rootfs) to jail and spawn processes inside where\nthe binaries and system libraries are local to that directory.  Any binaries\nto be executed must be contained within this rootfs.\n\nMounts that happen inside the container are automatically cleaned up when the\ncontainer exits as the mount namespace is destroyed and the kernel will \nunmount all the mounts that were setup within that namespace.\n\nFor a container to execute properly there are certain filesystems that \nare required to be mounted within the rootfs that the runtime will setup.\n\n|     Path    |  Type  |                  Flags                 |                 Data                     |\n| ----------- | ------ | -------------------------------------- | ---------------------------------------- |\n| /proc       | proc   | MS_NOEXEC,MS_NOSUID,MS_NODEV           |                                          |\n| /dev        | tmpfs  | MS_NOEXEC,MS_STRICTATIME               | mode=755                                 |\n| /dev/shm    | tmpfs  | MS_NOEXEC,MS_NOSUID,MS_NODEV           | mode=1777,size=65536k                    |\n| /dev/mqueue | mqueue | MS_NOEXEC,MS_NOSUID,MS_NODEV           |                                          |\n| /dev/pts    | devpts | MS_NOEXEC,MS_NOSUID                    | newinstance,ptmxmode=0666,mode=620,gid=5 |\n| /sys        | sysfs  | MS_NOEXEC,MS_NOSUID,MS_NODEV,MS_RDONLY |                                          |\n\n\nAfter a container's filesystems are mounted within the newly created \nmount namespace `/dev` will need to be populated with a set of device nodes.\nIt is expected that a rootfs does not need to have any device nodes specified\nfor `/dev` within the rootfs as the container will setup the correct devices\nthat are required for executing a container's process.\n\n|      Path    | Mode |   Access   |\n| ------------ | ---- | ---------- |\n| /dev/null    | 0666 |  rwm       |\n| /dev/zero    | 0666 |  rwm       |\n| /dev/full    | 0666 |  rwm       |\n| /dev/tty     | 0666 |  rwm       |\n| /dev/random  | 0666 |  rwm       |\n| /dev/urandom | 0666 |  rwm       |\n| /dev/fuse    | 0666 |  rwm       |\n\n\n**ptmx**\n`/dev/ptmx` will need to be a symlink to the host's `/dev/ptmx` within\nthe container.  \n\nThe use of a pseudo TTY is optional within a container and it should support both.\nIf a pseudo is provided to the container `/dev/console` will need to be \nsetup by binding the console in `/dev/` after it has been populated and mounted\nin tmpfs.\n\n|      Source     | Destination  | UID GID | Mode | Type |\n| --------------- | ------------ | ------- | ---- | ---- |\n| *pty host path* | /dev/console | 0 0     | 0600 | bind | \n\n\nAfter `/dev/null` has been setup we check for any external links between\nthe container's io, STDIN, STDOUT, STDERR.  If the container's io is pointing\nto `/dev/null` outside the container we close and `dup2` the the `/dev/null` \nthat is local to the container's rootfs.\n\n\nAfter the container has `/proc` mounted a few standard symlinks are setup \nwithin `/dev/` for the io.\n\n|    Source       | Destination |\n| --------------- | ----------- |\n| /proc/self/fd   | /dev/fd     |\n| /proc/self/fd/0 | /dev/stdin  |\n| /proc/self/fd/1 | /dev/stdout |\n| /proc/self/fd/2 | /dev/stderr |\n\nA `pivot_root` is used to change the root for the process, effectively \njailing the process inside the rootfs.\n\n```c\nput_old = mkdir(...);\npivot_root(rootfs, put_old);\nchdir(\"/\");\nunmount(put_old, MS_DETACH);\nrmdir(put_old);\n```\n\nFor container's running with a rootfs inside `ramfs` a `MS_MOVE` combined\nwith a `chroot` is required as `pivot_root` is not supported in `ramfs`.\n\n```c\nmount(rootfs, \"/\", NULL, MS_MOVE, NULL);\nchroot(\".\");\nchdir(\"/\");\n```\n\nThe `umask` is set back to `0022` after the filesystem setup has been completed.\n\n### Resources\n\nCgroups are used to handle resource allocation for containers.  This includes\nsystem resources like cpu, memory, and device access.\n\n| Subsystem  | Enabled |\n| ---------- | ------- |\n| devices    | 1       |\n| memory     | 1       |\n| cpu        | 1       |\n| cpuacct    | 1       |\n| cpuset     | 1       |\n| blkio      | 1       |\n| perf_event | 1       |\n| freezer    | 1       |\n| hugetlb    | 1       |\n| pids       | 1       |\n\n\nAll cgroup subsystem are joined so that statistics can be collected from\neach of the subsystems.  Freezer does not expose any stats but is joined\nso that containers can be paused and resumed.\n\nThe parent process of the container's init must place the init pid inside\nthe correct cgroups before the initialization begins.  This is done so\nthat no processes or threads escape the cgroups.  This sync is \ndone via a pipe ( specified in the runtime section below ) that the container's\ninit process will block waiting for the parent to finish setup.\n\n### Security \n\nThe standard set of Linux capabilities that are set in a container\nprovide a good default for security and flexibility for the applications.\n\n\n|     Capability       | Enabled |\n| -------------------- | ------- |\n| CAP_NET_RAW          | 1       |\n| CAP_NET_BIND_SERVICE | 1       |\n| CAP_AUDIT_READ       | 1       |\n| CAP_AUDIT_WRITE      | 1       |\n| CAP_DAC_OVERRIDE     | 1       |\n| CAP_SETFCAP          | 1       |\n| CAP_SETPCAP          | 1       |\n| CAP_SETGID           | 1       |\n| CAP_SETUID           | 1       |\n| CAP_MKNOD            | 1       |\n| CAP_CHOWN            | 1       |\n| CAP_FOWNER           | 1       |\n| CAP_FSETID           | 1       |\n| CAP_KILL             | 1       |\n| CAP_SYS_CHROOT       | 1       |\n| CAP_NET_BROADCAST    | 0       |\n| CAP_SYS_MODULE       | 0       |\n| CAP_SYS_RAWIO        | 0       |\n| CAP_SYS_PACCT        | 0       |\n| CAP_SYS_ADMIN        | 0       |\n| CAP_SYS_NICE         | 0       |\n| CAP_SYS_RESOURCE     | 0       |\n| CAP_SYS_TIME         | 0       |\n| CAP_SYS_TTY_CONFIG   | 0       |\n| CAP_AUDIT_CONTROL    | 0       |\n| CAP_MAC_OVERRIDE     | 0       |\n| CAP_MAC_ADMIN        | 0       |\n| CAP_NET_ADMIN        | 0       |\n| CAP_SYSLOG           | 0       |\n| CAP_DAC_READ_SEARCH  | 0       |\n| CAP_LINUX_IMMUTABLE  | 0       |\n| CAP_IPC_LOCK         | 0       |\n| CAP_IPC_OWNER        | 0       |\n| CAP_SYS_PTRACE       | 0       |\n| CAP_SYS_BOOT         | 0       |\n| CAP_LEASE            | 0       |\n| CAP_WAKE_ALARM       | 0       |\n| CAP_BLOCK_SUSPEND    | 0       |\n\n\nAdditional security layers like [apparmor](https://wiki.ubuntu.com/AppArmor)\nand [selinux](http://selinuxproject.org/page/Main_Page) can be used with\nthe containers.  A container should support setting an apparmor profile or \nselinux process and mount labels if provided in the configuration.  \n\nStandard apparmor profile:\n```c\n#include <tunables/global>\nprofile <profile_name> flags=(attach_disconnected,mediate_deleted) {\n  #include <abstractions/base>\n  network,\n  capability,\n  file,\n  umount,\n\n  deny @{PROC}/sys/fs/** wklx,\n  deny @{PROC}/sysrq-trigger rwklx,\n  deny @{PROC}/mem rwklx,\n  deny @{PROC}/kmem rwklx,\n  deny @{PROC}/sys/kernel/[^s][^h][^m]* wklx,\n  deny @{PROC}/sys/kernel/*/** wklx,\n\n  deny mount,\n\n  deny /sys/[^f]*/** wklx,\n  deny /sys/f[^s]*/** wklx,\n  deny /sys/fs/[^c]*/** wklx,\n  deny /sys/fs/c[^g]*/** wklx,\n  deny /sys/fs/cg[^r]*/** wklx,\n  deny /sys/firmware/efi/efivars/** rwklx,\n  deny /sys/kernel/security/** rwklx,\n}\n```\n\n*TODO: seccomp work is being done to find a good default config*\n\n### Runtime and Init Process\n\nDuring container creation the parent process needs to talk to the container's init \nprocess and have a form of synchronization.  This is accomplished by creating\na pipe that is passed to the container's init.  When the init process first spawns \nit will block on its side of the pipe until the parent closes its side.  This\nallows the parent to have time to set the new process inside a cgroup hierarchy \nand/or write any uid/gid mappings required for user namespaces.  \nThe pipe is passed to the init process via FD 3.\n\nThe application consuming libcontainer should be compiled statically.  libcontainer\ndoes not define any init process and the arguments provided are used to `exec` the\nprocess inside the application.  There should be no long running init within the \ncontainer spec.\n\nIf a pseudo tty is provided to a container it will open and `dup2` the console\nas the container's STDIN, STDOUT, STDERR as well as mounting the console\nas `/dev/console`.\n\nAn extra set of mounts are provided to a container and setup for use.  A container's\nrootfs can contain some non portable files inside that can cause side effects during\nexecution of a process.  These files are usually created and populated with the container\nspecific information via the runtime.  \n\n**Extra runtime files:**\n* /etc/hosts \n* /etc/resolv.conf\n* /etc/hostname\n* /etc/localtime\n\n\n#### Defaults\n\nThere are a few defaults that can be overridden by users, but in their omission\nthese apply to processes within a container.\n\n|       Type          |             Value              |\n| ------------------- | ------------------------------ |\n| Parent Death Signal | SIGKILL                        | \n| UID                 | 0                              |\n| GID                 | 0                              |\n| GROUPS              | 0, NULL                        |\n| CWD                 | \"/\"                            |\n| $HOME               | Current user's home dir or \"/\" |\n| Readonly rootfs     | false                          |\n| Pseudo TTY          | false                          |\n\n\n## Actions\n\nAfter a container is created there is a standard set of actions that can\nbe done to the container.  These actions are part of the public API for \na container.\n\n|     Action     |                         Description                                |\n| -------------- | ------------------------------------------------------------------ |\n| Get processes  | Return all the pids for processes running inside a container       | \n| Get Stats      | Return resource statistics for the container as a whole            |\n| Wait           | Wait waits on the container's init process ( pid 1 )               |\n| Wait Process   | Wait on any of the container's processes returning the exit status | \n| Destroy        | Kill the container's init process and remove any filesystem state  |\n| Signal         | Send a signal to the container's init process                      |\n| Signal Process | Send a signal to any of the container's processes                  |\n| Pause          | Pause all processes inside the container                           |\n| Resume         | Resume all processes inside the container if paused                |\n| Exec           | Execute a new process inside of the container  ( requires setns )  |\n| Set            | Setup configs of the container after it's created                  |\n\n### Execute a new process inside of a running container.\n\nUser can execute a new process inside of a running container. Any binaries to be\nexecuted must be accessible within the container's rootfs.\n\nThe started process will run inside the container's rootfs. Any changes\nmade by the process to the container's filesystem will persist after the\nprocess finished executing.\n\nThe started process will join all the container's existing namespaces. When the\ncontainer is paused, the process will also be paused and will resume when\nthe container is unpaused.  The started process will only run when the container's\nprimary process (PID 1) is running, and will not be restarted when the container\nis restarted.\n\n#### Planned additions\n\nThe started process will have its own cgroups nested inside the container's\ncgroups. This is used for process tracking and optionally resource allocation\nhandling for the new process. Freezer cgroup is required, the rest of the cgroups\nare optional. The process executor must place its pid inside the correct\ncgroups before starting the process. This is done so that no child processes or\nthreads can escape the cgroups.\n\nWhen the process is stopped, the process executor will try (in a best-effort way)\nto stop all its children and remove the sub-cgroups.\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/user/MAINTAINERS",
    "content": "Tianon Gravi <admwiggin@gmail.com> (@tianon)\nAleksa Sarai <cyphar@cyphar.com> (@cyphar)\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go",
    "content": "package user\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n)\n\nvar (\n\t// The current operating system does not provide the required data for user lookups.\n\tErrUnsupported = errors.New(\"user lookup: operating system does not provide passwd-formatted data\")\n\t// No matching entries found in file.\n\tErrNoPasswdEntries = errors.New(\"no matching entries in passwd file\")\n\tErrNoGroupEntries  = errors.New(\"no matching entries in group file\")\n)\n\nfunc lookupUser(filter func(u User) bool) (User, error) {\n\t// Get operating system-specific passwd reader-closer.\n\tpasswd, err := GetPasswd()\n\tif err != nil {\n\t\treturn User{}, err\n\t}\n\tdefer passwd.Close()\n\n\t// Get the users.\n\tusers, err := ParsePasswdFilter(passwd, filter)\n\tif err != nil {\n\t\treturn User{}, err\n\t}\n\n\t// No user entries found.\n\tif len(users) == 0 {\n\t\treturn User{}, ErrNoPasswdEntries\n\t}\n\n\t// Assume the first entry is the \"correct\" one.\n\treturn users[0], nil\n}\n\n// CurrentUser looks up the current user by their user id in /etc/passwd. If the\n// user cannot be found (or there is no /etc/passwd file on the filesystem),\n// then CurrentUser returns an error.\nfunc CurrentUser() (User, error) {\n\treturn LookupUid(syscall.Getuid())\n}\n\n// LookupUser looks up a user by their username in /etc/passwd. If the user\n// cannot be found (or there is no /etc/passwd file on the filesystem), then\n// LookupUser returns an error.\nfunc LookupUser(username string) (User, error) {\n\treturn lookupUser(func(u User) bool {\n\t\treturn u.Name == username\n\t})\n}\n\n// LookupUid looks up a user by their user id in /etc/passwd. If the user cannot\n// be found (or there is no /etc/passwd file on the filesystem), then LookupId\n// returns an error.\nfunc LookupUid(uid int) (User, error) {\n\treturn lookupUser(func(u User) bool {\n\t\treturn u.Uid == uid\n\t})\n}\n\nfunc lookupGroup(filter func(g Group) bool) (Group, error) {\n\t// Get operating system-specific group reader-closer.\n\tgroup, err := GetGroup()\n\tif err != nil {\n\t\treturn Group{}, err\n\t}\n\tdefer group.Close()\n\n\t// Get the users.\n\tgroups, err := ParseGroupFilter(group, filter)\n\tif err != nil {\n\t\treturn Group{}, err\n\t}\n\n\t// No user entries found.\n\tif len(groups) == 0 {\n\t\treturn Group{}, ErrNoGroupEntries\n\t}\n\n\t// Assume the first entry is the \"correct\" one.\n\treturn groups[0], nil\n}\n\n// CurrentGroup looks up the current user's group by their primary group id's\n// entry in /etc/passwd. If the group cannot be found (or there is no\n// /etc/group file on the filesystem), then CurrentGroup returns an error.\nfunc CurrentGroup() (Group, error) {\n\treturn LookupGid(syscall.Getgid())\n}\n\n// LookupGroup looks up a group by its name in /etc/group. If the group cannot\n// be found (or there is no /etc/group file on the filesystem), then LookupGroup\n// returns an error.\nfunc LookupGroup(groupname string) (Group, error) {\n\treturn lookupGroup(func(g Group) bool {\n\t\treturn g.Name == groupname\n\t})\n}\n\n// LookupGid looks up a group by its group id in /etc/group. If the group cannot\n// be found (or there is no /etc/group file on the filesystem), then LookupGid\n// returns an error.\nfunc LookupGid(gid int) (Group, error) {\n\treturn lookupGroup(func(g Group) bool {\n\t\treturn g.Gid == gid\n\t})\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go",
    "content": "// +build darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage user\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\n// Unix-specific path to the passwd and group formatted files.\nconst (\n\tunixPasswdPath = \"/etc/passwd\"\n\tunixGroupPath  = \"/etc/group\"\n)\n\nfunc GetPasswdPath() (string, error) {\n\treturn unixPasswdPath, nil\n}\n\nfunc GetPasswd() (io.ReadCloser, error) {\n\treturn os.Open(unixPasswdPath)\n}\n\nfunc GetGroupPath() (string, error) {\n\treturn unixGroupPath, nil\n}\n\nfunc GetGroup() (io.ReadCloser, error) {\n\treturn os.Open(unixGroupPath)\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go",
    "content": "// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris\n\npackage user\n\nimport \"io\"\n\nfunc GetPasswdPath() (string, error) {\n\treturn \"\", ErrUnsupported\n}\n\nfunc GetPasswd() (io.ReadCloser, error) {\n\treturn nil, ErrUnsupported\n}\n\nfunc GetGroupPath() (string, error) {\n\treturn \"\", ErrUnsupported\n}\n\nfunc GetGroup() (io.ReadCloser, error) {\n\treturn nil, ErrUnsupported\n}\n"
  },
  {
    "path": "vendor/github.com/opencontainers/runc/libcontainer/user/user.go",
    "content": "package user\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tminId = 0\n\tmaxId = 1<<31 - 1 //for 32-bit systems compatibility\n)\n\nvar (\n\tErrRange = fmt.Errorf(\"uids and gids must be in range %d-%d\", minId, maxId)\n)\n\ntype User struct {\n\tName  string\n\tPass  string\n\tUid   int\n\tGid   int\n\tGecos string\n\tHome  string\n\tShell string\n}\n\ntype Group struct {\n\tName string\n\tPass string\n\tGid  int\n\tList []string\n}\n\nfunc parseLine(line string, v ...interface{}) {\n\tif line == \"\" {\n\t\treturn\n\t}\n\n\tparts := strings.Split(line, \":\")\n\tfor i, p := range parts {\n\t\t// Ignore cases where we don't have enough fields to populate the arguments.\n\t\t// Some configuration files like to misbehave.\n\t\tif len(v) <= i {\n\t\t\tbreak\n\t\t}\n\n\t\t// Use the type of the argument to figure out how to parse it, scanf() style.\n\t\t// This is legit.\n\t\tswitch e := v[i].(type) {\n\t\tcase *string:\n\t\t\t*e = p\n\t\tcase *int:\n\t\t\t// \"numbers\", with conversion errors ignored because of some misbehaving configuration files.\n\t\t\t*e, _ = strconv.Atoi(p)\n\t\tcase *[]string:\n\t\t\t// Comma-separated lists.\n\t\t\tif p != \"\" {\n\t\t\t\t*e = strings.Split(p, \",\")\n\t\t\t} else {\n\t\t\t\t*e = []string{}\n\t\t\t}\n\t\tdefault:\n\t\t\t// Someone goof'd when writing code using this function. Scream so they can hear us.\n\t\t\tpanic(fmt.Sprintf(\"parseLine only accepts {*string, *int, *[]string} as arguments! %#v is not a pointer!\", e))\n\t\t}\n\t}\n}\n\nfunc ParsePasswdFile(path string) ([]User, error) {\n\tpasswd, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer passwd.Close()\n\treturn ParsePasswd(passwd)\n}\n\nfunc ParsePasswd(passwd io.Reader) ([]User, error) {\n\treturn ParsePasswdFilter(passwd, nil)\n}\n\nfunc ParsePasswdFileFilter(path string, filter func(User) bool) ([]User, error) {\n\tpasswd, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer passwd.Close()\n\treturn ParsePasswdFilter(passwd, filter)\n}\n\nfunc ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) {\n\tif r == nil {\n\t\treturn nil, fmt.Errorf(\"nil source for passwd-formatted data\")\n\t}\n\n\tvar (\n\t\ts   = bufio.NewScanner(r)\n\t\tout = []User{}\n\t)\n\n\tfor s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tline := strings.TrimSpace(s.Text())\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// see: man 5 passwd\n\t\t//  name:password:UID:GID:GECOS:directory:shell\n\t\t// Name:Pass:Uid:Gid:Gecos:Home:Shell\n\t\t//  root:x:0:0:root:/root:/bin/bash\n\t\t//  adm:x:3:4:adm:/var/adm:/bin/false\n\t\tp := User{}\n\t\tparseLine(line, &p.Name, &p.Pass, &p.Uid, &p.Gid, &p.Gecos, &p.Home, &p.Shell)\n\n\t\tif filter == nil || filter(p) {\n\t\t\tout = append(out, p)\n\t\t}\n\t}\n\n\treturn out, nil\n}\n\nfunc ParseGroupFile(path string) ([]Group, error) {\n\tgroup, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer group.Close()\n\treturn ParseGroup(group)\n}\n\nfunc ParseGroup(group io.Reader) ([]Group, error) {\n\treturn ParseGroupFilter(group, nil)\n}\n\nfunc ParseGroupFileFilter(path string, filter func(Group) bool) ([]Group, error) {\n\tgroup, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer group.Close()\n\treturn ParseGroupFilter(group, filter)\n}\n\nfunc ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) {\n\tif r == nil {\n\t\treturn nil, fmt.Errorf(\"nil source for group-formatted data\")\n\t}\n\n\tvar (\n\t\ts   = bufio.NewScanner(r)\n\t\tout = []Group{}\n\t)\n\n\tfor s.Scan() {\n\t\tif err := s.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\ttext := s.Text()\n\t\tif text == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// see: man 5 group\n\t\t//  group_name:password:GID:user_list\n\t\t// Name:Pass:Gid:List\n\t\t//  root:x:0:root\n\t\t//  adm:x:4:root,adm,daemon\n\t\tp := Group{}\n\t\tparseLine(text, &p.Name, &p.Pass, &p.Gid, &p.List)\n\n\t\tif filter == nil || filter(p) {\n\t\t\tout = append(out, p)\n\t\t}\n\t}\n\n\treturn out, nil\n}\n\ntype ExecUser struct {\n\tUid   int\n\tGid   int\n\tSgids []int\n\tHome  string\n}\n\n// GetExecUserPath is a wrapper for GetExecUser. It reads data from each of the\n// given file paths and uses that data as the arguments to GetExecUser. If the\n// files cannot be opened for any reason, the error is ignored and a nil\n// io.Reader is passed instead.\nfunc GetExecUserPath(userSpec string, defaults *ExecUser, passwdPath, groupPath string) (*ExecUser, error) {\n\tpasswd, err := os.Open(passwdPath)\n\tif err != nil {\n\t\tpasswd = nil\n\t} else {\n\t\tdefer passwd.Close()\n\t}\n\n\tgroup, err := os.Open(groupPath)\n\tif err != nil {\n\t\tgroup = nil\n\t} else {\n\t\tdefer group.Close()\n\t}\n\n\treturn GetExecUser(userSpec, defaults, passwd, group)\n}\n\n// GetExecUser parses a user specification string (using the passwd and group\n// readers as sources for /etc/passwd and /etc/group data, respectively). In\n// the case of blank fields or missing data from the sources, the values in\n// defaults is used.\n//\n// GetExecUser will return an error if a user or group literal could not be\n// found in any entry in passwd and group respectively.\n//\n// Examples of valid user specifications are:\n//     * \"\"\n//     * \"user\"\n//     * \"uid\"\n//     * \"user:group\"\n//     * \"uid:gid\n//     * \"user:gid\"\n//     * \"uid:group\"\n//\n// It should be noted that if you specify a numeric user or group id, they will\n// not be evaluated as usernames (only the metadata will be filled). So attempting\n// to parse a user with user.Name = \"1337\" will produce the user with a UID of\n// 1337.\nfunc GetExecUser(userSpec string, defaults *ExecUser, passwd, group io.Reader) (*ExecUser, error) {\n\tif defaults == nil {\n\t\tdefaults = new(ExecUser)\n\t}\n\n\t// Copy over defaults.\n\tuser := &ExecUser{\n\t\tUid:   defaults.Uid,\n\t\tGid:   defaults.Gid,\n\t\tSgids: defaults.Sgids,\n\t\tHome:  defaults.Home,\n\t}\n\n\t// Sgids slice *cannot* be nil.\n\tif user.Sgids == nil {\n\t\tuser.Sgids = []int{}\n\t}\n\n\t// Allow for userArg to have either \"user\" syntax, or optionally \"user:group\" syntax\n\tvar userArg, groupArg string\n\tparseLine(userSpec, &userArg, &groupArg)\n\n\t// Convert userArg and groupArg to be numeric, so we don't have to execute\n\t// Atoi *twice* for each iteration over lines.\n\tuidArg, uidErr := strconv.Atoi(userArg)\n\tgidArg, gidErr := strconv.Atoi(groupArg)\n\n\t// Find the matching user.\n\tusers, err := ParsePasswdFilter(passwd, func(u User) bool {\n\t\tif userArg == \"\" {\n\t\t\t// Default to current state of the user.\n\t\t\treturn u.Uid == user.Uid\n\t\t}\n\n\t\tif uidErr == nil {\n\t\t\t// If the userArg is numeric, always treat it as a UID.\n\t\t\treturn uidArg == u.Uid\n\t\t}\n\n\t\treturn u.Name == userArg\n\t})\n\n\t// If we can't find the user, we have to bail.\n\tif err != nil && passwd != nil {\n\t\tif userArg == \"\" {\n\t\t\tuserArg = strconv.Itoa(user.Uid)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"unable to find user %s: %v\", userArg, err)\n\t}\n\n\tvar matchedUserName string\n\tif len(users) > 0 {\n\t\t// First match wins, even if there's more than one matching entry.\n\t\tmatchedUserName = users[0].Name\n\t\tuser.Uid = users[0].Uid\n\t\tuser.Gid = users[0].Gid\n\t\tuser.Home = users[0].Home\n\t} else if userArg != \"\" {\n\t\t// If we can't find a user with the given username, the only other valid\n\t\t// option is if it's a numeric username with no associated entry in passwd.\n\n\t\tif uidErr != nil {\n\t\t\t// Not numeric.\n\t\t\treturn nil, fmt.Errorf(\"unable to find user %s: %v\", userArg, ErrNoPasswdEntries)\n\t\t}\n\t\tuser.Uid = uidArg\n\n\t\t// Must be inside valid uid range.\n\t\tif user.Uid < minId || user.Uid > maxId {\n\t\t\treturn nil, ErrRange\n\t\t}\n\n\t\t// Okay, so it's numeric. We can just roll with this.\n\t}\n\n\t// On to the groups. If we matched a username, we need to do this because of\n\t// the supplementary group IDs.\n\tif groupArg != \"\" || matchedUserName != \"\" {\n\t\tgroups, err := ParseGroupFilter(group, func(g Group) bool {\n\t\t\t// If the group argument isn't explicit, we'll just search for it.\n\t\t\tif groupArg == \"\" {\n\t\t\t\t// Check if user is a member of this group.\n\t\t\t\tfor _, u := range g.List {\n\t\t\t\t\tif u == matchedUserName {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif gidErr == nil {\n\t\t\t\t// If the groupArg is numeric, always treat it as a GID.\n\t\t\t\treturn gidArg == g.Gid\n\t\t\t}\n\n\t\t\treturn g.Name == groupArg\n\t\t})\n\t\tif err != nil && group != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to find groups for spec %v: %v\", matchedUserName, err)\n\t\t}\n\n\t\t// Only start modifying user.Gid if it is in explicit form.\n\t\tif groupArg != \"\" {\n\t\t\tif len(groups) > 0 {\n\t\t\t\t// First match wins, even if there's more than one matching entry.\n\t\t\t\tuser.Gid = groups[0].Gid\n\t\t\t} else if groupArg != \"\" {\n\t\t\t\t// If we can't find a group with the given name, the only other valid\n\t\t\t\t// option is if it's a numeric group name with no associated entry in group.\n\n\t\t\t\tif gidErr != nil {\n\t\t\t\t\t// Not numeric.\n\t\t\t\t\treturn nil, fmt.Errorf(\"unable to find group %s: %v\", groupArg, ErrNoGroupEntries)\n\t\t\t\t}\n\t\t\t\tuser.Gid = gidArg\n\n\t\t\t\t// Must be inside valid gid range.\n\t\t\t\tif user.Gid < minId || user.Gid > maxId {\n\t\t\t\t\treturn nil, ErrRange\n\t\t\t\t}\n\n\t\t\t\t// Okay, so it's numeric. We can just roll with this.\n\t\t\t}\n\t\t} else if len(groups) > 0 {\n\t\t\t// Supplementary group ids only make sense if in the implicit form.\n\t\t\tuser.Sgids = make([]int, len(groups))\n\t\t\tfor i, group := range groups {\n\t\t\t\tuser.Sgids[i] = group.Gid\n\t\t\t}\n\t\t}\n\t}\n\n\treturn user, nil\n}\n\n// GetAdditionalGroups looks up a list of groups by name or group id\n// against the given /etc/group formatted data. If a group name cannot\n// be found, an error will be returned. If a group id cannot be found,\n// or the given group data is nil, the id will be returned as-is\n// provided it is in the legal range.\nfunc GetAdditionalGroups(additionalGroups []string, group io.Reader) ([]int, error) {\n\tvar groups = []Group{}\n\tif group != nil {\n\t\tvar err error\n\t\tgroups, err = ParseGroupFilter(group, func(g Group) bool {\n\t\t\tfor _, ag := range additionalGroups {\n\t\t\t\tif g.Name == ag || strconv.Itoa(g.Gid) == ag {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Unable to find additional groups %v: %v\", additionalGroups, err)\n\t\t}\n\t}\n\n\tgidMap := make(map[int]struct{})\n\tfor _, ag := range additionalGroups {\n\t\tvar found bool\n\t\tfor _, g := range groups {\n\t\t\t// if we found a matched group either by name or gid, take the\n\t\t\t// first matched as correct\n\t\t\tif g.Name == ag || strconv.Itoa(g.Gid) == ag {\n\t\t\t\tif _, ok := gidMap[g.Gid]; !ok {\n\t\t\t\t\tgidMap[g.Gid] = struct{}{}\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// we asked for a group but didn't find it. let's check to see\n\t\t// if we wanted a numeric group\n\t\tif !found {\n\t\t\tgid, err := strconv.Atoi(ag)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"Unable to find group %s\", ag)\n\t\t\t}\n\t\t\t// Ensure gid is inside gid range.\n\t\t\tif gid < minId || gid > maxId {\n\t\t\t\treturn nil, ErrRange\n\t\t\t}\n\t\t\tgidMap[gid] = struct{}{}\n\t\t}\n\t}\n\tgids := []int{}\n\tfor gid := range gidMap {\n\t\tgids = append(gids, gid)\n\t}\n\treturn gids, nil\n}\n\n// GetAdditionalGroupsPath is a wrapper around GetAdditionalGroups\n// that opens the groupPath given and gives it as an argument to\n// GetAdditionalGroups.\nfunc GetAdditionalGroupsPath(additionalGroups []string, groupPath string) ([]int, error) {\n\tgroup, err := os.Open(groupPath)\n\tif err == nil {\n\t\tdefer group.Close()\n\t}\n\treturn GetAdditionalGroups(additionalGroups, group)\n}\n"
  },
  {
    "path": "vendor/github.com/packethost/packngo/.drone.yml",
    "content": "workspace:\n  base: /go\n  path: src/github.com/packethost/packngo\n\npipeline:\n  lint:\n    image: golang:1.8\n    commands:\n      - go get -v -u github.com/alecthomas/gometalinter\n      - gometalinter --install\n      - go get -v ./...\n      - |\n        gometalinter --disable=gas ./... || :\n      - |\n        gometalinter --disable-all --enable=gas ./... || :\n      - |\n        gofmt -d . | (! grep '.') || ok=false\n      - if ! $ok; then exit 1; fi\n\n  build:\n    image: golang:1.8\n    commands:\n      - go build -i -v ./...\n\n  test:\n    image: golang:1.8\n    commands:\n      - go test ./...\n"
  },
  {
    "path": "vendor/github.com/packethost/packngo/.gitignore",
    "content": "### Go template\n# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n\n# idea\n.idea**/**\n"
  },
  {
    "path": "vendor/github.com/packethost/packngo/LICENSE.txt",
    "content": "Copyright (c) 2014 The packngo AUTHORS. All rights reserved.\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n======================\nPortions of the client are based on code at:\nhttps://github.com/google/go-github/ and\nhttps://github.com/digitalocean/godo\n\nCopyright (c) 2013 The go-github 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\n"
  },
  {
    "path": "vendor/github.com/packethost/packngo/README.md",
    "content": "# packngo\nPacket Go Api Client\n\n![](https://www.packet.net/media/labs/images/1679091c5a880faf6fb5e6087eb1b2dc/ULY7-hero.png)\n\nCommitting\n----------\n\nBefore committing, it's a good idea to run `gofmt -w *.go`. ([gofmt](https://golang.org/cmd/gofmt/))\n"
  },
  {
    "path": "vendor/github.com/packethost/packngo/metadata/metadata.go",
    "content": "package metadata\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n)\n\nconst BaseURL = \"https://metadata.packet.net\"\n\nfunc GetMetadata() (*CurrentDevice, error) {\n\tres, err := http.Get(BaseURL + \"/metadata\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tb, err := ioutil.ReadAll(res.Body)\n\tres.Body.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar result struct {\n\t\tError string `json:\"error\"`\n\t\t*CurrentDevice\n\t}\n\tif err := json.Unmarshal(b, &result); err != nil {\n\t\tif res.StatusCode >= 400 {\n\t\t\treturn nil, errors.New(res.Status)\n\t\t}\n\t\treturn nil, err\n\t}\n\tif result.Error != \"\" {\n\t\treturn nil, errors.New(result.Error)\n\t}\n\treturn result.CurrentDevice, nil\n}\n\nfunc GetUserData() ([]byte, error) {\n\tres, err := http.Get(BaseURL + \"/userdata\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tb, err := ioutil.ReadAll(res.Body)\n\tres.Body.Close()\n\treturn b, err\n}\n\ntype AddressFamily int\n\nconst (\n\tIPv4 = AddressFamily(4)\n\tIPv6 = AddressFamily(6)\n)\n\ntype AddressInfo struct {\n\tID          string        `json:\"id\"`\n\tFamily      AddressFamily `json:\"address_family\"`\n\tPublic      bool          `json:\"public\"`\n\tManagement  bool          `json:\"management\"`\n\tAddress     net.IP        `json:\"address\"`\n\tNetworkMask net.IP        `json:\"netmask\"`\n\tGateway     net.IP        `json:\"gateway\"`\n\tNetworkBits int           `json:\"cidr\"`\n\n\t// These are available, but not really needed:\n\t//   Network     net.IP `json:\"network\"`\n}\n\ntype BondingMode int\n\nconst (\n\tBondingBalanceRR    = BondingMode(0)\n\tBondingActiveBackup = BondingMode(1)\n\tBondingBalanceXOR   = BondingMode(2)\n\tBondingBroadcast    = BondingMode(3)\n\tBondingLACP         = BondingMode(4)\n\tBondingBalanceTLB   = BondingMode(5)\n\tBondingBalanceALB   = BondingMode(6)\n)\n\nvar bondingModeStrings = map[BondingMode]string{\n\tBondingBalanceRR:    \"balance-rr\",\n\tBondingActiveBackup: \"active-backup\",\n\tBondingBalanceXOR:   \"balance-xor\",\n\tBondingBroadcast:    \"broadcast\",\n\tBondingLACP:         \"802.3ad\",\n\tBondingBalanceTLB:   \"balance-tlb\",\n\tBondingBalanceALB:   \"balance-alb\",\n}\n\nfunc (m BondingMode) String() string {\n\tif str, ok := bondingModeStrings[m]; ok {\n\t\treturn str\n\t}\n\treturn fmt.Sprintf(\"%d\", m)\n}\n\ntype CurrentDevice struct {\n\tID       string          `json:\"id\"`\n\tHostname string          `json:\"hostname\"`\n\tIQN      string          `json:\"iqn\"`\n\tPlan     string          `json:\"plan\"`\n\tFacility string          `json:\"facility\"`\n\tTags     []string        `json:\"tags\"`\n\tSSHKeys  []string        `json:\"ssh_keys\"`\n\tOS       OperatingSystem `json:\"operating_system\"`\n\tNetwork  NetworkInfo     `json:\"network\"`\n\tVolumes  []VolumeInfo    `json:\"volume\"`\n\n\t// This is available, but is actually inaccurate, currently:\n\t//   APIBaseURL string          `json:\"api_url\"`\n}\n\ntype InterfaceInfo struct {\n\tName string `json:\"name\"`\n\tMAC  string `json:\"mac\"`\n}\n\nfunc (i *InterfaceInfo) ParseMAC() (net.HardwareAddr, error) {\n\treturn net.ParseMAC(i.MAC)\n}\n\ntype NetworkInfo struct {\n\tInterfaces []InterfaceInfo `json:\"interfaces\"`\n\tAddresses  []AddressInfo   `json:\"addresses\"`\n\n\tBonding struct {\n\t\tMode BondingMode `json:\"mode\"`\n\t} `json:\"bonding\"`\n}\n\nfunc (n *NetworkInfo) BondingMode() BondingMode {\n\treturn n.Bonding.Mode\n}\n\ntype OperatingSystem struct {\n\tSlug    string `json:\"slug\"`\n\tDistro  string `json:\"distro\"`\n\tVersion string `json:\"version\"`\n}\n\ntype VolumeInfo struct {\n\tName string   `json:\"name\"`\n\tIQN  string   `json:\"iqn\"`\n\tIPs  []net.IP `json:\"ips\"`\n\n\tCapacity struct {\n\t\tSize int    `json:\"size,string\"`\n\t\tUnit string `json:\"unit\"`\n\t} `json:\"capacity\"`\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/.travis.yml",
    "content": "language: go\n\nos:\n  - linux\n  - osx\n\nbefore_install:\n  - ulimit -n 4096\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/CONTRIBUTORS",
    "content": "Dmitri Popov\nMojo Talantikite\nGiovanni Bajo\nAndrew Danforth\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/LICENSE",
    "content": "The MIT License (MIT)\nCopyright (c) 2016 Dmitri Popov\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/README.md",
    "content": "TFTP server and client library for Golang\n=========================================\n\n[![GoDoc](https://godoc.org/github.com/pin/tftp?status.svg)](https://godoc.org/github.com/pin/tftp)\n[![Build Status](https://travis-ci.org/pin/tftp.svg?branch=master)](https://travis-ci.org/pin/tftp)\n\nImplements:\n * [RFC 1350](https://tools.ietf.org/html/rfc1350) - The TFTP Protocol (Revision 2)\n * [RFC 2347](https://tools.ietf.org/html/rfc2347) - TFTP Option Extension\n * [RFC 2348](https://tools.ietf.org/html/rfc2348) - TFTP Blocksize Option\n\nPartially implements (tsize server side only):\n * [RFC 2349](https://tools.ietf.org/html/rfc2349) - TFTP Timeout Interval and Transfer Size Options\n\nSet of features is sufficient for PXE boot support.\n\n``` go\nimport \"github.com/pin/tftp\"\n```\n\nThe package is cohesive to Golang `io`. Particularly it implements\n`io.ReaderFrom` and `io.WriterTo` interfaces. That allows efficient data\ntransmission without unnecessary memory copying and allocations.\n\n\nTFTP Server\n-----------\n\n```go\n\n// readHandler is called when client starts file download from server\nfunc readHandler(filename string, rf io.ReaderFrom) error {\n\tfile, err := os.Open(filename)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\treturn err\n\t}\n\tn, err := rf.ReadFrom(file)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\treturn err\n\t}\n\tfmt.Printf(\"%d bytes sent\\n\", n)\n\treturn nil\n}\n\n// writeHandler is called when client starts file upload to server\nfunc writeHandler(filename string, wt io.WriterTo) error {\n\tfile, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0644)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\treturn err\n\t}\n\tn, err := wt.WriteTo(file)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\treturn err\n\t}\n\tfmt.Printf(\"%d bytes received\\n\", n)\n\treturn nil\n}\n\nfunc main() {\n\t// use nil in place of handler to disable read or write operations\n\ts := tftp.NewServer(readHandler, writeHandler)\n\ts.SetTimeout(5 * time.Second) // optional\n\terr := s.ListenAndServe(\":69\") // blocks until s.Shutdown() is called\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stdout, \"server: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n```\n\nTFTP Client\n-----------\nUpload file to server:\n\n```go\nc, err := tftp.NewClient(\"172.16.4.21:69\")\nfile, err := os.Open(path)\nc.SetTimeout(5 * time.Second) // optional\nrf, err := c.Send(\"foobar.txt\", \"octet\")\nn, err := rf.ReadFrom(file)\nfmt.Printf(\"%d bytes sent\\n\", n)\n```\n\nDownload file from server:\n\n```go\nc, err := tftp.NewClient(\"172.16.4.21:69\")\nwt, err := c.Receive(\"foobar.txt\", \"octet\")\nfile, err := os.Create(path)\n// Optionally obtain transfer size before actual data.\nif n, ok := wt.(IncomingTransfer).Size(); ok {\n\tfmt.Printf(\"Transfer size: %d\\n\", n)\n}\nn, err := wt.WriteTo(file)\nfmt.Printf(\"%d bytes received\\n\", n)\n```\n\nNote: please handle errors better :)\n\nTSize option\n------------\n\nPXE boot ROM often expects tsize option support from a server: client\n(e.g. computer that boots over the network) wants to know size of a\ndownload before the actual data comes. Server has to obtain stream\nsize and send it to a client.\n\nOften it will happen automatically because TFTP library tries to check\nif `io.Reader` provided to `ReadFrom` method also satisfies\n`io.Seeker` interface (`os.File` for instance) and uses `Seek` to\ndetermine file size.\n\nIn case `io.Reader` you provide to `ReadFrom` in read handler does not\nsatisfy `io.Seeker` interface or you do not want TFTP library to call\n`Seek` on your reader but still want to respond with tsize option\nduring outgoing request you can use an `OutgoingTransfer` interface:\n\n```go\n\nfunc readHandler(filename string, rf io.ReaderFrom) error {\n\t...\n\t// Set transfer size before calling ReadFrom.\n\trf.(tftp.OutgoingTransfer).SetSize(myFileSize)\n\t...\n\t// ReadFrom ...\n\n```\n\nSimilarly, it is possible to obtain size of a file that is about to be\nreceived using `IncomingTransfer` interface (see `Size` method).\n\nRemote Address\n--------------\n\nThe `OutgoingTransfer` and `IncomingTransfer` interfaces also provide the\n`RemoteAddr` method which returns the peer IP address and port as a\n`net.UDPAddr`.  This can be used for detailed logging in a server handler.\n\n```go\n\nfunc readHandler(filename string, rf io.ReaderFrom) error {\n        ...\n        raddr := rf.(tftp.OutgoingTransfer).RemoteAddr()\n        log.Println(\"RRQ from\", raddr.String())\n        ...\n        // ReadFrom ...\n```\n\nBackoff\n-------\n\nThe default backoff before retransmitting an unacknowledged packet is a\nrandom duration between 0 and 1 second.  This behavior can be overridden\nin clients and servers by providing a custom backoff calculation function.\n\n```go\n\ts := tftp.NewServer(readHandler, writeHandler)\n\ts.SetBackoff(func (attempts int) time.Duration {\n\t\treturn time.Duration(attempts) * time.Second\n\t})\n```\n\nor, for no backoff\n\n```go\n\ts.SetBackoff(func (int) time.Duration { return 0 })\n```\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/backoff.go",
    "content": "package tftp\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n)\n\nconst (\n\tdefaultTimeout = 5 * time.Second\n\tdefaultRetries = 5\n)\n\ntype backoffFunc func(int) time.Duration\n\ntype backoff struct {\n\tattempt int\n\thandler backoffFunc\n}\n\nfunc (b *backoff) reset() {\n\tb.attempt = 0\n}\n\nfunc (b *backoff) count() int {\n\treturn b.attempt\n}\n\nfunc (b *backoff) backoff() {\n\tif b.handler == nil {\n\t\ttime.Sleep(time.Duration(rand.Int63n(int64(time.Second))))\n\t} else {\n\t\ttime.Sleep(b.handler(b.attempt))\n\t}\n\tb.attempt++\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/client.go",
    "content": "package tftp\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// NewClient creates TFTP client for server on address provided.\nfunc NewClient(addr string) (*Client, error) {\n\ta, err := net.ResolveUDPAddr(\"udp\", addr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"resolving address %s: %v\", addr, err)\n\t}\n\treturn &Client{\n\t\taddr:    a,\n\t\ttimeout: defaultTimeout,\n\t\tretries: defaultRetries,\n\t}, nil\n}\n\n// SetTimeout sets maximum time client waits for single network round-trip to succeed.\n// Default is 5 seconds.\nfunc (c *Client) SetTimeout(t time.Duration) {\n\tif t <= 0 {\n\t\tc.timeout = defaultTimeout\n\t}\n\tc.timeout = t\n}\n\n// SetRetries sets maximum number of attempts client made to transmit a packet.\n// Default is 5 attempts.\nfunc (c *Client) SetRetries(count int) {\n\tif count < 1 {\n\t\tc.retries = defaultRetries\n\t}\n\tc.retries = count\n}\n\n// SetBackoff sets a user provided function that is called to provide a\n// backoff duration prior to retransmitting an unacknowledged packet.\nfunc (c *Client) SetBackoff(h backoffFunc) {\n\tc.backoff = h\n}\n\ntype Client struct {\n\taddr    *net.UDPAddr\n\ttimeout time.Duration\n\tretries int\n\tbackoff backoffFunc\n\tblksize int\n\ttsize   bool\n}\n\n// Send starts outgoing file transmission. It returns io.ReaderFrom or error.\nfunc (c Client) Send(filename string, mode string) (io.ReaderFrom, error) {\n\tconn, err := net.ListenUDP(\"udp\", &net.UDPAddr{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts := &sender{\n\t\tsend:    make([]byte, datagramLength),\n\t\treceive: make([]byte, datagramLength),\n\t\tconn:    conn,\n\t\tretry:   &backoff{handler: c.backoff},\n\t\ttimeout: c.timeout,\n\t\tretries: c.retries,\n\t\taddr:    c.addr,\n\t\tmode:    mode,\n\t}\n\tif c.blksize != 0 {\n\t\ts.opts = make(options)\n\t\ts.opts[\"blksize\"] = strconv.Itoa(c.blksize)\n\t}\n\tn := packRQ(s.send, opWRQ, filename, mode, s.opts)\n\taddr, err := s.sendWithRetry(n)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts.addr = addr\n\ts.opts = nil\n\treturn s, nil\n}\n\n// Receive starts incoming file transmission. It returns io.WriterTo or error.\nfunc (c Client) Receive(filename string, mode string) (io.WriterTo, error) {\n\tconn, err := net.ListenUDP(\"udp\", &net.UDPAddr{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif c.timeout == 0 {\n\t\tc.timeout = defaultTimeout\n\t}\n\tr := &receiver{\n\t\tsend:     make([]byte, datagramLength),\n\t\treceive:  make([]byte, datagramLength),\n\t\tconn:     conn,\n\t\tretry:    &backoff{handler: c.backoff},\n\t\ttimeout:  c.timeout,\n\t\tretries:  c.retries,\n\t\taddr:     c.addr,\n\t\tautoTerm: true,\n\t\tblock:    1,\n\t\tmode:     mode,\n\t}\n\tif c.blksize != 0 || c.tsize {\n\t\tr.opts = make(options)\n\t}\n\tif c.blksize != 0 {\n\t\tr.opts[\"blksize\"] = strconv.Itoa(c.blksize)\n\t}\n\tif c.tsize {\n\t\tr.opts[\"tsize\"] = \"0\"\n\t}\n\tn := packRQ(r.send, opRRQ, filename, mode, r.opts)\n\tl, addr, err := r.receiveWithRetry(n)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tr.l = l\n\tr.addr = addr\n\treturn r, nil\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/netascii/netascii.go",
    "content": "package netascii\n\n// TODO: make it work not only on linux\n\nimport \"io\"\n\nconst (\n\tCR  = '\\x0d'\n\tLF  = '\\x0a'\n\tNUL = '\\x00'\n)\n\nfunc ToReader(r io.Reader) io.Reader {\n\treturn &toReader{\n\t\tr:   r,\n\t\tbuf: make([]byte, 256),\n\t}\n}\n\ntype toReader struct {\n\tr   io.Reader\n\tbuf []byte\n\tn   int\n\ti   int\n\terr error\n\tlf  bool\n\tnul bool\n}\n\nfunc (r *toReader) Read(p []byte) (int, error) {\n\tvar n int\n\tfor n < len(p) {\n\t\tif r.lf {\n\t\t\tp[n] = LF\n\t\t\tn++\n\t\t\tr.lf = false\n\t\t\tcontinue\n\t\t}\n\t\tif r.nul {\n\t\t\tp[n] = NUL\n\t\t\tn++\n\t\t\tr.nul = false\n\t\t\tcontinue\n\t\t}\n\t\tif r.i < r.n {\n\t\t\tif r.buf[r.i] == LF {\n\t\t\t\tp[n] = CR\n\t\t\t\tr.lf = true\n\t\t\t} else if r.buf[r.i] == CR {\n\t\t\t\tp[n] = CR\n\t\t\t\tr.nul = true\n\n\t\t\t} else {\n\t\t\t\tp[n] = r.buf[r.i]\n\t\t\t}\n\t\t\tr.i++\n\t\t\tn++\n\t\t\tcontinue\n\t\t}\n\t\tif r.err == nil {\n\t\t\tr.n, r.err = r.r.Read(r.buf)\n\t\t\tr.i = 0\n\t\t} else {\n\t\t\treturn n, r.err\n\t\t}\n\t}\n\treturn n, r.err\n}\n\ntype fromWriter struct {\n\tw   io.Writer\n\tbuf []byte\n\ti   int\n\tcr  bool\n}\n\nfunc FromWriter(w io.Writer) io.Writer {\n\treturn &fromWriter{\n\t\tw:   w,\n\t\tbuf: make([]byte, 256),\n\t}\n}\n\nfunc (w *fromWriter) Write(p []byte) (n int, err error) {\n\tfor n < len(p) {\n\t\tif w.cr {\n\t\t\tif p[n] == LF {\n\t\t\t\tw.buf[w.i] = LF\n\t\t\t}\n\t\t\tif p[n] == NUL {\n\t\t\t\tw.buf[w.i] = CR\n\t\t\t}\n\t\t\tw.cr = false\n\t\t\tw.i++\n\t\t} else if p[n] == CR {\n\t\t\tw.cr = true\n\t\t} else {\n\t\t\tw.buf[w.i] = p[n]\n\t\t\tw.i++\n\t\t}\n\t\tn++\n\t\tif w.i == len(w.buf) || n == len(p) {\n\t\t\t_, err = w.w.Write(w.buf[:w.i])\n\t\t\tw.i = 0\n\t\t}\n\t}\n\treturn n, err\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/packet.go",
    "content": "package tftp\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n)\n\nconst (\n\topRRQ   = uint16(1) // Read request (RRQ)\n\topWRQ   = uint16(2) // Write request (WRQ)\n\topDATA  = uint16(3) // Data\n\topACK   = uint16(4) // Acknowledgement\n\topERROR = uint16(5) // Error\n\topOACK  = uint16(6) // Options Acknowledgment\n)\n\nconst (\n\tblockLength    = 512\n\tdatagramLength = 516\n)\n\ntype options map[string]string\n\n// RRQ/WRQ packet\n//\n//  2 bytes     string    1 byte    string    1 byte\n// --------------------------------------------------\n// | Opcode |  Filename  |   0  |    Mode    |   0  |\n// --------------------------------------------------\ntype pRRQ []byte\ntype pWRQ []byte\n\n// packRQ returns length of the packet in b\nfunc packRQ(p []byte, op uint16, filename, mode string, opts options) int {\n\tbinary.BigEndian.PutUint16(p, op)\n\tn := 2\n\tn += copy(p[2:len(p)-10], filename)\n\tp[n] = 0\n\tn++\n\tn += copy(p[n:], mode)\n\tp[n] = 0\n\tn++\n\tfor name, value := range opts {\n\t\tn += copy(p[n:], name)\n\t\tp[n] = 0\n\t\tn++\n\t\tn += copy(p[n:], value)\n\t\tp[n] = 0\n\t\tn++\n\t}\n\treturn n\n}\n\nfunc unpackRQ(p []byte) (filename, mode string, opts options, err error) {\n\tbs := bytes.Split(p[2:], []byte{0})\n\tif len(bs) < 2 {\n\t\treturn \"\", \"\", nil, fmt.Errorf(\"missing filename or mode\")\n\t}\n\tfilename = string(bs[0])\n\tmode = string(bs[1])\n\tif len(bs) < 4 {\n\t\treturn filename, mode, nil, nil\n\t}\n\topts = make(options)\n\tfor i := 2; i+1 < len(bs); i += 2 {\n\t\topts[string(bs[i])] = string(bs[i+1])\n\t}\n\treturn filename, mode, opts, nil\n}\n\n// OACK packet\n//\n// +----------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+\n// |  Opcode  |  opt1  | 0 | value1 | 0 |  optN  | 0 | valueN | 0 |\n// +----------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+\ntype pOACK []byte\n\nfunc packOACK(p []byte, opts options) int {\n\tbinary.BigEndian.PutUint16(p, opOACK)\n\tn := 2\n\tfor name, value := range opts {\n\t\tn += copy(p[n:], name)\n\t\tp[n] = 0\n\t\tn++\n\t\tn += copy(p[n:], value)\n\t\tp[n] = 0\n\t\tn++\n\t}\n\treturn n\n}\n\nfunc unpackOACK(p []byte) (opts options, err error) {\n\tbs := bytes.Split(p[2:], []byte{0})\n\topts = make(options)\n\tfor i := 0; i+1 < len(bs); i += 2 {\n\t\topts[string(bs[i])] = string(bs[i+1])\n\t}\n\treturn opts, nil\n}\n\n// ERROR packet\n//\n//  2 bytes     2 bytes      string    1 byte\n// ------------------------------------------\n// | Opcode |  ErrorCode |   ErrMsg   |  0  |\n// ------------------------------------------\ntype pERROR []byte\n\nfunc packERROR(p []byte, code uint16, message string) int {\n\tbinary.BigEndian.PutUint16(p, opERROR)\n\tbinary.BigEndian.PutUint16(p[2:], code)\n\tn := copy(p[4:len(p)-2], message)\n\tp[4+n] = 0\n\treturn n + 5\n}\n\nfunc (p pERROR) code() uint16 {\n\treturn binary.BigEndian.Uint16(p[2:])\n}\n\nfunc (p pERROR) message() string {\n\treturn string(p[4:])\n}\n\n// DATA packet\n//\n//  2 bytes    2 bytes     n bytes\n// ----------------------------------\n// | Opcode |   Block #  |   Data   |\n// ----------------------------------\ntype pDATA []byte\n\nfunc (p pDATA) block() uint16 {\n\treturn binary.BigEndian.Uint16(p[2:])\n}\n\n// ACK packet\n//\n//  2 bytes    2 bytes\n// -----------------------\n// | Opcode |   Block #  |\n// -----------------------\ntype pACK []byte\n\nfunc (p pACK) block() uint16 {\n\treturn binary.BigEndian.Uint16(p[2:])\n}\n\nfunc parsePacket(p []byte) (interface{}, error) {\n\tl := len(p)\n\tif l < 2 {\n\t\treturn nil, fmt.Errorf(\"short packet\")\n\t}\n\topcode := binary.BigEndian.Uint16(p)\n\tswitch opcode {\n\tcase opRRQ:\n\t\tif l < 4 {\n\t\t\treturn nil, fmt.Errorf(\"short RRQ packet: %d\", l)\n\t\t}\n\t\treturn pRRQ(p), nil\n\tcase opWRQ:\n\t\tif l < 4 {\n\t\t\treturn nil, fmt.Errorf(\"short WRQ packet: %d\", l)\n\t\t}\n\t\treturn pWRQ(p), nil\n\tcase opDATA:\n\t\tif l < 4 {\n\t\t\treturn nil, fmt.Errorf(\"short DATA packet: %d\", l)\n\t\t}\n\t\treturn pDATA(p), nil\n\tcase opACK:\n\t\tif l < 4 {\n\t\t\treturn nil, fmt.Errorf(\"short ACK packet: %d\", l)\n\t\t}\n\t\treturn pACK(p), nil\n\tcase opERROR:\n\t\tif l < 5 {\n\t\t\treturn nil, fmt.Errorf(\"short ERROR packet: %d\", l)\n\t\t}\n\t\treturn pERROR(p), nil\n\tcase opOACK:\n\t\tif l < 6 {\n\t\t\treturn nil, fmt.Errorf(\"short OACK packet: %d\", l)\n\t\t}\n\t\treturn pOACK(p), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown opcode: %d\", opcode)\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/receiver.go",
    "content": "package tftp\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/pin/tftp/netascii\"\n)\n\n// IncomingTransfer provides methods that expose information associated with\n// an incoming transfer.\ntype IncomingTransfer interface {\n\t// Size returns the size of an incoming file if the request included the\n\t// tsize option (see RFC2349).  To differentiate a zero-sized file transfer\n\t// from a request without tsize use the second boolean \"ok\" return value.\n\tSize() (n int64, ok bool)\n\n\t// RemoteAddr returns the remote peer's IP address and port.\n\tRemoteAddr() net.UDPAddr\n}\n\nfunc (r *receiver) RemoteAddr() net.UDPAddr { return *r.addr }\n\nfunc (r *receiver) Size() (n int64, ok bool) {\n\tif r.opts != nil {\n\t\tif s, ok := r.opts[\"tsize\"]; ok {\n\t\t\tn, err := strconv.ParseInt(s, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, false\n\t\t\t}\n\t\t\treturn n, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\ntype receiver struct {\n\tsend     []byte\n\treceive  []byte\n\taddr     *net.UDPAddr\n\ttid      int\n\tconn     *net.UDPConn\n\tblock    uint16\n\tretry    *backoff\n\ttimeout  time.Duration\n\tretries  int\n\tl        int\n\tautoTerm bool\n\tdally    bool\n\tmode     string\n\topts     options\n}\n\nfunc (r *receiver) WriteTo(w io.Writer) (n int64, err error) {\n\tif r.mode == \"netascii\" {\n\t\tw = netascii.FromWriter(w)\n\t}\n\tif r.opts != nil {\n\t\terr := r.sendOptions()\n\t\tif err != nil {\n\t\t\tr.abort(err)\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tbinary.BigEndian.PutUint16(r.send[0:2], opACK)\n\tfor {\n\t\tif r.l > 0 {\n\t\t\tl, err := w.Write(r.receive[4:r.l])\n\t\t\tn += int64(l)\n\t\t\tif err != nil {\n\t\t\t\tr.abort(err)\n\t\t\t\treturn n, err\n\t\t\t}\n\t\t\tif r.l < len(r.receive) {\n\t\t\t\tif r.autoTerm {\n\t\t\t\t\tr.terminate()\n\t\t\t\t\tr.conn.Close()\n\t\t\t\t}\n\t\t\t\treturn n, nil\n\t\t\t}\n\t\t}\n\t\tbinary.BigEndian.PutUint16(r.send[2:4], r.block)\n\t\tr.block++ // send ACK for current block and expect next one\n\t\tll, _, err := r.receiveWithRetry(4)\n\t\tif err != nil {\n\t\t\tr.abort(err)\n\t\t\treturn n, err\n\t\t}\n\t\tr.l = ll\n\t}\n}\n\nfunc (r *receiver) sendOptions() error {\n\tfor name, value := range r.opts {\n\t\tif name == \"blksize\" {\n\t\t\terr := r.setBlockSize(value)\n\t\t\tif err != nil {\n\t\t\t\tdelete(r.opts, name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\tdelete(r.opts, name)\n\t\t}\n\t}\n\tif len(r.opts) > 0 {\n\t\tm := packOACK(r.send, r.opts)\n\t\tr.block = 1 // expect data block number 1\n\t\tll, _, err := r.receiveWithRetry(m)\n\t\tif err != nil {\n\t\t\tr.abort(err)\n\t\t\treturn err\n\t\t}\n\t\tr.l = ll\n\t}\n\treturn nil\n}\n\nfunc (r *receiver) setBlockSize(blksize string) error {\n\tn, err := strconv.Atoi(blksize)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif n < 512 {\n\t\treturn fmt.Errorf(\"blkzise too small: %d\", n)\n\t}\n\tif n > 65464 {\n\t\treturn fmt.Errorf(\"blksize too large: %d\", n)\n\t}\n\tr.receive = make([]byte, n+4)\n\treturn nil\n}\n\nfunc (r *receiver) receiveWithRetry(l int) (int, *net.UDPAddr, error) {\n\tr.retry.reset()\n\tfor {\n\t\tn, addr, err := r.receiveDatagram(l)\n\t\tif _, ok := err.(net.Error); ok && r.retry.count() < r.retries {\n\t\t\tr.retry.backoff()\n\t\t\tcontinue\n\t\t}\n\t\treturn n, addr, err\n\t}\n}\n\nfunc (r *receiver) receiveDatagram(l int) (int, *net.UDPAddr, error) {\n\terr := r.conn.SetReadDeadline(time.Now().Add(r.timeout))\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\t_, err = r.conn.WriteToUDP(r.send[:l], r.addr)\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\tfor {\n\t\tc, addr, err := r.conn.ReadFromUDP(r.receive)\n\t\tif err != nil {\n\t\t\treturn 0, nil, err\n\t\t}\n\t\tif !addr.IP.Equal(r.addr.IP) || (r.tid != 0 && addr.Port != r.tid) {\n\t\t\tcontinue\n\t\t}\n\t\tp, err := parsePacket(r.receive[:c])\n\t\tif err != nil {\n\t\t\treturn 0, addr, err\n\t\t}\n\t\tr.tid = addr.Port\n\t\tswitch p := p.(type) {\n\t\tcase pDATA:\n\t\t\tif p.block() == r.block {\n\t\t\t\treturn c, addr, nil\n\t\t\t}\n\t\tcase pOACK:\n\t\t\topts, err := unpackOACK(p)\n\t\t\tif r.block != 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tr.abort(err)\n\t\t\t\treturn 0, addr, err\n\t\t\t}\n\t\t\tfor name, value := range opts {\n\t\t\t\tif name == \"blksize\" {\n\t\t\t\t\terr := r.setBlockSize(value)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tr.block = 0 // ACK with block number 0\n\t\t\tr.opts = opts\n\t\t\treturn 0, addr, nil\n\t\tcase pERROR:\n\t\t\treturn 0, addr, fmt.Errorf(\"code: %d, message: %s\",\n\t\t\t\tp.code(), p.message())\n\t\t}\n\t}\n}\n\nfunc (r *receiver) terminate() error {\n\tbinary.BigEndian.PutUint16(r.send[2:4], r.block)\n\tif r.dally {\n\t\tfor i := 0; i < 3; i++ {\n\t\t\t_, _, err := r.receiveDatagram(4)\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\treturn fmt.Errorf(\"dallying termination failed\")\n\t} else {\n\t\t_, err := r.conn.WriteToUDP(r.send[:4], r.addr)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r *receiver) abort(err error) error {\n\tif r.conn == nil {\n\t\treturn nil\n\t}\n\tn := packERROR(r.send, 1, err.Error())\n\t_, err = r.conn.WriteToUDP(r.send[:n], r.addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tr.conn.Close()\n\tr.conn = nil\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/sender.go",
    "content": "package tftp\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/pin/tftp/netascii\"\n)\n\n// OutgoingTransfer provides methods to set the outgoing transfer size and\n// retrieve the remote address of the peer.\ntype OutgoingTransfer interface {\n\t// SetSize is used to set the outgoing transfer size (tsize option: RFC2349)\n\t// manually in a server write transfer handler.\n\t//\n\t// It is not necessary in most cases; when the io.Reader provided to\n\t// ReadFrom also satisfies io.Seeker (e.g. os.File) the transfer size will\n\t// be determined automatically. Seek will not be attempted when the\n\t// transfer size option is set with SetSize.\n\t//\n\t// The value provided will be used only if SetSize is called before ReadFrom\n\t// and only on in a server read handler.\n\tSetSize(n int64)\n\n\t// RemoteAddr returns the remote peer's IP address and port.\n\tRemoteAddr() net.UDPAddr\n}\n\ntype sender struct {\n\tconn    *net.UDPConn\n\taddr    *net.UDPAddr\n\ttid     int\n\tsend    []byte\n\treceive []byte\n\tretry   *backoff\n\ttimeout time.Duration\n\tretries int\n\tblock   uint16\n\tmode    string\n\topts    options\n}\n\nfunc (s *sender) RemoteAddr() net.UDPAddr { return *s.addr }\n\nfunc (s *sender) SetSize(n int64) {\n\tif s.opts != nil {\n\t\tif _, ok := s.opts[\"tsize\"]; ok {\n\t\t\ts.opts[\"tsize\"] = strconv.FormatInt(n, 10)\n\t\t}\n\t}\n}\n\nfunc (s *sender) ReadFrom(r io.Reader) (n int64, err error) {\n\tif s.mode == \"netascii\" {\n\t\tr = netascii.ToReader(r)\n\t}\n\tif s.opts != nil {\n\t\t// check that tsize is set\n\t\tif ts, ok := s.opts[\"tsize\"]; ok {\n\t\t\t// check that tsize is not set with SetSize already\n\t\t\ti, err := strconv.ParseInt(ts, 10, 64)\n\t\t\tif err == nil && i == 0 {\n\t\t\t\tif rs, ok := r.(io.Seeker); ok {\n\t\t\t\t\tpos, err := rs.Seek(0, 1)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\tsize, err := rs.Seek(0, 2)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t\ts.opts[\"tsize\"] = strconv.FormatInt(size, 10)\n\t\t\t\t\t_, err = rs.Seek(pos, 0)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn 0, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\terr = s.sendOptions()\n\t\tif err != nil {\n\t\t\ts.abort(err)\n\t\t\treturn 0, err\n\t\t}\n\t}\n\ts.block = 1 // start data transmission with block 1\n\tbinary.BigEndian.PutUint16(s.send[0:2], opDATA)\n\tfor {\n\t\tl, err := io.ReadFull(r, s.send[4:])\n\t\tn += int64(l)\n\t\tif err != nil && err != io.ErrUnexpectedEOF {\n\t\t\tif err == io.EOF {\n\t\t\t\tbinary.BigEndian.PutUint16(s.send[2:4], s.block)\n\t\t\t\t_, err = s.sendWithRetry(4)\n\t\t\t\tif err != nil {\n\t\t\t\t\ts.abort(err)\n\t\t\t\t\treturn n, err\n\t\t\t\t}\n\t\t\t\ts.conn.Close()\n\t\t\t\treturn n, nil\n\t\t\t}\n\t\t\ts.abort(err)\n\t\t\treturn n, err\n\t\t}\n\t\tbinary.BigEndian.PutUint16(s.send[2:4], s.block)\n\t\t_, err = s.sendWithRetry(4 + l)\n\t\tif err != nil {\n\t\t\ts.abort(err)\n\t\t\treturn n, err\n\t\t}\n\t\tif l < len(s.send)-4 {\n\t\t\ts.conn.Close()\n\t\t\treturn n, nil\n\t\t}\n\t\ts.block++\n\t}\n}\n\nfunc (s *sender) sendOptions() error {\n\tfor name, value := range s.opts {\n\t\tif name == \"blksize\" {\n\t\t\terr := s.setBlockSize(value)\n\t\t\tif err != nil {\n\t\t\t\tdelete(s.opts, name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else if name == \"tsize\" {\n\t\t\tif value != \"0\" {\n\t\t\t\ts.opts[\"tsize\"] = value\n\t\t\t} else {\n\t\t\t\tdelete(s.opts, name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\tdelete(s.opts, name)\n\t\t}\n\t}\n\tif len(s.opts) > 0 {\n\t\tm := packOACK(s.send, s.opts)\n\t\t_, err := s.sendWithRetry(m)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (s *sender) setBlockSize(blksize string) error {\n\tn, err := strconv.Atoi(blksize)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif n < 512 {\n\t\treturn fmt.Errorf(\"blkzise too small: %d\", n)\n\t}\n\tif n > 65464 {\n\t\treturn fmt.Errorf(\"blksize too large: %d\", n)\n\t}\n\ts.send = make([]byte, n+4)\n\treturn nil\n}\n\nfunc (s *sender) sendWithRetry(l int) (*net.UDPAddr, error) {\n\ts.retry.reset()\n\tfor {\n\t\taddr, err := s.sendDatagram(l)\n\t\tif _, ok := err.(net.Error); ok && s.retry.count() < s.retries {\n\t\t\ts.retry.backoff()\n\t\t\tcontinue\n\t\t}\n\t\treturn addr, err\n\t}\n}\n\nfunc (s *sender) sendDatagram(l int) (*net.UDPAddr, error) {\n\terr := s.conn.SetReadDeadline(time.Now().Add(s.timeout))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t_, err = s.conn.WriteToUDP(s.send[:l], s.addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor {\n\t\tn, addr, err := s.conn.ReadFromUDP(s.receive)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif !addr.IP.Equal(s.addr.IP) || (s.tid != 0 && addr.Port != s.tid) {\n\t\t\tcontinue\n\t\t}\n\t\tp, err := parsePacket(s.receive[:n])\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\ts.tid = addr.Port\n\t\tswitch p := p.(type) {\n\t\tcase pACK:\n\t\t\tif p.block() == s.block {\n\t\t\t\treturn addr, nil\n\t\t\t}\n\t\tcase pOACK:\n\t\t\topts, err := unpackOACK(p)\n\t\t\tif s.block != 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\ts.abort(err)\n\t\t\t\treturn addr, err\n\t\t\t}\n\t\t\tfor name, value := range opts {\n\t\t\t\tif name == \"blksize\" {\n\t\t\t\t\terr := s.setBlockSize(value)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn addr, nil\n\t\tcase pERROR:\n\t\t\treturn nil, fmt.Errorf(\"sending block %d: code=%d, error: %s\",\n\t\t\t\ts.block, p.code(), p.message())\n\t\t}\n\t}\n}\n\nfunc (s *sender) abort(err error) error {\n\tif s.conn == nil {\n\t\treturn nil\n\t}\n\tn := packERROR(s.send, 1, err.Error())\n\t_, err = s.conn.WriteToUDP(s.send[:n], s.addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\ts.conn.Close()\n\ts.conn = nil\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/pin/tftp/server.go",
    "content": "package tftp\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\t\"time\"\n)\n\n// NewServer creates TFTP server. It requires two functions to handle\n// read and write requests.\n// In case nil is provided for read or write handler the respective\n// operation is disabled.\nfunc NewServer(readHandler func(filename string, rf io.ReaderFrom) error,\n\twriteHandler func(filename string, wt io.WriterTo) error) *Server {\n\treturn &Server{\n\t\treadHandler:  readHandler,\n\t\twriteHandler: writeHandler,\n\t\ttimeout:      defaultTimeout,\n\t\tretries:      defaultRetries,\n\t}\n}\n\ntype Server struct {\n\treadHandler  func(filename string, rf io.ReaderFrom) error\n\twriteHandler func(filename string, wt io.WriterTo) error\n\tbackoff      backoffFunc\n\tconn         *net.UDPConn\n\tquit         chan chan struct{}\n\twg           sync.WaitGroup\n\ttimeout      time.Duration\n\tretries      int\n}\n\n// SetTimeout sets maximum time server waits for single network\n// round-trip to succeed.\n// Default is 5 seconds.\nfunc (s *Server) SetTimeout(t time.Duration) {\n\tif t <= 0 {\n\t\ts.timeout = defaultTimeout\n\t} else {\n\t\ts.timeout = t\n\t}\n}\n\n// SetRetries sets maximum number of attempts server made to transmit a\n// packet.\n// Default is 5 attempts.\nfunc (s *Server) SetRetries(count int) {\n\tif count < 1 {\n\t\ts.retries = defaultRetries\n\t} else {\n\t\ts.retries = count\n\t}\n}\n\n// SetBackoff sets a user provided function that is called to provide a\n// backoff duration prior to retransmitting an unacknowledged packet.\nfunc (s *Server) SetBackoff(h backoffFunc) {\n\ts.backoff = h\n}\n\n// ListenAndServe binds to address provided and start the server.\n// ListenAndServe returns when Shutdown is called.\nfunc (s *Server) ListenAndServe(addr string) error {\n\ta, err := net.ResolveUDPAddr(\"udp\", addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tconn, err := net.ListenUDP(\"udp\", a)\n\tif err != nil {\n\t\treturn err\n\t}\n\ts.Serve(conn)\n\treturn nil\n}\n\n// Serve starts server provided already opened UDP connecton. It is\n// useful for the case when you want to run server in separate goroutine\n// but still want to be able to handle any errors opening connection.\n// Serve returns when Shutdown is called or connection is closed.\nfunc (s *Server) Serve(conn *net.UDPConn) {\n\ts.conn = conn\n\ts.quit = make(chan chan struct{})\n\tfor {\n\t\tselect {\n\t\tcase q := <-s.quit:\n\t\t\tq <- struct{}{}\n\t\t\treturn\n\t\tdefault:\n\t\t\terr := s.processRequest(s.conn)\n\t\t\tif err != nil {\n\t\t\t\t// TODO: add logging handler\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Shutdown make server stop listening for new requests, allows\n// server to finish outstanding transfers and stops server.\nfunc (s *Server) Shutdown() {\n\ts.conn.Close()\n\tq := make(chan struct{})\n\ts.quit <- q\n\t<-q\n\ts.wg.Wait()\n}\n\nfunc (s *Server) processRequest(conn *net.UDPConn) error {\n\tvar buffer []byte\n\tbuffer = make([]byte, datagramLength)\n\tn, remoteAddr, err := conn.ReadFromUDP(buffer)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading UDP: %v\", err)\n\t}\n\tp, err := parsePacket(buffer[:n])\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch p := p.(type) {\n\tcase pWRQ:\n\t\tfilename, mode, opts, err := unpackRQ(p)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unpack WRQ: %v\", err)\n\t\t}\n\t\t//fmt.Printf(\"got WRQ (filename=%s, mode=%s, opts=%v)\\n\", filename, mode, opts)\n\t\tconn, err := net.ListenUDP(\"udp\", &net.UDPAddr{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"open transmission: %v\", err)\n\t\t}\n\t\twt := &receiver{\n\t\t\tsend:    make([]byte, datagramLength),\n\t\t\treceive: make([]byte, datagramLength),\n\t\t\tconn:    conn,\n\t\t\tretry:   &backoff{handler: s.backoff},\n\t\t\ttimeout: s.timeout,\n\t\t\tretries: s.retries,\n\t\t\taddr:    remoteAddr,\n\t\t\tmode:    mode,\n\t\t\topts:    opts,\n\t\t}\n\t\ts.wg.Add(1)\n\t\tgo func() {\n\t\t\tif s.writeHandler != nil {\n\t\t\t\terr := s.writeHandler(filename, wt)\n\t\t\t\tif err != nil {\n\t\t\t\t\twt.abort(err)\n\t\t\t\t} else {\n\t\t\t\t\twt.terminate()\n\t\t\t\t\twt.conn.Close()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twt.abort(fmt.Errorf(\"server does not support write requests\"))\n\t\t\t}\n\t\t\ts.wg.Done()\n\t\t}()\n\tcase pRRQ:\n\t\tfilename, mode, opts, err := unpackRQ(p)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unpack RRQ: %v\", err)\n\t\t}\n\t\t//fmt.Printf(\"got RRQ (filename=%s, mode=%s, opts=%v)\\n\", filename, mode, opts)\n\t\tconn, err := net.ListenUDP(\"udp\", &net.UDPAddr{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trf := &sender{\n\t\t\tsend:    make([]byte, datagramLength),\n\t\t\treceive: make([]byte, datagramLength),\n\t\t\ttid:     remoteAddr.Port,\n\t\t\tconn:    conn,\n\t\t\tretry:   &backoff{handler: s.backoff},\n\t\t\ttimeout: s.timeout,\n\t\t\tretries: s.retries,\n\t\t\taddr:    remoteAddr,\n\t\t\tmode:    mode,\n\t\t\topts:    opts,\n\t\t}\n\t\ts.wg.Add(1)\n\t\tgo func() {\n\t\t\tif s.readHandler != nil {\n\t\t\t\terr := s.readHandler(filename, rf)\n\t\t\t\tif err != nil {\n\t\t\t\t\trf.abort(err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trf.abort(fmt.Errorf(\"server does not support read requests\"))\n\t\t\t}\n\t\t\ts.wg.Done()\n\t\t}()\n\tdefault:\n\t\treturn fmt.Errorf(\"unexpected %T\", p)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n*.test\n*.prof\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/.travis.yml",
    "content": "language: go\ngo_import_path: github.com/pkg/errors\ngo:\n  - 1.4.3\n  - 1.5.4\n  - 1.6.2\n  - tip\n\nscript:\n  - go test -v ./...\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/LICENSE",
    "content": "Copyright (c) 2015, Dave Cheney <dave@cheney.net>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (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\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/README.md",
    "content": "# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors)\n\nPackage errors provides simple error handling primitives.\n\nThe traditional error handling idiom in Go is roughly akin to\n```go\nif err != nil {\n        return err\n}\n```\nwhich applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error.\n\n## Adding context to an error\n\nThe errors.Wrap function returns a new error that adds context to the original error. For example\n```go\n_, err := ioutil.ReadAll(r)\nif err != nil {\n        return errors.Wrap(err, \"read failed\")\n}\n```\n## Retrieving the cause of an error\n\nUsing `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`.\n```go\ntype causer interface {\n        Cause() error\n}\n```\n`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example:\n```go\nswitch err := errors.Cause(err).(type) {\ncase *MyError:\n        // handle specifically\ndefault:\n        // unknown error\n}\n```\n\n[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors).\n\n## Contributing\n\nWe welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high.\n\nBefore proposing a change, please discuss your change by raising an issue.\n\n## Licence\n\nBSD-2-Clause\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/appveyor.yml",
    "content": "version: build-{build}.{branch}\n\nclone_folder: C:\\gopath\\src\\github.com\\pkg\\errors\nshallow_clone: true # for startup speed\n\nenvironment:\n  GOPATH: C:\\gopath\n\nplatform:\n  - x64\n\n# http://www.appveyor.com/docs/installed-software\ninstall:\n  # some helpful output for debugging builds\n  - go version\n  - go env\n  # pre-installed MinGW at C:\\MinGW is 32bit only\n  # but MSYS2 at C:\\msys64 has mingw64\n  - set PATH=C:\\msys64\\mingw64\\bin;%PATH%\n  - gcc --version\n  - g++ --version\n\nbuild_script:\n  - go install -v ./...\n\ntest_script:\n  - set PATH=C:\\gopath\\bin;%PATH%\n  - go test -v ./...\n\n#artifacts:\n#  - path: '%GOPATH%\\bin\\*.exe'\ndeploy: off\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/errors.go",
    "content": "// Package errors provides simple error handling primitives.\n//\n// The traditional error handling idiom in Go is roughly akin to\n//\n//     if err != nil {\n//             return err\n//     }\n//\n// which applied recursively up the call stack results in error reports\n// without context or debugging information. The errors package allows\n// programmers to add context to the failure path in their code in a way\n// that does not destroy the original value of the error.\n//\n// Adding context to an error\n//\n// The errors.Wrap function returns a new error that adds context to the\n// original error. For example\n//\n//     _, err := ioutil.ReadAll(r)\n//     if err != nil {\n//             return errors.Wrap(err, \"read failed\")\n//     }\n//\n// Retrieving the cause of an error\n//\n// Using errors.Wrap constructs a stack of errors, adding context to the\n// preceding error. Depending on the nature of the error it may be necessary\n// to reverse the operation of errors.Wrap to retrieve the original error\n// for inspection. Any error value which implements this interface\n//\n//     type Causer interface {\n//             Cause() error\n//     }\n//\n// can be inspected by errors.Cause. errors.Cause will recursively retrieve\n// the topmost error which does not implement causer, which is assumed to be\n// the original cause. For example:\n//\n//     switch err := errors.Cause(err).(type) {\n//     case *MyError:\n//             // handle specifically\n//     default:\n//             // unknown error\n//     }\n//\n// Formatted printing of errors\n//\n// All error values returned from this package implement fmt.Formatter and can\n// be formatted by the fmt package. The following verbs are supported\n//\n//     %s    print the error. If the error has a Cause it will be\n//           printed recursively\n//     %v    see %s\n//     %+v   extended format. Each Frame of the error's StackTrace will\n//           be printed in detail.\n//\n// Retrieving the stack trace of an error or wrapper\n//\n// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are\n// invoked. This information can be retrieved with the following interface.\n//\n//     type stackTracer interface {\n//             StackTrace() errors.StackTrace\n//     }\n//\n// Where errors.StackTrace is defined as\n//\n//     type StackTrace []Frame\n//\n// The Frame type represents a call site in the stack trace. Frame supports\n// the fmt.Formatter interface that can be used for printing information about\n// the stack trace of this error. For example:\n//\n//     if err, ok := err.(stackTracer); ok {\n//             for _, f := range err.StackTrace() {\n//                     fmt.Printf(\"%+s:%d\", f)\n//             }\n//     }\n//\n// See the documentation for Frame.Format for more details.\npackage errors\n\nimport (\n\t\"fmt\"\n\t\"io\"\n)\n\n// _error is an error implementation returned by New and Errorf\n// that implements its own fmt.Formatter.\ntype _error struct {\n\tmsg string\n\t*stack\n}\n\nfunc (e _error) Error() string { return e.msg }\n\nfunc (e _error) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif s.Flag('+') {\n\t\t\tio.WriteString(s, e.msg)\n\t\t\tfmt.Fprintf(s, \"%+v\", e.StackTrace())\n\t\t\treturn\n\t\t}\n\t\tfallthrough\n\tcase 's':\n\t\tio.WriteString(s, e.msg)\n\t}\n}\n\n// New returns an error with the supplied message.\nfunc New(message string) error {\n\treturn _error{\n\t\tmessage,\n\t\tcallers(),\n\t}\n}\n\n// Errorf formats according to a format specifier and returns the string\n// as a value that satisfies error.\nfunc Errorf(format string, args ...interface{}) error {\n\treturn _error{\n\t\tfmt.Sprintf(format, args...),\n\t\tcallers(),\n\t}\n}\n\ntype cause struct {\n\tcause error\n\tmsg   string\n}\n\nfunc (c cause) Error() string { return fmt.Sprintf(\"%s: %v\", c.msg, c.Cause()) }\nfunc (c cause) Cause() error  { return c.cause }\n\n// wrapper is an error implementation returned by Wrap and Wrapf\n// that implements its own fmt.Formatter.\ntype wrapper struct {\n\tcause\n\t*stack\n}\n\nfunc (w wrapper) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tif s.Flag('+') {\n\t\t\tfmt.Fprintf(s, \"%+v\\n\", w.Cause())\n\t\t\tio.WriteString(s, w.msg)\n\t\t\tfmt.Fprintf(s, \"%+v\", w.StackTrace())\n\t\t\treturn\n\t\t}\n\t\tfallthrough\n\tcase 's':\n\t\tio.WriteString(s, w.Error())\n\tcase 'q':\n\t\tfmt.Fprintf(s, \"%q\", w.Error())\n\t}\n}\n\n// Wrap returns an error annotating err with message.\n// If err is nil, Wrap returns nil.\nfunc Wrap(err error, message string) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn wrapper{\n\t\tcause: cause{\n\t\t\tcause: err,\n\t\t\tmsg:   message,\n\t\t},\n\t\tstack: callers(),\n\t}\n}\n\n// Wrapf returns an error annotating err with the format specifier.\n// If err is nil, Wrapf returns nil.\nfunc Wrapf(err error, format string, args ...interface{}) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\treturn wrapper{\n\t\tcause: cause{\n\t\t\tcause: err,\n\t\t\tmsg:   fmt.Sprintf(format, args...),\n\t\t},\n\t\tstack: callers(),\n\t}\n}\n\n// Cause returns the underlying cause of the error, if possible.\n// An error value has a cause if it implements the following\n// interface:\n//\n//     type Causer interface {\n//            Cause() error\n//     }\n//\n// If the error does not implement Cause, the original error will\n// be returned. If the error is nil, nil will be returned without further\n// investigation.\nfunc Cause(err error) error {\n\ttype causer interface {\n\t\tCause() error\n\t}\n\n\tfor err != nil {\n\t\tcause, ok := err.(causer)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\terr = cause.Cause()\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "vendor/github.com/pkg/errors/stack.go",
    "content": "package errors\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"runtime\"\n\t\"strings\"\n)\n\n// Frame represents a program counter inside a stack frame.\ntype Frame uintptr\n\n// pc returns the program counter for this frame;\n// multiple frames may have the same PC value.\nfunc (f Frame) pc() uintptr { return uintptr(f) - 1 }\n\n// file returns the full path to the file that contains the\n// function for this Frame's pc.\nfunc (f Frame) file() string {\n\tfn := runtime.FuncForPC(f.pc())\n\tif fn == nil {\n\t\treturn \"unknown\"\n\t}\n\tfile, _ := fn.FileLine(f.pc())\n\treturn file\n}\n\n// line returns the line number of source code of the\n// function for this Frame's pc.\nfunc (f Frame) line() int {\n\tfn := runtime.FuncForPC(f.pc())\n\tif fn == nil {\n\t\treturn 0\n\t}\n\t_, line := fn.FileLine(f.pc())\n\treturn line\n}\n\n// Format formats the frame according to the fmt.Formatter interface.\n//\n//    %s    source file\n//    %d    source line\n//    %n    function name\n//    %v    equivalent to %s:%d\n//\n// Format accepts flags that alter the printing of some verbs, as follows:\n//\n//    %+s   path of source file relative to the compile time GOPATH\n//    %+v   equivalent to %+s:%d\nfunc (f Frame) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 's':\n\t\tswitch {\n\t\tcase s.Flag('+'):\n\t\t\tpc := f.pc()\n\t\t\tfn := runtime.FuncForPC(pc)\n\t\t\tif fn == nil {\n\t\t\t\tio.WriteString(s, \"unknown\")\n\t\t\t} else {\n\t\t\t\tfile, _ := fn.FileLine(pc)\n\t\t\t\tfmt.Fprintf(s, \"%s\\n\\t%s\", fn.Name(), file)\n\t\t\t}\n\t\tdefault:\n\t\t\tio.WriteString(s, path.Base(f.file()))\n\t\t}\n\tcase 'd':\n\t\tfmt.Fprintf(s, \"%d\", f.line())\n\tcase 'n':\n\t\tname := runtime.FuncForPC(f.pc()).Name()\n\t\tio.WriteString(s, funcname(name))\n\tcase 'v':\n\t\tf.Format(s, 's')\n\t\tio.WriteString(s, \":\")\n\t\tf.Format(s, 'd')\n\t}\n}\n\n// StackTrace is stack of Frames from innermost (newest) to outermost (oldest).\ntype StackTrace []Frame\n\nfunc (st StackTrace) Format(s fmt.State, verb rune) {\n\tswitch verb {\n\tcase 'v':\n\t\tswitch {\n\t\tcase s.Flag('+'):\n\t\t\tfor _, f := range st {\n\t\t\t\tfmt.Fprintf(s, \"\\n%+v\", f)\n\t\t\t}\n\t\tcase s.Flag('#'):\n\t\t\tfmt.Fprintf(s, \"%#v\", []Frame(st))\n\t\tdefault:\n\t\t\tfmt.Fprintf(s, \"%v\", []Frame(st))\n\t\t}\n\tcase 's':\n\t\tfmt.Fprintf(s, \"%s\", []Frame(st))\n\t}\n}\n\n// stack represents a stack of program counters.\ntype stack []uintptr\n\nfunc (s *stack) StackTrace() StackTrace {\n\tf := make([]Frame, len(*s))\n\tfor i := 0; i < len(f); i++ {\n\t\tf[i] = Frame((*s)[i])\n\t}\n\treturn f\n}\n\nfunc callers() *stack {\n\tconst depth = 32\n\tvar pcs [depth]uintptr\n\tn := runtime.Callers(3, pcs[:])\n\tvar st stack = pcs[0:n]\n\treturn &st\n}\n\n// funcname removes the path prefix component of a function's name reported by func.Name().\nfunc funcname(name string) string {\n\ti := strings.LastIndex(name, \"/\")\n\tname = name[i+1:]\n\ti = strings.Index(name, \".\")\n\treturn name[i+1:]\n}\n\nfunc trimGOPATH(name, file string) string {\n\t// Here we want to get the source file path relative to the compile time\n\t// GOPATH. As of Go 1.6.x there is no direct way to know the compiled\n\t// GOPATH at runtime, but we can infer the number of path segments in the\n\t// GOPATH. We note that fn.Name() returns the function name qualified by\n\t// the import path, which does not include the GOPATH. Thus we can trim\n\t// segments from the beginning of the file path until the number of path\n\t// separators remaining is one more than the number of path separators in\n\t// the function name. For example, given:\n\t//\n\t//    GOPATH     /home/user\n\t//    file       /home/user/src/pkg/sub/file.go\n\t//    fn.Name()  pkg/sub.Type.Method\n\t//\n\t// We want to produce:\n\t//\n\t//    pkg/sub/file.go\n\t//\n\t// From this we can easily see that fn.Name() has one less path separator\n\t// than our desired output. We count separators from the end of the file\n\t// path until it finds two more than in the function name and then move\n\t// one character forward to preserve the initial path segment without a\n\t// leading separator.\n\tconst sep = \"/\"\n\tgoal := strings.Count(name, sep) + 2\n\ti := len(file)\n\tfor n := 0; n < goal; n++ {\n\t\ti = strings.LastIndex(file[:i], sep)\n\t\tif i == -1 {\n\t\t\t// not enough separators found, set i so that the slice expression\n\t\t\t// below leaves file unmodified\n\t\t\ti = -len(sep)\n\t\t\tbreak\n\t\t}\n\t}\n\t// get back to 0 or trim the leading separator\n\tfile = file[i+len(sep):]\n\treturn file\n}\n"
  },
  {
    "path": "vendor/github.com/pmezard/go-difflib/.travis.yml",
    "content": "language: go\ngo:\n  - 1.5\n  - tip\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/README.md",
    "content": "go-difflib\n==========\n\n[![Build Status](https://travis-ci.org/pmezard/go-difflib.png?branch=master)](https://travis-ci.org/pmezard/go-difflib)\n[![GoDoc](https://godoc.org/github.com/pmezard/go-difflib/difflib?status.svg)](https://godoc.org/github.com/pmezard/go-difflib/difflib)\n\nGo-difflib is a partial port of python 3 difflib package. Its main goal\nwas to make unified and context diff available in pure Go, mostly for\ntesting purposes.\n\nThe following class and functions (and related tests) have be ported:\n\n* `SequenceMatcher`\n* `unified_diff()`\n* `context_diff()`\n\n## Installation\n\n```bash\n$ go get github.com/pmezard/go-difflib/difflib\n```\n\n### Quick Start\n\nDiffs are configured with Unified (or ContextDiff) structures, and can\nbe output to an io.Writer or returned as a string.\n\n```Go\ndiff := UnifiedDiff{\n    A:        difflib.SplitLines(\"foo\\nbar\\n\"),\n    B:        difflib.SplitLines(\"foo\\nbaz\\n\"),\n    FromFile: \"Original\",\n    ToFile:   \"Current\",\n    Context:  3,\n}\ntext, _ := GetUnifiedDiffString(diff)\nfmt.Printf(text)\n```\n\nwould output:\n\n```\n--- Original\n+++ Current\n@@ -1,3 +1,3 @@\n foo\n-bar\n+baz\n```\n\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\tw := func(format string, args ...interface{}) error {\n\t\t_, err := buf.WriteString(fmt.Sprintf(format, args...))\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\terr := w(\"--- %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terr = w(\"+++ %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t\tif err != nil {\n\t\t\t\treturn err\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 := w(\"@@ -%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 := w(\" \" + 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 := w(\"-\" + 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 := w(\"+\" + 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\tw := 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\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\tw(\"*** %s%s%s\", diff.FromFile, fromDate, diff.Eol)\n\t\t\tw(\"--- %s%s%s\", diff.ToFile, toDate, diff.Eol)\n\t\t}\n\n\t\tfirst, last := g[0], g[len(g)-1]\n\t\tw(\"***************\" + diff.Eol)\n\n\t\trange1 := formatRangeContext(first.I1, last.I2)\n\t\tw(\"*** %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\tw(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\tw(\"--- %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\tw(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/ryanuber/go-glob/.travis.yml",
    "content": "language: go\ngo:\n  - tip\nscript:\n  - go test -v ./...\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Ryan Uber\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/ryanuber/go-glob/README.md",
    "content": "# String globbing in golang [![Build Status](https://travis-ci.org/ryanuber/go-glob.svg)](https://travis-ci.org/ryanuber/go-glob)\n\n`go-glob` is a single-function library implementing basic string glob support.\n\nGlobs are an extremely user-friendly way of supporting string matching without\nrequiring knowledge of regular expressions or Go's particular regex engine. Most\npeople understand that if you put a `*` character somewhere in a string, it is\ntreated as a wildcard. Surprisingly, this functionality isn't found in Go's\nstandard library, except for `path.Match`, which is intended to be used while\ncomparing paths (not arbitrary strings), and contains specialized logic for this\nuse case. A better solution might be a POSIX basic (non-ERE) regular expression\nengine for Go, which doesn't exist currently.\n\nExample\n=======\n\n```\npackage main\n\nimport \"github.com/ryanuber/go-glob\"\n\nfunc main() {\n    glob.Glob(\"*World!\", \"Hello, World!\") // true\n    glob.Glob(\"Hello,*\", \"Hello, World!\") // true\n    glob.Glob(\"*ello,*\", \"Hello, World!\") // true\n    glob.Glob(\"World!\", \"Hello, World!\")  // false\n    glob.Glob(\"/home/*\", \"/home/ryanuber/.bashrc\") // true\n}\n```\n"
  },
  {
    "path": "vendor/github.com/ryanuber/go-glob/glob.go",
    "content": "package glob\n\nimport \"strings\"\n\n// The character which is treated like a glob\nconst GLOB = \"*\"\n\n// Glob will test a string pattern, potentially containing globs, against a\n// subject string. The result is a simple true/false, determining whether or\n// not the glob pattern matched the subject text.\nfunc Glob(pattern, subj string) bool {\n\t// Empty pattern can only match empty subject\n\tif pattern == \"\" {\n\t\treturn subj == pattern\n\t}\n\n\t// If the pattern _is_ a glob, it matches everything\n\tif pattern == GLOB {\n\t\treturn true\n\t}\n\n\tparts := strings.Split(pattern, GLOB)\n\n\tif len(parts) == 1 {\n\t\t// No globs in pattern, so test for equality\n\t\treturn subj == pattern\n\t}\n\n\tleadingGlob := strings.HasPrefix(pattern, GLOB)\n\ttrailingGlob := strings.HasSuffix(pattern, GLOB)\n\tend := len(parts) - 1\n\n\tfor i, part := range parts {\n\t\tswitch i {\n\t\tcase 0:\n\t\t\tif leadingGlob {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !strings.HasPrefix(subj, part) {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase end:\n\t\t\tif len(subj) > 0 {\n\t\t\t\treturn trailingGlob || strings.HasSuffix(subj, part)\n\t\t\t}\n\t\tdefault:\n\t\t\tif !strings.Contains(subj, part) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Trim evaluated text from subj as we loop over the pattern.\n\t\tidx := strings.Index(subj, part) + len(part)\n\t\tsubj = subj[idx:]\n\t}\n\n\t// All parts of the pattern matched\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/bdoor/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/sigma/bdoor/README",
    "content": "ping the VMware backdoor\n"
  },
  {
    "path": "vendor/github.com/sigma/bdoor/check.go",
    "content": "// Copyright 2016 Yann Hodique\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 bdoor\n\n// #include <limits.h>\n// #include <stdint.h>\n// #include <signal.h>\n// #include <setjmp.h>\n//\n// #define VMWARE_BDOOR_MAGIC 0x564D5868\n// #define VMWARE_BDOOR_PORT 0x5658\n// #define VMWARE_BDOOR_CMD_GETVERSION 10\n// #define VMWARE_BDOOR_RUN(cmd, eax, ebx, ecx, edx)        \\\n//     __asm__(\"inl %%dx, %%eax\" :                          \\\n//             \"=a\"(eax), \"=c\"(ecx), \"=d\"(edx), \"=b\"(ebx) : \\\n//             \"0\"(VMWARE_BDOOR_MAGIC),                     \\\n//             \"1\"(VMWARE_BDOOR_CMD_##cmd),                 \\\n//             \"2\"(VMWARE_BDOOR_PORT),                      \\\n//             \"3\"(UINT_MAX) :                              \\\n//             \"memory\");\n//\n// static sigjmp_buf env;\n//\n// void handler(int signal) {\n//     siglongjmp(env, 1);\n// }\n//\n// int hypervisor_bdoor_check(void) {\n//     uint32_t eax, ebx, ecx, edx;\n//     struct sigaction sa, save1, save2;\n//     int res = 0;\n//\n//     sa.sa_handler = handler;\n//     sigemptyset(&sa.sa_mask);\n//     sa.sa_flags = SA_RESTART;\n//     sigaction(SIGSEGV, &sa, &save1);\n//     sigaction(SIGILL, &sa, &save2);\n//\n//     if(sigsetjmp(env, 1)==0) {\n//         VMWARE_BDOOR_RUN(GETVERSION, eax, ebx, ecx, edx);\n//         if (ebx == VMWARE_BDOOR_MAGIC)\n//             res = 1;\n//     }\n//\n//     sa.sa_handler = SIG_DFL;\n//     sigaction(SIGSEGV, &save1, 0);\n//     sigaction(SIGILL, &save2, 0);\n//     return res;\n// }\n//\nimport \"C\"\n\nfunc HypervisorPortCheck() bool {\n\treturn C.hypervisor_bdoor_check() != 0\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/CDDL.txt",
    "content": "                            COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)\n                                                Version 1.0\n\n\n1. Definitions.\n\n    1.1. “Contributor” means each individual or entity that creates or contributes to the creation of Modifications.\n\n    1.2. “Contributor Version” means the combination of the Original Software, prior Modifications used by a Contributor\n    (if any), and the Modifications made by that particular Contributor.\n\n    1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, or (c) the combination\n    of files containing Original Software with files containing Modifications, in each case including portions thereof.\n\n    1.4. “Executable” means the Covered Software in any form other than Source Code.\n\n    1.5. “Initial Developer” means the individual or entity that first makes Original Software available under this License.\n\n    1.6. “Larger Work” means a work which combines Covered Software or portions thereof with code not governed by the terms\n    of this License.\n\n    1.7. “License” means this document.\n\n    1.8. “Licensable” means having the right to grant, to the maximum extent possible, whether at the time of the\n    initial grant or subsequently acquired, any and all of the rights conveyed herein.\n\n    1.9. “Modifications” means the Source Code and Executable form of any of the following:\n        A. Any file that results from an addition to, deletion from or modification of the contents of a file\n        containing Original Software or previous Modifications;\n        B. Any new file that contains any part of the Original Software or previous Modification; or\n        C. Any new file that is contributed or otherwise made available under the terms of this License.\n\n    1.10. “Original Software” means the Source Code and Executable form of computer software code that is originally\n    released under this License.\n\n    1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, including without limitation,\n    method, process, and apparatus claims, in any patent Licensable by grantor.\n\n    1.12. “Source Code” means (a) the common form of computer software code in which modifications are made and\n    (b) associated documentation included in or with such code.\n\n    1.13. “You” (or “Your”) means an individual or a legal entity exercising rights under, and complying with all of\n    the terms of, this License. For legal entities, “You” includes any entity which controls, is controlled by, or is\n    under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect,\n    to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more\n    than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.\n\n2. License Grants.\n\n    2.1. The Initial Developer Grant.\n    Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims,\n    the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:\n\n        (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer,\n        to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions\n        thereof), with or without Modifications, and/or as part of a Larger Work; and\n\n        (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made,\n        use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).\n\n        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first\n        distributes or otherwise makes the Original Software available to a third party under the terms of this License.\n\n        (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from\n        the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software,\n        or (ii) the combination of the Original Software with other software or devices.\n\n    2.2. Contributor Grant.\n    Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims,\n    each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:\n\n        (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use,\n        reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor\n        (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or\n        as part of a Larger Work; and\n\n        (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor\n        either alone and/or in combination with its Contributor Version (or portions of such combination), to make,\n        use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor\n        (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor\n        Version (or portions of such combination).\n\n        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes\n        or otherwise makes the Modifications available to a third party.\n\n        (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has\n        deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of\n        Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software\n        (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered\n        Software in the absence of Modifications made by that Contributor.\n\n3. Distribution Obligations.\n\n    3.1. Availability of Source Code.\n    Any Covered Software that You distribute or otherwise make available in Executable form must also be made available\n    in Source Code form and that Source Code form must be distributed only under the terms of this License. You must\n    include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or\n    otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they\n    can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used\n    for software exchange.\n\n    3.2. Modifications.\n    The Modifications that You create or to which You contribute are governed by the terms of this License. You\n    represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to\n    grant the rights conveyed by this License.\n\n    3.3. Required Notices.\n    You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification.\n    You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or\n    any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.\n\n    3.4. Application of Additional Terms.\n    You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the\n    applicable version of this License or the recipients’ rights hereunder. You may choose to offer, and to charge a\n    fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software.\n    However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor.\n    You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered\n    by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability\n    incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability\n    terms You offer.\n\n    3.5. Distribution of Executable Versions.\n    You may distribute the Executable form of the Covered Software under the terms of this License or under the terms\n    of a license of Your choice, which may contain terms different from this License, provided that You are in compliance\n    with the terms of this License and that the license for the Executable form does not attempt to limit or alter\n    the recipient’s rights in the Source Code form from the rights set forth in this License. If You distribute the\n    Covered Software in Executable form under a different license, You must make it absolutely clear that any terms\n    which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby\n    agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer\n    or such Contributor as a result of any such terms You offer.\n\n    3.6. Larger Works.\n    You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License\n    and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this\n    License are fulfilled for the Covered Software.\n\n4. Versions of the License.\n\n    4.1. New Versions.\n    Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License\n    from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3,\n    no one other than the license steward has the right to modify this License.\n\n    4.2. Effect of New Versions.\n    You may always continue to use, distribute or otherwise make the Covered Software available under the terms of\n    the version of the License under which You originally received the Covered Software. If the Initial Developer\n    includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under\n    any subsequent version of the License, You must distribute and make the Covered Software available under the terms\n    of the version of the License under which You originally received the Covered Software. Otherwise, You may also\n    choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version\n    of the License published by the license steward.\n\n    4.3. Modified Versions.\n    When You are an Initial Developer and You want to create a new license for Your Original Software, You may create\n    and use a modified version of this License if You: (a) rename the license and remove any references to the name of\n    the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that\n    the license contains terms which differ from this License.\n\n5. DISCLAIMER OF WARRANTY.\n\nCOVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR\nIMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A\nPARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU.\nSHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE\nCOST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.\nNO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.\n\n6. TERMINATION.\n\n    6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms\n    herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their\n    nature, must remain in effect beyond the termination of this License shall survive.\n\n    6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer\n    or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as\n    “Participant”) alleging that the Participant Software (meaning the Contributor Version where the Participant\n    is a Contributor or the Original Software where the Participant is the Initial Developer) directly or\n    indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant,\n    the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1\n    and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically\n    at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with\n    respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement\n    with Participant.\n\n    6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly\n    or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the\n    initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant\n    under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.\n\n    6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted\n    by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor)\n    shall survive termination.\n\n7. LIMITATION OF LIABILITY.\n\nUNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE\nINITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO\nANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR\nLOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY\nSHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL\nINJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE\nEXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.\n\n8. U.S. GOVERNMENT END USERS.\n\nThe Covered Software is a “commercial item,” as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of\n“commercial computer software” (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer software documentation”\nas such terms are used in 48 C.F.R. 12.212 Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),\nall U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of,\nand supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.\n\n9. MISCELLANEOUS.\n\nThis License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed\nby the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any,\nprovides otherwise), excluding such jurisdiction’s conflict-of-law provisions. Any litigation relating to this License shall be subject\nto the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the\nlosing party responsible for costs, including, without limitation, court costs and reasonable attorneys’ fees and expenses. The application of\nthe United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that\nthe language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for\ncompliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use,\ndistribute or otherwise make available any Covered Software.\n\n10. RESPONSIBILITY FOR CLAIMS.\n\nAs between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of\nits utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on\nan equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.\n\n--------\n\nNOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION\nLICENSE (CDDL)\n\nThe OpenSolaris code released under the CDDL shall be governed by the laws\nof the State of California (excluding conflict-of-law provisions). Any\nlitigation relating to this License shall be subject to the jurisdiction of\nthe Federal Courts of the Northern District of California and the state\ncourts of the State of California, with venue lying in Santa Clara County,\nCalifornia.\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/LGPL.txt",
    "content": "\t\t  GNU LESSER GENERAL PUBLIC LICENSE\n\t\t       Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\n\t\t  GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\n           How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with this library; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/LICENSE",
    "content": "The package vmw-guestinfo is dual-licensed under the terms of:\n- LGPL 2.1 and no later version (see LGPL.txt)\n- CDDL 1.0 and no later version (see CDDL.txt)\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/README",
    "content": "This package provides access to the guestinfo variables exposed to a VMware virtual machine.\n\nsee examples/main.go for an example\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/rpcvmx/rpcvmx.go",
    "content": "package rpcvmx\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"github.com/vmware/vmw-guestinfo/rpcout\"\n)\n\n// Config gives access to the vmx config through the VMware backdoor\ntype Config struct{}\n\n// NewConfig creates a new Config object\nfunc NewConfig() *Config {\n\treturn &Config{}\n}\n\n// String returns the config string in the guestinfo.* namespace\nfunc (c *Config) String(key string, defaultValue string) (string, error) {\n\tout, ok, err := rpcout.SendOne(\"info-get guestinfo.%s\", key)\n\tif err != nil {\n\t\treturn \"\", err\n\t} else if !ok {\n\t\treturn defaultValue, nil\n\t}\n\treturn string(out), nil\n}\n\n// Bool returns the config boolean in the guestinfo.* namespace\nfunc (c *Config) Bool(key string, defaultValue bool) (bool, error) {\n\tval, err := c.String(key, fmt.Sprintf(\"%t\", defaultValue))\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tres, err := strconv.ParseBool(val)\n\tif err != nil {\n\t\treturn defaultValue, nil\n\t}\n\treturn res, nil\n}\n\n// Int returns the config integer in the guestinfo.* namespace\nfunc (c *Config) Int(key string, defaultValue int) (int, error) {\n\tval, err := c.String(key, \"\")\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tres, err := strconv.Atoi(val)\n\tif err != nil {\n\t\treturn defaultValue, nil\n\t}\n\treturn res, nil\n}\n\n// SetString sets the guestinfo.KEY with the string VALUE\nfunc (c *Config) SetString(key string, value string) error {\n\t_, _, err := rpcout.SendOne(\"info-set guestinfo.%s %s\", key, value)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// SetString sets the guestinfo.KEY with the bool VALUE\nfunc (c *Config) SetBool(key string, value bool) error {\n\treturn c.SetString(key, strconv.FormatBool(value))\n}\n\n// SetString sets the guestinfo.KEY with the int VALUE\nfunc (c *Config) SetInt(key string, value int) error {\n\treturn c.SetString(key, strconv.Itoa(value))\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/vmcheck/vmcheck.go",
    "content": "package vmcheck\n\nimport (\n\t\"github.com/sigma/bdoor\"\n)\n\n// IsVirtualWorld returns whether the code is running in a VMware virtual machine or no\nfunc IsVirtualWorld() bool {\n\treturn bdoor.HypervisorPortCheck()\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/vmcheck/vmcheck_386.s",
    "content": "#include \"textflag.h\"\n\n// From https://github.com/intel-go/cpuid/blob/master/cpuidlow_amd64.s\n// func cpuid_low(arg1, arg2 uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·cpuid_low(SB), NOSPLIT, $0-24\n\tMOVL arg1+0(FP), AX\n\tMOVL arg2+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/vmcheck/vmcheck_amd64.s",
    "content": "#include \"textflag.h\"\n\n// From https://github.com/intel-go/cpuid/blob/master/cpuidlow_amd64.s\n// func cpuid_low(arg1, arg2 uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·cpuid_low(SB), NOSPLIT, $0-24\n\tMOVL arg1+0(FP), AX\n\tMOVL arg2+4(FP), CX\n\tCPUID\n\tMOVL AX, eax+8(FP)\n\tMOVL BX, ebx+12(FP)\n\tMOVL CX, ecx+16(FP)\n\tMOVL DX, edx+20(FP)\n\tRET\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/vmcheck/vmcheck_general.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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// +build !linux\n\npackage vmcheck\n\n// probably not gonna work. Instead, implement a platform-specific variant, and\n// add the platform to above build flags\nfunc openPortsAccess() error {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-guestinfo/vmcheck/vmcheck_linux.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage vmcheck\n\nimport \"syscall\"\n\nfunc openPortsAccess() error {\n\t// Privilege level 3 to access all ports above 0x3ff\n\treturn syscall.Iopl(3)\n}\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-ovflib/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\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-ovflib/README",
    "content": "minimal support for parsing OVF environment\n"
  },
  {
    "path": "vendor/github.com/sigma/vmw-ovflib/ovf.go",
    "content": "// Copyright 2014-2015 VMware, Inc. 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\npackage ovf\n\nimport (\n\t\"encoding/xml\"\n\t\"log\"\n)\n\ntype environment struct {\n\tPlatform   platform   `xml:\"PlatformSection\"`\n\tProperties []property `xml:\"PropertySection>Property\"`\n}\n\ntype platform struct {\n\tKind    string `xml:\"Kind\"`\n\tVersion string `xml:\"Version\"`\n\tVendor  string `xml:\"Vendor\"`\n\tLocale  string `xml:\"Locale\"`\n}\n\ntype property struct {\n\tKey   string `xml:\"key,attr\"`\n\tValue string `xml:\"value,attr\"`\n}\n\ntype OvfEnvironment struct {\n\tPlatform   platform\n\tProperties map[string]string\n}\n\nfunc ReadEnvironment(doc []byte) *OvfEnvironment {\n\tvar env environment\n\tif err := xml.Unmarshal(doc, &env); err != nil {\n\t\tlog.Fatalln(err)\n\t}\n\n\tdict := make(map[string]string)\n\tfor _, p := range env.Properties {\n\t\tdict[p.Key] = p.Value\n\t}\n\treturn &OvfEnvironment{Properties: dict,\n\t\tPlatform: env.Platform}\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/.gitignore",
    "content": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture specific extensions/prefixes\n*.[568vq]\n[568vq].out\n\n*.cgo1.go\n*.cgo2.c\n_cgo_defun.c\n_cgo_gotypes.go\n_cgo_export.*\n\n_testmain.go\n\n*.exe\n\n.DS_Store\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/.travis.yml",
    "content": "language: go\n\ngo:\n  - 1.1\n  - 1.2\n  - 1.3\n  - 1.4\n  - 1.5\n  - tip\n\nscript:\n  - go test -v ./...\n\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/LICENCE.txt",
    "content": "Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell\n\nPlease consider promoting this project if you find it useful.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "vendor/github.com/stretchr/testify/README.md",
    "content": "Testify - Thou Shalt Write Tests\n================================\n\n[![Build Status](https://travis-ci.org/stretchr/testify.svg)](https://travis-ci.org/stretchr/testify)\n\nGo code (golang) set of packages that provide many tools for testifying that your code will behave as you intend.\n\nFeatures include:\n\n  * [Easy assertions](#assert-package)\n  * [Mocking](#mock-package)\n  * [HTTP response trapping](#http-package)\n  * [Testing suite interfaces and functions](#suite-package)\n\nGet started:\n\n  * Install testify with [one line of code](#installation), or [update it with another](#staying-up-to-date)\n  * For an introduction to writing test code in Go, see http://golang.org/doc/code.html#Testing\n  * Check out the API Documentation http://godoc.org/github.com/stretchr/testify\n  * To make your testing life easier, check out our other project, [gorc](http://github.com/stretchr/gorc)\n  * A little about [Test-Driven Development (TDD)](http://en.wikipedia.org/wiki/Test-driven_development)\n\n\n\n[`assert`](http://godoc.org/github.com/stretchr/testify/assert \"API documentation\") package\n-------------------------------------------------------------------------------------------\n\nThe `assert` package provides some helpful methods that allow you to write better test code in Go.\n\n  * Prints friendly, easy to read failure descriptions\n  * Allows for very readable code\n  * Optionally annotate each assertion with a message\n\nSee it in action:\n\n```go\npackage yours\n\nimport (\n  \"testing\"\n  \"github.com/stretchr/testify/assert\"\n)\n\nfunc TestSomething(t *testing.T) {\n\n  // assert equality\n  assert.Equal(t, 123, 123, \"they should be equal\")\n\n  // assert inequality\n  assert.NotEqual(t, 123, 456, \"they should not be equal\")\n\n  // assert for nil (good for errors)\n  assert.Nil(t, object)\n\n  // assert for not nil (good when you expect something)\n  if assert.NotNil(t, object) {\n\n    // now we know that object isn't nil, we are safe to make\n    // further assertions without causing any errors\n    assert.Equal(t, \"Something\", object.Value)\n\n  }\n\n}\n```\n\n  * Every assert func takes the `testing.T` object as the first argument.  This is how it writes the errors out through the normal `go test` capabilities.\n  * Every assert func returns a bool indicating whether the assertion was successful or not, this is useful for if you want to go on making further assertions under certain conditions.\n\nif you assert many times, use the below:\n\n```go\npackage yours\n\nimport (\n  \"testing\"\n  \"github.com/stretchr/testify/assert\"\n)\n\nfunc TestSomething(t *testing.T) {\n  assert := assert.New(t)\n\n  // assert equality\n  assert.Equal(123, 123, \"they should be equal\")\n\n  // assert inequality\n  assert.NotEqual(123, 456, \"they should not be equal\")\n\n  // assert for nil (good for errors)\n  assert.Nil(object)\n\n  // assert for not nil (good when you expect something)\n  if assert.NotNil(object) {\n\n    // now we know that object isn't nil, we are safe to make\n    // further assertions without causing any errors\n    assert.Equal(\"Something\", object.Value)\n  }\n}\n```\n\n[`require`](http://godoc.org/github.com/stretchr/testify/require \"API documentation\") package\n---------------------------------------------------------------------------------------------\n\nThe `require` package provides same global functions as the `assert` package, but instead of returning a boolean result they terminate current test.\n\nSee [t.FailNow](http://golang.org/pkg/testing/#T.FailNow) for details.\n\n\n[`http`](http://godoc.org/github.com/stretchr/testify/http \"API documentation\") package\n---------------------------------------------------------------------------------------\n\nThe `http` package contains test objects useful for testing code that relies on the `net/http` package.  Check out the [(deprecated) API documentation for the `http` package](http://godoc.org/github.com/stretchr/testify/http).\n\nWe recommend you use [httptest](http://golang.org/pkg/net/http/httptest) instead.\n\n[`mock`](http://godoc.org/github.com/stretchr/testify/mock \"API documentation\") package\n----------------------------------------------------------------------------------------\n\nThe `mock` package provides a mechanism for easily writing mock objects that can be used in place of real objects when writing test code.\n\nAn example test function that tests a piece of code that relies on an external object `testObj`, can setup expectations (testify) and assert that they indeed happened:\n\n```go\npackage yours\n\nimport (\n  \"testing\"\n  \"github.com/stretchr/testify/mock\"\n)\n\n/*\n  Test objects\n*/\n\n// MyMockedObject is a mocked object that implements an interface\n// that describes an object that the code I am testing relies on.\ntype MyMockedObject struct{\n  mock.Mock\n}\n\n// DoSomething is a method on MyMockedObject that implements some interface\n// and just records the activity, and returns what the Mock object tells it to.\n//\n// In the real object, this method would do something useful, but since this\n// is a mocked object - we're just going to stub it out.\n//\n// NOTE: This method is not being tested here, code that uses this object is.\nfunc (m *MyMockedObject) DoSomething(number int) (bool, error) {\n\n  args := m.Called(number)\n  return args.Bool(0), args.Error(1)\n\n}\n\n/*\n  Actual test functions\n*/\n\n// TestSomething is an example of how to use our test object to\n// make assertions about some target code we are testing.\nfunc TestSomething(t *testing.T) {\n\n  // create an instance of our test object\n  testObj := new(MyMockedObject)\n\n  // setup expectations\n  testObj.On(\"DoSomething\", 123).Return(true, nil)\n\n  // call the code we are testing\n  targetFuncThatDoesSomethingWithObj(testObj)\n\n  // assert that the expectations were met\n  testObj.AssertExpectations(t)\n\n}\n```\n\nFor more information on how to write mock code, check out the [API documentation for the `mock` package](http://godoc.org/github.com/stretchr/testify/mock).\n\nYou can use the [mockery tool](http://github.com/vektra/mockery) to autogenerate the mock code against an interface as well, making using mocks much quicker.\n\n[`suite`](http://godoc.org/github.com/stretchr/testify/suite \"API documentation\") package\n-----------------------------------------------------------------------------------------\n\nThe `suite` package provides functionality that you might be used to from more common object oriented languages.  With it, you can build a testing suite as a struct, build setup/teardown methods and testing methods on your struct, and run them with 'go test' as per normal.\n\nAn example suite is shown below:\n\n```go\n// Basic imports\nimport (\n    \"testing\"\n    \"github.com/stretchr/testify/assert\"\n    \"github.com/stretchr/testify/suite\"\n)\n\n// Define the suite, and absorb the built-in basic suite\n// functionality from testify - including a T() method which\n// returns the current testing context\ntype ExampleTestSuite struct {\n    suite.Suite\n    VariableThatShouldStartAtFive int\n}\n\n// Make sure that VariableThatShouldStartAtFive is set to five\n// before each test\nfunc (suite *ExampleTestSuite) SetupTest() {\n    suite.VariableThatShouldStartAtFive = 5\n}\n\n// All methods that begin with \"Test\" are run as tests within a\n// suite.\nfunc (suite *ExampleTestSuite) TestExample() {\n    assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive)\n}\n\n// In order for 'go test' to run this suite, we need to create\n// a normal test function and pass our suite to suite.Run\nfunc TestExampleTestSuite(t *testing.T) {\n    suite.Run(t, new(ExampleTestSuite))\n}\n```\n\nFor a more complete example, using all of the functionality provided by the suite package, look at our [example testing suite](https://github.com/stretchr/testify/blob/master/suite/suite_test.go)\n\nFor more information on writing suites, check out the [API documentation for the `suite` package](http://godoc.org/github.com/stretchr/testify/suite).\n\n`Suite` object has assertion methods:\n\n```go\n// Basic imports\nimport (\n    \"testing\"\n    \"github.com/stretchr/testify/suite\"\n)\n\n// Define the suite, and absorb the built-in basic suite\n// functionality from testify - including assertion methods.\ntype ExampleTestSuite struct {\n    suite.Suite\n    VariableThatShouldStartAtFive int\n}\n\n// Make sure that VariableThatShouldStartAtFive is set to five\n// before each test\nfunc (suite *ExampleTestSuite) SetupTest() {\n    suite.VariableThatShouldStartAtFive = 5\n}\n\n// All methods that begin with \"Test\" are run as tests within a\n// suite.\nfunc (suite *ExampleTestSuite) TestExample() {\n    suite.Equal(suite.VariableThatShouldStartAtFive, 5)\n}\n\n// In order for 'go test' to run this suite, we need to create\n// a normal test function and pass our suite to suite.Run\nfunc TestExampleTestSuite(t *testing.T) {\n    suite.Run(t, new(ExampleTestSuite))\n}\n```\n\n------\n\nInstallation\n============\n\nTo install Testify, use `go get`:\n\n    * Latest version: go get github.com/stretchr/testify\n    * Specific version: go get gopkg.in/stretchr/testify.v1\n\nThis will then make the following packages available to you:\n\n    github.com/stretchr/testify/assert\n    github.com/stretchr/testify/mock\n    github.com/stretchr/testify/http\n\nImport the `testify/assert` package into your code using this template:\n\n```go\npackage yours\n\nimport (\n  \"testing\"\n  \"github.com/stretchr/testify/assert\"\n)\n\nfunc TestSomething(t *testing.T) {\n\n  assert.True(t, true, \"True is true!\")\n\n}\n```\n\n------\n\nStaying up to date\n==================\n\nTo update Testify to the latest version, use `go get -u github.com/stretchr/testify`.\n\n------\n\nVersion History\n===============\n\n   * 1.0 - New package versioning strategy adopted.\n\n------\n\nContributing\n============\n\nPlease feel free to submit issues, fork the repository and send pull requests!\n\nWhen submitting an issue, we ask that you please include a complete test function that demonstrates the issue.  Extra credit for those using Testify to write the test code that demonstrates it.\n\n------\n\nLicence\n=======\nCopyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell\n\nPlease consider promoting this project if you find it useful.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\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\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"runtime\"\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\n// TestingT is an interface wrapper around *testing.T\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n}\n\n// Comparison 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\n\tif expected == nil || actual == nil {\n\t\treturn expected == actual\n\t}\n\n\treturn reflect.DeepEqual(expected, actual)\n\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\tactualType := reflect.TypeOf(actual)\n\tif actualType == nil {\n\t\treturn false\n\t}\n\texpectedValue := reflect.ValueOf(expected)\n\tif expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) {\n\t\t// Attempt comparison after type conversion\n\t\treturn reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual)\n\t}\n\n\treturn false\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 occured 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\n\tpc := uintptr(0)\n\tfile := \"\"\n\tline := 0\n\tok := false\n\tname := \"\"\n\n\tcallers := []string{}\n\tfor i := 0; ; i++ {\n\t\tpc, file, line, ok = runtime.Caller(i)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\n\t\t// This is a huge edge case, but it will panic if this is the case, see #180\n\t\tif file == \"<autogenerated>\" {\n\t\t\tbreak\n\t\t}\n\n\t\tparts := strings.Split(file, \"/\")\n\t\tdir := parts[len(parts)-2]\n\t\tfile = parts[len(parts)-1]\n\t\tif (dir != \"assert\" && dir != \"mock\" && dir != \"require\") || file == \"mock_test.go\" {\n\t\t\tcallers = append(callers, fmt.Sprintf(\"%s:%d\", file, line))\n\t\t}\n\n\t\tf := runtime.FuncForPC(pc)\n\t\tif f == nil {\n\t\t\tbreak\n\t\t}\n\t\tname = f.Name()\n\t\t// Drop the package\n\t\tsegments := strings.Split(name, \".\")\n\t\tname = segments[len(segments)-1]\n\t\tif isTest(name, \"Test\") ||\n\t\t\tisTest(name, \"Benchmark\") ||\n\t\t\tisTest(name, \"Example\") {\n\t\t\tbreak\n\t\t}\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\trune, _ := utf8.DecodeRuneInString(name[len(prefix):])\n\treturn !unicode.IsLower(rune)\n}\n\n// getWhitespaceString returns a string that is long enough to overwrite the default\n// output from the go testing framework.\nfunc getWhitespaceString() string {\n\n\t_, file, line, ok := runtime.Caller(1)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\tparts := strings.Split(file, \"/\")\n\tfile = parts[len(parts)-1]\n\n\treturn strings.Repeat(\" \", len(fmt.Sprintf(\"%s:%d:      \", file, line)))\n\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\treturn msgAndArgs[0].(string)\n\t}\n\tif len(msgAndArgs) > 1 {\n\t\treturn fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)\n\t}\n\treturn \"\"\n}\n\n// Indents all lines of the message by appending a number of tabs to each line, in an output format compatible with Go's\n// test printing (see inner comment for specifics)\nfunc indentMessageLines(message string, tabs int) string {\n\toutBuf := new(bytes.Buffer)\n\n\tfor i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ {\n\t\tif i != 0 {\n\t\t\toutBuf.WriteRune('\\n')\n\t\t}\n\t\tfor ii := 0; ii < tabs; ii++ {\n\t\t\toutBuf.WriteRune('\\t')\n\t\t\t// Bizarrely, all lines except the first need one fewer tabs prepended, so deliberately advance the counter\n\t\t\t// by 1 prematurely.\n\t\t\tif ii == 0 && i > 0 {\n\t\t\t\tii++\n\t\t\t}\n\t\t}\n\t\toutBuf.WriteString(scanner.Text())\n\t}\n\n\treturn outBuf.String()\n}\n\n// Fail reports a failure through\nfunc Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool {\n\n\tmessage := messageFromMsgAndArgs(msgAndArgs...)\n\n\terrorTrace := strings.Join(CallerInfo(), \"\\n\\r\\t\\t\\t\")\n\tif len(message) > 0 {\n\t\tt.Errorf(\"\\r%s\\r\\tError Trace:\\t%s\\n\"+\n\t\t\t\"\\r\\tError:%s\\n\"+\n\t\t\t\"\\r\\tMessages:\\t%s\\n\\r\",\n\t\t\tgetWhitespaceString(),\n\t\t\terrorTrace,\n\t\t\tindentMessageLines(failureMessage, 2),\n\t\t\tmessage)\n\t} else {\n\t\tt.Errorf(\"\\r%s\\r\\tError Trace:\\t%s\\n\"+\n\t\t\t\"\\r\\tError:%s\\n\\r\",\n\t\t\tgetWhitespaceString(),\n\t\t\terrorTrace,\n\t\t\tindentMessageLines(failureMessage, 2))\n\t}\n\n\treturn false\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//    assert.Implements(t, (*MyInterface)(nil), new(MyObject), \"MyObject\")\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\n\tinterfaceType := reflect.TypeOf(interfaceObject).Elem()\n\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\n// IsType asserts that the specified objects are of the same type.\nfunc IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\n\tif !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) {\n\t\treturn Fail(t, fmt.Sprintf(\"Object expected to be of type %v, but was %v\", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// Equal asserts that two objects are equal.\n//\n//    assert.Equal(t, 123, 123, \"123 and 123 should be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\n\tif !ObjectsAreEqual(expected, actual) {\n\t\tdiff := diff(expected, actual)\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: %#v (expected)\\n\"+\n\t\t\t\"        != %#v (actual)%s\", expected, actual, diff), msgAndArgs...)\n\t}\n\n\treturn true\n\n}\n\n// EqualValues asserts that two objects are equal or convertable to the same types\n// and equal.\n//\n//    assert.EqualValues(t, uint32(123), int32(123), \"123 and 123 should be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\n\tif !ObjectsAreEqualValues(expected, actual) {\n\t\treturn Fail(t, fmt.Sprintf(\"Not equal: %#v (expected)\\n\"+\n\t\t\t\"        != %#v (actual)\", expected, actual), msgAndArgs...)\n\t}\n\n\treturn true\n\n}\n\n// Exactly asserts that two objects are equal is value and type.\n//\n//    assert.Exactly(t, int32(123), int64(123), \"123 and 123 should NOT be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\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\\r\\t%v != %v\", aType, bType), msgAndArgs...)\n\t}\n\n\treturn Equal(t, expected, actual, msgAndArgs...)\n\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//    assert.NotNil(t, err, \"err should be something\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif !isNil(object) {\n\t\treturn true\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\tkind := value.Kind()\n\tif kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// Nil asserts that the specified object is nil.\n//\n//    assert.Nil(t, err, \"err should be nothing\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\tif isNil(object) {\n\t\treturn true\n\t}\n\treturn Fail(t, fmt.Sprintf(\"Expected nil, but got: %#v\", object), msgAndArgs...)\n}\n\nvar numericZeros = []interface{}{\n\tint(0),\n\tint8(0),\n\tint16(0),\n\tint32(0),\n\tint64(0),\n\tuint(0),\n\tuint8(0),\n\tuint16(0),\n\tuint32(0),\n\tuint64(0),\n\tfloat32(0),\n\tfloat64(0),\n}\n\n// isEmpty gets whether the specified object is considered empty or not.\nfunc isEmpty(object interface{}) bool {\n\n\tif object == nil {\n\t\treturn true\n\t} else if object == \"\" {\n\t\treturn true\n\t} else if object == false {\n\t\treturn true\n\t}\n\n\tfor _, v := range numericZeros {\n\t\tif object == v {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tobjValue := reflect.ValueOf(object)\n\n\tswitch objValue.Kind() {\n\tcase reflect.Map:\n\t\tfallthrough\n\tcase reflect.Slice, reflect.Chan:\n\t\t{\n\t\t\treturn (objValue.Len() == 0)\n\t\t}\n\tcase reflect.Ptr:\n\t\t{\n\t\t\tif objValue.IsNil() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tswitch object.(type) {\n\t\t\tcase *time.Time:\n\t\t\t\treturn object.(*time.Time).IsZero()\n\t\t\tdefault:\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// Empty asserts that the specified object is empty.  I.e. nil, \"\", false, 0 or either\n// a slice or a channel with len == 0.\n//\n//  assert.Empty(t, obj)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\n\tpass := isEmpty(object)\n\tif !pass {\n\t\tFail(t, fmt.Sprintf(\"Should be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n\n}\n\n// NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, \"\", false, 0 or either\n// a slice or a channel with len == 0.\n//\n//  if assert.NotEmpty(t, obj) {\n//    assert.Equal(t, \"two\", obj[1])\n//  }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {\n\n\tpass := !isEmpty(object)\n\tif !pass {\n\t\tFail(t, fmt.Sprintf(\"Should NOT be empty, but was %v\", object), msgAndArgs...)\n\t}\n\n\treturn pass\n\n}\n\n// getLen try to get length of object.\n// return (false, 0) if impossible.\nfunc getLen(x interface{}) (ok bool, length int) {\n\tv := reflect.ValueOf(x)\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\tok = false\n\t\t}\n\t}()\n\treturn true, v.Len()\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//    assert.Len(t, mySlice, 3, \"The size of slice is not 3\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool {\n\tok, l := getLen(object)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" could not be applied builtin len()\", object), msgAndArgs...)\n\t}\n\n\tif l != length {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" 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//    assert.True(t, myBool, \"myBool should be true\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\n\tif value != true {\n\t\treturn Fail(t, \"Should be true\", msgAndArgs...)\n\t}\n\n\treturn true\n\n}\n\n// False asserts that the specified value is false.\n//\n//    assert.False(t, myBool, \"myBool should be false\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) bool {\n\n\tif value != false {\n\t\treturn Fail(t, \"Should be false\", msgAndArgs...)\n\t}\n\n\treturn true\n\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//    assert.NotEqual(t, obj1, obj2, \"two objects shouldn't be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {\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\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 includeElement(list interface{}, element interface{}) (ok, found bool) {\n\n\tlistValue := reflect.ValueOf(list)\n\telementValue := reflect.ValueOf(element)\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 reflect.TypeOf(list).Kind() == reflect.String {\n\t\treturn true, strings.Contains(listValue.String(), elementValue.String())\n\t}\n\n\tif reflect.TypeOf(list).Kind() == 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\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//    assert.Contains(t, \"Hello World\", \"World\", \"But 'Hello World' does contain 'World'\")\n//    assert.Contains(t, [\"Hello\", \"World\"], \"World\", \"But [\"Hello\", \"World\"] does contain 'World'\")\n//    assert.Contains(t, {\"Hello\": \"World\"}, \"Hello\", \"But {'Hello': 'World'} does contain 'Hello'\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\n\tok, found := includeElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif !found {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" does not contain \\\"%s\\\"\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n\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//    assert.NotContains(t, \"Hello World\", \"Earth\", \"But 'Hello World' does NOT contain 'Earth'\")\n//    assert.NotContains(t, [\"Hello\", \"World\"], \"Earth\", \"But ['Hello', 'World'] does NOT contain 'Earth'\")\n//    assert.NotContains(t, {\"Hello\": \"World\"}, \"Earth\", \"But {'Hello': 'World'} does NOT contain 'Earth'\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool {\n\n\tok, found := includeElement(s, contains)\n\tif !ok {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" could not be applied builtin len()\", s), msgAndArgs...)\n\t}\n\tif found {\n\t\treturn Fail(t, fmt.Sprintf(\"\\\"%s\\\" should not contain \\\"%s\\\"\", s, contains), msgAndArgs...)\n\t}\n\n\treturn true\n\n}\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {\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) (bool, interface{}) {\n\n\tdidPanic := false\n\tvar message interface{}\n\tfunc() {\n\n\t\tdefer func() {\n\t\t\tif message = recover(); message != nil {\n\t\t\t\tdidPanic = true\n\t\t\t}\n\t\t}()\n\n\t\t// call the target function\n\t\tf()\n\n\t}()\n\n\treturn didPanic, message\n\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//   assert.Panics(t, func(){\n//     GoCrazy()\n//   }, \"Calling GoCrazy() should panic\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\n\tif funcDidPanic, panicValue := didPanic(f); !funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should panic\\n\\r\\tPanic value:\\t%v\", f, panicValue), msgAndArgs...)\n\t}\n\n\treturn true\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//   assert.NotPanics(t, func(){\n//     RemainCalm()\n//   }, \"Calling RemainCalm() should NOT panic\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\n\tif funcDidPanic, panicValue := didPanic(f); funcDidPanic {\n\t\treturn Fail(t, fmt.Sprintf(\"func %#v should not panic\\n\\r\\tPanic value:\\t%v\", f, panicValue), 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//   assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, \"The difference should not be more than 10s\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\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\nfunc toFloat(x interface{}) (float64, bool) {\n\tvar xf float64\n\txok := true\n\n\tswitch xn := x.(type) {\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 = 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// \t assert.InDelta(t, math.Pi, (22 / 7.0), 0.01)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\n\tif !aok || !bok {\n\t\treturn Fail(t, fmt.Sprintf(\"Parameters must be numerical\"), msgAndArgs...)\n\t}\n\n\tif math.IsNaN(af) {\n\t\treturn Fail(t, fmt.Sprintf(\"Actual 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 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, fmt.Sprintf(\"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)\n\t\tif !result {\n\t\t\treturn result\n\t\t}\n\t}\n\n\treturn true\n}\n\n// min(|expected|, |actual|) * epsilon\nfunc calcEpsilonDelta(expected, actual interface{}, epsilon float64) float64 {\n\taf, aok := toFloat(expected)\n\tbf, bok := toFloat(actual)\n\n\tif !aok || !bok {\n\t\t// invalid input\n\t\treturn 0\n\t}\n\n\tif af < 0 {\n\t\taf = -af\n\t}\n\tif bf < 0 {\n\t\tbf = -bf\n\t}\n\tvar delta float64\n\tif af < bf {\n\t\tdelta = af * epsilon\n\t} else {\n\t\tdelta = bf * epsilon\n\t}\n\treturn delta\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\tdelta := calcEpsilonDelta(expected, actual, epsilon)\n\n\treturn InDelta(t, expected, actual, delta, msgAndArgs...)\n}\n\n// InEpsilonSlice is the same as InEpsilon, except it compares two slices.\nfunc InEpsilonSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\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, fmt.Sprintf(\"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 := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta)\n\t\tif !result {\n\t\t\treturn result\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//   actualObj, err := SomeFunction()\n//   if assert.NoError(t, err) {\n//\t   assert.Equal(t, actualObj, expectedObj)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\tif isNil(err) {\n\t\treturn true\n\t}\n\n\treturn Fail(t, fmt.Sprintf(\"Received unexpected error %q\", err), msgAndArgs...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   if assert.Error(t, err, \"An error was expected\") {\n//\t   assert.Equal(t, err, expectedError)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) bool {\n\n\tmessage := messageFromMsgAndArgs(msgAndArgs...)\n\treturn NotNil(t, err, \"An error is expected but got nil. %s\", message)\n\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//   actualObj, err := SomeFunction()\n//   if assert.Error(t, err, \"An error was expected\") {\n//\t   assert.Equal(t, err, expectedError)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool {\n\n\tmessage := messageFromMsgAndArgs(msgAndArgs...)\n\tif !NotNil(t, theError, \"An error is expected but got nil. %s\", message) {\n\t\treturn false\n\t}\n\ts := \"An error with value \\\"%s\\\" is expected but got \\\"%s\\\". %s\"\n\treturn Equal(t, errString, theError.Error(),\n\t\ts, errString, theError.Error(), message)\n}\n\n// matchRegexp return true if a specified regexp matches a string.\nfunc matchRegexp(rx interface{}, str interface{}) bool {\n\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\treturn (r.FindStringIndex(fmt.Sprint(str)) != nil)\n\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//  assert.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//  assert.Regexp(t, \"start...$\", \"it's not starting\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\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//  assert.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//  assert.NotRegexp(t, \"^start\", \"it's not starting\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\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\n// Zero asserts that i is the zero value for its type and returns the truth.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\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 and returns the truth.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool {\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// JSONEq asserts that two JSON strings are equivalent.\n//\n//  assert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool {\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\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\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 or array. 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 {\n\t\treturn \"\"\n\t}\n\n\tspew.Config.SortKeys = true\n\te := spew.Sdump(expected)\n\ta := spew.Sdump(actual)\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"
  },
  {
    "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// Example Usage\n//\n// The following is a complete example using assert in a standard test function:\n//    import (\n//      \"testing\"\n//      \"github.com/stretchr/testify/assert\"\n//    )\n//\n//    func TestSomething(t *testing.T) {\n//\n//      var a string = \"Hello\"\n//      var b string = \"Hello\"\n//\n//      assert.Equal(t, a, b, \"The two words should be the same.\")\n//\n//    }\n//\n// if you assert many times, use the format below:\n//\n//    import (\n//      \"testing\"\n//      \"github.com/stretchr/testify/assert\"\n//    )\n//\n//    func TestSomething(t *testing.T) {\n//      assert := assert.New(t)\n//\n//      var a string = \"Hello\"\n//      var b string = \"Hello\"\n//\n//      assert.Equal(a, b, \"The two words should be the same.\")\n//    }\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\nimport \"time\"\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// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool {\n\treturn Fail(a.t, failureMessage, msgAndArgs...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//    assert.Implements((*MyInterface)(nil), new(MyObject), \"MyObject\")\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn Implements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// IsType asserts that the specified objects are of the same type.\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool {\n\treturn IsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//    assert.Equal(123, 123, \"123 and 123 should be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Equal(expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\treturn Equal(a.t, expected, actual, msgAndArgs...)\n}\n\n// EqualValues asserts that two objects are equal or convertable to the same types\n// and equal.\n//\n//    assert.EqualValues(uint32(123), int32(123), \"123 and 123 should be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) EqualValues(expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\treturn EqualValues(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactly asserts that two objects are equal is value and type.\n//\n//    assert.Exactly(int32(123), int64(123), \"123 and 123 should NOT be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Exactly(expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\treturn Exactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//    assert.NotNil(err, \"err should be something\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotNil(a.t, object, msgAndArgs...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//    assert.Nil(err, \"err should be nothing\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool {\n\treturn Nil(a.t, object, msgAndArgs...)\n}\n\n// Empty asserts that the specified object is empty.  I.e. nil, \"\", false, 0 or a\n// slice with len == 0.\n//\n//  assert.Empty(obj)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool {\n\treturn Empty(a.t, object, msgAndArgs...)\n}\n\n// NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, \"\", false, 0 or a\n// slice with len == 0.\n//\n//  if assert.NotEmpty(obj) {\n//    assert.Equal(\"two\", obj[1])\n//  }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotEmpty(a.t, object, msgAndArgs...)\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//    assert.Len(mySlice, 3, \"The size of slice is not 3\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool {\n\treturn Len(a.t, object, length, msgAndArgs...)\n}\n\n// True asserts that the specified value is true.\n//\n//    assert.True(myBool, \"myBool should be true\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool {\n\treturn True(a.t, value, msgAndArgs...)\n}\n\n// False asserts that the specified value is false.\n//\n//    assert.False(myBool, \"myBool should be false\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool {\n\treturn False(a.t, value, msgAndArgs...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//    assert.NotEqual(obj1, obj2, \"two objects shouldn't be equal\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotEqual(expected, actual interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// Contains asserts that the specified string contains the specified substring.\n//\n//    assert.Contains(\"Hello World\", \"World\", \"But 'Hello World' does contain 'World'\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Contains(s, contains interface{}, msgAndArgs ...interface{}) bool {\n\treturn Contains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContains asserts that the specified string does NOT contain the specified substring.\n//\n//    assert.NotContains(\"Hello World\", \"Earth\", \"But 'Hello World' does NOT contain 'Earth'\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotContains(s, contains interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// Condition uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool {\n\treturn Condition(a.t, comp, msgAndArgs...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//   assert.Panics(func(){\n//     GoCrazy()\n//   }, \"Calling GoCrazy() should panic\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\treturn Panics(a.t, f, msgAndArgs...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//   assert.NotPanics(func(){\n//     RemainCalm()\n//   }, \"Calling RemainCalm() should NOT panic\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool {\n\treturn NotPanics(a.t, f, msgAndArgs...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//   assert.WithinDuration(time.Now(), time.Now(), 10*time.Second, \"The difference should not be more than 10s\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) WithinDuration(expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool {\n\treturn WithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n// \t assert.InDelta(t, math.Pi, (22 / 7.0), 0.01)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) InDelta(expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool {\n\treturn InDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) InEpsilon(expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool {\n\treturn InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   if assert.NoError(err) {\n//\t   assert.Equal(actualObj, expectedObj)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NoError(theError error, msgAndArgs ...interface{}) bool {\n\treturn NoError(a.t, theError, msgAndArgs...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   if assert.Error(err, \"An error was expected\") {\n//\t   assert.Equal(err, expectedError)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Error(theError error, msgAndArgs ...interface{}) bool {\n\treturn Error(a.t, theError, 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//   actualObj, err := SomeFunction()\n//   if assert.Error(err, \"An error was expected\") {\n//\t   assert.Equal(err, expectedError)\n//   }\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool {\n\treturn EqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//  assert.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//  assert.Regexp(t, \"start...$\", \"it's not starting\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\treturn Regexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//  assert.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//  assert.NotRegexp(t, \"^start\", \"it's not starting\")\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Zero asserts that i is the zero value for its type and returns the truth.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool {\n\treturn Zero(a.t, i, msgAndArgs...)\n}\n\n// NotZero asserts that i is not the zero value for its type and returns the truth.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool {\n\treturn NotZero(a.t, i, msgAndArgs...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//  assert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool {\n\treturn JSONEq(a.t, expected, actual, msgAndArgs...)\n}\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\n// if building a new request fails.\nfunc httpCode(handler http.HandlerFunc, method, url string, values url.Values) int {\n\tw := httptest.NewRecorder()\n\treq, err := http.NewRequest(method, url+\"?\"+values.Encode(), nil)\n\tif err != nil {\n\t\treturn -1\n\t}\n\thandler(w, req)\n\treturn w.Code\n}\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//  assert.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) bool {\n\tcode := httpCode(handler, method, url, values)\n\tif code == -1 {\n\t\treturn false\n\t}\n\treturn code >= http.StatusOK && code <= http.StatusPartialContent\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//  assert.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) bool {\n\tcode := httpCode(handler, method, url, values)\n\tif code == -1 {\n\t\treturn false\n\t}\n\treturn code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//  assert.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) bool {\n\tcode := httpCode(handler, method, url, values)\n\tif code == -1 {\n\t\treturn false\n\t}\n\treturn code >= http.StatusBadRequest\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\treq, err := http.NewRequest(method, url+\"?\"+values.Encode(), nil)\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//  assert.HTTPBodyContains(t, myHandler, \"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{}) bool {\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 \\\"%s\\\" to contain \\\"%s\\\" but found \\\"%s\\\"\", url+\"?\"+values.Encode(), str, body))\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//  assert.HTTPBodyNotContains(t, myHandler, \"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{}) bool {\n\tbody := HTTPBody(handler, method, url, values)\n\n\tcontains := strings.Contains(body, fmt.Sprint(str))\n\tif contains {\n\t\tFail(t, \"Expected response body for %s to NOT contain \\\"%s\\\" but found \\\"%s\\\"\", url+\"?\"+values.Encode(), str, body)\n\t}\n\n\treturn !contains\n}\n\n//\n// Assertions Wrappers\n//\n\n// HTTPSuccess asserts that a specified handler returns a success status code.\n//\n//  assert.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, url string, values url.Values) bool {\n\treturn HTTPSuccess(a.t, handler, method, url, values)\n}\n\n// HTTPRedirect asserts that a specified handler returns a redirect status code.\n//\n//  assert.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, url string, values url.Values) bool {\n\treturn HTTPRedirect(a.t, handler, method, url, values)\n}\n\n// HTTPError asserts that a specified handler returns an error status code.\n//\n//  assert.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, url string, values url.Values) bool {\n\treturn HTTPError(a.t, handler, method, url, values)\n}\n\n// HTTPBodyContains asserts that a specified handler returns a\n// body that contains a string.\n//\n//  assert.HTTPBodyContains(t, myHandler, \"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, url string, values url.Values, str interface{}) bool {\n\treturn HTTPBodyContains(a.t, handler, method, url, values, str)\n}\n\n// HTTPBodyNotContains asserts that a specified handler returns a\n// body that does not contain a string.\n//\n//  assert.HTTPBodyNotContains(t, myHandler, \"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, url string, values url.Values, str interface{}) bool {\n\treturn HTTPBodyNotContains(a.t, handler, method, url, values, str)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/doc.go",
    "content": "// Alternative testing tools which stop test execution if test failed.\n//\n// Example Usage\n//\n// The following is a complete example using require in a standard test function:\n//    import (\n//      \"testing\"\n//      \"github.com/stretchr/testify/require\"\n//    )\n//\n//    func TestSomething(t *testing.T) {\n//\n//      var a string = \"Hello\"\n//      var b string = \"Hello\"\n//\n//      require.Equal(t, a, b, \"The two words should be the same.\")\n//\n//    }\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//\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\nimport (\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\ntype Assertions struct {\n\tt TestingT\n}\n\nfunc New(t TestingT) *Assertions {\n\treturn &Assertions{\n\t\tt: t,\n\t}\n}\n\n// Fail reports a failure through\nfunc (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) {\n\tFailNow(a.t, failureMessage, msgAndArgs...)\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n\nfunc (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tImplements(a.t, interfaceObject, object, msgAndArgs...)\n}\n\n// IsType asserts that the specified objects are of the same type.\nfunc (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tIsType(a.t, expectedType, object, msgAndArgs...)\n}\n\n// Equal asserts that two objects are equal.\n//\n//    require.Equal(123, 123, \"123 and 123 should be equal\")\nfunc (a *Assertions) Equal(expected, actual interface{}, msgAndArgs ...interface{}) {\n\tEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// Exactly asserts that two objects are equal is value and type.\n//\n//    require.Exactly(int32(123), int64(123), \"123 and 123 should NOT be equal\")\nfunc (a *Assertions) Exactly(expected, actual interface{}, msgAndArgs ...interface{}) {\n\tExactly(a.t, expected, actual, msgAndArgs...)\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//    require.NotNil(err, \"err should be something\")\nfunc (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) {\n\tNotNil(a.t, object, msgAndArgs...)\n}\n\n// Nil asserts that the specified object is nil.\n//\n//    require.Nil(err, \"err should be nothing\")\nfunc (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) {\n\tNil(a.t, object, msgAndArgs...)\n}\n\n// Empty asserts that the specified object is empty.  I.e. nil, \"\", false, 0 or a\n// slice with len == 0.\n//\n// require.Empty(obj)\nfunc (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) {\n\tEmpty(a.t, object, msgAndArgs...)\n}\n\n// Empty asserts that the specified object is NOT empty.  I.e. not nil, \"\", false, 0 or a\n// slice with len == 0.\n//\n// if require.NotEmpty(obj) {\n//   require.Equal(\"two\", obj[1])\n// }\nfunc (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) {\n\tNotEmpty(a.t, object, msgAndArgs...)\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//    require.Len(mySlice, 3, \"The size of slice is not 3\")\nfunc (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) {\n\tLen(a.t, object, length, msgAndArgs...)\n}\n\n// True asserts that the specified value is true.\n//\n//    require.True(myBool, \"myBool should be true\")\nfunc (a *Assertions) True(value bool, msgAndArgs ...interface{}) {\n\tTrue(a.t, value, msgAndArgs...)\n}\n\n// False asserts that the specified value is false.\n//\n//    require.False(myBool, \"myBool should be false\")\nfunc (a *Assertions) False(value bool, msgAndArgs ...interface{}) {\n\tFalse(a.t, value, msgAndArgs...)\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//    require.NotEqual(obj1, obj2, \"two objects shouldn't be equal\")\nfunc (a *Assertions) NotEqual(expected, actual interface{}, msgAndArgs ...interface{}) {\n\tNotEqual(a.t, expected, actual, msgAndArgs...)\n}\n\n// Contains asserts that the specified string contains the specified substring.\n//\n//    require.Contains(\"Hello World\", \"World\", \"But 'Hello World' does contain 'World'\")\nfunc (a *Assertions) Contains(s, contains interface{}, msgAndArgs ...interface{}) {\n\tContains(a.t, s, contains, msgAndArgs...)\n}\n\n// NotContains asserts that the specified string does NOT contain the specified substring.\n//\n//    require.NotContains(\"Hello World\", \"Earth\", \"But 'Hello World' does NOT contain 'Earth'\")\nfunc (a *Assertions) NotContains(s, contains interface{}, msgAndArgs ...interface{}) {\n\tNotContains(a.t, s, contains, msgAndArgs...)\n}\n\n// Uses a Comparison to assert a complex condition.\nfunc (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{}) {\n\tCondition(a.t, comp, msgAndArgs...)\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//   require.Panics(func(){\n//     GoCrazy()\n//   }, \"Calling GoCrazy() should panic\")\nfunc (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tPanics(a.t, f, msgAndArgs...)\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//   require.NotPanics(func(){\n//     RemainCalm()\n//   }, \"Calling RemainCalm() should NOT panic\")\nfunc (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tNotPanics(a.t, f, msgAndArgs...)\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//   require.WithinDuration(time.Now(), time.Now(), 10*time.Second, \"The difference should not be more than 10s\")\nfunc (a *Assertions) WithinDuration(expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tWithinDuration(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n// \t require.InDelta(t, math.Pi, (22 / 7.0), 0.01)\nfunc (a *Assertions) InDelta(expected, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tInDelta(a.t, expected, actual, delta, msgAndArgs...)\n}\n\n// InEpsilon asserts that expected and actual have a relative error less than epsilon\nfunc (a *Assertions) InEpsilon(expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) {\n\tInEpsilon(a.t, expected, actual, epsilon, msgAndArgs...)\n}\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   if require.NoError(err) {\n//\t   require.Equal(actualObj, expectedObj)\n//   }\nfunc (a *Assertions) NoError(theError error, msgAndArgs ...interface{}) {\n\tNoError(a.t, theError, msgAndArgs...)\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   if require.Error(err, \"An error was expected\") {\n//\t   require.Equal(err, expectedError)\n//   }\nfunc (a *Assertions) Error(theError error, msgAndArgs ...interface{}) {\n\tError(a.t, theError, 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//   actualObj, err := SomeFunction()\n//   if require.Error(err, \"An error was expected\") {\n//\t   require.Equal(err, expectedError)\n//   }\nfunc (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) {\n\tEqualError(a.t, theError, errString, msgAndArgs...)\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//  require.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//  require.Regexp(t, \"start...$\", \"it's not starting\")\nfunc (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//  require.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//  require.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tNotRegexp(a.t, rx, str, msgAndArgs...)\n}\n\n// Zero asserts that i is the zero value for its type and returns the truth.\nfunc (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) {\n\tZero(a.t, i, msgAndArgs...)\n}\n\n// NotZero asserts that i is not the zero value for its type and returns the truth.\nfunc (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) {\n\tNotZero(a.t, i, msgAndArgs...)\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//  assert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) {\n\tJSONEq(a.t, expected, actual, msgAndArgs...)\n}\n"
  },
  {
    "path": "vendor/github.com/stretchr/testify/require/requirements.go",
    "content": "package require\n\nimport (\n\t\"encoding/json\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\ntype TestingT interface {\n\tErrorf(format string, args ...interface{})\n\tFailNow()\n}\n\n// Fail reports a failure through\nfunc FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) {\n\tassert.Fail(t, failureMessage, msgAndArgs...)\n\tt.FailNow()\n}\n\n// Implements asserts that an object is implemented by the specified interface.\n//\n//    require.Implements(t, (*MyInterface)(nil), new(MyObject), \"MyObject\")\nfunc Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Implements(t, interfaceObject, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// IsType asserts that the specified objects are of the same type.\nfunc IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.IsType(t, expectedType, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Equal asserts that two objects are equal.\n//\n//    require.Equal(t, 123, 123, \"123 and 123 should be equal\")\nfunc Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Equal(t, expected, actual, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// EqualValues asserts that two objects are equal or convertable to each other.\n//\n//    require.EqualValues(t, uint32(123), int32(123), \"123 and 123 should be equal\")\nfunc EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) {\n\tif !assert.EqualValues(t, expected, actual, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Exactly asserts that two objects are equal is value and type.\n//\n//    require.Exactly(t, int32(123), int64(123), \"123 and 123 should NOT be equal\")\nfunc Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Exactly(t, expected, actual, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotNil asserts that the specified object is not nil.\n//\n//    require.NotNil(t, err, \"err should be something\")\nfunc NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotNil(t, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Nil asserts that the specified object is nil.\n//\n//    require.Nil(t, err, \"err should be nothing\")\nfunc Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Nil(t, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Empty asserts that the specified object is empty.  I.e. nil, \"\", false, 0 or either\n// a slice or a channel with len == 0.\n//\n// require.Empty(t, obj)\nfunc Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Empty(t, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, \"\", false, 0 or either\n// a slice or a channel with len == 0.\n//\n// require.NotEmpty(t, obj)\n// require.Equal(t, \"one\", obj[0])\nfunc NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotEmpty(t, object, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\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//    require.Len(t, mySlice, 3, \"The size of slice is not 3\")\nfunc Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) {\n\tif !assert.Len(t, object, length, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// True asserts that the specified value is true.\n//\n//    require.True(t, myBool, \"myBool should be true\")\nfunc True(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif !assert.True(t, value, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// False asserts that the specified value is false.\n//\n//    require.False(t, myBool, \"myBool should be false\")\nfunc False(t TestingT, value bool, msgAndArgs ...interface{}) {\n\tif !assert.False(t, value, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotEqual asserts that the specified values are NOT equal.\n//\n//    require.NotEqual(t, obj1, obj2, \"two objects shouldn't be equal\")\nfunc NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotEqual(t, expected, actual, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Contains asserts that the specified string, list(array, slice...) or map contains the\n// specified substring or element.\n//\n//    require.Contains(t, \"Hello World\", \"World\", \"But 'Hello World' does contain 'World'\")\n//    require.Contains(t, [\"Hello\", \"World\"], \"World\", \"But [\"Hello\", \"World\"] does contain 'World'\")\n//    require.Contains(t, {\"Hello\": \"World\"}, \"Hello\", \"But {'Hello': 'World'} does contain 'Hello'\")\nfunc Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Contains(t, s, contains, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotContains asserts that the specified string does NOT contain the specified substring.\n//\n//    require.NotContains(t, \"Hello World\", \"Earth\", \"But 'Hello World' does NOT contain 'Earth'\")\nfunc NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotContains(t, s, contains, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Condition uses a Comparison to assert a complex condition.\nfunc Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{}) {\n\tif !assert.Condition(t, comp, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Panics asserts that the code inside the specified PanicTestFunc panics.\n//\n//   require.Panics(t, func(){\n//     GoCrazy()\n//   }, \"Calling GoCrazy() should panic\")\nfunc Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif !assert.Panics(t, f, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.\n//\n//   require.NotPanics(t, func(){\n//     RemainCalm()\n//   }, \"Calling RemainCalm() should NOT panic\")\nfunc NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) {\n\tif !assert.NotPanics(t, f, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// WithinDuration asserts that the two times are within duration delta of each other.\n//\n//   require.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, \"The difference should not be more than 10s\")\nfunc WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) {\n\tif !assert.WithinDuration(t, expected, actual, delta, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// InDelta asserts that the two numerals are within delta of each other.\n//\n//   require.InDelta(t, math.Pi, (22 / 7.0), 0.01)\nfunc InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) {\n\tif !assert.InDelta(t, expected, actual, delta, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\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{}) {\n\tif !assert.InEpsilon(t, expected, actual, epsilon, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Regexp asserts that a specified regexp matches a string.\n//\n//  require.Regexp(t, regexp.MustCompile(\"start\"), \"it's starting\")\n//  require.Regexp(t, \"start...$\", \"it's not starting\")\nfunc Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Regexp(t, rx, str, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotRegexp asserts that a specified regexp does not match a string.\n//\n//  require.NotRegexp(t, regexp.MustCompile(\"starts\"), \"it's starting\")\n//  require.NotRegexp(t, \"^start\", \"it's not starting\")\nfunc NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotRegexp(t, rx, str, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// JSONEq asserts that two JSON strings are equivalent.\n//\n//  assert.JSONEq(t, `{\"hello\": \"world\", \"foo\": \"bar\"}`, `{\"foo\": \"bar\", \"hello\": \"world\"}`)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) {\n\tvar expectedJSONAsInterface, actualJSONAsInterface interface{}\n\n\tif err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil {\n\t\tt.FailNow()\n\t}\n\n\tif err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil {\n\t\tt.FailNow()\n\t}\n\n\tEqual(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...)\n}\n\n/*\n\tErrors\n*/\n\n// NoError asserts that a function returned no error (i.e. `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   require.NoError(t, err)\n//   require.Equal(t, actualObj, expectedObj)\n//\n// Returns whether the assertion was successful (true) or not (false).\nfunc NoError(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif !assert.NoError(t, err, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Error asserts that a function returned an error (i.e. not `nil`).\n//\n//   actualObj, err := SomeFunction()\n//   require.Error(t, err, \"An error was expected\")\n//   require.Equal(t, err, expectedError)\n//   }\nfunc Error(t TestingT, err error, msgAndArgs ...interface{}) {\n\tif !assert.Error(t, err, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\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//   actualObj, err := SomeFunction()\n//   require.Error(t, err, \"An error was expected\")\n//   require.Equal(t, err, expectedError)\n//   }\nfunc EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) {\n\tif !assert.EqualError(t, theError, errString, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// Zero asserts that i is the zero value for its type and returns the truth.\nfunc Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif !assert.Zero(t, i, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n\n// NotZero asserts that i is not the zero value for its type and returns the truth.\nfunc NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) {\n\tif !assert.NotZero(t, i, msgAndArgs...) {\n\t\tt.FailNow()\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/AUTHORS.md",
    "content": "# Authors\n\nThis is the official list of authors for copyright purposes.\nThis file is distinct from the 'CONTRIBUTORS' file. See the latter for an explanation.\n\nNames should be added to this file as:\n\n    Name or Organization <email address> / (url address)\n\n(The email address is not required for organizations)\n\nPlease keep the list sorted.\n\n## Code\n\n* Jonas mg (https://github.com/tredoe)"
  },
  {
    "path": "vendor/github.com/tredoe/term/CONTRIBUTORS.md",
    "content": "# Contributors\n\nThis is the official list of people who can contribute (and typically\nhave contributed) to the repository.\n\nThe 'AUTHORS' file lists the copyright holders; this file lists people. For\nexample, the employees of an organization are listed here but not in 'AUTHORS',\nbecause the organization holds the copyright.\n\nNames should be added to this file as:\n\n    Name <email address> / (url address)\n\nPlease keep the list sorted.\n\n## Code\n\n* Jonas mg (https://github.com/tredoe)"
  },
  {
    "path": "vendor/github.com/tredoe/term/LICENSE-MPL.txt",
    "content": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n    means each individual or legal entity that creates, contributes to\n    the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n    means the combination of the Contributions of others (if any) used\n    by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n    means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n    means Source Code Form to which the initial Contributor has attached\n    the notice in Exhibit A, the Executable Form of such Source Code\n    Form, and Modifications of such Source Code Form, in each case\n    including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n    means\n\n    (a) that the initial Contributor has attached the notice described\n        in Exhibit B to the Covered Software; or\n\n    (b) that the Covered Software was made available under the terms of\n        version 1.1 or earlier of the License, but not also under the\n        terms of a Secondary License.\n\n1.6. \"Executable Form\"\n    means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n    means a work that combines Covered Software with other material, in \n    a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n    means this document.\n\n1.9. \"Licensable\"\n    means having the right to grant, to the maximum extent possible,\n    whether at the time of the initial grant or subsequently, any and\n    all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n    means any of the following:\n\n    (a) any file in Source Code Form that results from an addition to,\n        deletion from, or modification of the contents of Covered\n        Software; or\n\n    (b) any new file in Source Code Form that contains any Covered\n        Software.\n\n1.11. \"Patent Claims\" of a Contributor\n    means any patent claim(s), including without limitation, method,\n    process, and apparatus claims, in any patent Licensable by such\n    Contributor that would be infringed, but for the grant of the\n    License, by the making, using, selling, offering for sale, having\n    made, import, or transfer of either its Contributions or its\n    Contributor Version.\n\n1.12. \"Secondary License\"\n    means either the GNU General Public License, Version 2.0, the GNU\n    Lesser General Public License, Version 2.1, the GNU Affero General\n    Public License, Version 3.0, or any later versions of those\n    licenses.\n\n1.13. \"Source Code Form\"\n    means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n    means an individual or a legal entity exercising rights under this\n    License. For legal entities, \"You\" includes any entity that\n    controls, is controlled by, or is under common control with You. For\n    purposes of this definition, \"control\" means (a) the power, direct\n    or indirect, to cause the direction or management of such entity,\n    whether by contract or otherwise, or (b) ownership of more than\n    fifty percent (50%) of the outstanding shares or beneficial\n    ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n    Licensable by such Contributor to use, reproduce, make available,\n    modify, display, perform, distribute, and otherwise exploit its\n    Contributions, either on an unmodified basis, with Modifications, or\n    as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n    for sale, have made, import, and otherwise transfer either its\n    Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n    or\n\n(b) for infringements caused by: (i) Your and any other third party's\n    modifications of Covered Software, or (ii) the combination of its\n    Contributions with other software (except as part of its Contributor\n    Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n    its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n    Form, as described in Section 3.1, and You must inform recipients of\n    the Executable Form how they can obtain a copy of such Source Code\n    Form by reasonable means in a timely manner, at a charge no more\n    than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n    License, or sublicense it under different terms, provided that the\n    license for the Executable Form does not attempt to limit or alter\n    the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n*                                                                      *\n*  6. Disclaimer of Warranty                                           *\n*  -------------------------                                           *\n*                                                                      *\n*  Covered Software is provided under this License on an \"as is\"       *\n*  basis, without warranty of any kind, either expressed, implied, or  *\n*  statutory, including, without limitation, warranties that the       *\n*  Covered Software is free of defects, merchantable, fit for a        *\n*  particular purpose or non-infringing. The entire risk as to the     *\n*  quality and performance of the Covered Software is with You.        *\n*  Should any Covered Software prove defective in any respect, You     *\n*  (not any Contributor) assume the cost of any necessary servicing,   *\n*  repair, or correction. This disclaimer of warranty constitutes an   *\n*  essential part of this License. No use of any Covered Software is   *\n*  authorized under this License except under this disclaimer.         *\n*                                                                      *\n************************************************************************\n\n************************************************************************\n*                                                                      *\n*  7. Limitation of Liability                                          *\n*  --------------------------                                          *\n*                                                                      *\n*  Under no circumstances and under no legal theory, whether tort      *\n*  (including negligence), contract, or otherwise, shall any           *\n*  Contributor, or anyone who distributes Covered Software as          *\n*  permitted above, be liable to You for any direct, indirect,         *\n*  special, incidental, or consequential damages of any character      *\n*  including, without limitation, damages for lost profits, loss of    *\n*  goodwill, work stoppage, computer failure or malfunction, or any    *\n*  and all other commercial damages or losses, even if such party      *\n*  shall have been informed of the possibility of such damages. This   *\n*  limitation of liability shall not apply to liability for death or   *\n*  personal injury resulting from such party's negligence to the       *\n*  extent applicable law prohibits such limitation. Some               *\n*  jurisdictions do not allow the exclusion or limitation of           *\n*  incidental or consequential damages, so this exclusion and          *\n*  limitation may not apply to You.                                    *\n*                                                                      *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n  This Source Code Form is subject to the terms of the Mozilla Public\n  License, v. 2.0. If a copy of the MPL was not distributed with this\n  file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n  This Source Code Form is \"Incompatible With Secondary Licenses\", as\n  defined by the Mozilla Public License, v. 2.0.\n\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/README.md",
    "content": "term\n====\nPackage term provides a portable interface for terminal I/O.\n\n[Documentation online](http://godoc.org/github.com/tredoe/term)\n\n## Installation\n\n\tgo get github.com/tredoe/term\n\n## Status\n\nTested in Linux 3.5.0, FreeBSD 9.1, NetBSD 6.1, OpenBSD 5.3, and Darwin systems,\nfor AMD64 and i386 architectures.\n\n## License\n\nThe source files are distributed under the [Mozilla Public License, version 2.0](http://mozilla.org/MPL/2.0/),\nunless otherwise noted.  \nPlease read the [FAQ](http://www.mozilla.org/MPL/2.0/FAQ.html)\nif you have further questions regarding the license.\n\n* * *\n*Generated by [Gowizard](https://github.com/tredoe/wizard)*\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/doc.go",
    "content": "/*\nPackage term provides a portable interface for terminal I/O.\n\nIt manages input and output (I/O) for character-mode applications.\nThe high-level functions enable an application to read from standard input to\nretrieve keyboard input stored in a terminal's input buffer. They also enable\nan application to write to standard output or standard error to display text\nin the terminal's screen buffer. And they also support redirection of standard\nhandles and control of terminal modes for different I/O functionality.\n\nThe low-level functions enable applications to receive detailed input about\nkeyboard. They also enable greater control of output to the screen.\n\nUsage:\n\n\tter, err := term.New()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer func() {\n\t\tif err = ter.Restore(); err != nil {\n\t\t\t// Handle error\n\t\t}\n\t}()\n\nImportant\n\nThe \"go test\" tool runs tests with standard input connected to standard\nerror. So whatever program that uses the file descriptor of \"/dev/stdin\"\n(which is 0), then it is going to fail. The solution is to use the standard\nerror.\n*/\npackage term\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/doc.go",
    "content": "// Copyright 2013 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// Package sys contains low-level operating system primitives of the term.\npackage sys\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/key_unix.go",
    "content": "// Copyright 2013 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build !plan9,!windows\n\npackage sys\n\n// Key codes\nconst (\n\tK_TAB    = 0x09 // TAB key\n\tK_BACK   = 0x7F // BACKSPACE key\n\tK_RETURN = 0x0D // RETURN key\n\tK_ESCAPE = 0x1B // ESC key\n)\n\n// Control+letters key codes.\nconst (\n\tK_CTRL_A = iota + 0x01\n\tK_CTRL_B\n\tK_CTRL_C\n\tK_CTRL_D\n\tK_CTRL_E\n\tK_CTRL_F\n\tK_CTRL_G\n\tK_CTRL_H\n\tK_CTRL_I\n\tK_CTRL_J\n\tK_CTRL_K\n\tK_CTRL_L\n\tK_CTRL_M\n\tK_CTRL_N\n\tK_CTRL_O\n\tK_CTRL_P\n\tK_CTRL_Q\n\tK_CTRL_R\n\tK_CTRL_S\n\tK_CTRL_T\n\tK_CTRL_U\n\tK_CTRL_V\n\tK_CTRL_W\n\tK_CTRL_X\n\tK_CTRL_Y\n\tK_CTRL_Z\n)\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/sys_bsd.go",
    "content": "// Copyright 2012 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build ignore\n\npackage sys\n\n//cgo const TCGETS = TIOCGETA\n//cgo const TCSETS = TIOCSETA\n//cgo const TCSETSW = TIOCSETAW\n//cgo const TCSETSF = TIOCSETAF\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/sys_linux.go",
    "content": "// Copyright 2012 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build ignore\n\npackage sys\n\n//cgo const (TCGETS, TCSETS, TCSETSW, TCSETSF)\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/sys_unix.go",
    "content": "// Copyright 2010 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build !plan9,!windows\n\n// Reference: man termios ; man tty_ioctl\n// Linux file: \"asm-generic/termbits.h\"\n\npackage sys\n\nimport (\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/unix\"\n)\n\n// int tcgetattr(int fd, struct termios *termios_p)\n\nfunc Getattr(fd int, state *Termios) (err error) {\n\t_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),\n\t\tuintptr(TCGETS), uintptr(unsafe.Pointer(state)))\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// int tcsetattr(int fd, int optional_actions, const struct termios *termios_p)\n\nfunc Setattr(fd int, action uint, state *Termios) (err error) {\n\tswitch action {\n\tcase TCSANOW:\n\t\taction = TCSETS\n\tcase TCSADRAIN:\n\t\taction = TCSETSW\n\tcase TCSAFLUSH:\n\t\taction = TCSETSF\n\t}\n\n\t_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),\n\t\tuintptr(action), uintptr(unsafe.Pointer(state)))\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// GetWinsize gets the winsize struct with the terminal size set by the kernel.\nfunc GetWinsize(fd int, ws *Winsize) (err error) {\n\t_, _, e1 := unix.Syscall(unix.SYS_IOCTL, uintptr(fd),\n\t\tuintptr(TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// Types\n\n//cgo const (TCSANOW, TCSADRAIN, TCSAFLUSH)\n//cgo const TIOCGWINSZ\n\n//cgo type struct_termios\n//cgo type struct_winsize\n\n//cgo// c_cc characters\n//cgo const (VINTR, VQUIT, VERASE, VKILL, VEOF, VTIME, VMIN, VSTART, VSTOP,\n// VSUSP, VEOL, VREPRINT, VDISCARD, VWERASE, VLNEXT, VEOL2)\n\n//cgo// c_iflag bits\n//cgo const (IGNBRK, BRKINT, IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL,\n// IXON, IXANY, IXOFF, IMAXBEL)\n\n//cgo// c_oflag bits\n//cgo const (OPOST, ONLCR, OCRNL, ONOCR, ONLRET, NL0, NL1, CR0, CR1, CR2, CR3,\n// TAB0, TAB1, TAB2, XTABS, BS0, BS1, FF0, FF1)\n\n//cgo// c_cflag bits\n//cgo const (B0, B50, B75, B110, B134, B150, B200, B300,\n// B600, B1200, B1800, B2400, B4800, B9600, B19200, B38400, EXTA, EXTB, CSIZE,\n// CS5, CS6, CS7, CS8, CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL,\n// B57600, B115200, B230400, CRTSCTS)\n\n//cgo// c_lflag bits\n//cgo const (ISIG, ICANON, ECHO, ECHOE, ECHOK, ECHONL, NOFLSH, TOSTOP, ECHOCTL,\n// ECHOPRT, ECHOKE, FLUSHO, PENDIN, IEXTEN, EXTPROC)\n\n/*\n== FreeBSD has not:\n\n// c_cc characters\nVSWTC\n\n// c_iflag bits\n(IUCLC, IUTF8)\n\n// c_oflag bits\n(OLCUC, OFILL, OFDEL, NLDLY, CRDLY, BSDLY, VTDLY, VT0, VT1, FFDLY)\n\n// c_cflag bits\n(CBAUD, CBAUDEX, BOTHER, B500000, B576000,\nB1000000, B1152000, B1500000, B2000000, B2500000, B3000000, B3500000,\nB4000000, CIBAUD, CMSPAR, IBSHIFT)\n\n// c_lflag bits\nXCASE\n\n== NetBSD, besides, has not:\n\n// c_oflag bits\n(TABDLY, TAB3)\n\n== OpenBSD, besides, has not:\n\n// c_cflag bits\n(B460800, B921600)\n*/\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_darwin_386.go",
    "content": "// go.mkdef -w sys_unix.go sys_bsd.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_darwin_386.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x40087468\n\nconst (\n\tVDISCARD = 0xf\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\tVSTOP    = 0xd\n\tVSUSP    = 0xa\n\tVTIME    = 0x11\n\tVWERASE  = 0x4\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x400\n\tIXON    = 0x200\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x8000\n\tCR0    = 0x0\n\tCR1    = 0x1000\n\tCR2    = 0x2000\n\tCR3    = 0x3000\n\tFF0    = 0x0\n\tFF1    = 0x4000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x10\n\tONLCR  = 0x2\n\tONLRET = 0x40\n\tONOCR  = 0x20\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x400\n\tTAB2   = 0x800\n\tXTABS  = 0xc00\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x6e\n\tB115200 = 0x1c200\n\tB1200   = 0x4b0\n\tB134    = 0x86\n\tB150    = 0x96\n\tB1800   = 0x708\n\tB19200  = 0x4b00\n\tB200    = 0xc8\n\tB230400 = 0x38400\n\tB2400   = 0x960\n\tB300    = 0x12c\n\tB38400  = 0x9600\n\tB4800   = 0x12c0\n\tB50     = 0x32\n\tB57600  = 0xe100\n\tB600    = 0x258\n\tB75     = 0x4b\n\tB9600   = 0x2580\n\tCLOCAL  = 0x8000\n\tCREAD   = 0x800\n\tCRTSCTS = 0x30000\n\tCS5     = 0x0\n\tCS6     = 0x100\n\tCS7     = 0x200\n\tCS8     = 0x300\n\tCSIZE   = 0x300\n\tCSTOPB  = 0x400\n\tEXTA    = 0x4b00\n\tEXTB    = 0x9600\n\tHUPCL   = 0x4000\n\tPARENB  = 0x1000\n\tPARODD  = 0x2000\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x40\n\tECHOE   = 0x2\n\tECHOK   = 0x4\n\tECHOKE  = 0x1\n\tECHONL  = 0x10\n\tECHOPRT = 0x20\n\tEXTPROC = 0x800\n\tFLUSHO  = 0x800000\n\tICANON  = 0x100\n\tIEXTEN  = 0x400\n\tISIG    = 0x80\n\tNOFLSH  = 0x80000000\n\tPENDIN  = 0x20000000\n\tTOSTOP  = 0x400000\n)\n\nconst TCGETS = 0x402c7413\n\nconst TCSETS = 0x802c7414\n\nconst TCSETSW = 0x802c7415\n\nconst TCSETSF = 0x802c7416\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"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_darwin_amd64.go",
    "content": "// go.mkdef -w sys_unix.go sys_bsd.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_darwin_amd64.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x40087468\n\nconst (\n\tVDISCARD = 0xf\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\tVSTOP    = 0xd\n\tVSUSP    = 0xa\n\tVTIME    = 0x11\n\tVWERASE  = 0x4\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x400\n\tIXON    = 0x200\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x8000\n\tCR0    = 0x0\n\tCR1    = 0x1000\n\tCR2    = 0x2000\n\tCR3    = 0x3000\n\tFF0    = 0x0\n\tFF1    = 0x4000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x10\n\tONLCR  = 0x2\n\tONLRET = 0x40\n\tONOCR  = 0x20\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x400\n\tTAB2   = 0x800\n\tXTABS  = 0xc00\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x6e\n\tB115200 = 0x1c200\n\tB1200   = 0x4b0\n\tB134    = 0x86\n\tB150    = 0x96\n\tB1800   = 0x708\n\tB19200  = 0x4b00\n\tB200    = 0xc8\n\tB230400 = 0x38400\n\tB2400   = 0x960\n\tB300    = 0x12c\n\tB38400  = 0x9600\n\tB4800   = 0x12c0\n\tB50     = 0x32\n\tB57600  = 0xe100\n\tB600    = 0x258\n\tB75     = 0x4b\n\tB9600   = 0x2580\n\tCLOCAL  = 0x8000\n\tCREAD   = 0x800\n\tCRTSCTS = 0x30000\n\tCS5     = 0x0\n\tCS6     = 0x100\n\tCS7     = 0x200\n\tCS8     = 0x300\n\tCSIZE   = 0x300\n\tCSTOPB  = 0x400\n\tEXTA    = 0x4b00\n\tEXTB    = 0x9600\n\tHUPCL   = 0x4000\n\tPARENB  = 0x1000\n\tPARODD  = 0x2000\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x40\n\tECHOE   = 0x2\n\tECHOK   = 0x4\n\tECHOKE  = 0x1\n\tECHONL  = 0x10\n\tECHOPRT = 0x20\n\tEXTPROC = 0x800\n\tFLUSHO  = 0x800000\n\tICANON  = 0x100\n\tIEXTEN  = 0x400\n\tISIG    = 0x80\n\tNOFLSH  = 0x80000000\n\tPENDIN  = 0x20000000\n\tTOSTOP  = 0x400000\n)\n\nconst TCGETS = 0x40487413\n\nconst TCSETS = 0x80487414\n\nconst TCSETSW = 0x80487415\n\nconst TCSETSF = 0x80487416\n\ntype Termios struct {\n\tIflag     uint64\n\tOflag     uint64\n\tCflag     uint64\n\tLflag     uint64\n\tCc        [20]uint8\n\tPad_cgo_0 [4]byte\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"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_freebsd.go",
    "content": "// go.mkdef -w sys_unix.go sys_bsd.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_freebsd_amd64.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x40087468\n\nconst (\n\tVDISCARD = 0xf\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\tVSTOP    = 0xd\n\tVSUSP    = 0xa\n\tVTIME    = 0x11\n\tVWERASE  = 0x4\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x400\n\tIXON    = 0x200\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x8000\n\tCR0    = 0x0\n\tCR1    = 0x1000\n\tCR2    = 0x2000\n\tCR3    = 0x3000\n\tFF0    = 0x0\n\tFF1    = 0x4000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x10\n\tONLCR  = 0x2\n\tONLRET = 0x40\n\tONOCR  = 0x20\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x400\n\tTAB2   = 0x800\n\tXTABS  = 0xc00\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x6e\n\tB115200 = 0x1c200\n\tB1200   = 0x4b0\n\tB134    = 0x86\n\tB150    = 0x96\n\tB1800   = 0x708\n\tB19200  = 0x4b00\n\tB200    = 0xc8\n\tB230400 = 0x38400\n\tB2400   = 0x960\n\tB300    = 0x12c\n\tB38400  = 0x9600\n\tB4800   = 0x12c0\n\tB50     = 0x32\n\tB57600  = 0xe100\n\tB600    = 0x258\n\tB75     = 0x4b\n\tB9600   = 0x2580\n\tCLOCAL  = 0x8000\n\tCREAD   = 0x800\n\tCRTSCTS = 0x30000\n\tCS5     = 0x0\n\tCS6     = 0x100\n\tCS7     = 0x200\n\tCS8     = 0x300\n\tCSIZE   = 0x300\n\tCSTOPB  = 0x400\n\tEXTA    = 0x4b00\n\tEXTB    = 0x9600\n\tHUPCL   = 0x4000\n\tPARENB  = 0x1000\n\tPARODD  = 0x2000\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x40\n\tECHOE   = 0x2\n\tECHOK   = 0x4\n\tECHOKE  = 0x1\n\tECHONL  = 0x10\n\tECHOPRT = 0x20\n\tEXTPROC = 0x800\n\tFLUSHO  = 0x800000\n\tICANON  = 0x100\n\tIEXTEN  = 0x400\n\tISIG    = 0x80\n\tNOFLSH  = 0x80000000\n\tPENDIN  = 0x20000000\n\tTOSTOP  = 0x400000\n)\n\nconst TCGETS = 0x402c7413\n\nconst TCSETS = 0x802c7414\n\nconst TCSETSW = 0x802c7415\n\nconst TCSETSF = 0x802c7416\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"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_linux.go",
    "content": "// go.mkdef -w sys_unix.go sys_linux.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_linux_amd64.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x5413\n\nconst (\n\tVDISCARD = 0xd\n\tVEOF     = 0x4\n\tVEOL     = 0xb\n\tVEOL2    = 0x10\n\tVERASE   = 0x2\n\tVINTR    = 0x0\n\tVKILL    = 0x3\n\tVLNEXT   = 0xf\n\tVMIN     = 0x6\n\tVQUIT    = 0x1\n\tVREPRINT = 0xc\n\tVSTART   = 0x8\n\tVSTOP    = 0x9\n\tVSUSP    = 0xa\n\tVTIME    = 0x5\n\tVWERASE  = 0xe\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x1000\n\tIXON    = 0x400\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x2000\n\tCR0    = 0x0\n\tCR1    = 0x200\n\tCR2    = 0x400\n\tCR3    = 0x600\n\tFF0    = 0x0\n\tFF1    = 0x8000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x8\n\tONLCR  = 0x4\n\tONLRET = 0x20\n\tONOCR  = 0x10\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x800\n\tTAB2   = 0x1000\n\tXTABS  = 0x1800\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x3\n\tB115200 = 0x1002\n\tB1200   = 0x9\n\tB134    = 0x4\n\tB150    = 0x5\n\tB1800   = 0xa\n\tB19200  = 0xe\n\tB200    = 0x6\n\tB230400 = 0x1003\n\tB2400   = 0xb\n\tB300    = 0x7\n\tB38400  = 0xf\n\tB4800   = 0xc\n\tB50     = 0x1\n\tB57600  = 0x1001\n\tB600    = 0x8\n\tB75     = 0x2\n\tB9600   = 0xd\n\tCLOCAL  = 0x800\n\tCREAD   = 0x80\n\tCRTSCTS = 0x80000000\n\tCS5     = 0x0\n\tCS6     = 0x10\n\tCS7     = 0x20\n\tCS8     = 0x30\n\tCSIZE   = 0x30\n\tCSTOPB  = 0x40\n\tEXTA    = 0xe\n\tEXTB    = 0xf\n\tHUPCL   = 0x400\n\tPARENB  = 0x100\n\tPARODD  = 0x200\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x200\n\tECHOE   = 0x10\n\tECHOK   = 0x20\n\tECHOKE  = 0x800\n\tECHONL  = 0x40\n\tECHOPRT = 0x400\n\tEXTPROC = 0x10000\n\tFLUSHO  = 0x1000\n\tICANON  = 0x2\n\tIEXTEN  = 0x8000\n\tISIG    = 0x1\n\tNOFLSH  = 0x80\n\tPENDIN  = 0x4000\n\tTOSTOP  = 0x100\n)\n\nconst (\n\tTCGETS  = 0x5401\n\tTCSETS  = 0x5402\n\tTCSETSF = 0x5404\n\tTCSETSW = 0x5403\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}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_netbsd.go",
    "content": "// go.mkdef -w sys_unix.go sys_bsd.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_netbsd_amd64.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x40087468\n\nconst (\n\tVDISCARD = 0xf\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\tVSTOP    = 0xd\n\tVSUSP    = 0xa\n\tVTIME    = 0x11\n\tVWERASE  = 0x4\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x400\n\tIXON    = 0x200\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x8000\n\tCR0    = 0x0\n\tCR1    = 0x1000\n\tCR2    = 0x2000\n\tCR3    = 0x3000\n\tFF0    = 0x0\n\tFF1    = 0x4000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x10\n\tONLCR  = 0x2\n\tONLRET = 0x40\n\tONOCR  = 0x20\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x400\n\tTAB2   = 0x800\n\tXTABS  = 0xc00\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x6e\n\tB115200 = 0x1c200\n\tB1200   = 0x4b0\n\tB134    = 0x86\n\tB150    = 0x96\n\tB1800   = 0x708\n\tB19200  = 0x4b00\n\tB200    = 0xc8\n\tB230400 = 0x38400\n\tB2400   = 0x960\n\tB300    = 0x12c\n\tB38400  = 0x9600\n\tB4800   = 0x12c0\n\tB50     = 0x32\n\tB57600  = 0xe100\n\tB600    = 0x258\n\tB75     = 0x4b\n\tB9600   = 0x2580\n\tCLOCAL  = 0x8000\n\tCREAD   = 0x800\n\tCRTSCTS = 0x10000\n\tCS5     = 0x0\n\tCS6     = 0x100\n\tCS7     = 0x200\n\tCS8     = 0x300\n\tCSIZE   = 0x300\n\tCSTOPB  = 0x400\n\tEXTA    = 0x4b00\n\tEXTB    = 0x9600\n\tHUPCL   = 0x4000\n\tPARENB  = 0x1000\n\tPARODD  = 0x2000\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x40\n\tECHOE   = 0x2\n\tECHOK   = 0x4\n\tECHOKE  = 0x1\n\tECHONL  = 0x10\n\tECHOPRT = 0x20\n\tEXTPROC = 0x800\n\tFLUSHO  = 0x800000\n\tICANON  = 0x100\n\tIEXTEN  = 0x400\n\tISIG    = 0x80\n\tNOFLSH  = 0x80000000\n\tPENDIN  = 0x20000000\n\tTOSTOP  = 0x400000\n)\n\nconst TCGETS = 0x402c7413\n\nconst TCSETS = 0x802c7414\n\nconst TCSETSW = 0x802c7415\n\nconst TCSETSF = 0x802c7416\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"
  },
  {
    "path": "vendor/github.com/tredoe/term/sys/z-sys_openbsd.go",
    "content": "// go.mkdef -w sys_unix.go sys_bsd.go\n// MACHINE GENERATED BY go.mkdef (github.com/tredoe/gotool/go.mkdef); DO NOT EDIT\n//\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs _z-sys_openbsd_amd64.go\n\npackage sys\n\nconst (\n\tTCSADRAIN = 0x1\n\tTCSAFLUSH = 0x2\n\tTCSANOW   = 0x0\n)\n\nconst TIOCGWINSZ = 0x40087468\n\nconst (\n\tVDISCARD = 0xf\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\tVSTOP    = 0xd\n\tVSUSP    = 0xa\n\tVTIME    = 0x11\n\tVWERASE  = 0x4\n)\n\nconst (\n\tBRKINT  = 0x2\n\tICRNL   = 0x100\n\tIGNBRK  = 0x1\n\tIGNCR   = 0x80\n\tIGNPAR  = 0x4\n\tIMAXBEL = 0x2000\n\tINLCR   = 0x40\n\tINPCK   = 0x10\n\tISTRIP  = 0x20\n\tIXANY   = 0x800\n\tIXOFF   = 0x400\n\tIXON    = 0x200\n\tPARMRK  = 0x8\n)\n\nconst (\n\tBS0    = 0x0\n\tBS1    = 0x8000\n\tCR0    = 0x0\n\tCR1    = 0x1000\n\tCR2    = 0x2000\n\tCR3    = 0x3000\n\tFF0    = 0x0\n\tFF1    = 0x4000\n\tNL0    = 0x0\n\tNL1    = 0x100\n\tOCRNL  = 0x10\n\tONLCR  = 0x2\n\tONLRET = 0x80\n\tONOCR  = 0x40\n\tOPOST  = 0x1\n\tTAB0   = 0x0\n\tTAB1   = 0x400\n\tTAB2   = 0x800\n\tXTABS  = 0xc00\n)\n\nconst (\n\tB0      = 0x0\n\tB110    = 0x6e\n\tB115200 = 0x1c200\n\tB1200   = 0x4b0\n\tB134    = 0x86\n\tB150    = 0x96\n\tB1800   = 0x708\n\tB19200  = 0x4b00\n\tB200    = 0xc8\n\tB230400 = 0x38400\n\tB2400   = 0x960\n\tB300    = 0x12c\n\tB38400  = 0x9600\n\tB4800   = 0x12c0\n\tB50     = 0x32\n\tB57600  = 0xe100\n\tB600    = 0x258\n\tB75     = 0x4b\n\tB9600   = 0x2580\n\tCLOCAL  = 0x8000\n\tCREAD   = 0x800\n\tCRTSCTS = 0x10000\n\tCS5     = 0x0\n\tCS6     = 0x100\n\tCS7     = 0x200\n\tCS8     = 0x300\n\tCSIZE   = 0x300\n\tCSTOPB  = 0x400\n\tEXTA    = 0x4b00\n\tEXTB    = 0x9600\n\tHUPCL   = 0x4000\n\tPARENB  = 0x1000\n\tPARODD  = 0x2000\n)\n\nconst (\n\tECHO    = 0x8\n\tECHOCTL = 0x40\n\tECHOE   = 0x2\n\tECHOK   = 0x4\n\tECHOKE  = 0x1\n\tECHONL  = 0x10\n\tECHOPRT = 0x20\n\tEXTPROC = 0x800\n\tFLUSHO  = 0x800000\n\tICANON  = 0x100\n\tIEXTEN  = 0x400\n\tISIG    = 0x80\n\tNOFLSH  = 0x80000000\n\tPENDIN  = 0x20000000\n\tTOSTOP  = 0x400000\n)\n\nconst TCGETS = 0x402c7413\n\nconst TCSETS = 0x802c7414\n\nconst TCSETSW = 0x802c7415\n\nconst TCSETSF = 0x802c7416\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"
  },
  {
    "path": "vendor/github.com/tredoe/term/term.go",
    "content": "// Copyright 2012 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage term\n\n// If it is true, at reading a password it shows characters shadowed by each key\n// pressed.\nvar PasswordShadowed bool\n\nvar (\n\t_CTRL_C      = []byte{'^', 'C', '\\r', '\\n'}\n\t_RETURN      = []byte{'\\r', '\\n'}\n\t_SHADOW_CHAR = []byte{'*'}\n)\n\n// * * *\n\ntype modeType int\n\nconst (\n\t_ modeType = 1 << iota\n\tRawMode\n\tEchoMode\n\tCharMode\n\tPasswordMode\n\tOtherMode\n)\n\n// Mode returns the mode set in the terminal, if any.\nfunc (t *Terminal) Mode() modeType {\n\treturn t.mode\n}\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/term_unix.go",
    "content": "// Copyright 2010 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build !plan9,!windows\n\npackage term\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/tredoe/term/sys\"\n\t\"golang.org/x/sys/unix\"\n)\n\n// Default values for input and output.\nvar (\n\tInputFD int       = unix.Stdin\n\tInput   io.Reader = os.Stdin\n\tOutput  io.Writer = os.Stdout\n)\n\n// A Terminal represents a general terminal interface.\ntype Terminal struct {\n\tmode modeType\n\n\t// Contain the state of a terminal, enabling to restore the original settings\n\toldState, lastState sys.Termios\n\n\t// Window size\n\tsize sys.Winsize\n\n\tfd int // File descriptor\n}\n\n// New creates a new terminal interface in the file descriptor InputFD.\nfunc New() (*Terminal, error) {\n\tvar t Terminal\n\n\t// Get the actual state\n\tif err := sys.Getattr(InputFD, &t.lastState); err != nil {\n\t\treturn nil, os.NewSyscallError(\"sys.Getattr\", err)\n\t}\n\n\tt.oldState = t.lastState // the actual state is copied to another one\n\tt.fd = InputFD\n\treturn &t, nil\n}\n\n// == Restore\n//\n\ntype State struct {\n\twrap sys.Termios\n}\n\n// OriginalState returns the terminal's original state.\nfunc (t *Terminal) OriginalState() State {\n\treturn State{t.oldState}\n}\n\n// Restore restores the original settings for the term.\nfunc (t *Terminal) Restore() error {\n\tif t.mode != 0 {\n\t\tif err := sys.Setattr(t.fd, sys.TCSANOW, &t.oldState); err != nil {\n\t\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t\t}\n\t\tt.lastState = t.oldState\n\t\tt.mode = 0\n\t}\n\treturn nil\n}\n\n// Restore restores the settings from State.\nfunc Restore(fd int, st State) error {\n\tif err := sys.Setattr(fd, sys.TCSANOW, &st.wrap); err != nil {\n\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t}\n\treturn nil\n}\n\n// == Modes\n//\n\n// RawMode sets the terminal to something like the \"raw\" mode. Input is available\n// character by character, echoing is disabled, and all special processing of\n// terminal input and output characters is disabled.\n//\n// NOTE: in tty \"raw mode\", CR+LF is used for output and CR is used for input.\nfunc (t *Terminal) RawMode() error {\n\t// Input modes - no break, no CR to NL, no NL to CR, no carriage return,\n\t// no strip char, no start/stop output control, no parity check.\n\tt.lastState.Iflag &^= (sys.BRKINT | sys.IGNBRK | sys.ICRNL | sys.INLCR |\n\t\tsys.IGNCR | sys.ISTRIP | sys.IXON | sys.PARMRK)\n\n\t// Output modes - disable post processing.\n\tt.lastState.Oflag &^= sys.OPOST\n\n\t// Local modes - echoing off, canonical off, no extended functions,\n\t// no signal chars (^Z,^C).\n\tt.lastState.Lflag &^= (sys.ECHO | sys.ECHONL | sys.ICANON | sys.IEXTEN | sys.ISIG)\n\n\t// Control modes - set 8 bit chars.\n\tt.lastState.Cflag &^= (sys.CSIZE | sys.PARENB)\n\tt.lastState.Cflag |= sys.CS8\n\n\t// Control chars - set return condition: min number of bytes and timer.\n\t// We want read to return every single byte, without timeout.\n\tt.lastState.Cc[sys.VMIN] = 1 // Read returns when one char is available.\n\tt.lastState.Cc[sys.VTIME] = 0\n\n\t// Put the terminal in raw mode after flushing\n\tif err := sys.Setattr(t.fd, sys.TCSAFLUSH, &t.lastState); err != nil {\n\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t}\n\tt.mode |= RawMode\n\treturn nil\n}\n\n// EchoMode turns the echo mode.\nfunc (t *Terminal) EchoMode(echo bool) error {\n\tif !echo {\n\t\t//t.lastState.Lflag &^= (sys.ECHO | sys.ECHOE | sys.ECHOK | sys.ECHONL)\n\t\tt.lastState.Lflag &^= sys.ECHO\n\t} else {\n\t\t//t.lastState.Lflag |= (sys.ECHO | sys.ECHOE | sys.ECHOK | sys.ECHONL)\n\t\tt.lastState.Lflag |= sys.ECHO\n\t}\n\n\tif err := sys.Setattr(t.fd, sys.TCSANOW, &t.lastState); err != nil {\n\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t}\n\n\tif echo {\n\t\tt.mode |= EchoMode\n\t} else {\n\t\tt.mode &^= EchoMode\n\t}\n\treturn nil\n}\n\n// CharMode sets the terminal to single-character mode.\nfunc (t *Terminal) CharMode() error {\n\t// Disable canonical mode, and set buffer size to 1 byte.\n\tt.lastState.Lflag &^= sys.ICANON\n\tt.lastState.Cc[sys.VTIME] = 0\n\tt.lastState.Cc[sys.VMIN] = 1\n\n\tif err := sys.Setattr(t.fd, sys.TCSANOW, &t.lastState); err != nil {\n\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t}\n\tt.mode |= CharMode\n\treturn nil\n}\n\n// SetMode sets the terminal attributes given by state.\n// Warning: The use of this function is not cross-system.\nfunc (t *Terminal) SetMode(state sys.Termios) error {\n\tif err := sys.Setattr(t.fd, sys.TCSANOW, &state); err != nil {\n\t\treturn os.NewSyscallError(\"sys.Setattr\", err)\n\t}\n\n\tt.lastState = state\n\tt.mode |= OtherMode\n\treturn nil\n}\n\n// == Utility\n//\n\n// Fd returns the file descriptor referencing the term.\nfunc (t *Terminal) Fd() int {\n\treturn t.fd\n}\n\n// GetSize returns the size of the term.\nfunc (t *Terminal) GetSize() (row, column int, err error) {\n\tif err = sys.GetWinsize(unix.Stdout, &t.size); err != nil {\n\t\treturn\n\t}\n\treturn int(t.size.Row), int(t.size.Col), nil\n}\n"
  },
  {
    "path": "vendor/github.com/tredoe/term/util_unix.go",
    "content": "// Copyright 2010 Jonas mg\n//\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// +build !plan9,!windows\n\npackage term\n\n//#include <unistd.h>\n//import \"C\"\n\nimport (\n\t\"bytes\"\n\t\"math/rand\"\n\t\"os\"\n\t\"os/signal\"\n\t\"time\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"github.com/tredoe/term/sys\"\n\t\"golang.org/x/sys/unix\"\n)\n\nvar shellsWithoutANSI = []string{\"dumb\", \"cons25\"}\n\n// SupportANSI checks if the terminal supports ANSI escape sequences.\nfunc SupportANSI() bool {\n\tterm := os.Getenv(\"TERM\")\n\tif term == \"\" {\n\t\treturn false\n\t}\n\n\tfor _, v := range shellsWithoutANSI {\n\t\tif v == term {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// char *ttyname(int fd)\n// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/ttyname.c;hb=HEAD\n// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/ttyname.c;hb=HEAD\n// GetName gets the name of a term.\n/*func GetName(fd int) (string, error) {\n\tname, errno := C.ttyname(C.int(fd))\n\tif errno != nil {\n\t\treturn \"\", fmt.Errorf(\"term.TTYName: %s\", errno)\n\t}\n\treturn C.GoString(name), nil\n}*/\n\n// int isatty(int fd)\n// http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/isatty.c;hb=HEAD\n\n// IsTerminal returns true if the file descriptor is a term.\nfunc IsTerminal(fd int) bool {\n\treturn sys.Getattr(fd, &sys.Termios{}) == nil\n}\n\n// ReadPassword reads characters from the input until press Enter or until\n// fill in the given slice.\n//\n// Only reads characters that include letters, marks, numbers, punctuation,\n// and symbols from Unicode categories L, M, N, P, S, besides of the\n// ASCII space character.\n// Ctrl-C interrumpts, and backspace removes the last character read.\n//\n// Returns the number of bytes read.\nfunc ReadPassword(password []byte) (n int, err error) {\n\tter, err := New()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer func() {\n\t\terr2 := ter.Restore()\n\t\tif err2 != nil && err == nil {\n\t\t\terr = err2\n\t\t}\n\t}()\n\n\tif err = ter.RawMode(); err != nil {\n\t\treturn 0, err\n\t}\n\n\tkey := make([]byte, 4) // In-memory representation of a rune.\n\tlenPassword := 0       // Number of characters read.\n\n\tif PasswordShadowed {\n\t\trand.Seed(int64(time.Now().Nanosecond()))\n\t}\n\nL:\n\tfor {\n\t\tn, err = unix.Read(InputFD, key)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tif n == 1 {\n\t\t\tswitch key[0] {\n\t\t\tcase sys.K_RETURN:\n\t\t\t\tbreak L\n\t\t\tcase sys.K_BACK:\n\t\t\t\tif lenPassword != 0 {\n\t\t\t\t\tlenPassword--\n\t\t\t\t\tpassword[lenPassword] = 0\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\tcase sys.K_CTRL_C:\n\t\t\t\tunix.Write(unix.Stdout, _CTRL_C)\n\t\t\t\t// Clean data stored, if any.\n\t\t\t\tfor i, v := range password {\n\t\t\t\t\tif v == 0 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tpassword[i] = 0\n\t\t\t\t}\n\t\t\t\treturn 0, nil\n\t\t\t}\n\t\t}\n\n\t\tchar, _ := utf8.DecodeRune(key)\n\t\tif unicode.IsPrint(char) {\n\t\t\tpassword[lenPassword] = key[0] // Only want a character by key\n\t\t\tlenPassword++\n\n\t\t\tif PasswordShadowed {\n\t\t\t\tunix.Write(unix.Stdout, bytes.Repeat(_SHADOW_CHAR, rand.Intn(3)+1))\n\t\t\t}\n\t\t\tif lenPassword == len(password) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tunix.Write(unix.Stdout, _RETURN)\n\tn = lenPassword\n\treturn\n}\n\n// WinSize represents a channel, Change, to know when the window size has\n// changed through function DetectWinSize.\ntype WinSize struct {\n\tChange chan bool\n\tquit   chan bool\n\twait   chan bool\n}\n\n// DetectWinSize caughts a signal named SIGWINCH whenever the window size changes,\n// being indicated in channel `WinSize.Change`.\nfunc DetectWinSize() *WinSize {\n\tw := &WinSize{\n\t\tmake(chan bool),\n\t\tmake(chan bool),\n\t\tmake(chan bool),\n\t}\n\n\tchangeSig := make(chan os.Signal)\n\tsignal.Notify(changeSig, unix.SIGWINCH)\n\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-changeSig:\n\t\t\t\t// Add a pause because it is sent two signals at maximizing a window.\n\t\t\t\ttime.Sleep(7 * time.Millisecond)\n\t\t\t\tw.Change <- true\n\t\t\tcase <-w.quit:\n\t\t\t\tw.wait <- true\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\treturn w\n}\n\n// Close closes the goroutine started to trap the signal.\nfunc (w *WinSize) Close() {\n\tw.quit <- true\n\t<-w.wait\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/.travis.yml",
    "content": "language: go\ngo:\n  - tip\n  - 1.5.1\n  - 1.4.3\n  - 1.3.3\n\n# let us have pretty, fast Docker-based Travis workers!\nsudo: false\n\ninstall:\n  - go get -d ./...\n  - go get golang.org/x/tools/cmd/vet\n\nscript:\n  - go test -v ./...\n  - go vet ./...\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/LICENSE",
    "content": "Copyright (c) 2015 Vincent Batts, Raleigh, NC, USA\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/vbatts/tar-split/README.md",
    "content": "# tar-split\n\n[![Build Status](https://travis-ci.org/vbatts/tar-split.svg?branch=master)](https://travis-ci.org/vbatts/tar-split)\n\nPristinely disassembling a tar archive, and stashing needed raw bytes and offsets to reassemble a validating original archive.\n\n## Docs\n\nCode API for libraries provided by `tar-split`:\n\n* https://godoc.org/github.com/vbatts/tar-split/tar/asm\n* https://godoc.org/github.com/vbatts/tar-split/tar/storage\n* https://godoc.org/github.com/vbatts/tar-split/archive/tar\n\n## Install\n\nThe command line utilitiy is installable via:\n\n```bash\ngo get github.com/vbatts/tar-split/cmd/tar-split\n```\n\n## Usage\n\nFor cli usage, see its [README.md](cmd/tar-split/README.md).\nFor the library see the [docs](#docs)\n\n## Demo\n\n### Basic disassembly and assembly\n\nThis demonstrates the `tar-split` command and how to assemble a tar archive from the `tar-data.json.gz`\n\n\n![basic cmd demo thumbnail](https://i.ytimg.com/vi/vh5wyjIOBtc/2.jpg?time=1445027151805)\n[youtube video of basic command demo](https://youtu.be/vh5wyjIOBtc)\n\n### Docker layer preservation\n\nThis demonstrates the tar-split integration for docker-1.8. Providing consistent tar archives for the image layer content.\n\n![docker tar-split demo](https://www.youtube.com/upload_thumbnail?v=tV_Dia8E8xw&t=2&ts=1445028436275)\n[youtube vide of docker layer checksums](https://youtu.be/tV_Dia8E8xw)\n\n## Caveat\n\nEventually this should detect TARs that this is not possible with.\n\nFor example stored sparse files that have \"holes\" in them, will be read as a\ncontiguous file, though the archive contents may be recorded in sparse format.\nTherefore when adding the file payload to a reassembled tar, to achieve\nidentical output, the file payload would need be precisely re-sparsified. This\nis not something I seek to fix imediately, but would rather have an alert that\nprecise reassembly is not possible.\n(see more http://www.gnu.org/software/tar/manual/html_node/Sparse-Formats.html)\n\n\nOther caveat, while tar archives support having multiple file entries for the\nsame path, we will not support this feature. If there are more than one entries\nwith the same path, expect an err (like `ErrDuplicatePath`) or a resulting tar\nstream that does not validate your original checksum/signature.\n\n## Contract\n\nDo not break the API of stdlib `archive/tar` in our fork (ideally find an upstream mergeable solution).\n\n## Std Version\n\nThe version of golang stdlib `archive/tar` is from go1.4.1, and their master branch around [a9dddb53f](https://github.com/golang/go/tree/a9dddb53f).\nIt is minimally extended to expose the raw bytes of the TAR, rather than just the marshalled headers and file stream.\n\n\n## Design\n\nSee the [design](concept/DESIGN.md).\n\n## Stored Metadata\n\nSince the raw bytes of the headers and padding are stored, you may be wondering\nwhat the size implications are. The headers are at least 512 bytes per\nfile (sometimes more), at least 1024 null bytes on the end, and then various\npadding. This makes for a constant linear growth in the stored metadata, with a\nnaive storage implementation.\n\nFirst we'll get an archive to work with. For repeatability, we'll make an\narchive from what you've just cloned:\n\n```bash\ngit archive --format=tar -o tar-split.tar HEAD .\n```\n\n```bash\n$ go get github.com/vbatts/tar-split/cmd/tar-split\n$ tar-split checksize ./tar-split.tar\ninspecting \"tar-split.tar\" (size 210k)\n -- number of files: 50\n -- size of metadata uncompressed: 53k\n -- size of gzip compressed metadata: 3k\n```\n\nSo assuming you've managed the extraction of the archive yourself, for reuse of\nthe file payloads from a relative path, then the only additional storage\nimplications are as little as 3kb.\n\nBut let's look at a larger archive, with many files.\n\n```bash\n$ ls -sh ./d.tar\n1.4G ./d.tar\n$ tar-split checksize ~/d.tar \ninspecting \"/home/vbatts/d.tar\" (size 1420749k)\n -- number of files: 38718\n -- size of metadata uncompressed: 43261k\n -- size of gzip compressed metadata: 2251k\n```\n\nHere, an archive with 38,718 files has a compressed footprint of about 2mb.\n\nRolling the null bytes on the end of the archive, we will assume a\nbytes-per-file rate for the storage implications.\n\n| uncompressed | compressed |\n| :----------: | :--------: |\n| ~ 1kb per/file | 0.06kb per/file |\n\n\n## What's Next?\n\n* More implementations of storage Packer and Unpacker\n* More implementations of FileGetter and FilePutter\n* would be interesting to have an assembler stream that implements `io.Seeker`\n\n\n## License\n\nSee [LICENSE](LICENSE)\n\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/common.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// Package tar implements access to tar archives.\n// It aims to cover most of the variations, including those produced\n// by GNU and BSD tars.\n//\n// References:\n//   http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5\n//   http://www.gnu.org/software/tar/manual/html_node/Standard.html\n//   http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html\npackage tar\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"time\"\n)\n\nconst (\n\tblockSize = 512\n\n\t// Types\n\tTypeReg           = '0'    // regular file\n\tTypeRegA          = '\\x00' // regular file\n\tTypeLink          = '1'    // hard link\n\tTypeSymlink       = '2'    // symbolic link\n\tTypeChar          = '3'    // character device node\n\tTypeBlock         = '4'    // block device node\n\tTypeDir           = '5'    // directory\n\tTypeFifo          = '6'    // fifo node\n\tTypeCont          = '7'    // reserved\n\tTypeXHeader       = 'x'    // extended header\n\tTypeXGlobalHeader = 'g'    // global extended header\n\tTypeGNULongName   = 'L'    // Next file has a long name\n\tTypeGNULongLink   = 'K'    // Next file symlinks to a file w/ a long name\n\tTypeGNUSparse     = 'S'    // sparse file\n)\n\n// A Header represents a single header in a tar archive.\n// Some fields may not be populated.\ntype Header struct {\n\tName       string    // name of header file entry\n\tMode       int64     // permission and mode bits\n\tUid        int       // user id of owner\n\tGid        int       // group id of owner\n\tSize       int64     // length in bytes\n\tModTime    time.Time // modified time\n\tTypeflag   byte      // type of header entry\n\tLinkname   string    // target name of link\n\tUname      string    // user name of owner\n\tGname      string    // group name of owner\n\tDevmajor   int64     // major number of character or block device\n\tDevminor   int64     // minor number of character or block device\n\tAccessTime time.Time // access time\n\tChangeTime time.Time // status change time\n\tXattrs     map[string]string\n}\n\n// File name constants from the tar spec.\nconst (\n\tfileNameSize       = 100 // Maximum number of bytes in a standard tar name.\n\tfileNamePrefixSize = 155 // Maximum number of ustar extension bytes.\n)\n\n// FileInfo returns an os.FileInfo for the Header.\nfunc (h *Header) FileInfo() os.FileInfo {\n\treturn headerFileInfo{h}\n}\n\n// headerFileInfo implements os.FileInfo.\ntype headerFileInfo struct {\n\th *Header\n}\n\nfunc (fi headerFileInfo) Size() int64        { return fi.h.Size }\nfunc (fi headerFileInfo) IsDir() bool        { return fi.Mode().IsDir() }\nfunc (fi headerFileInfo) ModTime() time.Time { return fi.h.ModTime }\nfunc (fi headerFileInfo) Sys() interface{}   { return fi.h }\n\n// Name returns the base name of the file.\nfunc (fi headerFileInfo) Name() string {\n\tif fi.IsDir() {\n\t\treturn path.Base(path.Clean(fi.h.Name))\n\t}\n\treturn path.Base(fi.h.Name)\n}\n\n// Mode returns the permission and mode bits for the headerFileInfo.\nfunc (fi headerFileInfo) Mode() (mode os.FileMode) {\n\t// Set file permission bits.\n\tmode = os.FileMode(fi.h.Mode).Perm()\n\n\t// Set setuid, setgid and sticky bits.\n\tif fi.h.Mode&c_ISUID != 0 {\n\t\t// setuid\n\t\tmode |= os.ModeSetuid\n\t}\n\tif fi.h.Mode&c_ISGID != 0 {\n\t\t// setgid\n\t\tmode |= os.ModeSetgid\n\t}\n\tif fi.h.Mode&c_ISVTX != 0 {\n\t\t// sticky\n\t\tmode |= os.ModeSticky\n\t}\n\n\t// Set file mode bits.\n\t// clear perm, setuid, setgid and sticky bits.\n\tm := os.FileMode(fi.h.Mode) &^ 07777\n\tif m == c_ISDIR {\n\t\t// directory\n\t\tmode |= os.ModeDir\n\t}\n\tif m == c_ISFIFO {\n\t\t// named pipe (FIFO)\n\t\tmode |= os.ModeNamedPipe\n\t}\n\tif m == c_ISLNK {\n\t\t// symbolic link\n\t\tmode |= os.ModeSymlink\n\t}\n\tif m == c_ISBLK {\n\t\t// device file\n\t\tmode |= os.ModeDevice\n\t}\n\tif m == c_ISCHR {\n\t\t// Unix character device\n\t\tmode |= os.ModeDevice\n\t\tmode |= os.ModeCharDevice\n\t}\n\tif m == c_ISSOCK {\n\t\t// Unix domain socket\n\t\tmode |= os.ModeSocket\n\t}\n\n\tswitch fi.h.Typeflag {\n\tcase TypeSymlink:\n\t\t// symbolic link\n\t\tmode |= os.ModeSymlink\n\tcase TypeChar:\n\t\t// character device node\n\t\tmode |= os.ModeDevice\n\t\tmode |= os.ModeCharDevice\n\tcase TypeBlock:\n\t\t// block device node\n\t\tmode |= os.ModeDevice\n\tcase TypeDir:\n\t\t// directory\n\t\tmode |= os.ModeDir\n\tcase TypeFifo:\n\t\t// fifo node\n\t\tmode |= os.ModeNamedPipe\n\t}\n\n\treturn mode\n}\n\n// sysStat, if non-nil, populates h from system-dependent fields of fi.\nvar sysStat func(fi os.FileInfo, h *Header) error\n\n// Mode constants from the tar spec.\nconst (\n\tc_ISUID  = 04000   // Set uid\n\tc_ISGID  = 02000   // Set gid\n\tc_ISVTX  = 01000   // Save text (sticky bit)\n\tc_ISDIR  = 040000  // Directory\n\tc_ISFIFO = 010000  // FIFO\n\tc_ISREG  = 0100000 // Regular file\n\tc_ISLNK  = 0120000 // Symbolic link\n\tc_ISBLK  = 060000  // Block special file\n\tc_ISCHR  = 020000  // Character special file\n\tc_ISSOCK = 0140000 // Socket\n)\n\n// Keywords for the PAX Extended Header\nconst (\n\tpaxAtime    = \"atime\"\n\tpaxCharset  = \"charset\"\n\tpaxComment  = \"comment\"\n\tpaxCtime    = \"ctime\" // please note that ctime is not a valid pax header.\n\tpaxGid      = \"gid\"\n\tpaxGname    = \"gname\"\n\tpaxLinkpath = \"linkpath\"\n\tpaxMtime    = \"mtime\"\n\tpaxPath     = \"path\"\n\tpaxSize     = \"size\"\n\tpaxUid      = \"uid\"\n\tpaxUname    = \"uname\"\n\tpaxXattr    = \"SCHILY.xattr.\"\n\tpaxNone     = \"\"\n)\n\n// FileInfoHeader creates a partially-populated Header from fi.\n// If fi describes a symlink, FileInfoHeader records link as the link target.\n// If fi describes a directory, a slash is appended to the name.\n// Because os.FileInfo's Name method returns only the base name of\n// the file it describes, it may be necessary to modify the Name field\n// of the returned header to provide the full path name of the file.\nfunc FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {\n\tif fi == nil {\n\t\treturn nil, errors.New(\"tar: FileInfo is nil\")\n\t}\n\tfm := fi.Mode()\n\th := &Header{\n\t\tName:    fi.Name(),\n\t\tModTime: fi.ModTime(),\n\t\tMode:    int64(fm.Perm()), // or'd with c_IS* constants later\n\t}\n\tswitch {\n\tcase fm.IsRegular():\n\t\th.Mode |= c_ISREG\n\t\th.Typeflag = TypeReg\n\t\th.Size = fi.Size()\n\tcase fi.IsDir():\n\t\th.Typeflag = TypeDir\n\t\th.Mode |= c_ISDIR\n\t\th.Name += \"/\"\n\tcase fm&os.ModeSymlink != 0:\n\t\th.Typeflag = TypeSymlink\n\t\th.Mode |= c_ISLNK\n\t\th.Linkname = link\n\tcase fm&os.ModeDevice != 0:\n\t\tif fm&os.ModeCharDevice != 0 {\n\t\t\th.Mode |= c_ISCHR\n\t\t\th.Typeflag = TypeChar\n\t\t} else {\n\t\t\th.Mode |= c_ISBLK\n\t\t\th.Typeflag = TypeBlock\n\t\t}\n\tcase fm&os.ModeNamedPipe != 0:\n\t\th.Typeflag = TypeFifo\n\t\th.Mode |= c_ISFIFO\n\tcase fm&os.ModeSocket != 0:\n\t\th.Mode |= c_ISSOCK\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"archive/tar: unknown file mode %v\", fm)\n\t}\n\tif fm&os.ModeSetuid != 0 {\n\t\th.Mode |= c_ISUID\n\t}\n\tif fm&os.ModeSetgid != 0 {\n\t\th.Mode |= c_ISGID\n\t}\n\tif fm&os.ModeSticky != 0 {\n\t\th.Mode |= c_ISVTX\n\t}\n\t// If possible, populate additional fields from OS-specific\n\t// FileInfo fields.\n\tif sys, ok := fi.Sys().(*Header); ok {\n\t\t// This FileInfo came from a Header (not the OS). Use the\n\t\t// original Header to populate all remaining fields.\n\t\th.Uid = sys.Uid\n\t\th.Gid = sys.Gid\n\t\th.Uname = sys.Uname\n\t\th.Gname = sys.Gname\n\t\th.AccessTime = sys.AccessTime\n\t\th.ChangeTime = sys.ChangeTime\n\t\tif sys.Xattrs != nil {\n\t\t\th.Xattrs = make(map[string]string)\n\t\t\tfor k, v := range sys.Xattrs {\n\t\t\t\th.Xattrs[k] = v\n\t\t\t}\n\t\t}\n\t\tif sys.Typeflag == TypeLink {\n\t\t\t// hard link\n\t\t\th.Typeflag = TypeLink\n\t\t\th.Size = 0\n\t\t\th.Linkname = sys.Linkname\n\t\t}\n\t}\n\tif sysStat != nil {\n\t\treturn h, sysStat(fi, h)\n\t}\n\treturn h, nil\n}\n\nvar zeroBlock = make([]byte, blockSize)\n\n// POSIX specifies a sum of the unsigned byte values, but the Sun tar uses signed byte values.\n// We compute and return both.\nfunc checksum(header []byte) (unsigned int64, signed int64) {\n\tfor i := 0; i < len(header); i++ {\n\t\tif i == 148 {\n\t\t\t// The chksum field (header[148:156]) is special: it should be treated as space bytes.\n\t\t\tunsigned += ' ' * 8\n\t\t\tsigned += ' ' * 8\n\t\t\ti += 7\n\t\t\tcontinue\n\t\t}\n\t\tunsigned += int64(header[i])\n\t\tsigned += int64(int8(header[i]))\n\t}\n\treturn\n}\n\ntype slicer []byte\n\nfunc (sp *slicer) next(n int) (b []byte) {\n\ts := *sp\n\tb, *sp = s[0:n], s[n:]\n\treturn\n}\n\nfunc isASCII(s string) bool {\n\tfor _, c := range s {\n\t\tif c >= 0x80 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc toASCII(s string) string {\n\tif isASCII(s) {\n\t\treturn s\n\t}\n\tvar buf bytes.Buffer\n\tfor _, c := range s {\n\t\tif c < 0x80 {\n\t\t\tbuf.WriteByte(byte(c))\n\t\t}\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/reader.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\npackage tar\n\n// TODO(dsymonds):\n//   - pax extensions\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tErrHeader = errors.New(\"archive/tar: invalid tar header\")\n)\n\nconst maxNanoSecondIntSize = 9\n\n// A Reader provides sequential access to the contents of a tar archive.\n// A tar archive consists of a sequence of files.\n// The Next method advances to the next file in the archive (including the first),\n// and then it can be treated as an io.Reader to access the file's data.\ntype Reader struct {\n\tr       io.Reader\n\terr     error\n\tpad     int64           // amount of padding (ignored) after current file entry\n\tcurr    numBytesReader  // reader for current file entry\n\thdrBuff [blockSize]byte // buffer to use in readHeader\n\n\tRawAccounting bool          // Whether to enable the access needed to reassemble the tar from raw bytes. Some performance/memory hit for this.\n\trawBytes      *bytes.Buffer // last raw bits\n}\n\n// RawBytes accesses the raw bytes of the archive, apart from the file payload itself.\n// This includes the header and padding.\n//\n// This call resets the current rawbytes buffer\n//\n// Only when RawAccounting is enabled, otherwise this returns nil\nfunc (tr *Reader) RawBytes() []byte {\n\tif !tr.RawAccounting {\n\t\treturn nil\n\t}\n\tif tr.rawBytes == nil {\n\t\ttr.rawBytes = bytes.NewBuffer(nil)\n\t}\n\t// if we've read them, then flush them.\n\tdefer tr.rawBytes.Reset()\n\treturn tr.rawBytes.Bytes()\n}\n\n// A numBytesReader is an io.Reader with a numBytes method, returning the number\n// of bytes remaining in the underlying encoded data.\ntype numBytesReader interface {\n\tio.Reader\n\tnumBytes() int64\n}\n\n// A regFileReader is a numBytesReader for reading file data from a tar archive.\ntype regFileReader struct {\n\tr  io.Reader // underlying reader\n\tnb int64     // number of unread bytes for current file entry\n}\n\n// A sparseFileReader is a numBytesReader for reading sparse file data from a tar archive.\ntype sparseFileReader struct {\n\trfr *regFileReader // reads the sparse-encoded file data\n\tsp  []sparseEntry  // the sparse map for the file\n\tpos int64          // keeps track of file position\n\ttot int64          // total size of the file\n}\n\n// Keywords for GNU sparse files in a PAX extended header\nconst (\n\tpaxGNUSparseNumBlocks = \"GNU.sparse.numblocks\"\n\tpaxGNUSparseOffset    = \"GNU.sparse.offset\"\n\tpaxGNUSparseNumBytes  = \"GNU.sparse.numbytes\"\n\tpaxGNUSparseMap       = \"GNU.sparse.map\"\n\tpaxGNUSparseName      = \"GNU.sparse.name\"\n\tpaxGNUSparseMajor     = \"GNU.sparse.major\"\n\tpaxGNUSparseMinor     = \"GNU.sparse.minor\"\n\tpaxGNUSparseSize      = \"GNU.sparse.size\"\n\tpaxGNUSparseRealSize  = \"GNU.sparse.realsize\"\n)\n\n// Keywords for old GNU sparse headers\nconst (\n\toldGNUSparseMainHeaderOffset               = 386\n\toldGNUSparseMainHeaderIsExtendedOffset     = 482\n\toldGNUSparseMainHeaderNumEntries           = 4\n\toldGNUSparseExtendedHeaderIsExtendedOffset = 504\n\toldGNUSparseExtendedHeaderNumEntries       = 21\n\toldGNUSparseOffsetSize                     = 12\n\toldGNUSparseNumBytesSize                   = 12\n)\n\n// NewReader creates a new Reader reading from r.\nfunc NewReader(r io.Reader) *Reader { return &Reader{r: r} }\n\n// Next advances to the next entry in the tar archive.\n//\n// io.EOF is returned at the end of the input.\nfunc (tr *Reader) Next() (*Header, error) {\n\tvar hdr *Header\n\tif tr.RawAccounting {\n\t\tif tr.rawBytes == nil {\n\t\t\ttr.rawBytes = bytes.NewBuffer(nil)\n\t\t} else {\n\t\t\ttr.rawBytes.Reset()\n\t\t}\n\t}\n\tif tr.err == nil {\n\t\ttr.skipUnread()\n\t}\n\tif tr.err != nil {\n\t\treturn hdr, tr.err\n\t}\n\thdr = tr.readHeader()\n\tif hdr == nil {\n\t\treturn hdr, tr.err\n\t}\n\t// Check for PAX/GNU header.\n\tswitch hdr.Typeflag {\n\tcase TypeXHeader:\n\t\t//  PAX extended header\n\t\theaders, err := parsePAX(tr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// We actually read the whole file,\n\t\t// but this skips alignment padding\n\t\ttr.skipUnread()\n\t\tif tr.err != nil {\n\t\t\treturn nil, tr.err\n\t\t}\n\t\thdr = tr.readHeader()\n\t\tif hdr == nil {\n\t\t\treturn nil, tr.err\n\t\t}\n\t\tmergePAX(hdr, headers)\n\n\t\t// Check for a PAX format sparse file\n\t\tsp, err := tr.checkForGNUSparsePAXHeaders(hdr, headers)\n\t\tif err != nil {\n\t\t\ttr.err = err\n\t\t\treturn nil, err\n\t\t}\n\t\tif sp != nil {\n\t\t\t// Current file is a PAX format GNU sparse file.\n\t\t\t// Set the current file reader to a sparse file reader.\n\t\t\ttr.curr = &sparseFileReader{rfr: tr.curr.(*regFileReader), sp: sp, tot: hdr.Size}\n\t\t}\n\t\treturn hdr, nil\n\tcase TypeGNULongName:\n\t\t// We have a GNU long name header. Its contents are the real file name.\n\t\trealname, err := ioutil.ReadAll(tr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvar buf []byte\n\t\tif tr.RawAccounting {\n\t\t\tif _, err = tr.rawBytes.Write(realname); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbuf = make([]byte, tr.rawBytes.Len())\n\t\t\tcopy(buf[:], tr.RawBytes())\n\t\t}\n\t\thdr, err := tr.Next()\n\t\t// since the above call to Next() resets the buffer, we need to throw the bytes over\n\t\tif tr.RawAccounting {\n\t\t\tbuf = append(buf, tr.RawBytes()...)\n\t\t\tif _, err = tr.rawBytes.Write(buf); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\thdr.Name = cString(realname)\n\t\treturn hdr, err\n\tcase TypeGNULongLink:\n\t\t// We have a GNU long link header.\n\t\trealname, err := ioutil.ReadAll(tr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvar buf []byte\n\t\tif tr.RawAccounting {\n\t\t\tif _, err = tr.rawBytes.Write(realname); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbuf = make([]byte, tr.rawBytes.Len())\n\t\t\tcopy(buf[:], tr.RawBytes())\n\t\t}\n\t\thdr, err := tr.Next()\n\t\t// since the above call to Next() resets the buffer, we need to throw the bytes over\n\t\tif tr.RawAccounting {\n\t\t\tbuf = append(buf, tr.RawBytes()...)\n\t\t\tif _, err = tr.rawBytes.Write(buf); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\thdr.Linkname = cString(realname)\n\t\treturn hdr, err\n\t}\n\treturn hdr, tr.err\n}\n\n// checkForGNUSparsePAXHeaders checks the PAX headers for GNU sparse headers. If they are found, then\n// this function reads the sparse map and returns it. Unknown sparse formats are ignored, causing the file to\n// be treated as a regular file.\nfunc (tr *Reader) checkForGNUSparsePAXHeaders(hdr *Header, headers map[string]string) ([]sparseEntry, error) {\n\tvar sparseFormat string\n\n\t// Check for sparse format indicators\n\tmajor, majorOk := headers[paxGNUSparseMajor]\n\tminor, minorOk := headers[paxGNUSparseMinor]\n\tsparseName, sparseNameOk := headers[paxGNUSparseName]\n\t_, sparseMapOk := headers[paxGNUSparseMap]\n\tsparseSize, sparseSizeOk := headers[paxGNUSparseSize]\n\tsparseRealSize, sparseRealSizeOk := headers[paxGNUSparseRealSize]\n\n\t// Identify which, if any, sparse format applies from which PAX headers are set\n\tif majorOk && minorOk {\n\t\tsparseFormat = major + \".\" + minor\n\t} else if sparseNameOk && sparseMapOk {\n\t\tsparseFormat = \"0.1\"\n\t} else if sparseSizeOk {\n\t\tsparseFormat = \"0.0\"\n\t} else {\n\t\t// Not a PAX format GNU sparse file.\n\t\treturn nil, nil\n\t}\n\n\t// Check for unknown sparse format\n\tif sparseFormat != \"0.0\" && sparseFormat != \"0.1\" && sparseFormat != \"1.0\" {\n\t\treturn nil, nil\n\t}\n\n\t// Update hdr from GNU sparse PAX headers\n\tif sparseNameOk {\n\t\thdr.Name = sparseName\n\t}\n\tif sparseSizeOk {\n\t\trealSize, err := strconv.ParseInt(sparseSize, 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\thdr.Size = realSize\n\t} else if sparseRealSizeOk {\n\t\trealSize, err := strconv.ParseInt(sparseRealSize, 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\thdr.Size = realSize\n\t}\n\n\t// Set up the sparse map, according to the particular sparse format in use\n\tvar sp []sparseEntry\n\tvar err error\n\tswitch sparseFormat {\n\tcase \"0.0\", \"0.1\":\n\t\tsp, err = readGNUSparseMap0x1(headers)\n\tcase \"1.0\":\n\t\tsp, err = readGNUSparseMap1x0(tr.curr)\n\t}\n\treturn sp, err\n}\n\n// mergePAX merges well known headers according to PAX standard.\n// In general headers with the same name as those found\n// in the header struct overwrite those found in the header\n// struct with higher precision or longer values. Esp. useful\n// for name and linkname fields.\nfunc mergePAX(hdr *Header, headers map[string]string) error {\n\tfor k, v := range headers {\n\t\tswitch k {\n\t\tcase paxPath:\n\t\t\thdr.Name = v\n\t\tcase paxLinkpath:\n\t\t\thdr.Linkname = v\n\t\tcase paxGname:\n\t\t\thdr.Gname = v\n\t\tcase paxUname:\n\t\t\thdr.Uname = v\n\t\tcase paxUid:\n\t\t\tuid, err := strconv.ParseInt(v, 10, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Uid = int(uid)\n\t\tcase paxGid:\n\t\t\tgid, err := strconv.ParseInt(v, 10, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Gid = int(gid)\n\t\tcase paxAtime:\n\t\t\tt, err := parsePAXTime(v)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.AccessTime = t\n\t\tcase paxMtime:\n\t\t\tt, err := parsePAXTime(v)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.ModTime = t\n\t\tcase paxCtime:\n\t\t\tt, err := parsePAXTime(v)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.ChangeTime = t\n\t\tcase paxSize:\n\t\t\tsize, err := strconv.ParseInt(v, 10, 0)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\thdr.Size = int64(size)\n\t\tdefault:\n\t\t\tif strings.HasPrefix(k, paxXattr) {\n\t\t\t\tif hdr.Xattrs == nil {\n\t\t\t\t\thdr.Xattrs = make(map[string]string)\n\t\t\t\t}\n\t\t\t\thdr.Xattrs[k[len(paxXattr):]] = v\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// parsePAXTime takes a string of the form %d.%d as described in\n// the PAX specification.\nfunc parsePAXTime(t string) (time.Time, error) {\n\tbuf := []byte(t)\n\tpos := bytes.IndexByte(buf, '.')\n\tvar seconds, nanoseconds int64\n\tvar err error\n\tif pos == -1 {\n\t\tseconds, err = strconv.ParseInt(t, 10, 0)\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t} else {\n\t\tseconds, err = strconv.ParseInt(string(buf[:pos]), 10, 0)\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tnano_buf := string(buf[pos+1:])\n\t\t// Pad as needed before converting to a decimal.\n\t\t// For example .030 -> .030000000 -> 30000000 nanoseconds\n\t\tif len(nano_buf) < maxNanoSecondIntSize {\n\t\t\t// Right pad\n\t\t\tnano_buf += strings.Repeat(\"0\", maxNanoSecondIntSize-len(nano_buf))\n\t\t} else if len(nano_buf) > maxNanoSecondIntSize {\n\t\t\t// Right truncate\n\t\t\tnano_buf = nano_buf[:maxNanoSecondIntSize]\n\t\t}\n\t\tnanoseconds, err = strconv.ParseInt(string(nano_buf), 10, 0)\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t}\n\tts := time.Unix(seconds, nanoseconds)\n\treturn ts, nil\n}\n\n// parsePAX parses PAX headers.\n// If an extended header (type 'x') is invalid, ErrHeader is returned\nfunc parsePAX(r io.Reader) (map[string]string, error) {\n\tbuf, err := ioutil.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// leaving this function for io.Reader makes it more testable\n\tif tr, ok := r.(*Reader); ok && tr.RawAccounting {\n\t\tif _, err = tr.rawBytes.Write(buf); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// For GNU PAX sparse format 0.0 support.\n\t// This function transforms the sparse format 0.0 headers into sparse format 0.1 headers.\n\tvar sparseMap bytes.Buffer\n\n\theaders := make(map[string]string)\n\t// Each record is constructed as\n\t//     \"%d %s=%s\\n\", length, keyword, value\n\tfor len(buf) > 0 {\n\t\t// or the header was empty to start with.\n\t\tvar sp int\n\t\t// The size field ends at the first space.\n\t\tsp = bytes.IndexByte(buf, ' ')\n\t\tif sp == -1 {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\t// Parse the first token as a decimal integer.\n\t\tn, err := strconv.ParseInt(string(buf[:sp]), 10, 0)\n\t\tif err != nil || n < 5 || int64(len(buf)) < n {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\t// Extract everything between the decimal and the n -1 on the\n\t\t// beginning to eat the ' ', -1 on the end to skip the newline.\n\t\tvar record []byte\n\t\trecord, buf = buf[sp+1:n-1], buf[n:]\n\t\t// The first equals is guaranteed to mark the end of the key.\n\t\t// Everything else is value.\n\t\teq := bytes.IndexByte(record, '=')\n\t\tif eq == -1 {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\tkey, value := record[:eq], record[eq+1:]\n\n\t\tkeyStr := string(key)\n\t\tif keyStr == paxGNUSparseOffset || keyStr == paxGNUSparseNumBytes {\n\t\t\t// GNU sparse format 0.0 special key. Write to sparseMap instead of using the headers map.\n\t\t\tsparseMap.Write(value)\n\t\t\tsparseMap.Write([]byte{','})\n\t\t} else {\n\t\t\t// Normal key. Set the value in the headers map.\n\t\t\theaders[keyStr] = string(value)\n\t\t}\n\t}\n\tif sparseMap.Len() != 0 {\n\t\t// Add sparse info to headers, chopping off the extra comma\n\t\tsparseMap.Truncate(sparseMap.Len() - 1)\n\t\theaders[paxGNUSparseMap] = sparseMap.String()\n\t}\n\treturn headers, nil\n}\n\n// cString parses bytes as a NUL-terminated C-style string.\n// If a NUL byte is not found then the whole slice is returned as a string.\nfunc cString(b []byte) string {\n\tn := 0\n\tfor n < len(b) && b[n] != 0 {\n\t\tn++\n\t}\n\treturn string(b[0:n])\n}\n\nfunc (tr *Reader) octal(b []byte) int64 {\n\t// Check for binary format first.\n\tif len(b) > 0 && b[0]&0x80 != 0 {\n\t\tvar x int64\n\t\tfor i, c := range b {\n\t\t\tif i == 0 {\n\t\t\t\tc &= 0x7f // ignore signal bit in first byte\n\t\t\t}\n\t\t\tx = x<<8 | int64(c)\n\t\t}\n\t\treturn x\n\t}\n\n\t// Because unused fields are filled with NULs, we need\n\t// to skip leading NULs. Fields may also be padded with\n\t// spaces or NULs.\n\t// So we remove leading and trailing NULs and spaces to\n\t// be sure.\n\tb = bytes.Trim(b, \" \\x00\")\n\n\tif len(b) == 0 {\n\t\treturn 0\n\t}\n\tx, err := strconv.ParseUint(cString(b), 8, 64)\n\tif err != nil {\n\t\ttr.err = err\n\t}\n\treturn int64(x)\n}\n\n// skipUnread skips any unread bytes in the existing file entry, as well as any alignment padding.\nfunc (tr *Reader) skipUnread() {\n\tnr := tr.numBytes() + tr.pad // number of bytes to skip\n\ttr.curr, tr.pad = nil, 0\n\tif tr.RawAccounting {\n\t\t_, tr.err = io.CopyN(tr.rawBytes, tr.r, nr)\n\t\treturn\n\t}\n\tif sr, ok := tr.r.(io.Seeker); ok {\n\t\tif _, err := sr.Seek(nr, os.SEEK_CUR); err == nil {\n\t\t\treturn\n\t\t}\n\t}\n\t_, tr.err = io.CopyN(ioutil.Discard, tr.r, nr)\n}\n\nfunc (tr *Reader) verifyChecksum(header []byte) bool {\n\tif tr.err != nil {\n\t\treturn false\n\t}\n\n\tgiven := tr.octal(header[148:156])\n\tunsigned, signed := checksum(header)\n\treturn given == unsigned || given == signed\n}\n\nfunc (tr *Reader) readHeader() *Header {\n\theader := tr.hdrBuff[:]\n\tcopy(header, zeroBlock)\n\n\tif _, tr.err = io.ReadFull(tr.r, header); tr.err != nil {\n\t\t// because it could read some of the block, but reach EOF first\n\t\tif tr.err == io.EOF && tr.RawAccounting {\n\t\t\tif _, tr.err = tr.rawBytes.Write(header); tr.err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\tif tr.RawAccounting {\n\t\tif _, tr.err = tr.rawBytes.Write(header); tr.err != nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// Two blocks of zero bytes marks the end of the archive.\n\tif bytes.Equal(header, zeroBlock[0:blockSize]) {\n\t\tif _, tr.err = io.ReadFull(tr.r, header); tr.err != nil {\n\t\t\t// because it could read some of the block, but reach EOF first\n\t\t\tif tr.err == io.EOF && tr.RawAccounting {\n\t\t\t\tif _, tr.err = tr.rawBytes.Write(header); tr.err != nil {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t\tif tr.RawAccounting {\n\t\t\tif _, tr.err = tr.rawBytes.Write(header); tr.err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tif bytes.Equal(header, zeroBlock[0:blockSize]) {\n\t\t\ttr.err = io.EOF\n\t\t} else {\n\t\t\ttr.err = ErrHeader // zero block and then non-zero block\n\t\t}\n\t\treturn nil\n\t}\n\n\tif !tr.verifyChecksum(header) {\n\t\ttr.err = ErrHeader\n\t\treturn nil\n\t}\n\n\t// Unpack\n\thdr := new(Header)\n\ts := slicer(header)\n\n\thdr.Name = cString(s.next(100))\n\thdr.Mode = tr.octal(s.next(8))\n\thdr.Uid = int(tr.octal(s.next(8)))\n\thdr.Gid = int(tr.octal(s.next(8)))\n\thdr.Size = tr.octal(s.next(12))\n\tif hdr.Size < 0 {\n\t\ttr.err = ErrHeader\n\t\treturn nil\n\t}\n\thdr.ModTime = time.Unix(tr.octal(s.next(12)), 0)\n\ts.next(8) // chksum\n\thdr.Typeflag = s.next(1)[0]\n\thdr.Linkname = cString(s.next(100))\n\n\t// The remainder of the header depends on the value of magic.\n\t// The original (v7) version of tar had no explicit magic field,\n\t// so its magic bytes, like the rest of the block, are NULs.\n\tmagic := string(s.next(8)) // contains version field as well.\n\tvar format string\n\tswitch {\n\tcase magic[:6] == \"ustar\\x00\": // POSIX tar (1003.1-1988)\n\t\tif string(header[508:512]) == \"tar\\x00\" {\n\t\t\tformat = \"star\"\n\t\t} else {\n\t\t\tformat = \"posix\"\n\t\t}\n\tcase magic == \"ustar  \\x00\": // old GNU tar\n\t\tformat = \"gnu\"\n\t}\n\n\tswitch format {\n\tcase \"posix\", \"gnu\", \"star\":\n\t\thdr.Uname = cString(s.next(32))\n\t\thdr.Gname = cString(s.next(32))\n\t\tdevmajor := s.next(8)\n\t\tdevminor := s.next(8)\n\t\tif hdr.Typeflag == TypeChar || hdr.Typeflag == TypeBlock {\n\t\t\thdr.Devmajor = tr.octal(devmajor)\n\t\t\thdr.Devminor = tr.octal(devminor)\n\t\t}\n\t\tvar prefix string\n\t\tswitch format {\n\t\tcase \"posix\", \"gnu\":\n\t\t\tprefix = cString(s.next(155))\n\t\tcase \"star\":\n\t\t\tprefix = cString(s.next(131))\n\t\t\thdr.AccessTime = time.Unix(tr.octal(s.next(12)), 0)\n\t\t\thdr.ChangeTime = time.Unix(tr.octal(s.next(12)), 0)\n\t\t}\n\t\tif len(prefix) > 0 {\n\t\t\thdr.Name = prefix + \"/\" + hdr.Name\n\t\t}\n\t}\n\n\tif tr.err != nil {\n\t\ttr.err = ErrHeader\n\t\treturn nil\n\t}\n\n\t// Maximum value of hdr.Size is 64 GB (12 octal digits),\n\t// so there's no risk of int64 overflowing.\n\tnb := int64(hdr.Size)\n\ttr.pad = -nb & (blockSize - 1) // blockSize is a power of two\n\n\t// Set the current file reader.\n\ttr.curr = &regFileReader{r: tr.r, nb: nb}\n\n\t// Check for old GNU sparse format entry.\n\tif hdr.Typeflag == TypeGNUSparse {\n\t\t// Get the real size of the file.\n\t\thdr.Size = tr.octal(header[483:495])\n\n\t\t// Read the sparse map.\n\t\tsp := tr.readOldGNUSparseMap(header)\n\t\tif tr.err != nil {\n\t\t\treturn nil\n\t\t}\n\t\t// Current file is a GNU sparse file. Update the current file reader.\n\t\ttr.curr = &sparseFileReader{rfr: tr.curr.(*regFileReader), sp: sp, tot: hdr.Size}\n\t}\n\n\treturn hdr\n}\n\n// A sparseEntry holds a single entry in a sparse file's sparse map.\n// A sparse entry indicates the offset and size in a sparse file of a\n// block of data.\ntype sparseEntry struct {\n\toffset   int64\n\tnumBytes int64\n}\n\n// readOldGNUSparseMap reads the sparse map as stored in the old GNU sparse format.\n// The sparse map is stored in the tar header if it's small enough. If it's larger than four entries,\n// then one or more extension headers are used to store the rest of the sparse map.\nfunc (tr *Reader) readOldGNUSparseMap(header []byte) []sparseEntry {\n\tisExtended := header[oldGNUSparseMainHeaderIsExtendedOffset] != 0\n\tspCap := oldGNUSparseMainHeaderNumEntries\n\tif isExtended {\n\t\tspCap += oldGNUSparseExtendedHeaderNumEntries\n\t}\n\tsp := make([]sparseEntry, 0, spCap)\n\ts := slicer(header[oldGNUSparseMainHeaderOffset:])\n\n\t// Read the four entries from the main tar header\n\tfor i := 0; i < oldGNUSparseMainHeaderNumEntries; i++ {\n\t\toffset := tr.octal(s.next(oldGNUSparseOffsetSize))\n\t\tnumBytes := tr.octal(s.next(oldGNUSparseNumBytesSize))\n\t\tif tr.err != nil {\n\t\t\ttr.err = ErrHeader\n\t\t\treturn nil\n\t\t}\n\t\tif offset == 0 && numBytes == 0 {\n\t\t\tbreak\n\t\t}\n\t\tsp = append(sp, sparseEntry{offset: offset, numBytes: numBytes})\n\t}\n\n\tfor isExtended {\n\t\t// There are more entries. Read an extension header and parse its entries.\n\t\tsparseHeader := make([]byte, blockSize)\n\t\tif _, tr.err = io.ReadFull(tr.r, sparseHeader); tr.err != nil {\n\t\t\treturn nil\n\t\t}\n\t\tif tr.RawAccounting {\n\t\t\tif _, tr.err = tr.rawBytes.Write(sparseHeader); tr.err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\n\t\tisExtended = sparseHeader[oldGNUSparseExtendedHeaderIsExtendedOffset] != 0\n\t\ts = slicer(sparseHeader)\n\t\tfor i := 0; i < oldGNUSparseExtendedHeaderNumEntries; i++ {\n\t\t\toffset := tr.octal(s.next(oldGNUSparseOffsetSize))\n\t\t\tnumBytes := tr.octal(s.next(oldGNUSparseNumBytesSize))\n\t\t\tif tr.err != nil {\n\t\t\t\ttr.err = ErrHeader\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tif offset == 0 && numBytes == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tsp = append(sp, sparseEntry{offset: offset, numBytes: numBytes})\n\t\t}\n\t}\n\treturn sp\n}\n\n// readGNUSparseMap1x0 reads the sparse map as stored in GNU's PAX sparse format version 1.0.\n// The sparse map is stored just before the file data and padded out to the nearest block boundary.\nfunc readGNUSparseMap1x0(r io.Reader) ([]sparseEntry, error) {\n\tbuf := make([]byte, 2*blockSize)\n\tsparseHeader := buf[:blockSize]\n\n\t// readDecimal is a helper function to read a decimal integer from the sparse map\n\t// while making sure to read from the file in blocks of size blockSize\n\treadDecimal := func() (int64, error) {\n\t\t// Look for newline\n\t\tnl := bytes.IndexByte(sparseHeader, '\\n')\n\t\tif nl == -1 {\n\t\t\tif len(sparseHeader) >= blockSize {\n\t\t\t\t// This is an error\n\t\t\t\treturn 0, ErrHeader\n\t\t\t}\n\t\t\toldLen := len(sparseHeader)\n\t\t\tnewLen := oldLen + blockSize\n\t\t\tif cap(sparseHeader) < newLen {\n\t\t\t\t// There's more header, but we need to make room for the next block\n\t\t\t\tcopy(buf, sparseHeader)\n\t\t\t\tsparseHeader = buf[:newLen]\n\t\t\t} else {\n\t\t\t\t// There's more header, and we can just reslice\n\t\t\t\tsparseHeader = sparseHeader[:newLen]\n\t\t\t}\n\n\t\t\t// Now that sparseHeader is large enough, read next block\n\t\t\tif _, err := io.ReadFull(r, sparseHeader[oldLen:newLen]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// leaving this function for io.Reader makes it more testable\n\t\t\tif tr, ok := r.(*Reader); ok && tr.RawAccounting {\n\t\t\t\tif _, err := tr.rawBytes.Write(sparseHeader[oldLen:newLen]); err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for a newline in the new data\n\t\t\tnl = bytes.IndexByte(sparseHeader[oldLen:newLen], '\\n')\n\t\t\tif nl == -1 {\n\t\t\t\t// This is an error\n\t\t\t\treturn 0, ErrHeader\n\t\t\t}\n\t\t\tnl += oldLen // We want the position from the beginning\n\t\t}\n\t\t// Now that we've found a newline, read a number\n\t\tn, err := strconv.ParseInt(string(sparseHeader[:nl]), 10, 0)\n\t\tif err != nil {\n\t\t\treturn 0, ErrHeader\n\t\t}\n\n\t\t// Update sparseHeader to consume this number\n\t\tsparseHeader = sparseHeader[nl+1:]\n\t\treturn n, nil\n\t}\n\n\t// Read the first block\n\tif _, err := io.ReadFull(r, sparseHeader); err != nil {\n\t\treturn nil, err\n\t}\n\t// leaving this function for io.Reader makes it more testable\n\tif tr, ok := r.(*Reader); ok && tr.RawAccounting {\n\t\tif _, err := tr.rawBytes.Write(sparseHeader); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// The first line contains the number of entries\n\tnumEntries, err := readDecimal()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Read all the entries\n\tsp := make([]sparseEntry, 0, numEntries)\n\tfor i := int64(0); i < numEntries; i++ {\n\t\t// Read the offset\n\t\toffset, err := readDecimal()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Read numBytes\n\t\tnumBytes, err := readDecimal()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tsp = append(sp, sparseEntry{offset: offset, numBytes: numBytes})\n\t}\n\n\treturn sp, nil\n}\n\n// readGNUSparseMap0x1 reads the sparse map as stored in GNU's PAX sparse format version 0.1.\n// The sparse map is stored in the PAX headers.\nfunc readGNUSparseMap0x1(headers map[string]string) ([]sparseEntry, error) {\n\t// Get number of entries\n\tnumEntriesStr, ok := headers[paxGNUSparseNumBlocks]\n\tif !ok {\n\t\treturn nil, ErrHeader\n\t}\n\tnumEntries, err := strconv.ParseInt(numEntriesStr, 10, 0)\n\tif err != nil {\n\t\treturn nil, ErrHeader\n\t}\n\n\tsparseMap := strings.Split(headers[paxGNUSparseMap], \",\")\n\n\t// There should be two numbers in sparseMap for each entry\n\tif int64(len(sparseMap)) != 2*numEntries {\n\t\treturn nil, ErrHeader\n\t}\n\n\t// Loop through the entries in the sparse map\n\tsp := make([]sparseEntry, 0, numEntries)\n\tfor i := int64(0); i < numEntries; i++ {\n\t\toffset, err := strconv.ParseInt(sparseMap[2*i], 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\tnumBytes, err := strconv.ParseInt(sparseMap[2*i+1], 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, ErrHeader\n\t\t}\n\t\tsp = append(sp, sparseEntry{offset: offset, numBytes: numBytes})\n\t}\n\n\treturn sp, nil\n}\n\n// numBytes returns the number of bytes left to read in the current file's entry\n// in the tar archive, or 0 if there is no current file.\nfunc (tr *Reader) numBytes() int64 {\n\tif tr.curr == nil {\n\t\t// No current file, so no bytes\n\t\treturn 0\n\t}\n\treturn tr.curr.numBytes()\n}\n\n// Read reads from the current entry in the tar archive.\n// It returns 0, io.EOF when it reaches the end of that entry,\n// until Next is called to advance to the next entry.\nfunc (tr *Reader) Read(b []byte) (n int, err error) {\n\tif tr.curr == nil {\n\t\treturn 0, io.EOF\n\t}\n\tn, err = tr.curr.Read(b)\n\tif err != nil && err != io.EOF {\n\t\ttr.err = err\n\t}\n\treturn\n}\n\nfunc (rfr *regFileReader) Read(b []byte) (n int, err error) {\n\tif rfr.nb == 0 {\n\t\t// file consumed\n\t\treturn 0, io.EOF\n\t}\n\tif int64(len(b)) > rfr.nb {\n\t\tb = b[0:rfr.nb]\n\t}\n\tn, err = rfr.r.Read(b)\n\trfr.nb -= int64(n)\n\n\tif err == io.EOF && rfr.nb > 0 {\n\t\terr = io.ErrUnexpectedEOF\n\t}\n\treturn\n}\n\n// numBytes returns the number of bytes left to read in the file's data in the tar archive.\nfunc (rfr *regFileReader) numBytes() int64 {\n\treturn rfr.nb\n}\n\n// readHole reads a sparse file hole ending at offset toOffset\nfunc (sfr *sparseFileReader) readHole(b []byte, toOffset int64) int {\n\tn64 := toOffset - sfr.pos\n\tif n64 > int64(len(b)) {\n\t\tn64 = int64(len(b))\n\t}\n\tn := int(n64)\n\tfor i := 0; i < n; i++ {\n\t\tb[i] = 0\n\t}\n\tsfr.pos += n64\n\treturn n\n}\n\n// Read reads the sparse file data in expanded form.\nfunc (sfr *sparseFileReader) Read(b []byte) (n int, err error) {\n\tif len(sfr.sp) == 0 {\n\t\t// No more data fragments to read from.\n\t\tif sfr.pos < sfr.tot {\n\t\t\t// We're in the last hole\n\t\t\tn = sfr.readHole(b, sfr.tot)\n\t\t\treturn\n\t\t}\n\t\t// Otherwise, we're at the end of the file\n\t\treturn 0, io.EOF\n\t}\n\tif sfr.tot < sfr.sp[0].offset {\n\t\treturn 0, io.ErrUnexpectedEOF\n\t}\n\tif sfr.pos < sfr.sp[0].offset {\n\t\t// We're in a hole\n\t\tn = sfr.readHole(b, sfr.sp[0].offset)\n\t\treturn\n\t}\n\n\t// We're not in a hole, so we'll read from the next data fragment\n\tposInFragment := sfr.pos - sfr.sp[0].offset\n\tbytesLeft := sfr.sp[0].numBytes - posInFragment\n\tif int64(len(b)) > bytesLeft {\n\t\tb = b[0:bytesLeft]\n\t}\n\n\tn, err = sfr.rfr.Read(b)\n\tsfr.pos += int64(n)\n\n\tif int64(n) == bytesLeft {\n\t\t// We're done with this fragment\n\t\tsfr.sp = sfr.sp[1:]\n\t}\n\n\tif err == io.EOF && sfr.pos < sfr.tot {\n\t\t// We reached the end of the last fragment's data, but there's a final hole\n\t\terr = nil\n\t}\n\treturn\n}\n\n// numBytes returns the number of bytes left to read in the sparse file's\n// sparse-encoded data in the tar archive.\nfunc (sfr *sparseFileReader) numBytes() int64 {\n\treturn sfr.rfr.nb\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/stat_atim.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// +build linux dragonfly openbsd solaris\n\npackage tar\n\nimport (\n\t\"syscall\"\n\t\"time\"\n)\n\nfunc statAtime(st *syscall.Stat_t) time.Time {\n\treturn time.Unix(st.Atim.Unix())\n}\n\nfunc statCtime(st *syscall.Stat_t) time.Time {\n\treturn time.Unix(st.Ctim.Unix())\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/stat_atimespec.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// +build darwin freebsd netbsd\n\npackage tar\n\nimport (\n\t\"syscall\"\n\t\"time\"\n)\n\nfunc statAtime(st *syscall.Stat_t) time.Time {\n\treturn time.Unix(st.Atimespec.Unix())\n}\n\nfunc statCtime(st *syscall.Stat_t) time.Time {\n\treturn time.Unix(st.Ctimespec.Unix())\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/stat_unix.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// +build linux darwin dragonfly freebsd openbsd netbsd solaris\n\npackage tar\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nfunc init() {\n\tsysStat = statUnix\n}\n\nfunc statUnix(fi os.FileInfo, h *Header) error {\n\tsys, ok := fi.Sys().(*syscall.Stat_t)\n\tif !ok {\n\t\treturn nil\n\t}\n\th.Uid = int(sys.Uid)\n\th.Gid = int(sys.Gid)\n\t// TODO(bradfitz): populate username & group.  os/user\n\t// doesn't cache LookupId lookups, and lacks group\n\t// lookup functions.\n\th.AccessTime = statAtime(sys)\n\th.ChangeTime = statCtime(sys)\n\t// TODO(bradfitz): major/minor device numbers?\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/archive/tar/writer.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\npackage tar\n\n// TODO(dsymonds):\n// - catch more errors (no first header, etc.)\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tErrWriteTooLong    = errors.New(\"archive/tar: write too long\")\n\tErrFieldTooLong    = errors.New(\"archive/tar: header field too long\")\n\tErrWriteAfterClose = errors.New(\"archive/tar: write after close\")\n\terrNameTooLong     = errors.New(\"archive/tar: name too long\")\n\terrInvalidHeader   = errors.New(\"archive/tar: header field too long or contains invalid values\")\n)\n\n// A Writer provides sequential writing of a tar archive in POSIX.1 format.\n// A tar archive consists of a sequence of files.\n// Call WriteHeader to begin a new file, and then call Write to supply that file's data,\n// writing at most hdr.Size bytes in total.\ntype Writer struct {\n\tw          io.Writer\n\terr        error\n\tnb         int64 // number of unwritten bytes for current file entry\n\tpad        int64 // amount of padding to write after current file entry\n\tclosed     bool\n\tusedBinary bool            // whether the binary numeric field extension was used\n\tpreferPax  bool            // use pax header instead of binary numeric header\n\thdrBuff    [blockSize]byte // buffer to use in writeHeader when writing a regular header\n\tpaxHdrBuff [blockSize]byte // buffer to use in writeHeader when writing a pax header\n}\n\n// NewWriter creates a new Writer writing to w.\nfunc NewWriter(w io.Writer) *Writer { return &Writer{w: w} }\n\n// Flush finishes writing the current file (optional).\nfunc (tw *Writer) Flush() error {\n\tif tw.nb > 0 {\n\t\ttw.err = fmt.Errorf(\"archive/tar: missed writing %d bytes\", tw.nb)\n\t\treturn tw.err\n\t}\n\n\tn := tw.nb + tw.pad\n\tfor n > 0 && tw.err == nil {\n\t\tnr := n\n\t\tif nr > blockSize {\n\t\t\tnr = blockSize\n\t\t}\n\t\tvar nw int\n\t\tnw, tw.err = tw.w.Write(zeroBlock[0:nr])\n\t\tn -= int64(nw)\n\t}\n\ttw.nb = 0\n\ttw.pad = 0\n\treturn tw.err\n}\n\n// Write s into b, terminating it with a NUL if there is room.\n// If the value is too long for the field and allowPax is true add a paxheader record instead\nfunc (tw *Writer) cString(b []byte, s string, allowPax bool, paxKeyword string, paxHeaders map[string]string) {\n\tneedsPaxHeader := allowPax && len(s) > len(b) || !isASCII(s)\n\tif needsPaxHeader {\n\t\tpaxHeaders[paxKeyword] = s\n\t\treturn\n\t}\n\tif len(s) > len(b) {\n\t\tif tw.err == nil {\n\t\t\ttw.err = ErrFieldTooLong\n\t\t}\n\t\treturn\n\t}\n\tascii := toASCII(s)\n\tcopy(b, ascii)\n\tif len(ascii) < len(b) {\n\t\tb[len(ascii)] = 0\n\t}\n}\n\n// Encode x as an octal ASCII string and write it into b with leading zeros.\nfunc (tw *Writer) octal(b []byte, x int64) {\n\ts := strconv.FormatInt(x, 8)\n\t// leading zeros, but leave room for a NUL.\n\tfor len(s)+1 < len(b) {\n\t\ts = \"0\" + s\n\t}\n\ttw.cString(b, s, false, paxNone, nil)\n}\n\n// Write x into b, either as octal or as binary (GNUtar/star extension).\n// If the value is too long for the field and writingPax is enabled both for the field and the add a paxheader record instead\nfunc (tw *Writer) numeric(b []byte, x int64, allowPax bool, paxKeyword string, paxHeaders map[string]string) {\n\t// Try octal first.\n\ts := strconv.FormatInt(x, 8)\n\tif len(s) < len(b) {\n\t\ttw.octal(b, x)\n\t\treturn\n\t}\n\n\t// If it is too long for octal, and pax is preferred, use a pax header\n\tif allowPax && tw.preferPax {\n\t\ttw.octal(b, 0)\n\t\ts := strconv.FormatInt(x, 10)\n\t\tpaxHeaders[paxKeyword] = s\n\t\treturn\n\t}\n\n\t// Too big: use binary (big-endian).\n\ttw.usedBinary = true\n\tfor i := len(b) - 1; x > 0 && i >= 0; i-- {\n\t\tb[i] = byte(x)\n\t\tx >>= 8\n\t}\n\tb[0] |= 0x80 // highest bit indicates binary format\n}\n\nvar (\n\tminTime = time.Unix(0, 0)\n\t// There is room for 11 octal digits (33 bits) of mtime.\n\tmaxTime = minTime.Add((1<<33 - 1) * time.Second)\n)\n\n// WriteHeader writes hdr and prepares to accept the file's contents.\n// WriteHeader calls Flush if it is not the first header.\n// Calling after a Close will return ErrWriteAfterClose.\nfunc (tw *Writer) WriteHeader(hdr *Header) error {\n\treturn tw.writeHeader(hdr, true)\n}\n\n// WriteHeader writes hdr and prepares to accept the file's contents.\n// WriteHeader calls Flush if it is not the first header.\n// Calling after a Close will return ErrWriteAfterClose.\n// As this method is called internally by writePax header to allow it to\n// suppress writing the pax header.\nfunc (tw *Writer) writeHeader(hdr *Header, allowPax bool) error {\n\tif tw.closed {\n\t\treturn ErrWriteAfterClose\n\t}\n\tif tw.err == nil {\n\t\ttw.Flush()\n\t}\n\tif tw.err != nil {\n\t\treturn tw.err\n\t}\n\n\t// a map to hold pax header records, if any are needed\n\tpaxHeaders := make(map[string]string)\n\n\t// TODO(shanemhansen): we might want to use PAX headers for\n\t// subsecond time resolution, but for now let's just capture\n\t// too long fields or non ascii characters\n\n\tvar header []byte\n\n\t// We need to select which scratch buffer to use carefully,\n\t// since this method is called recursively to write PAX headers.\n\t// If allowPax is true, this is the non-recursive call, and we will use hdrBuff.\n\t// If allowPax is false, we are being called by writePAXHeader, and hdrBuff is\n\t// already being used by the non-recursive call, so we must use paxHdrBuff.\n\theader = tw.hdrBuff[:]\n\tif !allowPax {\n\t\theader = tw.paxHdrBuff[:]\n\t}\n\tcopy(header, zeroBlock)\n\ts := slicer(header)\n\n\t// keep a reference to the filename to allow to overwrite it later if we detect that we can use ustar longnames instead of pax\n\tpathHeaderBytes := s.next(fileNameSize)\n\n\ttw.cString(pathHeaderBytes, hdr.Name, true, paxPath, paxHeaders)\n\n\t// Handle out of range ModTime carefully.\n\tvar modTime int64\n\tif !hdr.ModTime.Before(minTime) && !hdr.ModTime.After(maxTime) {\n\t\tmodTime = hdr.ModTime.Unix()\n\t}\n\n\ttw.octal(s.next(8), hdr.Mode)                                   // 100:108\n\ttw.numeric(s.next(8), int64(hdr.Uid), true, paxUid, paxHeaders) // 108:116\n\ttw.numeric(s.next(8), int64(hdr.Gid), true, paxGid, paxHeaders) // 116:124\n\ttw.numeric(s.next(12), hdr.Size, true, paxSize, paxHeaders)     // 124:136\n\ttw.numeric(s.next(12), modTime, false, paxNone, nil)            // 136:148 --- consider using pax for finer granularity\n\ts.next(8)                                                       // chksum (148:156)\n\ts.next(1)[0] = hdr.Typeflag                                     // 156:157\n\n\ttw.cString(s.next(100), hdr.Linkname, true, paxLinkpath, paxHeaders)\n\n\tcopy(s.next(8), []byte(\"ustar\\x0000\"))                        // 257:265\n\ttw.cString(s.next(32), hdr.Uname, true, paxUname, paxHeaders) // 265:297\n\ttw.cString(s.next(32), hdr.Gname, true, paxGname, paxHeaders) // 297:329\n\ttw.numeric(s.next(8), hdr.Devmajor, false, paxNone, nil)      // 329:337\n\ttw.numeric(s.next(8), hdr.Devminor, false, paxNone, nil)      // 337:345\n\n\t// keep a reference to the prefix to allow to overwrite it later if we detect that we can use ustar longnames instead of pax\n\tprefixHeaderBytes := s.next(155)\n\ttw.cString(prefixHeaderBytes, \"\", false, paxNone, nil) // 345:500  prefix\n\n\t// Use the GNU magic instead of POSIX magic if we used any GNU extensions.\n\tif tw.usedBinary {\n\t\tcopy(header[257:265], []byte(\"ustar  \\x00\"))\n\t}\n\n\t_, paxPathUsed := paxHeaders[paxPath]\n\t// try to use a ustar header when only the name is too long\n\tif !tw.preferPax && len(paxHeaders) == 1 && paxPathUsed {\n\t\tsuffix := hdr.Name\n\t\tprefix := \"\"\n\t\tif len(hdr.Name) > fileNameSize && isASCII(hdr.Name) {\n\t\t\tvar err error\n\t\t\tprefix, suffix, err = tw.splitUSTARLongName(hdr.Name)\n\t\t\tif err == nil {\n\t\t\t\t// ok we can use a ustar long name instead of pax, now correct the fields\n\n\t\t\t\t// remove the path field from the pax header. this will suppress the pax header\n\t\t\t\tdelete(paxHeaders, paxPath)\n\n\t\t\t\t// update the path fields\n\t\t\t\ttw.cString(pathHeaderBytes, suffix, false, paxNone, nil)\n\t\t\t\ttw.cString(prefixHeaderBytes, prefix, false, paxNone, nil)\n\n\t\t\t\t// Use the ustar magic if we used ustar long names.\n\t\t\t\tif len(prefix) > 0 && !tw.usedBinary {\n\t\t\t\t\tcopy(header[257:265], []byte(\"ustar\\x00\"))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// The chksum field is terminated by a NUL and a space.\n\t// This is different from the other octal fields.\n\tchksum, _ := checksum(header)\n\ttw.octal(header[148:155], chksum)\n\theader[155] = ' '\n\n\tif tw.err != nil {\n\t\t// problem with header; probably integer too big for a field.\n\t\treturn tw.err\n\t}\n\n\tif allowPax {\n\t\tfor k, v := range hdr.Xattrs {\n\t\t\tpaxHeaders[paxXattr+k] = v\n\t\t}\n\t}\n\n\tif len(paxHeaders) > 0 {\n\t\tif !allowPax {\n\t\t\treturn errInvalidHeader\n\t\t}\n\t\tif err := tw.writePAXHeader(hdr, paxHeaders); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\ttw.nb = int64(hdr.Size)\n\ttw.pad = (blockSize - (tw.nb % blockSize)) % blockSize\n\n\t_, tw.err = tw.w.Write(header)\n\treturn tw.err\n}\n\n// writeUSTARLongName splits a USTAR long name hdr.Name.\n// name must be < 256 characters. errNameTooLong is returned\n// if hdr.Name can't be split. The splitting heuristic\n// is compatible with gnu tar.\nfunc (tw *Writer) splitUSTARLongName(name string) (prefix, suffix string, err error) {\n\tlength := len(name)\n\tif length > fileNamePrefixSize+1 {\n\t\tlength = fileNamePrefixSize + 1\n\t} else if name[length-1] == '/' {\n\t\tlength--\n\t}\n\ti := strings.LastIndex(name[:length], \"/\")\n\t// nlen contains the resulting length in the name field.\n\t// plen contains the resulting length in the prefix field.\n\tnlen := len(name) - i - 1\n\tplen := i\n\tif i <= 0 || nlen > fileNameSize || nlen == 0 || plen > fileNamePrefixSize {\n\t\terr = errNameTooLong\n\t\treturn\n\t}\n\tprefix, suffix = name[:i], name[i+1:]\n\treturn\n}\n\n// writePaxHeader writes an extended pax header to the\n// archive.\nfunc (tw *Writer) writePAXHeader(hdr *Header, paxHeaders map[string]string) error {\n\t// Prepare extended header\n\text := new(Header)\n\text.Typeflag = TypeXHeader\n\t// Setting ModTime is required for reader parsing to\n\t// succeed, and seems harmless enough.\n\text.ModTime = hdr.ModTime\n\t// The spec asks that we namespace our pseudo files\n\t// with the current pid.\n\tpid := os.Getpid()\n\tdir, file := path.Split(hdr.Name)\n\tfullName := path.Join(dir,\n\t\tfmt.Sprintf(\"PaxHeaders.%d\", pid), file)\n\n\tascii := toASCII(fullName)\n\tif len(ascii) > 100 {\n\t\tascii = ascii[:100]\n\t}\n\text.Name = ascii\n\t// Construct the body\n\tvar buf bytes.Buffer\n\n\tfor k, v := range paxHeaders {\n\t\tfmt.Fprint(&buf, paxHeader(k+\"=\"+v))\n\t}\n\n\text.Size = int64(len(buf.Bytes()))\n\tif err := tw.writeHeader(ext, false); err != nil {\n\t\treturn err\n\t}\n\tif _, err := tw.Write(buf.Bytes()); err != nil {\n\t\treturn err\n\t}\n\tif err := tw.Flush(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// paxHeader formats a single pax record, prefixing it with the appropriate length\nfunc paxHeader(msg string) string {\n\tconst padding = 2 // Extra padding for space and newline\n\tsize := len(msg) + padding\n\tsize += len(strconv.Itoa(size))\n\trecord := fmt.Sprintf(\"%d %s\\n\", size, msg)\n\tif len(record) != size {\n\t\t// Final adjustment if adding size increased\n\t\t// the number of digits in size\n\t\tsize = len(record)\n\t\trecord = fmt.Sprintf(\"%d %s\\n\", size, msg)\n\t}\n\treturn record\n}\n\n// Write writes to the current entry in the tar archive.\n// Write returns the error ErrWriteTooLong if more than\n// hdr.Size bytes are written after WriteHeader.\nfunc (tw *Writer) Write(b []byte) (n int, err error) {\n\tif tw.closed {\n\t\terr = ErrWriteAfterClose\n\t\treturn\n\t}\n\toverwrite := false\n\tif int64(len(b)) > tw.nb {\n\t\tb = b[0:tw.nb]\n\t\toverwrite = true\n\t}\n\tn, err = tw.w.Write(b)\n\ttw.nb -= int64(n)\n\tif err == nil && overwrite {\n\t\terr = ErrWriteTooLong\n\t\treturn\n\t}\n\ttw.err = err\n\treturn\n}\n\n// Close closes the tar archive, flushing any unwritten\n// data to the underlying writer.\nfunc (tw *Writer) Close() error {\n\tif tw.err != nil || tw.closed {\n\t\treturn tw.err\n\t}\n\ttw.Flush()\n\ttw.closed = true\n\tif tw.err != nil {\n\t\treturn tw.err\n\t}\n\n\t// trailer: two zero blocks\n\tfor i := 0; i < 2; i++ {\n\t\t_, tw.err = tw.w.Write(zeroBlock)\n\t\tif tw.err != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn tw.err\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/asm/README.md",
    "content": "asm\n===\n\nThis library for assembly and disassembly of tar archives, facilitated by\n`github.com/vbatts/tar-split/tar/storage`.\n\n\nConcerns\n--------\n\nFor completely safe assembly/disassembly, there will need to be a Content\nAddressable Storage (CAS) directory, that maps to a checksum in the\n`storage.Entity` of `storage.FileType`.\n\nThis is due to the fact that tar archives _can_ allow multiple records for the\nsame path, but the last one effectively wins. Even if the prior records had a\ndifferent payload. \n\nIn this way, when assembling an archive from relative paths, if the archive has\nmultiple entries for the same path, then all payloads read in from a relative\npath would be identical.\n\n\nThoughts\n--------\n\nHave a look-aside directory or storage. This way when a clobbering record is\nencountered from the tar stream, then the payload of the prior/existing file is\nstored to the CAS. This way the clobbering record's file payload can be\nextracted, but we'll have preserved the payload needed to reassemble a precise\ntar archive.\n\nclobbered/path/to/file.[0-N]\n\n*alternatively*\n\nWe could just _not_ support tar streams that have clobbering file paths.\nAppending records to the archive is not incredibly common, and doesn't happen\nby default for most implementations.  Not supporting them wouldn't be a\nsecurity concern either, as if it did occur, we would reassemble an archive\nthat doesn't validate signature/checksum, so it shouldn't be trusted anyway.\n\nOtherwise, this will allow us to defer support for appended files as a FUTURE FEATURE.\n\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/asm/assemble.go",
    "content": "package asm\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"hash\"\n\t\"hash/crc64\"\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/vbatts/tar-split/tar/storage\"\n)\n\n// NewOutputTarStream returns an io.ReadCloser that is an assembled tar archive\n// stream.\n//\n// It takes a storage.FileGetter, for mapping the file payloads that are to be read in,\n// and a storage.Unpacker, which has access to the rawbytes and file order\n// metadata. With the combination of these two items, a precise assembled Tar\n// archive is possible.\nfunc NewOutputTarStream(fg storage.FileGetter, up storage.Unpacker) io.ReadCloser {\n\t// ... Since these are interfaces, this is possible, so let's not have a nil pointer\n\tif fg == nil || up == nil {\n\t\treturn nil\n\t}\n\tpr, pw := io.Pipe()\n\tgo func() {\n\t\terr := WriteOutputTarStream(fg, up, pw)\n\t\tif err != nil {\n\t\t\tpw.CloseWithError(err)\n\t\t} else {\n\t\t\tpw.Close()\n\t\t}\n\t}()\n\treturn pr\n}\n\n// WriteOutputTarStream writes assembled tar archive to a writer.\nfunc WriteOutputTarStream(fg storage.FileGetter, up storage.Unpacker, w io.Writer) error {\n\t// ... Since these are interfaces, this is possible, so let's not have a nil pointer\n\tif fg == nil || up == nil {\n\t\treturn nil\n\t}\n\tvar copyBuffer []byte\n\tvar crcHash hash.Hash\n\tvar crcSum []byte\n\tvar multiWriter io.Writer\n\tfor {\n\t\tentry, err := up.Next()\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t\tswitch entry.Type {\n\t\tcase storage.SegmentType:\n\t\t\tif _, err := w.Write(entry.Payload); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\tcase storage.FileType:\n\t\t\tif entry.Size == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfh, err := fg.Get(entry.GetName())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif crcHash == nil {\n\t\t\t\tcrcHash = crc64.New(storage.CRCTable)\n\t\t\t\tcrcSum = make([]byte, 8)\n\t\t\t\tmultiWriter = io.MultiWriter(w, crcHash)\n\t\t\t\tcopyBuffer = byteBufferPool.Get().([]byte)\n\t\t\t\tdefer byteBufferPool.Put(copyBuffer)\n\t\t\t} else {\n\t\t\t\tcrcHash.Reset()\n\t\t\t}\n\n\t\t\tif _, err := copyWithBuffer(multiWriter, fh, copyBuffer); err != nil {\n\t\t\t\tfh.Close()\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif !bytes.Equal(crcHash.Sum(crcSum[:0]), entry.Payload) {\n\t\t\t\t// I would rather this be a comparable ErrInvalidChecksum or such,\n\t\t\t\t// but since it's coming through the PipeReader, the context of\n\t\t\t\t// _which_ file would be lost...\n\t\t\t\tfh.Close()\n\t\t\t\treturn fmt.Errorf(\"file integrity checksum failed for %q\", entry.GetName())\n\t\t\t}\n\t\t\tfh.Close()\n\t\t}\n\t}\n}\n\nvar byteBufferPool = &sync.Pool{\n\tNew: func() interface{} {\n\t\treturn make([]byte, 32*1024)\n\t},\n}\n\n// copyWithBuffer is taken from stdlib io.Copy implementation\n// https://github.com/golang/go/blob/go1.5.1/src/io/io.go#L367\nfunc copyWithBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err error) {\n\tfor {\n\t\tnr, er := src.Read(buf)\n\t\tif nr > 0 {\n\t\t\tnw, ew := dst.Write(buf[0:nr])\n\t\t\tif nw > 0 {\n\t\t\t\twritten += int64(nw)\n\t\t\t}\n\t\t\tif ew != nil {\n\t\t\t\terr = ew\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif nr != nw {\n\t\t\t\terr = io.ErrShortWrite\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif er == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif er != nil {\n\t\t\terr = er\n\t\t\tbreak\n\t\t}\n\t}\n\treturn written, err\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/asm/disassemble.go",
    "content": "package asm\n\nimport (\n\t\"io\"\n\t\"io/ioutil\"\n\n\t\"github.com/vbatts/tar-split/archive/tar\"\n\t\"github.com/vbatts/tar-split/tar/storage\"\n)\n\n// NewInputTarStream wraps the Reader stream of a tar archive and provides a\n// Reader stream of the same.\n//\n// In the middle it will pack the segments and file metadata to storage.Packer\n// `p`.\n//\n// The the storage.FilePutter is where payload of files in the stream are\n// stashed. If this stashing is not needed, you can provide a nil\n// storage.FilePutter. Since the checksumming is still needed, then a default\n// of NewDiscardFilePutter will be used internally\nfunc NewInputTarStream(r io.Reader, p storage.Packer, fp storage.FilePutter) (io.Reader, error) {\n\t// What to do here... folks will want their own access to the Reader that is\n\t// their tar archive stream, but we'll need that same stream to use our\n\t// forked 'archive/tar'.\n\t// Perhaps do an io.TeeReader that hands back an io.Reader for them to read\n\t// from, and we'll MITM the stream to store metadata.\n\t// We'll need a storage.FilePutter too ...\n\n\t// Another concern, whether to do any storage.FilePutter operations, such that we\n\t// don't extract any amount of the archive. But then again, we're not making\n\t// files/directories, hardlinks, etc. Just writing the io to the storage.FilePutter.\n\t// Perhaps we have a DiscardFilePutter that is a bit bucket.\n\n\t// we'll return the pipe reader, since TeeReader does not buffer and will\n\t// only read what the outputRdr Read's. Since Tar archives have padding on\n\t// the end, we want to be the one reading the padding, even if the user's\n\t// `archive/tar` doesn't care.\n\tpR, pW := io.Pipe()\n\toutputRdr := io.TeeReader(r, pW)\n\n\t// we need a putter that will generate the crc64 sums of file payloads\n\tif fp == nil {\n\t\tfp = storage.NewDiscardFilePutter()\n\t}\n\n\tgo func() {\n\t\ttr := tar.NewReader(outputRdr)\n\t\ttr.RawAccounting = true\n\t\tfor {\n\t\t\thdr, err := tr.Next()\n\t\t\tif err != nil {\n\t\t\t\tif err != io.EOF {\n\t\t\t\t\tpW.CloseWithError(err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// even when an EOF is reached, there is often 1024 null bytes on\n\t\t\t\t// the end of an archive. Collect them too.\n\t\t\t\tif b := tr.RawBytes(); len(b) > 0 {\n\t\t\t\t\t_, err := p.AddEntry(storage.Entry{\n\t\t\t\t\t\tType:    storage.SegmentType,\n\t\t\t\t\t\tPayload: b,\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tpW.CloseWithError(err)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak // not return. We need the end of the reader.\n\t\t\t}\n\t\t\tif hdr == nil {\n\t\t\t\tbreak // not return. We need the end of the reader.\n\t\t\t}\n\n\t\t\tif b := tr.RawBytes(); len(b) > 0 {\n\t\t\t\t_, err := p.AddEntry(storage.Entry{\n\t\t\t\t\tType:    storage.SegmentType,\n\t\t\t\t\tPayload: b,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tpW.CloseWithError(err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar csum []byte\n\t\t\tif hdr.Size > 0 {\n\t\t\t\tvar err error\n\t\t\t\t_, csum, err = fp.Put(hdr.Name, tr)\n\t\t\t\tif err != nil {\n\t\t\t\t\tpW.CloseWithError(err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tentry := storage.Entry{\n\t\t\t\tType:    storage.FileType,\n\t\t\t\tSize:    hdr.Size,\n\t\t\t\tPayload: csum,\n\t\t\t}\n\t\t\t// For proper marshalling of non-utf8 characters\n\t\t\tentry.SetName(hdr.Name)\n\n\t\t\t// File entries added, regardless of size\n\t\t\t_, err = p.AddEntry(entry)\n\t\t\tif err != nil {\n\t\t\t\tpW.CloseWithError(err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif b := tr.RawBytes(); len(b) > 0 {\n\t\t\t\t_, err = p.AddEntry(storage.Entry{\n\t\t\t\t\tType:    storage.SegmentType,\n\t\t\t\t\tPayload: b,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tpW.CloseWithError(err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// it is allowable, and not uncommon that there is further padding on the\n\t\t// end of an archive, apart from the expected 1024 null bytes.\n\t\tremainder, err := ioutil.ReadAll(outputRdr)\n\t\tif err != nil && err != io.EOF {\n\t\t\tpW.CloseWithError(err)\n\t\t\treturn\n\t\t}\n\t\t_, err = p.AddEntry(storage.Entry{\n\t\t\tType:    storage.SegmentType,\n\t\t\tPayload: remainder,\n\t\t})\n\t\tif err != nil {\n\t\t\tpW.CloseWithError(err)\n\t\t\treturn\n\t\t}\n\t\tpW.Close()\n\t}()\n\n\treturn pR, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/asm/doc.go",
    "content": "/*\nPackage asm provides the API for streaming assembly and disassembly of tar\narchives.\n\nUsing the `github.com/vbatts/tar-split/tar/storage` for Packing/Unpacking the\nmetadata for a stream, as well as an implementation of Getting/Putting the file\nentries' payload.\n*/\npackage asm\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/storage/doc.go",
    "content": "/*\nPackage storage is for metadata of a tar archive.\n\nPacking and unpacking the Entries of the stream. The types of streams are\neither segments of raw bytes (for the raw headers and various padding) and for\nan entry marking a file payload.\n\nThe raw bytes are stored precisely in the packed (marshalled) Entry, whereas\nthe file payload marker include the name of the file, size, and crc64 checksum\n(for basic file integrity).\n*/\npackage storage\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/storage/entry.go",
    "content": "package storage\n\nimport \"unicode/utf8\"\n\n// Entries is for sorting by Position\ntype Entries []Entry\n\nfunc (e Entries) Len() int           { return len(e) }\nfunc (e Entries) Swap(i, j int)      { e[i], e[j] = e[j], e[i] }\nfunc (e Entries) Less(i, j int) bool { return e[i].Position < e[j].Position }\n\n// Type of Entry\ntype Type int\n\nconst (\n\t// FileType represents a file payload from the tar stream.\n\t//\n\t// This will be used to map to relative paths on disk. Only Size > 0 will get\n\t// read into a resulting output stream (due to hardlinks).\n\tFileType Type = 1 + iota\n\t// SegmentType represents a raw bytes segment from the archive stream. These raw\n\t// byte segments consist of the raw headers and various padding.\n\t//\n\t// Its payload is to be marshalled base64 encoded.\n\tSegmentType\n)\n\n// Entry is the structure for packing and unpacking the information read from\n// the Tar archive.\n//\n// FileType Payload checksum is using `hash/crc64` for basic file integrity,\n// _not_ for cryptography.\n// From http://www.backplane.com/matt/crc64.html, CRC32 has almost 40,000\n// collisions in a sample of 18.2 million, CRC64 had none.\ntype Entry struct {\n\tType     Type   `json:\"type\"`\n\tName     string `json:\"name,omitempty\"`\n\tNameRaw  []byte `json:\"name_raw,omitempty\"`\n\tSize     int64  `json:\"size,omitempty\"`\n\tPayload  []byte `json:\"payload\"` // SegmentType stores payload here; FileType stores crc64 checksum here;\n\tPosition int    `json:\"position\"`\n}\n\n// SetName will check name for valid UTF-8 string, and set the appropriate\n// field. See https://github.com/vbatts/tar-split/issues/17\nfunc (e *Entry) SetName(name string) {\n\tif utf8.ValidString(name) {\n\t\te.Name = name\n\t} else {\n\t\te.NameRaw = []byte(name)\n\t}\n}\n\n// SetNameBytes will check name for valid UTF-8 string, and set the appropriate\n// field\nfunc (e *Entry) SetNameBytes(name []byte) {\n\tif utf8.Valid(name) {\n\t\te.Name = string(name)\n\t} else {\n\t\te.NameRaw = name\n\t}\n}\n\n// GetName returns the string for the entry's name, regardless of the field stored in\nfunc (e *Entry) GetName() string {\n\tif len(e.NameRaw) > 0 {\n\t\treturn string(e.NameRaw)\n\t}\n\treturn e.Name\n}\n\n// GetNameBytes returns the bytes for the entry's name, regardless of the field stored in\nfunc (e *Entry) GetNameBytes() []byte {\n\tif len(e.NameRaw) > 0 {\n\t\treturn e.NameRaw\n\t}\n\treturn []byte(e.Name)\n}\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/storage/getter.go",
    "content": "package storage\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"hash/crc64\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\n// FileGetter is the interface for getting a stream of a file payload,\n// addressed by name/filename. Presumably, the names will be scoped to relative\n// file paths.\ntype FileGetter interface {\n\t// Get returns a stream for the provided file path\n\tGet(filename string) (output io.ReadCloser, err error)\n}\n\n// FilePutter is the interface for storing a stream of a file payload,\n// addressed by name/filename.\ntype FilePutter interface {\n\t// Put returns the size of the stream received, and the crc64 checksum for\n\t// the provided stream\n\tPut(filename string, input io.Reader) (size int64, checksum []byte, err error)\n}\n\n// FileGetPutter is the interface that groups both Getting and Putting file\n// payloads.\ntype FileGetPutter interface {\n\tFileGetter\n\tFilePutter\n}\n\n// NewPathFileGetter returns a FileGetter that is for files relative to path\n// relpath.\nfunc NewPathFileGetter(relpath string) FileGetter {\n\treturn &pathFileGetter{root: relpath}\n}\n\ntype pathFileGetter struct {\n\troot string\n}\n\nfunc (pfg pathFileGetter) Get(filename string) (io.ReadCloser, error) {\n\treturn os.Open(filepath.Join(pfg.root, filename))\n}\n\ntype bufferFileGetPutter struct {\n\tfiles map[string][]byte\n}\n\nfunc (bfgp bufferFileGetPutter) Get(name string) (io.ReadCloser, error) {\n\tif _, ok := bfgp.files[name]; !ok {\n\t\treturn nil, errors.New(\"no such file\")\n\t}\n\tb := bytes.NewBuffer(bfgp.files[name])\n\treturn &readCloserWrapper{b}, nil\n}\n\nfunc (bfgp *bufferFileGetPutter) Put(name string, r io.Reader) (int64, []byte, error) {\n\tcrc := crc64.New(CRCTable)\n\tbuf := bytes.NewBuffer(nil)\n\tcw := io.MultiWriter(crc, buf)\n\ti, err := io.Copy(cw, r)\n\tif err != nil {\n\t\treturn 0, nil, err\n\t}\n\tbfgp.files[name] = buf.Bytes()\n\treturn i, crc.Sum(nil), nil\n}\n\ntype readCloserWrapper struct {\n\tio.Reader\n}\n\nfunc (w *readCloserWrapper) Close() error { return nil }\n\n// NewBufferFileGetPutter is a simple in-memory FileGetPutter\n//\n// Implication is this is memory intensive...\n// Probably best for testing or light weight cases.\nfunc NewBufferFileGetPutter() FileGetPutter {\n\treturn &bufferFileGetPutter{\n\t\tfiles: map[string][]byte{},\n\t}\n}\n\n// NewDiscardFilePutter is a bit bucket FilePutter\nfunc NewDiscardFilePutter() FilePutter {\n\treturn &bitBucketFilePutter{}\n}\n\ntype bitBucketFilePutter struct {\n}\n\nfunc (bbfp *bitBucketFilePutter) Put(name string, r io.Reader) (int64, []byte, error) {\n\tc := crc64.New(CRCTable)\n\ti, err := io.Copy(c, r)\n\treturn i, c.Sum(nil), err\n}\n\n// CRCTable is the default table used for crc64 sum calculations\nvar CRCTable = crc64.MakeTable(crc64.ISO)\n"
  },
  {
    "path": "vendor/github.com/vbatts/tar-split/tar/storage/packer.go",
    "content": "package storage\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"unicode/utf8\"\n)\n\n// ErrDuplicatePath occurs when a tar archive has more than one entry for the\n// same file path\nvar ErrDuplicatePath = errors.New(\"duplicates of file paths not supported\")\n\n// Packer describes the methods to pack Entries to a storage destination\ntype Packer interface {\n\t// AddEntry packs the Entry and returns its position\n\tAddEntry(e Entry) (int, error)\n}\n\n// Unpacker describes the methods to read Entries from a source\ntype Unpacker interface {\n\t// Next returns the next Entry being unpacked, or error, until io.EOF\n\tNext() (*Entry, error)\n}\n\n/* TODO(vbatts) figure out a good model for this\ntype PackUnpacker interface {\n\tPacker\n\tUnpacker\n}\n*/\n\ntype jsonUnpacker struct {\n\tseen seenNames\n\tdec  *json.Decoder\n}\n\nfunc (jup *jsonUnpacker) Next() (*Entry, error) {\n\tvar e Entry\n\terr := jup.dec.Decode(&e)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// check for dup name\n\tif e.Type == FileType {\n\t\tcName := filepath.Clean(e.GetName())\n\t\tif _, ok := jup.seen[cName]; ok {\n\t\t\treturn nil, ErrDuplicatePath\n\t\t}\n\t\tjup.seen[cName] = struct{}{}\n\t}\n\n\treturn &e, err\n}\n\n// NewJSONUnpacker provides an Unpacker that reads Entries (SegmentType and\n// FileType) as a json document.\n//\n// Each Entry read are expected to be delimited by new line.\nfunc NewJSONUnpacker(r io.Reader) Unpacker {\n\treturn &jsonUnpacker{\n\t\tdec:  json.NewDecoder(r),\n\t\tseen: seenNames{},\n\t}\n}\n\ntype jsonPacker struct {\n\tw    io.Writer\n\te    *json.Encoder\n\tpos  int\n\tseen seenNames\n}\n\ntype seenNames map[string]struct{}\n\nfunc (jp *jsonPacker) AddEntry(e Entry) (int, error) {\n\t// if Name is not valid utf8, switch it to raw first.\n\tif e.Name != \"\" {\n\t\tif !utf8.ValidString(e.Name) {\n\t\t\te.NameRaw = []byte(e.Name)\n\t\t\te.Name = \"\"\n\t\t}\n\t}\n\n\t// check early for dup name\n\tif e.Type == FileType {\n\t\tcName := filepath.Clean(e.GetName())\n\t\tif _, ok := jp.seen[cName]; ok {\n\t\t\treturn -1, ErrDuplicatePath\n\t\t}\n\t\tjp.seen[cName] = struct{}{}\n\t}\n\n\te.Position = jp.pos\n\terr := jp.e.Encode(e)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\t// made it this far, increment now\n\tjp.pos++\n\treturn e.Position, nil\n}\n\n// NewJSONPacker provides a Packer that writes each Entry (SegmentType and\n// FileType) as a json document.\n//\n// The Entries are delimited by new line.\nfunc NewJSONPacker(w io.Writer) Packer {\n\treturn &jsonPacker{\n\t\tw:    w,\n\t\te:    json.NewEncoder(w),\n\t\tseen: seenNames{},\n\t}\n}\n\n/*\nTODO(vbatts) perhaps have a more compact packer/unpacker, maybe using msgapck\n(https://github.com/ugorji/go)\n\n\nEven though, since our jsonUnpacker and jsonPacker just take\nio.Reader/io.Writer, then we can get away with passing them a\ngzip.Reader/gzip.Writer\n*/\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/.travis.yml",
    "content": "language: go\nbefore_script:\n  # make sure we keep path in tact when we sudo\n  - sudo sed -i -e 's/^Defaults\\tsecure_path.*$//' /etc/sudoers\n  # modprobe ip_gre or else the first gre device can't be deleted\n  - sudo modprobe ip_gre\n  # modprobe nf_conntrack for the conntrack testing\n  - sudo modprobe nf_conntrack\n  - sudo modprobe nf_conntrack_netlink\n  - sudo modprobe nf_conntrack_ipv4\n  - sudo modprobe nf_conntrack_ipv6\ninstall:\n  - go get github.com/vishvananda/netns\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/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   Copyright 2014 Vishvananda Ishaya.\n   Copyright 2014 Docker, Inc.\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/vishvananda/netlink/Makefile",
    "content": "DIRS := \\\n\t. \\\n\tnl\n\nDEPS = \\\n\tgithub.com/vishvananda/netns\n\nuniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))\ntestdirs = $(call uniq,$(foreach d,$(1),$(dir $(wildcard $(d)/*_test.go))))\ngoroot = $(addprefix ../../../,$(1))\nunroot = $(subst ../../../,,$(1))\nfmt = $(addprefix fmt-,$(1))\n\nall: test\n\n$(call goroot,$(DEPS)):\n\tgo get $(call unroot,$@)\n\n.PHONY: $(call testdirs,$(DIRS))\n$(call testdirs,$(DIRS)):\n\tsudo -E go test -test.parallel 4 -timeout 60s -v github.com/vishvananda/netlink/$@\n\n$(call fmt,$(call testdirs,$(DIRS))):\n\t! gofmt -l $(subst fmt-,,$@)/*.go | grep -q .\n\n.PHONY: fmt\nfmt: $(call fmt,$(call testdirs,$(DIRS)))\n\ntest: fmt $(call goroot,$(DEPS)) $(call testdirs,$(DIRS))\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/README.md",
    "content": "# netlink - netlink library for go #\n\n[![Build Status](https://travis-ci.org/vishvananda/netlink.png?branch=master)](https://travis-ci.org/vishvananda/netlink) [![GoDoc](https://godoc.org/github.com/vishvananda/netlink?status.svg)](https://godoc.org/github.com/vishvananda/netlink)\n\nThe netlink package provides a simple netlink library for go. Netlink\nis the interface a user-space program in linux uses to communicate with\nthe kernel. It can be used to add and remove interfaces, set ip addresses\nand routes, and configure ipsec. Netlink communication requires elevated\nprivileges, so in most cases this code needs to be run as root. Since\nlow-level netlink messages are inscrutable at best, the library attempts\nto provide an api that is loosely modeled on the CLI provided by iproute2.\nActions like `ip link add` will be accomplished via a similarly named\nfunction like AddLink(). This library began its life as a fork of the\nnetlink functionality in\n[docker/libcontainer](https://github.com/docker/libcontainer) but was\nheavily rewritten to improve testability, performance, and to add new\nfunctionality like ipsec xfrm handling.\n\n## Local Build and Test ##\n\nYou can use go get command:\n\n    go get github.com/vishvananda/netlink\n\nTesting dependencies:\n\n    go get github.com/vishvananda/netns\n\nTesting (requires root):\n\n    sudo -E go test github.com/vishvananda/netlink\n\n## Examples ##\n\nAdd a new bridge and add eth1 into it:\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"github.com/vishvananda/netlink\"\n)\n\nfunc main() {\n    la := netlink.NewLinkAttrs()\n    la.Name = \"foo\"\n    mybridge := &netlink.Bridge{LinkAttrs: la}\n    err := netlink.LinkAdd(mybridge)\n    if err != nil  {\n        fmt.Printf(\"could not add %s: %v\\n\", la.Name, err)\n    }\n    eth1, _ := netlink.LinkByName(\"eth1\")\n    netlink.LinkSetMaster(eth1, mybridge)\n}\n\n```\nNote `NewLinkAttrs` constructor, it sets default values in structure. For now\nit sets only `TxQLen` to `-1`, so kernel will set default by itself. If you're\nusing simple initialization(`LinkAttrs{Name: \"foo\"}`) `TxQLen` will be set to\n`0` unless you specify it like `LinkAttrs{Name: \"foo\", TxQLen: 1000}`.\n\nAdd a new ip address to loopback:\n\n```go\npackage main\n\nimport (\n    \"github.com/vishvananda/netlink\"\n)\n\nfunc main() {\n    lo, _ := netlink.LinkByName(\"lo\")\n    addr, _ := netlink.ParseAddr(\"169.254.169.254/32\")\n    netlink.AddrAdd(lo, addr)\n}\n\n```\n\n## Future Work ##\n\nMany pieces of netlink are not yet fully supported in the high-level\ninterface. Aspects of virtually all of the high-level objects don't exist.\nMany of the underlying primitives are there, so its a matter of putting\nthe right fields into the high-level objects and making sure that they\nare serialized and deserialized correctly in the Add and List methods.\n\nThere are also a few pieces of low level netlink functionality that still\nneed to be implemented. Routing rules are not in place and some of the\nmore advanced link types. Hopefully there is decent structure and testing\nin place to make these fairly straightforward to add.\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/addr.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n)\n\n// Addr represents an IP address from netlink. Netlink ip addresses\n// include a mask, so it stores the address as a net.IPNet.\ntype Addr struct {\n\t*net.IPNet\n\tLabel       string\n\tFlags       int\n\tScope       int\n\tPeer        *net.IPNet\n\tBroadcast   net.IP\n\tPreferedLft int\n\tValidLft    int\n}\n\n// String returns $ip/$netmask $label\nfunc (a Addr) String() string {\n\treturn strings.TrimSpace(fmt.Sprintf(\"%s %s\", a.IPNet, a.Label))\n}\n\n// ParseAddr parses the string representation of an address in the\n// form $ip/$netmask $label. The label portion is optional\nfunc ParseAddr(s string) (*Addr, error) {\n\tlabel := \"\"\n\tparts := strings.Split(s, \" \")\n\tif len(parts) > 1 {\n\t\ts = parts[0]\n\t\tlabel = parts[1]\n\t}\n\tm, err := ParseIPNet(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Addr{IPNet: m, Label: label}, nil\n}\n\n// Equal returns true if both Addrs have the same net.IPNet value.\nfunc (a Addr) Equal(x Addr) bool {\n\tsizea, _ := a.Mask.Size()\n\tsizeb, _ := x.Mask.Size()\n\t// ignore label for comparison\n\treturn a.IP.Equal(x.IP) && sizea == sizeb\n}\n\nfunc (a Addr) PeerEqual(x Addr) bool {\n\tsizea, _ := a.Peer.Mask.Size()\n\tsizeb, _ := x.Peer.Mask.Size()\n\t// ignore label for comparison\n\treturn a.Peer.IP.Equal(x.Peer.IP) && sizea == sizeb\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/addr_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n\t\"github.com/vishvananda/netns\"\n)\n\n// IFA_FLAGS is a u32 attribute.\nconst IFA_FLAGS = 0x8\n\n// AddrAdd will add an IP address to a link device.\n// Equivalent to: `ip addr add $addr dev $link`\nfunc AddrAdd(link Link, addr *Addr) error {\n\treturn pkgHandle.AddrAdd(link, addr)\n}\n\n// AddrAdd will add an IP address to a link device.\n// Equivalent to: `ip addr add $addr dev $link`\nfunc (h *Handle) AddrAdd(link Link, addr *Addr) error {\n\treq := h.newNetlinkRequest(syscall.RTM_NEWADDR, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\treturn h.addrHandle(link, addr, req)\n}\n\n// AddrReplace will replace (or, if not present, add) an IP address on a link device.\n// Equivalent to: `ip addr replace $addr dev $link`\nfunc AddrReplace(link Link, addr *Addr) error {\n\treturn pkgHandle.AddrReplace(link, addr)\n}\n\n// AddrReplace will replace (or, if not present, add) an IP address on a link device.\n// Equivalent to: `ip addr replace $addr dev $link`\nfunc (h *Handle) AddrReplace(link Link, addr *Addr) error {\n\treq := h.newNetlinkRequest(syscall.RTM_NEWADDR, syscall.NLM_F_CREATE|syscall.NLM_F_REPLACE|syscall.NLM_F_ACK)\n\treturn h.addrHandle(link, addr, req)\n}\n\n// AddrDel will delete an IP address from a link device.\n// Equivalent to: `ip addr del $addr dev $link`\nfunc AddrDel(link Link, addr *Addr) error {\n\treturn pkgHandle.AddrDel(link, addr)\n}\n\n// AddrDel will delete an IP address from a link device.\n// Equivalent to: `ip addr del $addr dev $link`\nfunc (h *Handle) AddrDel(link Link, addr *Addr) error {\n\treq := h.newNetlinkRequest(syscall.RTM_DELADDR, syscall.NLM_F_ACK)\n\treturn h.addrHandle(link, addr, req)\n}\n\nfunc (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error {\n\tbase := link.Attrs()\n\tif addr.Label != \"\" && !strings.HasPrefix(addr.Label, base.Name) {\n\t\treturn fmt.Errorf(\"label must begin with interface name\")\n\t}\n\th.ensureIndex(base)\n\n\tfamily := nl.GetIPFamily(addr.IP)\n\n\tmsg := nl.NewIfAddrmsg(family)\n\tmsg.Index = uint32(base.Index)\n\tmsg.Scope = uint8(addr.Scope)\n\tprefixlen, masklen := addr.Mask.Size()\n\tmsg.Prefixlen = uint8(prefixlen)\n\treq.AddData(msg)\n\n\tvar localAddrData []byte\n\tif family == FAMILY_V4 {\n\t\tlocalAddrData = addr.IP.To4()\n\t} else {\n\t\tlocalAddrData = addr.IP.To16()\n\t}\n\n\tlocalData := nl.NewRtAttr(syscall.IFA_LOCAL, localAddrData)\n\treq.AddData(localData)\n\tvar peerAddrData []byte\n\tif addr.Peer != nil {\n\t\tif family == FAMILY_V4 {\n\t\t\tpeerAddrData = addr.Peer.IP.To4()\n\t\t} else {\n\t\t\tpeerAddrData = addr.Peer.IP.To16()\n\t\t}\n\t} else {\n\t\tpeerAddrData = localAddrData\n\t}\n\n\taddressData := nl.NewRtAttr(syscall.IFA_ADDRESS, peerAddrData)\n\treq.AddData(addressData)\n\n\tif addr.Flags != 0 {\n\t\tif addr.Flags <= 0xff {\n\t\t\tmsg.IfAddrmsg.Flags = uint8(addr.Flags)\n\t\t} else {\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, uint32(addr.Flags))\n\t\t\tflagsData := nl.NewRtAttr(IFA_FLAGS, b)\n\t\t\treq.AddData(flagsData)\n\t\t}\n\t}\n\n\tif addr.Broadcast == nil && prefixlen < 31 {\n\t\tcalcBroadcast := make(net.IP, masklen/8)\n\t\tfor i := range localAddrData {\n\t\t\tcalcBroadcast[i] = localAddrData[i] | ^addr.Mask[i]\n\t\t}\n\t\taddr.Broadcast = calcBroadcast\n\t}\n\n\tif addr.Broadcast != nil {\n\t\treq.AddData(nl.NewRtAttr(syscall.IFA_BROADCAST, addr.Broadcast))\n\t}\n\n\tif addr.Label != \"\" {\n\t\tlabelData := nl.NewRtAttr(syscall.IFA_LABEL, nl.ZeroTerminated(addr.Label))\n\t\treq.AddData(labelData)\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// AddrList gets a list of IP addresses in the system.\n// Equivalent to: `ip addr show`.\n// The list can be filtered by link and ip family.\nfunc AddrList(link Link, family int) ([]Addr, error) {\n\treturn pkgHandle.AddrList(link, family)\n}\n\n// AddrList gets a list of IP addresses in the system.\n// Equivalent to: `ip addr show`.\n// The list can be filtered by link and ip family.\nfunc (h *Handle) AddrList(link Link, family int) ([]Addr, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETADDR, syscall.NLM_F_DUMP)\n\tmsg := nl.NewIfInfomsg(family)\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWADDR)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tindexFilter := 0\n\tif link != nil {\n\t\tbase := link.Attrs()\n\t\th.ensureIndex(base)\n\t\tindexFilter = base.Index\n\t}\n\n\tvar res []Addr\n\tfor _, m := range msgs {\n\t\taddr, msgFamily, ifindex, err := parseAddr(m)\n\t\tif err != nil {\n\t\t\treturn res, err\n\t\t}\n\n\t\tif link != nil && ifindex != indexFilter {\n\t\t\t// Ignore messages from other interfaces\n\t\t\tcontinue\n\t\t}\n\n\t\tif family != FAMILY_ALL && msgFamily != family {\n\t\t\tcontinue\n\t\t}\n\n\t\tres = append(res, addr)\n\t}\n\n\treturn res, nil\n}\n\nfunc parseAddr(m []byte) (addr Addr, family, index int, err error) {\n\tmsg := nl.DeserializeIfAddrmsg(m)\n\n\tfamily = -1\n\tindex = -1\n\n\tattrs, err1 := nl.ParseRouteAttr(m[msg.Len():])\n\tif err1 != nil {\n\t\terr = err1\n\t\treturn\n\t}\n\n\tfamily = int(msg.Family)\n\tindex = int(msg.Index)\n\n\tvar local, dst *net.IPNet\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase syscall.IFA_ADDRESS:\n\t\t\tdst = &net.IPNet{\n\t\t\t\tIP:   attr.Value,\n\t\t\t\tMask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),\n\t\t\t}\n\t\t\taddr.Peer = dst\n\t\tcase syscall.IFA_LOCAL:\n\t\t\tlocal = &net.IPNet{\n\t\t\t\tIP:   attr.Value,\n\t\t\t\tMask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),\n\t\t\t}\n\t\t\taddr.IPNet = local\n\t\tcase syscall.IFA_BROADCAST:\n\t\t\taddr.Broadcast = attr.Value\n\t\tcase syscall.IFA_LABEL:\n\t\t\taddr.Label = string(attr.Value[:len(attr.Value)-1])\n\t\tcase IFA_FLAGS:\n\t\t\taddr.Flags = int(native.Uint32(attr.Value[0:4]))\n\t\tcase nl.IFA_CACHEINFO:\n\t\t\tci := nl.DeserializeIfaCacheInfo(attr.Value)\n\t\t\taddr.PreferedLft = int(ci.IfaPrefered)\n\t\t\taddr.ValidLft = int(ci.IfaValid)\n\t\t}\n\t}\n\n\t// IFA_LOCAL should be there but if not, fall back to IFA_ADDRESS\n\tif local != nil {\n\t\taddr.IPNet = local\n\t} else {\n\t\taddr.IPNet = dst\n\t}\n\taddr.Scope = int(msg.Scope)\n\n\treturn\n}\n\ntype AddrUpdate struct {\n\tLinkAddress net.IPNet\n\tLinkIndex   int\n\tFlags       int\n\tScope       int\n\tPreferedLft int\n\tValidLft    int\n\tNewAddr     bool // true=added false=deleted\n}\n\n// AddrSubscribe takes a chan down which notifications will be sent\n// when addresses change.  Close the 'done' chan to stop subscription.\nfunc AddrSubscribe(ch chan<- AddrUpdate, done <-chan struct{}) error {\n\treturn addrSubscribe(netns.None(), netns.None(), ch, done)\n}\n\n// AddrSubscribeAt works like AddrSubscribe plus it allows the caller\n// to choose the network namespace in which to subscribe (ns).\nfunc AddrSubscribeAt(ns netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}) error {\n\treturn addrSubscribe(ns, netns.None(), ch, done)\n}\n\nfunc addrSubscribe(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}) error {\n\ts, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_IPV4_IFADDR, syscall.RTNLGRP_IPV6_IFADDR)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif done != nil {\n\t\tgo func() {\n\t\t\t<-done\n\t\t\ts.Close()\n\t\t}()\n\t}\n\tgo func() {\n\t\tdefer close(ch)\n\t\tfor {\n\t\t\tmsgs, err := s.Receive()\n\t\t\tif err != nil {\n\t\t\t\tlog.Printf(\"netlink.AddrSubscribe: Receive() error: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor _, m := range msgs {\n\t\t\t\tmsgType := m.Header.Type\n\t\t\t\tif msgType != syscall.RTM_NEWADDR && msgType != syscall.RTM_DELADDR {\n\t\t\t\t\tlog.Printf(\"netlink.AddrSubscribe: bad message type: %d\", msgType)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\taddr, _, ifindex, err := parseAddr(m.Data)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Printf(\"netlink.AddrSubscribe: could not parse address: %v\", err)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tch <- AddrUpdate{LinkAddress: *addr.IPNet,\n\t\t\t\t\tLinkIndex:   ifindex,\n\t\t\t\t\tNewAddr:     msgType == syscall.RTM_NEWADDR,\n\t\t\t\t\tFlags:       addr.Flags,\n\t\t\t\t\tScope:       addr.Scope,\n\t\t\t\t\tPreferedLft: addr.PreferedLft,\n\t\t\t\t\tValidLft:    addr.ValidLft}\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/bpf_linux.go",
    "content": "package netlink\n\n/*\n#include <asm/types.h>\n#include <asm/unistd.h>\n#include <errno.h>\n#include <stdio.h>\n#include <stdint.h>\n#include <unistd.h>\n\nstatic int load_simple_bpf(int prog_type, int ret) {\n#ifdef __NR_bpf\n\t// { return ret; }\n\t__u64 __attribute__((aligned(8))) insns[] = {\n\t\t0x00000000000000b7ull | ((__u64)ret<<32),\n\t\t0x0000000000000095ull,\n\t};\n\t__u8 __attribute__((aligned(8))) license[] = \"ASL2\";\n\t// Copied from a header file since libc is notoriously slow to update.\n\t// The call will succeed or fail and that will be our indication on\n\t// whether or not it is supported.\n\tstruct {\n\t\t__u32 prog_type;\n\t\t__u32 insn_cnt;\n\t\t__u64 insns;\n\t\t__u64 license;\n\t\t__u32 log_level;\n\t\t__u32 log_size;\n\t\t__u64 log_buf;\n\t\t__u32 kern_version;\n\t} __attribute__((aligned(8))) attr = {\n\t\t.prog_type = prog_type,\n\t\t.insn_cnt = 2,\n\t\t.insns = (uintptr_t)&insns,\n\t\t.license = (uintptr_t)&license,\n\t};\n\treturn syscall(__NR_bpf, 5, &attr, sizeof(attr));\n#else\n\terrno = EINVAL;\n\treturn -1;\n#endif\n}\n*/\nimport \"C\"\n\ntype BpfProgType C.int\n\nconst (\n\tBPF_PROG_TYPE_UNSPEC BpfProgType = iota\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)\n\n// loadSimpleBpf loads a trivial bpf program for testing purposes\nfunc loadSimpleBpf(progType BpfProgType, ret int) (int, error) {\n\tfd, err := C.load_simple_bpf(C.int(progType), C.int(ret))\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/bridge_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// BridgeVlanList gets a map of device id to bridge vlan infos.\n// Equivalent to: `bridge vlan show`\nfunc BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {\n\treturn pkgHandle.BridgeVlanList()\n}\n\n// BridgeVlanList gets a map of device id to bridge vlan infos.\n// Equivalent to: `bridge vlan show`\nfunc (h *Handle) BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)\n\tmsg := nl.NewIfInfomsg(syscall.AF_BRIDGE)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.IFLA_EXT_MASK, nl.Uint32Attr(uint32(nl.RTEXT_FILTER_BRVLAN))))\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWLINK)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tret := make(map[int32][]*nl.BridgeVlanInfo)\n\tfor _, m := range msgs {\n\t\tmsg := nl.DeserializeIfInfomsg(m)\n\n\t\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, attr := range attrs {\n\t\t\tswitch attr.Attr.Type {\n\t\t\tcase nl.IFLA_AF_SPEC:\n\t\t\t\t//nested attr\n\t\t\t\tnestAttrs, err := nl.ParseRouteAttr(attr.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"failed to parse nested attr %v\", err)\n\t\t\t\t}\n\t\t\t\tfor _, nestAttr := range nestAttrs {\n\t\t\t\t\tswitch nestAttr.Attr.Type {\n\t\t\t\t\tcase nl.IFLA_BRIDGE_VLAN_INFO:\n\t\t\t\t\t\tvlanInfo := nl.DeserializeBridgeVlanInfo(nestAttr.Value)\n\t\t\t\t\t\tret[msg.Index] = append(ret[msg.Index], vlanInfo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn ret, nil\n}\n\n// BridgeVlanAdd adds a new vlan filter entry\n// Equivalent to: `bridge vlan add dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`\nfunc BridgeVlanAdd(link Link, vid uint16, pvid, untagged, self, master bool) error {\n\treturn pkgHandle.BridgeVlanAdd(link, vid, pvid, untagged, self, master)\n}\n\n// BridgeVlanAdd adds a new vlan filter entry\n// Equivalent to: `bridge vlan add dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`\nfunc (h *Handle) BridgeVlanAdd(link Link, vid uint16, pvid, untagged, self, master bool) error {\n\treturn h.bridgeVlanModify(syscall.RTM_SETLINK, link, vid, pvid, untagged, self, master)\n}\n\n// BridgeVlanDel adds a new vlan filter entry\n// Equivalent to: `bridge vlan del dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`\nfunc BridgeVlanDel(link Link, vid uint16, pvid, untagged, self, master bool) error {\n\treturn pkgHandle.BridgeVlanDel(link, vid, pvid, untagged, self, master)\n}\n\n// BridgeVlanDel adds a new vlan filter entry\n// Equivalent to: `bridge vlan del dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`\nfunc (h *Handle) BridgeVlanDel(link Link, vid uint16, pvid, untagged, self, master bool) error {\n\treturn h.bridgeVlanModify(syscall.RTM_DELLINK, link, vid, pvid, untagged, self, master)\n}\n\nfunc (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged, self, master bool) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(cmd, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_BRIDGE)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tbr := nl.NewRtAttr(nl.IFLA_AF_SPEC, nil)\n\tvar flags uint16\n\tif self {\n\t\tflags |= nl.BRIDGE_FLAGS_SELF\n\t}\n\tif master {\n\t\tflags |= nl.BRIDGE_FLAGS_MASTER\n\t}\n\tif flags > 0 {\n\t\tnl.NewRtAttrChild(br, nl.IFLA_BRIDGE_FLAGS, nl.Uint16Attr(flags))\n\t}\n\tvlanInfo := &nl.BridgeVlanInfo{Vid: vid}\n\tif pvid {\n\t\tvlanInfo.Flags |= nl.BRIDGE_VLAN_INFO_PVID\n\t}\n\tif untagged {\n\t\tvlanInfo.Flags |= nl.BRIDGE_VLAN_INFO_UNTAGGED\n\t}\n\tnl.NewRtAttrChild(br, nl.IFLA_BRIDGE_VLAN_INFO, vlanInfo.Serialize())\n\treq.AddData(br)\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/class.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n)\n\ntype Class interface {\n\tAttrs() *ClassAttrs\n\tType() string\n}\n\n// ClassAttrs represents a netlink class. A filter is associated with a link,\n// has a handle and a parent. The root filter of a device should have a\n// parent == HANDLE_ROOT.\ntype ClassAttrs struct {\n\tLinkIndex int\n\tHandle    uint32\n\tParent    uint32\n\tLeaf      uint32\n}\n\nfunc (q ClassAttrs) String() string {\n\treturn fmt.Sprintf(\"{LinkIndex: %d, Handle: %s, Parent: %s, Leaf: %d}\", q.LinkIndex, HandleStr(q.Handle), HandleStr(q.Parent), q.Leaf)\n}\n\ntype HtbClassAttrs struct {\n\t// TODO handle all attributes\n\tRate    uint64\n\tCeil    uint64\n\tBuffer  uint32\n\tCbuffer uint32\n\tQuantum uint32\n\tLevel   uint32\n\tPrio    uint32\n}\n\nfunc (q HtbClassAttrs) String() string {\n\treturn fmt.Sprintf(\"{Rate: %d, Ceil: %d, Buffer: %d, Cbuffer: %d}\", q.Rate, q.Ceil, q.Buffer, q.Cbuffer)\n}\n\n// HtbClass represents an Htb class\ntype HtbClass struct {\n\tClassAttrs\n\tRate    uint64\n\tCeil    uint64\n\tBuffer  uint32\n\tCbuffer uint32\n\tQuantum uint32\n\tLevel   uint32\n\tPrio    uint32\n}\n\nfunc (q HtbClass) String() string {\n\treturn fmt.Sprintf(\"{Rate: %d, Ceil: %d, Buffer: %d, Cbuffer: %d}\", q.Rate, q.Ceil, q.Buffer, q.Cbuffer)\n}\n\nfunc (q *HtbClass) Attrs() *ClassAttrs {\n\treturn &q.ClassAttrs\n}\n\nfunc (q *HtbClass) Type() string {\n\treturn \"htb\"\n}\n\n// GenericClass classes represent types that are not currently understood\n// by this netlink library.\ntype GenericClass struct {\n\tClassAttrs\n\tClassType string\n}\n\nfunc (class *GenericClass) Attrs() *ClassAttrs {\n\treturn &class.ClassAttrs\n}\n\nfunc (class *GenericClass) Type() string {\n\treturn class.ClassType\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/class_linux.go",
    "content": "package netlink\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// NOTE: function is in here because it uses other linux functions\nfunc NewHtbClass(attrs ClassAttrs, cattrs HtbClassAttrs) *HtbClass {\n\tmtu := 1600\n\trate := cattrs.Rate / 8\n\tceil := cattrs.Ceil / 8\n\tbuffer := cattrs.Buffer\n\tcbuffer := cattrs.Cbuffer\n\n\tif ceil == 0 {\n\t\tceil = rate\n\t}\n\n\tif buffer == 0 {\n\t\tbuffer = uint32(float64(rate)/Hz() + float64(mtu))\n\t}\n\tbuffer = uint32(Xmittime(rate, buffer))\n\n\tif cbuffer == 0 {\n\t\tcbuffer = uint32(float64(ceil)/Hz() + float64(mtu))\n\t}\n\tcbuffer = uint32(Xmittime(ceil, cbuffer))\n\n\treturn &HtbClass{\n\t\tClassAttrs: attrs,\n\t\tRate:       rate,\n\t\tCeil:       ceil,\n\t\tBuffer:     buffer,\n\t\tCbuffer:    cbuffer,\n\t\tQuantum:    10,\n\t\tLevel:      0,\n\t\tPrio:       0,\n\t}\n}\n\n// ClassDel will delete a class from the system.\n// Equivalent to: `tc class del $class`\nfunc ClassDel(class Class) error {\n\treturn pkgHandle.ClassDel(class)\n}\n\n// ClassDel will delete a class from the system.\n// Equivalent to: `tc class del $class`\nfunc (h *Handle) ClassDel(class Class) error {\n\treturn h.classModify(syscall.RTM_DELTCLASS, 0, class)\n}\n\n// ClassChange will change a class in place\n// Equivalent to: `tc class change $class`\n// The parent and handle MUST NOT be changed.\nfunc ClassChange(class Class) error {\n\treturn pkgHandle.ClassChange(class)\n}\n\n// ClassChange will change a class in place\n// Equivalent to: `tc class change $class`\n// The parent and handle MUST NOT be changed.\nfunc (h *Handle) ClassChange(class Class) error {\n\treturn h.classModify(syscall.RTM_NEWTCLASS, 0, class)\n}\n\n// ClassReplace will replace a class to the system.\n// quivalent to: `tc class replace $class`\n// The handle MAY be changed.\n// If a class already exist with this parent/handle pair, the class is changed.\n// If a class does not already exist with this parent/handle, a new class is created.\nfunc ClassReplace(class Class) error {\n\treturn pkgHandle.ClassReplace(class)\n}\n\n// ClassReplace will replace a class to the system.\n// quivalent to: `tc class replace $class`\n// The handle MAY be changed.\n// If a class already exist with this parent/handle pair, the class is changed.\n// If a class does not already exist with this parent/handle, a new class is created.\nfunc (h *Handle) ClassReplace(class Class) error {\n\treturn h.classModify(syscall.RTM_NEWTCLASS, syscall.NLM_F_CREATE, class)\n}\n\n// ClassAdd will add a class to the system.\n// Equivalent to: `tc class add $class`\nfunc ClassAdd(class Class) error {\n\treturn pkgHandle.ClassAdd(class)\n}\n\n// ClassAdd will add a class to the system.\n// Equivalent to: `tc class add $class`\nfunc (h *Handle) ClassAdd(class Class) error {\n\treturn h.classModify(\n\t\tsyscall.RTM_NEWTCLASS,\n\t\tsyscall.NLM_F_CREATE|syscall.NLM_F_EXCL,\n\t\tclass,\n\t)\n}\n\nfunc (h *Handle) classModify(cmd, flags int, class Class) error {\n\treq := h.newNetlinkRequest(cmd, flags|syscall.NLM_F_ACK)\n\tbase := class.Attrs()\n\tmsg := &nl.TcMsg{\n\t\tFamily:  nl.FAMILY_ALL,\n\t\tIfindex: int32(base.LinkIndex),\n\t\tHandle:  base.Handle,\n\t\tParent:  base.Parent,\n\t}\n\treq.AddData(msg)\n\n\tif cmd != syscall.RTM_DELTCLASS {\n\t\tif err := classPayload(req, class); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc classPayload(req *nl.NetlinkRequest, class Class) error {\n\treq.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(class.Type())))\n\n\toptions := nl.NewRtAttr(nl.TCA_OPTIONS, nil)\n\tif htb, ok := class.(*HtbClass); ok {\n\t\topt := nl.TcHtbCopt{}\n\t\topt.Buffer = htb.Buffer\n\t\topt.Cbuffer = htb.Cbuffer\n\t\topt.Quantum = htb.Quantum\n\t\topt.Level = htb.Level\n\t\topt.Prio = htb.Prio\n\t\t// TODO: Handle Debug properly. For now default to 0\n\t\t/* Calculate {R,C}Tab and set Rate and Ceil */\n\t\tcellLog := -1\n\t\tccellLog := -1\n\t\tlinklayer := nl.LINKLAYER_ETHERNET\n\t\tmtu := 1600\n\t\tvar rtab [256]uint32\n\t\tvar ctab [256]uint32\n\t\ttcrate := nl.TcRateSpec{Rate: uint32(htb.Rate)}\n\t\tif CalcRtable(&tcrate, rtab, cellLog, uint32(mtu), linklayer) < 0 {\n\t\t\treturn errors.New(\"HTB: failed to calculate rate table\")\n\t\t}\n\t\topt.Rate = tcrate\n\t\ttcceil := nl.TcRateSpec{Rate: uint32(htb.Ceil)}\n\t\tif CalcRtable(&tcceil, ctab, ccellLog, uint32(mtu), linklayer) < 0 {\n\t\t\treturn errors.New(\"HTB: failed to calculate ceil rate table\")\n\t\t}\n\t\topt.Ceil = tcceil\n\t\tnl.NewRtAttrChild(options, nl.TCA_HTB_PARMS, opt.Serialize())\n\t\tnl.NewRtAttrChild(options, nl.TCA_HTB_RTAB, SerializeRtab(rtab))\n\t\tnl.NewRtAttrChild(options, nl.TCA_HTB_CTAB, SerializeRtab(ctab))\n\t}\n\treq.AddData(options)\n\treturn nil\n}\n\n// ClassList gets a list of classes in the system.\n// Equivalent to: `tc class show`.\n// Generally returns nothing if link and parent are not specified.\nfunc ClassList(link Link, parent uint32) ([]Class, error) {\n\treturn pkgHandle.ClassList(link, parent)\n}\n\n// ClassList gets a list of classes in the system.\n// Equivalent to: `tc class show`.\n// Generally returns nothing if link and parent are not specified.\nfunc (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETTCLASS, syscall.NLM_F_DUMP)\n\tmsg := &nl.TcMsg{\n\t\tFamily: nl.FAMILY_ALL,\n\t\tParent: parent,\n\t}\n\tif link != nil {\n\t\tbase := link.Attrs()\n\t\th.ensureIndex(base)\n\t\tmsg.Ifindex = int32(base.Index)\n\t}\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWTCLASS)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Class\n\tfor _, m := range msgs {\n\t\tmsg := nl.DeserializeTcMsg(m)\n\n\t\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tbase := ClassAttrs{\n\t\t\tLinkIndex: int(msg.Ifindex),\n\t\t\tHandle:    msg.Handle,\n\t\t\tParent:    msg.Parent,\n\t\t}\n\n\t\tvar class Class\n\t\tclassType := \"\"\n\t\tfor _, attr := range attrs {\n\t\t\tswitch attr.Attr.Type {\n\t\t\tcase nl.TCA_KIND:\n\t\t\t\tclassType = string(attr.Value[:len(attr.Value)-1])\n\t\t\t\tswitch classType {\n\t\t\t\tcase \"htb\":\n\t\t\t\t\tclass = &HtbClass{}\n\t\t\t\tdefault:\n\t\t\t\t\tclass = &GenericClass{ClassType: classType}\n\t\t\t\t}\n\t\t\tcase nl.TCA_OPTIONS:\n\t\t\t\tswitch classType {\n\t\t\t\tcase \"htb\":\n\t\t\t\t\tdata, err := nl.ParseRouteAttr(attr.Value)\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\t_, err = parseHtbClassData(class, data)\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}\n\t\t\t}\n\t\t}\n\t\t*class.Attrs() = base\n\t\tres = append(res, class)\n\t}\n\n\treturn res, nil\n}\n\nfunc parseHtbClassData(class Class, data []syscall.NetlinkRouteAttr) (bool, error) {\n\thtb := class.(*HtbClass)\n\tdetailed := false\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_HTB_PARMS:\n\t\t\topt := nl.DeserializeTcHtbCopt(datum.Value)\n\t\t\thtb.Rate = uint64(opt.Rate.Rate)\n\t\t\thtb.Ceil = uint64(opt.Ceil.Rate)\n\t\t\thtb.Buffer = opt.Buffer\n\t\t\thtb.Cbuffer = opt.Cbuffer\n\t\t\thtb.Quantum = opt.Quantum\n\t\t\thtb.Level = opt.Level\n\t\t\thtb.Prio = opt.Prio\n\t\t}\n\t}\n\treturn detailed, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/conntrack_linux.go",
    "content": "package netlink\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// ConntrackTableType Conntrack table for the netlink operation\ntype ConntrackTableType uint8\n\nconst (\n\t// ConntrackTable Conntrack table\n\t// https://github.com/torvalds/linux/blob/master/include/uapi/linux/netfilter/nfnetlink.h -> #define NFNL_SUBSYS_CTNETLINK\t\t 1\n\tConntrackTable = 1\n\t// ConntrackExpectTable Conntrack expect table\n\t// https://github.com/torvalds/linux/blob/master/include/uapi/linux/netfilter/nfnetlink.h -> #define NFNL_SUBSYS_CTNETLINK_EXP 2\n\tConntrackExpectTable = 2\n)\nconst (\n\t// For Parsing Mark\n\tTCP_PROTO = 6\n\tUDP_PROTO = 17\n)\nconst (\n\t// backward compatibility with golang 1.6 which does not have io.SeekCurrent\n\tseekCurrent = 1\n)\n\n// InetFamily Family type\ntype InetFamily uint8\n\n//  -L [table] [options]          List conntrack or expectation table\n//  -G [table] parameters         Get conntrack or expectation\n\n//  -I [table] parameters         Create a conntrack or expectation\n//  -U [table] parameters         Update a conntrack\n//  -E [table] [options]          Show events\n\n//  -C [table]                    Show counter\n//  -S                            Show statistics\n\n// ConntrackTableList returns the flow list of a table of a specific family\n// conntrack -L [table] [options]          List conntrack or expectation table\nfunc ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error) {\n\treturn pkgHandle.ConntrackTableList(table, family)\n}\n\n// ConntrackTableFlush flushes all the flows of a specified table\n// conntrack -F [table]            Flush table\n// The flush operation applies to all the family types\nfunc ConntrackTableFlush(table ConntrackTableType) error {\n\treturn pkgHandle.ConntrackTableFlush(table)\n}\n\n// ConntrackDeleteFilter deletes entries on the specified table on the base of the filter\n// conntrack -D [table] parameters         Delete conntrack or expectation\nfunc ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter CustomConntrackFilter) (uint, error) {\n\treturn pkgHandle.ConntrackDeleteFilter(table, family, filter)\n}\n\n// ConntrackTableList returns the flow list of a table of a specific family using the netlink handle passed\n// conntrack -L [table] [options]          List conntrack or expectation table\nfunc (h *Handle) ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error) {\n\tres, err := h.dumpConntrackTable(table, family)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Deserialize all the flows\n\tvar result []*ConntrackFlow\n\tfor _, dataRaw := range res {\n\t\tresult = append(result, parseRawData(dataRaw))\n\t}\n\n\treturn result, nil\n}\n\n// ConntrackTableFlush flushes all the flows of a specified table using the netlink handle passed\n// conntrack -F [table]            Flush table\n// The flush operation applies to all the family types\nfunc (h *Handle) ConntrackTableFlush(table ConntrackTableType) error {\n\treq := h.newConntrackRequest(table, syscall.AF_INET, nl.IPCTNL_MSG_CT_DELETE, syscall.NLM_F_ACK)\n\t_, err := req.Execute(syscall.NETLINK_NETFILTER, 0)\n\treturn err\n}\n\n// ConntrackDeleteFilter deletes entries on the specified table on the base of the filter using the netlink handle passed\n// conntrack -D [table] parameters         Delete conntrack or expectation\nfunc (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter CustomConntrackFilter) (uint, error) {\n\tres, err := h.dumpConntrackTable(table, family)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tvar matched uint\n\tfor _, dataRaw := range res {\n\t\tflow := parseRawData(dataRaw)\n\t\tif match := filter.MatchConntrackFlow(flow); match {\n\t\t\treq2 := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_DELETE, syscall.NLM_F_ACK)\n\t\t\t// skip the first 4 byte that are the netfilter header, the newConntrackRequest is adding it already\n\t\t\treq2.AddRawData(dataRaw[4:])\n\t\t\treq2.Execute(syscall.NETLINK_NETFILTER, 0)\n\t\t\tmatched++\n\t\t}\n\t}\n\n\treturn matched, nil\n}\n\nfunc (h *Handle) newConntrackRequest(table ConntrackTableType, family InetFamily, operation, flags int) *nl.NetlinkRequest {\n\t// Create the Netlink request object\n\treq := h.newNetlinkRequest((int(table)<<8)|operation, flags)\n\t// Add the netfilter header\n\tmsg := &nl.Nfgenmsg{\n\t\tNfgenFamily: uint8(family),\n\t\tVersion:     nl.NFNETLINK_V0,\n\t\tResId:       0,\n\t}\n\treq.AddData(msg)\n\treturn req\n}\n\nfunc (h *Handle) dumpConntrackTable(table ConntrackTableType, family InetFamily) ([][]byte, error) {\n\treq := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_GET, syscall.NLM_F_DUMP)\n\treturn req.Execute(syscall.NETLINK_NETFILTER, 0)\n}\n\n// The full conntrack flow structure is very complicated and can be found in the file:\n// http://git.netfilter.org/libnetfilter_conntrack/tree/include/internal/object.h\n// For the time being, the structure below allows to parse and extract the base information of a flow\ntype ipTuple struct {\n\tSrcIP    net.IP\n\tDstIP    net.IP\n\tProtocol uint8\n\tSrcPort  uint16\n\tDstPort  uint16\n}\n\ntype ConntrackFlow struct {\n\tFamilyType uint8\n\tForward    ipTuple\n\tReverse    ipTuple\n\tMark       uint32\n}\n\nfunc (s *ConntrackFlow) String() string {\n\t// conntrack cmd output:\n\t// udp      17 src=127.0.0.1 dst=127.0.0.1 sport=4001 dport=1234 [UNREPLIED] src=127.0.0.1 dst=127.0.0.1 sport=1234 dport=4001 mark=0\n\treturn fmt.Sprintf(\"%s\\t%d src=%s dst=%s sport=%d dport=%d\\tsrc=%s dst=%s sport=%d dport=%d mark=%d\",\n\t\tnl.L4ProtoMap[s.Forward.Protocol], s.Forward.Protocol,\n\t\ts.Forward.SrcIP.String(), s.Forward.DstIP.String(), s.Forward.SrcPort, s.Forward.DstPort,\n\t\ts.Reverse.SrcIP.String(), s.Reverse.DstIP.String(), s.Reverse.SrcPort, s.Reverse.DstPort, s.Mark)\n}\n\n// This method parse the ip tuple structure\n// The message structure is the following:\n// <len, [CTA_IP_V4_SRC|CTA_IP_V6_SRC], 16 bytes for the IP>\n// <len, [CTA_IP_V4_DST|CTA_IP_V6_DST], 16 bytes for the IP>\n// <len, NLA_F_NESTED|nl.CTA_TUPLE_PROTO, 1 byte for the protocol, 3 bytes of padding>\n// <len, CTA_PROTO_SRC_PORT, 2 bytes for the source port, 2 bytes of padding>\n// <len, CTA_PROTO_DST_PORT, 2 bytes for the source port, 2 bytes of padding>\nfunc parseIpTuple(reader *bytes.Reader, tpl *ipTuple) uint8 {\n\tfor i := 0; i < 2; i++ {\n\t\t_, t, _, v := parseNfAttrTLV(reader)\n\t\tswitch t {\n\t\tcase nl.CTA_IP_V4_SRC, nl.CTA_IP_V6_SRC:\n\t\t\ttpl.SrcIP = v\n\t\tcase nl.CTA_IP_V4_DST, nl.CTA_IP_V6_DST:\n\t\t\ttpl.DstIP = v\n\t\t}\n\t}\n\t// Skip the next 4 bytes  nl.NLA_F_NESTED|nl.CTA_TUPLE_PROTO\n\treader.Seek(4, seekCurrent)\n\t_, t, _, v := parseNfAttrTLV(reader)\n\tif t == nl.CTA_PROTO_NUM {\n\t\ttpl.Protocol = uint8(v[0])\n\t}\n\t// Skip some padding 3 bytes\n\treader.Seek(3, seekCurrent)\n\tfor i := 0; i < 2; i++ {\n\t\t_, t, _ := parseNfAttrTL(reader)\n\t\tswitch t {\n\t\tcase nl.CTA_PROTO_SRC_PORT:\n\t\t\tparseBERaw16(reader, &tpl.SrcPort)\n\t\tcase nl.CTA_PROTO_DST_PORT:\n\t\t\tparseBERaw16(reader, &tpl.DstPort)\n\t\t}\n\t\t// Skip some padding 2 byte\n\t\treader.Seek(2, seekCurrent)\n\t}\n\treturn tpl.Protocol\n}\n\nfunc parseNfAttrTLV(r *bytes.Reader) (isNested bool, attrType, len uint16, value []byte) {\n\tisNested, attrType, len = parseNfAttrTL(r)\n\n\tvalue = make([]byte, len)\n\tbinary.Read(r, binary.BigEndian, &value)\n\treturn isNested, attrType, len, value\n}\n\nfunc parseNfAttrTL(r *bytes.Reader) (isNested bool, attrType, len uint16) {\n\tbinary.Read(r, nl.NativeEndian(), &len)\n\tlen -= nl.SizeofNfattr\n\n\tbinary.Read(r, nl.NativeEndian(), &attrType)\n\tisNested = (attrType & nl.NLA_F_NESTED) == nl.NLA_F_NESTED\n\tattrType = attrType & (nl.NLA_F_NESTED - 1)\n\n\treturn isNested, attrType, len\n}\n\nfunc parseBERaw16(r *bytes.Reader, v *uint16) {\n\tbinary.Read(r, binary.BigEndian, v)\n}\n\nfunc parseRawData(data []byte) *ConntrackFlow {\n\ts := &ConntrackFlow{}\n\tvar proto uint8\n\t// First there is the Nfgenmsg header\n\t// consume only the family field\n\treader := bytes.NewReader(data)\n\tbinary.Read(reader, nl.NativeEndian(), &s.FamilyType)\n\n\t// skip rest of the Netfilter header\n\treader.Seek(3, seekCurrent)\n\t// The message structure is the following:\n\t// <len, NLA_F_NESTED|CTA_TUPLE_ORIG> 4 bytes\n\t// <len, NLA_F_NESTED|CTA_TUPLE_IP> 4 bytes\n\t// flow information of the forward flow\n\t// <len, NLA_F_NESTED|CTA_TUPLE_REPLY> 4 bytes\n\t// <len, NLA_F_NESTED|CTA_TUPLE_IP> 4 bytes\n\t// flow information of the reverse flow\n\tfor reader.Len() > 0 {\n\t\tnested, t, l := parseNfAttrTL(reader)\n\t\tif nested && t == nl.CTA_TUPLE_ORIG {\n\t\t\tif nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {\n\t\t\t\tproto = parseIpTuple(reader, &s.Forward)\n\t\t\t}\n\t\t} else if nested && t == nl.CTA_TUPLE_REPLY {\n\t\t\tif nested, t, _ = parseNfAttrTL(reader); nested && t == nl.CTA_TUPLE_IP {\n\t\t\t\tparseIpTuple(reader, &s.Reverse)\n\n\t\t\t\t// Got all the useful information stop parsing\n\t\t\t\tbreak\n\t\t\t} else {\n\t\t\t\t// Header not recognized skip it\n\t\t\t\treader.Seek(int64(l), seekCurrent)\n\t\t\t}\n\t\t}\n\t}\n\tif proto == TCP_PROTO {\n\t\treader.Seek(64, seekCurrent)\n\t\t_, t, _, v := parseNfAttrTLV(reader)\n\t\tif t == nl.CTA_MARK {\n\t\t\ts.Mark = uint32(v[3])\n\t\t}\n\t} else if proto == UDP_PROTO {\n\t\treader.Seek(16, seekCurrent)\n\t\t_, t, _, v := parseNfAttrTLV(reader)\n\t\tif t == nl.CTA_MARK {\n\t\t\ts.Mark = uint32(v[3])\n\t\t}\n\t}\n\treturn s\n}\n\n// Conntrack parameters and options:\n//   -n, --src-nat ip                      source NAT ip\n//   -g, --dst-nat ip                      destination NAT ip\n//   -j, --any-nat ip                      source or destination NAT ip\n//   -m, --mark mark                       Set mark\n//   -c, --secmark secmark                 Set selinux secmark\n//   -e, --event-mask eventmask            Event mask, eg. NEW,DESTROY\n//   -z, --zero                            Zero counters while listing\n//   -o, --output type[,...]               Output format, eg. xml\n//   -l, --label label[,...]               conntrack labels\n\n// Common parameters and options:\n//   -s, --src, --orig-src ip              Source address from original direction\n//   -d, --dst, --orig-dst ip              Destination address from original direction\n//   -r, --reply-src ip            Source addres from reply direction\n//   -q, --reply-dst ip            Destination address from reply direction\n//   -p, --protonum proto          Layer 4 Protocol, eg. 'tcp'\n//   -f, --family proto            Layer 3 Protocol, eg. 'ipv6'\n//   -t, --timeout timeout         Set timeout\n//   -u, --status status           Set status, eg. ASSURED\n//   -w, --zone value              Set conntrack zone\n//   --orig-zone value             Set zone for original direction\n//   --reply-zone value            Set zone for reply direction\n//   -b, --buffer-size             Netlink socket buffer size\n//   --mask-src ip                 Source mask address\n//   --mask-dst ip                 Destination mask address\n\n// Filter types\ntype ConntrackFilterType uint8\n\nconst (\n\tConntrackOrigSrcIP = iota // -orig-src ip   Source address from original direction\n\tConntrackOrigDstIP        // -orig-dst ip   Destination address from original direction\n\tConntrackNatSrcIP         // -src-nat ip    Source NAT ip\n\tConntrackNatDstIP         // -dst-nat ip    Destination NAT ip\n\tConntrackNatAnyIP         // -any-nat ip    Source or destination NAT ip\n)\n\ntype CustomConntrackFilter interface {\n\t// MatchConntrackFlow applies the filter to the flow and returns true if the flow matches\n\t// the filter or false otherwise\n\tMatchConntrackFlow(flow *ConntrackFlow) bool\n}\n\ntype ConntrackFilter struct {\n\tipFilter map[ConntrackFilterType]net.IP\n}\n\n// AddIP adds an IP to the conntrack filter\nfunc (f *ConntrackFilter) AddIP(tp ConntrackFilterType, ip net.IP) error {\n\tif f.ipFilter == nil {\n\t\tf.ipFilter = make(map[ConntrackFilterType]net.IP)\n\t}\n\tif _, ok := f.ipFilter[tp]; ok {\n\t\treturn errors.New(\"Filter attribute already present\")\n\t}\n\tf.ipFilter[tp] = ip\n\treturn nil\n}\n\n// MatchConntrackFlow applies the filter to the flow and returns true if the flow matches the filter\n// false otherwise\nfunc (f *ConntrackFilter) MatchConntrackFlow(flow *ConntrackFlow) bool {\n\tif len(f.ipFilter) == 0 {\n\t\t// empty filter always not match\n\t\treturn false\n\t}\n\n\tmatch := true\n\t// -orig-src ip   Source address from original direction\n\tif elem, found := f.ipFilter[ConntrackOrigSrcIP]; found {\n\t\tmatch = match && elem.Equal(flow.Forward.SrcIP)\n\t}\n\n\t// -orig-dst ip   Destination address from original direction\n\tif elem, found := f.ipFilter[ConntrackOrigDstIP]; match && found {\n\t\tmatch = match && elem.Equal(flow.Forward.DstIP)\n\t}\n\n\t// -src-nat ip    Source NAT ip\n\tif elem, found := f.ipFilter[ConntrackNatSrcIP]; match && found {\n\t\tmatch = match && elem.Equal(flow.Reverse.SrcIP)\n\t}\n\n\t// -dst-nat ip    Destination NAT ip\n\tif elem, found := f.ipFilter[ConntrackNatDstIP]; match && found {\n\t\tmatch = match && elem.Equal(flow.Reverse.DstIP)\n\t}\n\n\t// -any-nat ip    Source or destination NAT ip\n\tif elem, found := f.ipFilter[ConntrackNatAnyIP]; match && found {\n\t\tmatch = match && (elem.Equal(flow.Reverse.SrcIP) || elem.Equal(flow.Reverse.DstIP))\n\t}\n\n\treturn match\n}\n\nvar _ CustomConntrackFilter = (*ConntrackFilter)(nil)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/conntrack_unspecified.go",
    "content": "// +build !linux\n\npackage netlink\n\n// ConntrackTableType Conntrack table for the netlink operation\ntype ConntrackTableType uint8\n\n// InetFamily Family type\ntype InetFamily uint8\n\n// ConntrackFlow placeholder\ntype ConntrackFlow struct{}\n\n// ConntrackFilter placeholder\ntype ConntrackFilter struct{}\n\n// ConntrackTableList returns the flow list of a table of a specific family\n// conntrack -L [table] [options]          List conntrack or expectation table\nfunc ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error) {\n\treturn nil, ErrNotImplemented\n}\n\n// ConntrackTableFlush flushes all the flows of a specified table\n// conntrack -F [table]            Flush table\n// The flush operation applies to all the family types\nfunc ConntrackTableFlush(table ConntrackTableType) error {\n\treturn ErrNotImplemented\n}\n\n// ConntrackDeleteFilter deletes entries on the specified table on the base of the filter\n// conntrack -D [table] parameters         Delete conntrack or expectation\nfunc ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error) {\n\treturn 0, ErrNotImplemented\n}\n\n// ConntrackTableList returns the flow list of a table of a specific family using the netlink handle passed\n// conntrack -L [table] [options]          List conntrack or expectation table\nfunc (h *Handle) ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error) {\n\treturn nil, ErrNotImplemented\n}\n\n// ConntrackTableFlush flushes all the flows of a specified table using the netlink handle passed\n// conntrack -F [table]            Flush table\n// The flush operation applies to all the family types\nfunc (h *Handle) ConntrackTableFlush(table ConntrackTableType) error {\n\treturn ErrNotImplemented\n}\n\n// ConntrackDeleteFilter deletes entries on the specified table on the base of the filter using the netlink handle passed\n// conntrack -D [table] parameters         Delete conntrack or expectation\nfunc (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error) {\n\treturn 0, ErrNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/filter.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\ntype Filter interface {\n\tAttrs() *FilterAttrs\n\tType() string\n}\n\n// FilterAttrs represents a netlink filter. A filter is associated with a link,\n// has a handle and a parent. The root filter of a device should have a\n// parent == HANDLE_ROOT.\ntype FilterAttrs struct {\n\tLinkIndex int\n\tHandle    uint32\n\tParent    uint32\n\tPriority  uint16 // lower is higher priority\n\tProtocol  uint16 // syscall.ETH_P_*\n}\n\nfunc (q FilterAttrs) String() string {\n\treturn fmt.Sprintf(\"{LinkIndex: %d, Handle: %s, Parent: %s, Priority: %d, Protocol: %d}\", q.LinkIndex, HandleStr(q.Handle), HandleStr(q.Parent), q.Priority, q.Protocol)\n}\n\ntype TcAct int32\n\nconst (\n\tTC_ACT_UNSPEC     TcAct = -1\n\tTC_ACT_OK         TcAct = 0\n\tTC_ACT_RECLASSIFY TcAct = 1\n\tTC_ACT_SHOT       TcAct = 2\n\tTC_ACT_PIPE       TcAct = 3\n\tTC_ACT_STOLEN     TcAct = 4\n\tTC_ACT_QUEUED     TcAct = 5\n\tTC_ACT_REPEAT     TcAct = 6\n\tTC_ACT_REDIRECT   TcAct = 7\n\tTC_ACT_JUMP       TcAct = 0x10000000\n)\n\nfunc (a TcAct) String() string {\n\tswitch a {\n\tcase TC_ACT_UNSPEC:\n\t\treturn \"unspec\"\n\tcase TC_ACT_OK:\n\t\treturn \"ok\"\n\tcase TC_ACT_RECLASSIFY:\n\t\treturn \"reclassify\"\n\tcase TC_ACT_SHOT:\n\t\treturn \"shot\"\n\tcase TC_ACT_PIPE:\n\t\treturn \"pipe\"\n\tcase TC_ACT_STOLEN:\n\t\treturn \"stolen\"\n\tcase TC_ACT_QUEUED:\n\t\treturn \"queued\"\n\tcase TC_ACT_REPEAT:\n\t\treturn \"repeat\"\n\tcase TC_ACT_REDIRECT:\n\t\treturn \"redirect\"\n\tcase TC_ACT_JUMP:\n\t\treturn \"jump\"\n\t}\n\treturn fmt.Sprintf(\"0x%x\", int32(a))\n}\n\ntype TcPolAct int32\n\nconst (\n\tTC_POLICE_UNSPEC     TcPolAct = TcPolAct(TC_ACT_UNSPEC)\n\tTC_POLICE_OK         TcPolAct = TcPolAct(TC_ACT_OK)\n\tTC_POLICE_RECLASSIFY TcPolAct = TcPolAct(TC_ACT_RECLASSIFY)\n\tTC_POLICE_SHOT       TcPolAct = TcPolAct(TC_ACT_SHOT)\n\tTC_POLICE_PIPE       TcPolAct = TcPolAct(TC_ACT_PIPE)\n)\n\nfunc (a TcPolAct) String() string {\n\tswitch a {\n\tcase TC_POLICE_UNSPEC:\n\t\treturn \"unspec\"\n\tcase TC_POLICE_OK:\n\t\treturn \"ok\"\n\tcase TC_POLICE_RECLASSIFY:\n\t\treturn \"reclassify\"\n\tcase TC_POLICE_SHOT:\n\t\treturn \"shot\"\n\tcase TC_POLICE_PIPE:\n\t\treturn \"pipe\"\n\t}\n\treturn fmt.Sprintf(\"0x%x\", int32(a))\n}\n\ntype ActionAttrs struct {\n\tIndex   int\n\tCapab   int\n\tAction  TcAct\n\tRefcnt  int\n\tBindcnt int\n}\n\nfunc (q ActionAttrs) String() string {\n\treturn fmt.Sprintf(\"{Index: %d, Capab: %x, Action: %s, Refcnt: %d, Bindcnt: %d}\", q.Index, q.Capab, q.Action.String(), q.Refcnt, q.Bindcnt)\n}\n\n// Action represents an action in any supported filter.\ntype Action interface {\n\tAttrs() *ActionAttrs\n\tType() string\n}\n\ntype GenericAction struct {\n\tActionAttrs\n}\n\nfunc (action *GenericAction) Type() string {\n\treturn \"generic\"\n}\n\nfunc (action *GenericAction) Attrs() *ActionAttrs {\n\treturn &action.ActionAttrs\n}\n\ntype BpfAction struct {\n\tActionAttrs\n\tFd   int\n\tName string\n}\n\nfunc (action *BpfAction) Type() string {\n\treturn \"bpf\"\n}\n\nfunc (action *BpfAction) Attrs() *ActionAttrs {\n\treturn &action.ActionAttrs\n}\n\ntype MirredAct uint8\n\nfunc (a MirredAct) String() string {\n\tswitch a {\n\tcase TCA_EGRESS_REDIR:\n\t\treturn \"egress redir\"\n\tcase TCA_EGRESS_MIRROR:\n\t\treturn \"egress mirror\"\n\tcase TCA_INGRESS_REDIR:\n\t\treturn \"ingress redir\"\n\tcase TCA_INGRESS_MIRROR:\n\t\treturn \"ingress mirror\"\n\t}\n\treturn \"unknown\"\n}\n\nconst (\n\tTCA_EGRESS_REDIR   MirredAct = 1 /* packet redirect to EGRESS*/\n\tTCA_EGRESS_MIRROR  MirredAct = 2 /* mirror packet to EGRESS */\n\tTCA_INGRESS_REDIR  MirredAct = 3 /* packet redirect to INGRESS*/\n\tTCA_INGRESS_MIRROR MirredAct = 4 /* mirror packet to INGRESS */\n)\n\ntype MirredAction struct {\n\tActionAttrs\n\tMirredAction MirredAct\n\tIfindex      int\n}\n\nfunc (action *MirredAction) Type() string {\n\treturn \"mirred\"\n}\n\nfunc (action *MirredAction) Attrs() *ActionAttrs {\n\treturn &action.ActionAttrs\n}\n\nfunc NewMirredAction(redirIndex int) *MirredAction {\n\treturn &MirredAction{\n\t\tActionAttrs: ActionAttrs{\n\t\t\tAction: TC_ACT_STOLEN,\n\t\t},\n\t\tMirredAction: TCA_EGRESS_REDIR,\n\t\tIfindex:      redirIndex,\n\t}\n}\n\n// Constants used in TcU32Sel.Flags.\nconst (\n\tTC_U32_TERMINAL  = nl.TC_U32_TERMINAL\n\tTC_U32_OFFSET    = nl.TC_U32_OFFSET\n\tTC_U32_VAROFFSET = nl.TC_U32_VAROFFSET\n\tTC_U32_EAT       = nl.TC_U32_EAT\n)\n\n// Sel of the U32 filters that contains multiple TcU32Key. This is the copy\n// and the frontend representation of nl.TcU32Sel. It is serialized into canonical\n// nl.TcU32Sel with the appropriate endianness.\ntype TcU32Sel struct {\n\tFlags    uint8\n\tOffshift uint8\n\tNkeys    uint8\n\tPad      uint8\n\tOffmask  uint16\n\tOff      uint16\n\tOffoff   int16\n\tHoff     int16\n\tHmask    uint32\n\tKeys     []TcU32Key\n}\n\n// TcU32Key contained of Sel in the U32 filters. This is the copy and the frontend\n// representation of nl.TcU32Key. It is serialized into chanonical nl.TcU32Sel\n// with the appropriate endianness.\ntype TcU32Key struct {\n\tMask    uint32\n\tVal     uint32\n\tOff     int32\n\tOffMask int32\n}\n\n// U32 filters on many packet related properties\ntype U32 struct {\n\tFilterAttrs\n\tClassId    uint32\n\tRedirIndex int\n\tSel        *TcU32Sel\n\tActions    []Action\n}\n\nfunc (filter *U32) Attrs() *FilterAttrs {\n\treturn &filter.FilterAttrs\n}\n\nfunc (filter *U32) Type() string {\n\treturn \"u32\"\n}\n\ntype FilterFwAttrs struct {\n\tClassId   uint32\n\tInDev     string\n\tMask      uint32\n\tIndex     uint32\n\tBuffer    uint32\n\tMtu       uint32\n\tMpu       uint16\n\tRate      uint32\n\tAvRate    uint32\n\tPeakRate  uint32\n\tAction    TcPolAct\n\tOverhead  uint16\n\tLinkLayer int\n}\n\ntype BpfFilter struct {\n\tFilterAttrs\n\tClassId      uint32\n\tFd           int\n\tName         string\n\tDirectAction bool\n}\n\nfunc (filter *BpfFilter) Type() string {\n\treturn \"bpf\"\n}\n\nfunc (filter *BpfFilter) Attrs() *FilterAttrs {\n\treturn &filter.FilterAttrs\n}\n\n// GenericFilter filters represent types that are not currently understood\n// by this netlink library.\ntype GenericFilter struct {\n\tFilterAttrs\n\tFilterType string\n}\n\nfunc (filter *GenericFilter) Attrs() *FilterAttrs {\n\treturn &filter.FilterAttrs\n}\n\nfunc (filter *GenericFilter) Type() string {\n\treturn filter.FilterType\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/filter_linux.go",
    "content": "package netlink\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// Fw filter filters on firewall marks\n// NOTE: this is in filter_linux because it refers to nl.TcPolice which\n//       is defined in nl/tc_linux.go\ntype Fw struct {\n\tFilterAttrs\n\tClassId uint32\n\t// TODO remove nl type from interface\n\tPolice nl.TcPolice\n\tInDev  string\n\t// TODO Action\n\tMask   uint32\n\tAvRate uint32\n\tRtab   [256]uint32\n\tPtab   [256]uint32\n}\n\nfunc NewFw(attrs FilterAttrs, fattrs FilterFwAttrs) (*Fw, error) {\n\tvar rtab [256]uint32\n\tvar ptab [256]uint32\n\trcellLog := -1\n\tpcellLog := -1\n\tavrate := fattrs.AvRate / 8\n\tpolice := nl.TcPolice{}\n\tpolice.Rate.Rate = fattrs.Rate / 8\n\tpolice.PeakRate.Rate = fattrs.PeakRate / 8\n\tbuffer := fattrs.Buffer\n\tlinklayer := nl.LINKLAYER_ETHERNET\n\n\tif fattrs.LinkLayer != nl.LINKLAYER_UNSPEC {\n\t\tlinklayer = fattrs.LinkLayer\n\t}\n\n\tpolice.Action = int32(fattrs.Action)\n\tif police.Rate.Rate != 0 {\n\t\tpolice.Rate.Mpu = fattrs.Mpu\n\t\tpolice.Rate.Overhead = fattrs.Overhead\n\t\tif CalcRtable(&police.Rate, rtab, rcellLog, fattrs.Mtu, linklayer) < 0 {\n\t\t\treturn nil, errors.New(\"TBF: failed to calculate rate table\")\n\t\t}\n\t\tpolice.Burst = uint32(Xmittime(uint64(police.Rate.Rate), uint32(buffer)))\n\t}\n\tpolice.Mtu = fattrs.Mtu\n\tif police.PeakRate.Rate != 0 {\n\t\tpolice.PeakRate.Mpu = fattrs.Mpu\n\t\tpolice.PeakRate.Overhead = fattrs.Overhead\n\t\tif CalcRtable(&police.PeakRate, ptab, pcellLog, fattrs.Mtu, linklayer) < 0 {\n\t\t\treturn nil, errors.New(\"POLICE: failed to calculate peak rate table\")\n\t\t}\n\t}\n\n\treturn &Fw{\n\t\tFilterAttrs: attrs,\n\t\tClassId:     fattrs.ClassId,\n\t\tInDev:       fattrs.InDev,\n\t\tMask:        fattrs.Mask,\n\t\tPolice:      police,\n\t\tAvRate:      avrate,\n\t\tRtab:        rtab,\n\t\tPtab:        ptab,\n\t}, nil\n}\n\nfunc (filter *Fw) Attrs() *FilterAttrs {\n\treturn &filter.FilterAttrs\n}\n\nfunc (filter *Fw) Type() string {\n\treturn \"fw\"\n}\n\n// FilterDel will delete a filter from the system.\n// Equivalent to: `tc filter del $filter`\nfunc FilterDel(filter Filter) error {\n\treturn pkgHandle.FilterDel(filter)\n}\n\n// FilterDel will delete a filter from the system.\n// Equivalent to: `tc filter del $filter`\nfunc (h *Handle) FilterDel(filter Filter) error {\n\treq := h.newNetlinkRequest(syscall.RTM_DELTFILTER, syscall.NLM_F_ACK)\n\tbase := filter.Attrs()\n\tmsg := &nl.TcMsg{\n\t\tFamily:  nl.FAMILY_ALL,\n\t\tIfindex: int32(base.LinkIndex),\n\t\tHandle:  base.Handle,\n\t\tParent:  base.Parent,\n\t\tInfo:    MakeHandle(base.Priority, nl.Swap16(base.Protocol)),\n\t}\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// FilterAdd will add a filter to the system.\n// Equivalent to: `tc filter add $filter`\nfunc FilterAdd(filter Filter) error {\n\treturn pkgHandle.FilterAdd(filter)\n}\n\n// FilterAdd will add a filter to the system.\n// Equivalent to: `tc filter add $filter`\nfunc (h *Handle) FilterAdd(filter Filter) error {\n\tnative = nl.NativeEndian()\n\treq := h.newNetlinkRequest(syscall.RTM_NEWTFILTER, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\tbase := filter.Attrs()\n\tmsg := &nl.TcMsg{\n\t\tFamily:  nl.FAMILY_ALL,\n\t\tIfindex: int32(base.LinkIndex),\n\t\tHandle:  base.Handle,\n\t\tParent:  base.Parent,\n\t\tInfo:    MakeHandle(base.Priority, nl.Swap16(base.Protocol)),\n\t}\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(filter.Type())))\n\n\toptions := nl.NewRtAttr(nl.TCA_OPTIONS, nil)\n\tif u32, ok := filter.(*U32); ok {\n\t\t// Convert TcU32Sel into nl.TcU32Sel as it is without copy.\n\t\tsel := (*nl.TcU32Sel)(unsafe.Pointer(u32.Sel))\n\t\tif sel == nil {\n\t\t\t// match all\n\t\t\tsel = &nl.TcU32Sel{\n\t\t\t\tNkeys: 1,\n\t\t\t\tFlags: nl.TC_U32_TERMINAL,\n\t\t\t}\n\t\t\tsel.Keys = append(sel.Keys, nl.TcU32Key{})\n\t\t}\n\n\t\tif native != networkOrder {\n\t\t\t// Copy TcU32Sel.\n\t\t\tcSel := *sel\n\t\t\tkeys := make([]nl.TcU32Key, cap(sel.Keys))\n\t\t\tcopy(keys, sel.Keys)\n\t\t\tcSel.Keys = keys\n\t\t\tsel = &cSel\n\n\t\t\t// Handle the endianness of attributes\n\t\t\tsel.Offmask = native.Uint16(htons(sel.Offmask))\n\t\t\tsel.Hmask = native.Uint32(htonl(sel.Hmask))\n\t\t\tfor i, key := range sel.Keys {\n\t\t\t\tsel.Keys[i].Mask = native.Uint32(htonl(key.Mask))\n\t\t\t\tsel.Keys[i].Val = native.Uint32(htonl(key.Val))\n\t\t\t}\n\t\t}\n\t\tsel.Nkeys = uint8(len(sel.Keys))\n\t\tnl.NewRtAttrChild(options, nl.TCA_U32_SEL, sel.Serialize())\n\t\tif u32.ClassId != 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_U32_CLASSID, nl.Uint32Attr(u32.ClassId))\n\t\t}\n\t\tactionsAttr := nl.NewRtAttrChild(options, nl.TCA_U32_ACT, nil)\n\t\t// backwards compatibility\n\t\tif u32.RedirIndex != 0 {\n\t\t\tu32.Actions = append([]Action{NewMirredAction(u32.RedirIndex)}, u32.Actions...)\n\t\t}\n\t\tif err := EncodeActions(actionsAttr, u32.Actions); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if fw, ok := filter.(*Fw); ok {\n\t\tif fw.Mask != 0 {\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, fw.Mask)\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_FW_MASK, b)\n\t\t}\n\t\tif fw.InDev != \"\" {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_FW_INDEV, nl.ZeroTerminated(fw.InDev))\n\t\t}\n\t\tif (fw.Police != nl.TcPolice{}) {\n\n\t\t\tpolice := nl.NewRtAttrChild(options, nl.TCA_FW_POLICE, nil)\n\t\t\tnl.NewRtAttrChild(police, nl.TCA_POLICE_TBF, fw.Police.Serialize())\n\t\t\tif (fw.Police.Rate != nl.TcRateSpec{}) {\n\t\t\t\tpayload := SerializeRtab(fw.Rtab)\n\t\t\t\tnl.NewRtAttrChild(police, nl.TCA_POLICE_RATE, payload)\n\t\t\t}\n\t\t\tif (fw.Police.PeakRate != nl.TcRateSpec{}) {\n\t\t\t\tpayload := SerializeRtab(fw.Ptab)\n\t\t\t\tnl.NewRtAttrChild(police, nl.TCA_POLICE_PEAKRATE, payload)\n\t\t\t}\n\t\t}\n\t\tif fw.ClassId != 0 {\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, fw.ClassId)\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_FW_CLASSID, b)\n\t\t}\n\t} else if bpf, ok := filter.(*BpfFilter); ok {\n\t\tvar bpfFlags uint32\n\t\tif bpf.ClassId != 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_BPF_CLASSID, nl.Uint32Attr(bpf.ClassId))\n\t\t}\n\t\tif bpf.Fd >= 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_BPF_FD, nl.Uint32Attr((uint32(bpf.Fd))))\n\t\t}\n\t\tif bpf.Name != \"\" {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_BPF_NAME, nl.ZeroTerminated(bpf.Name))\n\t\t}\n\t\tif bpf.DirectAction {\n\t\t\tbpfFlags |= nl.TCA_BPF_FLAG_ACT_DIRECT\n\t\t}\n\t\tnl.NewRtAttrChild(options, nl.TCA_BPF_FLAGS, nl.Uint32Attr(bpfFlags))\n\t}\n\n\treq.AddData(options)\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// FilterList gets a list of filters in the system.\n// Equivalent to: `tc filter show`.\n// Generally returns nothing if link and parent are not specified.\nfunc FilterList(link Link, parent uint32) ([]Filter, error) {\n\treturn pkgHandle.FilterList(link, parent)\n}\n\n// FilterList gets a list of filters in the system.\n// Equivalent to: `tc filter show`.\n// Generally returns nothing if link and parent are not specified.\nfunc (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETTFILTER, syscall.NLM_F_DUMP)\n\tmsg := &nl.TcMsg{\n\t\tFamily: nl.FAMILY_ALL,\n\t\tParent: parent,\n\t}\n\tif link != nil {\n\t\tbase := link.Attrs()\n\t\th.ensureIndex(base)\n\t\tmsg.Ifindex = int32(base.Index)\n\t}\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWTFILTER)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Filter\n\tfor _, m := range msgs {\n\t\tmsg := nl.DeserializeTcMsg(m)\n\n\t\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tbase := FilterAttrs{\n\t\t\tLinkIndex: int(msg.Ifindex),\n\t\t\tHandle:    msg.Handle,\n\t\t\tParent:    msg.Parent,\n\t\t}\n\t\tbase.Priority, base.Protocol = MajorMinor(msg.Info)\n\t\tbase.Protocol = nl.Swap16(base.Protocol)\n\n\t\tvar filter Filter\n\t\tfilterType := \"\"\n\t\tdetailed := false\n\t\tfor _, attr := range attrs {\n\t\t\tswitch attr.Attr.Type {\n\t\t\tcase nl.TCA_KIND:\n\t\t\t\tfilterType = string(attr.Value[:len(attr.Value)-1])\n\t\t\t\tswitch filterType {\n\t\t\t\tcase \"u32\":\n\t\t\t\t\tfilter = &U32{}\n\t\t\t\tcase \"fw\":\n\t\t\t\t\tfilter = &Fw{}\n\t\t\t\tcase \"bpf\":\n\t\t\t\t\tfilter = &BpfFilter{}\n\t\t\t\tdefault:\n\t\t\t\t\tfilter = &GenericFilter{FilterType: filterType}\n\t\t\t\t}\n\t\t\tcase nl.TCA_OPTIONS:\n\t\t\t\tdata, err := nl.ParseRouteAttr(attr.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tswitch filterType {\n\t\t\t\tcase \"u32\":\n\t\t\t\t\tdetailed, err = parseU32Data(filter, data)\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\tcase \"fw\":\n\t\t\t\t\tdetailed, err = parseFwData(filter, data)\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\tcase \"bpf\":\n\t\t\t\t\tdetailed, err = parseBpfData(filter, data)\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\tdefault:\n\t\t\t\t\tdetailed = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// only return the detailed version of the filter\n\t\tif detailed {\n\t\t\t*filter.Attrs() = base\n\t\t\tres = append(res, filter)\n\t\t}\n\t}\n\n\treturn res, nil\n}\n\nfunc toTcGen(attrs *ActionAttrs, tcgen *nl.TcGen) {\n\ttcgen.Index = uint32(attrs.Index)\n\ttcgen.Capab = uint32(attrs.Capab)\n\ttcgen.Action = int32(attrs.Action)\n\ttcgen.Refcnt = int32(attrs.Refcnt)\n\ttcgen.Bindcnt = int32(attrs.Bindcnt)\n}\n\nfunc toAttrs(tcgen *nl.TcGen, attrs *ActionAttrs) {\n\tattrs.Index = int(tcgen.Index)\n\tattrs.Capab = int(tcgen.Capab)\n\tattrs.Action = TcAct(tcgen.Action)\n\tattrs.Refcnt = int(tcgen.Refcnt)\n\tattrs.Bindcnt = int(tcgen.Bindcnt)\n}\n\nfunc EncodeActions(attr *nl.RtAttr, actions []Action) error {\n\ttabIndex := int(nl.TCA_ACT_TAB)\n\n\tfor _, action := range actions {\n\t\tswitch action := action.(type) {\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown action type %s\", action.Type())\n\t\tcase *MirredAction:\n\t\t\ttable := nl.NewRtAttrChild(attr, tabIndex, nil)\n\t\t\ttabIndex++\n\t\t\tnl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated(\"mirred\"))\n\t\t\taopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)\n\t\t\tmirred := nl.TcMirred{\n\t\t\t\tEaction: int32(action.MirredAction),\n\t\t\t\tIfindex: uint32(action.Ifindex),\n\t\t\t}\n\t\t\ttoTcGen(action.Attrs(), &mirred.TcGen)\n\t\t\tnl.NewRtAttrChild(aopts, nl.TCA_MIRRED_PARMS, mirred.Serialize())\n\t\tcase *BpfAction:\n\t\t\ttable := nl.NewRtAttrChild(attr, tabIndex, nil)\n\t\t\ttabIndex++\n\t\t\tnl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated(\"bpf\"))\n\t\t\taopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)\n\t\t\tgen := nl.TcGen{}\n\t\t\ttoTcGen(action.Attrs(), &gen)\n\t\t\tnl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_PARMS, gen.Serialize())\n\t\t\tnl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_FD, nl.Uint32Attr(uint32(action.Fd)))\n\t\t\tnl.NewRtAttrChild(aopts, nl.TCA_ACT_BPF_NAME, nl.ZeroTerminated(action.Name))\n\t\tcase *GenericAction:\n\t\t\ttable := nl.NewRtAttrChild(attr, tabIndex, nil)\n\t\t\ttabIndex++\n\t\t\tnl.NewRtAttrChild(table, nl.TCA_ACT_KIND, nl.ZeroTerminated(\"gact\"))\n\t\t\taopts := nl.NewRtAttrChild(table, nl.TCA_ACT_OPTIONS, nil)\n\t\t\tgen := nl.TcGen{}\n\t\t\ttoTcGen(action.Attrs(), &gen)\n\t\t\tnl.NewRtAttrChild(aopts, nl.TCA_GACT_PARMS, gen.Serialize())\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {\n\tvar actions []Action\n\tfor _, table := range tables {\n\t\tvar action Action\n\t\tvar actionType string\n\t\taattrs, err := nl.ParseRouteAttr(table.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tnextattr:\n\t\tfor _, aattr := range aattrs {\n\t\t\tswitch aattr.Attr.Type {\n\t\t\tcase nl.TCA_KIND:\n\t\t\t\tactionType = string(aattr.Value[:len(aattr.Value)-1])\n\t\t\t\t// only parse if the action is mirred or bpf\n\t\t\t\tswitch actionType {\n\t\t\t\tcase \"mirred\":\n\t\t\t\t\taction = &MirredAction{}\n\t\t\t\tcase \"bpf\":\n\t\t\t\t\taction = &BpfAction{}\n\t\t\t\tcase \"gact\":\n\t\t\t\t\taction = &GenericAction{}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak nextattr\n\t\t\t\t}\n\t\t\tcase nl.TCA_OPTIONS:\n\t\t\t\tadata, err := nl.ParseRouteAttr(aattr.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, adatum := range adata {\n\t\t\t\t\tswitch actionType {\n\t\t\t\t\tcase \"mirred\":\n\t\t\t\t\t\tswitch adatum.Attr.Type {\n\t\t\t\t\t\tcase nl.TCA_MIRRED_PARMS:\n\t\t\t\t\t\t\tmirred := *nl.DeserializeTcMirred(adatum.Value)\n\t\t\t\t\t\t\ttoAttrs(&mirred.TcGen, action.Attrs())\n\t\t\t\t\t\t\taction.(*MirredAction).ActionAttrs = ActionAttrs{}\n\t\t\t\t\t\t\taction.(*MirredAction).Ifindex = int(mirred.Ifindex)\n\t\t\t\t\t\t\taction.(*MirredAction).MirredAction = MirredAct(mirred.Eaction)\n\t\t\t\t\t\t}\n\t\t\t\t\tcase \"bpf\":\n\t\t\t\t\t\tswitch adatum.Attr.Type {\n\t\t\t\t\t\tcase nl.TCA_ACT_BPF_PARMS:\n\t\t\t\t\t\t\tgen := *nl.DeserializeTcGen(adatum.Value)\n\t\t\t\t\t\t\ttoAttrs(&gen, action.Attrs())\n\t\t\t\t\t\tcase nl.TCA_ACT_BPF_FD:\n\t\t\t\t\t\t\taction.(*BpfAction).Fd = int(native.Uint32(adatum.Value[0:4]))\n\t\t\t\t\t\tcase nl.TCA_ACT_BPF_NAME:\n\t\t\t\t\t\t\taction.(*BpfAction).Name = string(adatum.Value[:len(adatum.Value)-1])\n\t\t\t\t\t\t}\n\t\t\t\t\tcase \"gact\":\n\t\t\t\t\t\tswitch adatum.Attr.Type {\n\t\t\t\t\t\tcase nl.TCA_GACT_PARMS:\n\t\t\t\t\t\t\tgen := *nl.DeserializeTcGen(adatum.Value)\n\t\t\t\t\t\t\ttoAttrs(&gen, action.Attrs())\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\t\tactions = append(actions, action)\n\t}\n\treturn actions, nil\n}\n\nfunc parseU32Data(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error) {\n\tnative = nl.NativeEndian()\n\tu32 := filter.(*U32)\n\tdetailed := false\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_U32_SEL:\n\t\t\tdetailed = true\n\t\t\tsel := nl.DeserializeTcU32Sel(datum.Value)\n\t\t\tu32.Sel = (*TcU32Sel)(unsafe.Pointer(sel))\n\t\t\tif native != networkOrder {\n\t\t\t\t// Handle the endianness of attributes\n\t\t\t\tu32.Sel.Offmask = native.Uint16(htons(sel.Offmask))\n\t\t\t\tu32.Sel.Hmask = native.Uint32(htonl(sel.Hmask))\n\t\t\t\tfor i, key := range u32.Sel.Keys {\n\t\t\t\t\tu32.Sel.Keys[i].Mask = native.Uint32(htonl(key.Mask))\n\t\t\t\t\tu32.Sel.Keys[i].Val = native.Uint32(htonl(key.Val))\n\t\t\t\t}\n\t\t\t}\n\t\tcase nl.TCA_U32_ACT:\n\t\t\ttables, err := nl.ParseRouteAttr(datum.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn detailed, err\n\t\t\t}\n\t\t\tu32.Actions, err = parseActions(tables)\n\t\t\tif err != nil {\n\t\t\t\treturn detailed, err\n\t\t\t}\n\t\t\tfor _, action := range u32.Actions {\n\t\t\t\tif action, ok := action.(*MirredAction); ok {\n\t\t\t\t\tu32.RedirIndex = int(action.Ifindex)\n\t\t\t\t}\n\t\t\t}\n\t\tcase nl.TCA_U32_CLASSID:\n\t\t\tu32.ClassId = native.Uint32(datum.Value)\n\t\t}\n\t}\n\treturn detailed, nil\n}\n\nfunc parseFwData(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error) {\n\tnative = nl.NativeEndian()\n\tfw := filter.(*Fw)\n\tdetailed := true\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_FW_MASK:\n\t\t\tfw.Mask = native.Uint32(datum.Value[0:4])\n\t\tcase nl.TCA_FW_CLASSID:\n\t\t\tfw.ClassId = native.Uint32(datum.Value[0:4])\n\t\tcase nl.TCA_FW_INDEV:\n\t\t\tfw.InDev = string(datum.Value[:len(datum.Value)-1])\n\t\tcase nl.TCA_FW_POLICE:\n\t\t\tadata, _ := nl.ParseRouteAttr(datum.Value)\n\t\t\tfor _, aattr := range adata {\n\t\t\t\tswitch aattr.Attr.Type {\n\t\t\t\tcase nl.TCA_POLICE_TBF:\n\t\t\t\t\tfw.Police = *nl.DeserializeTcPolice(aattr.Value)\n\t\t\t\tcase nl.TCA_POLICE_RATE:\n\t\t\t\t\tfw.Rtab = DeserializeRtab(aattr.Value)\n\t\t\t\tcase nl.TCA_POLICE_PEAKRATE:\n\t\t\t\t\tfw.Ptab = DeserializeRtab(aattr.Value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn detailed, nil\n}\n\nfunc parseBpfData(filter Filter, data []syscall.NetlinkRouteAttr) (bool, error) {\n\tnative = nl.NativeEndian()\n\tbpf := filter.(*BpfFilter)\n\tdetailed := true\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_BPF_FD:\n\t\t\tbpf.Fd = int(native.Uint32(datum.Value[0:4]))\n\t\tcase nl.TCA_BPF_NAME:\n\t\t\tbpf.Name = string(datum.Value[:len(datum.Value)-1])\n\t\tcase nl.TCA_BPF_CLASSID:\n\t\t\tbpf.ClassId = native.Uint32(datum.Value[0:4])\n\t\tcase nl.TCA_BPF_FLAGS:\n\t\t\tflags := native.Uint32(datum.Value[0:4])\n\t\t\tif (flags & nl.TCA_BPF_FLAG_ACT_DIRECT) != 0 {\n\t\t\t\tbpf.DirectAction = true\n\t\t\t}\n\t\t}\n\t}\n\treturn detailed, nil\n}\n\nfunc AlignToAtm(size uint) uint {\n\tvar linksize, cells int\n\tcells = int(size / nl.ATM_CELL_PAYLOAD)\n\tif (size % nl.ATM_CELL_PAYLOAD) > 0 {\n\t\tcells++\n\t}\n\tlinksize = cells * nl.ATM_CELL_SIZE\n\treturn uint(linksize)\n}\n\nfunc AdjustSize(sz uint, mpu uint, linklayer int) uint {\n\tif sz < mpu {\n\t\tsz = mpu\n\t}\n\tswitch linklayer {\n\tcase nl.LINKLAYER_ATM:\n\t\treturn AlignToAtm(sz)\n\tdefault:\n\t\treturn sz\n\t}\n}\n\nfunc CalcRtable(rate *nl.TcRateSpec, rtab [256]uint32, cellLog int, mtu uint32, linklayer int) int {\n\tbps := rate.Rate\n\tmpu := rate.Mpu\n\tvar sz uint\n\tif mtu == 0 {\n\t\tmtu = 2047\n\t}\n\tif cellLog < 0 {\n\t\tcellLog = 0\n\t\tfor (mtu >> uint(cellLog)) > 255 {\n\t\t\tcellLog++\n\t\t}\n\t}\n\tfor i := 0; i < 256; i++ {\n\t\tsz = AdjustSize(uint((i+1)<<uint32(cellLog)), uint(mpu), linklayer)\n\t\trtab[i] = uint32(Xmittime(uint64(bps), uint32(sz)))\n\t}\n\trate.CellAlign = -1\n\trate.CellLog = uint8(cellLog)\n\trate.Linklayer = uint8(linklayer & nl.TC_LINKLAYER_MASK)\n\treturn cellLog\n}\n\nfunc DeserializeRtab(b []byte) [256]uint32 {\n\tvar rtab [256]uint32\n\tnative := nl.NativeEndian()\n\tr := bytes.NewReader(b)\n\t_ = binary.Read(r, native, &rtab)\n\treturn rtab\n}\n\nfunc SerializeRtab(rtab [256]uint32) []byte {\n\tnative := nl.NativeEndian()\n\tvar w bytes.Buffer\n\t_ = binary.Write(&w, native, rtab)\n\treturn w.Bytes()\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/genetlink_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\ntype GenlOp struct {\n\tID    uint32\n\tFlags uint32\n}\n\ntype GenlMulticastGroup struct {\n\tID   uint32\n\tName string\n}\n\ntype GenlFamily struct {\n\tID      uint16\n\tHdrSize uint32\n\tName    string\n\tVersion uint32\n\tMaxAttr uint32\n\tOps     []GenlOp\n\tGroups  []GenlMulticastGroup\n}\n\nfunc parseOps(b []byte) ([]GenlOp, error) {\n\tattrs, err := nl.ParseRouteAttr(b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tops := make([]GenlOp, 0, len(attrs))\n\tfor _, a := range attrs {\n\t\tnattrs, err := nl.ParseRouteAttr(a.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvar op GenlOp\n\t\tfor _, na := range nattrs {\n\t\t\tswitch na.Attr.Type {\n\t\t\tcase nl.GENL_CTRL_ATTR_OP_ID:\n\t\t\t\top.ID = native.Uint32(na.Value)\n\t\t\tcase nl.GENL_CTRL_ATTR_OP_FLAGS:\n\t\t\t\top.Flags = native.Uint32(na.Value)\n\t\t\t}\n\t\t}\n\t\tops = append(ops, op)\n\t}\n\treturn ops, nil\n}\n\nfunc parseMulticastGroups(b []byte) ([]GenlMulticastGroup, error) {\n\tattrs, err := nl.ParseRouteAttr(b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgroups := make([]GenlMulticastGroup, 0, len(attrs))\n\tfor _, a := range attrs {\n\t\tnattrs, err := nl.ParseRouteAttr(a.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvar g GenlMulticastGroup\n\t\tfor _, na := range nattrs {\n\t\t\tswitch na.Attr.Type {\n\t\t\tcase nl.GENL_CTRL_ATTR_MCAST_GRP_NAME:\n\t\t\t\tg.Name = nl.BytesToString(na.Value)\n\t\t\tcase nl.GENL_CTRL_ATTR_MCAST_GRP_ID:\n\t\t\t\tg.ID = native.Uint32(na.Value)\n\t\t\t}\n\t\t}\n\t\tgroups = append(groups, g)\n\t}\n\treturn groups, nil\n}\n\nfunc (f *GenlFamily) parseAttributes(attrs []syscall.NetlinkRouteAttr) error {\n\tfor _, a := range attrs {\n\t\tswitch a.Attr.Type {\n\t\tcase nl.GENL_CTRL_ATTR_FAMILY_NAME:\n\t\t\tf.Name = nl.BytesToString(a.Value)\n\t\tcase nl.GENL_CTRL_ATTR_FAMILY_ID:\n\t\t\tf.ID = native.Uint16(a.Value)\n\t\tcase nl.GENL_CTRL_ATTR_VERSION:\n\t\t\tf.Version = native.Uint32(a.Value)\n\t\tcase nl.GENL_CTRL_ATTR_HDRSIZE:\n\t\t\tf.HdrSize = native.Uint32(a.Value)\n\t\tcase nl.GENL_CTRL_ATTR_MAXATTR:\n\t\t\tf.MaxAttr = native.Uint32(a.Value)\n\t\tcase nl.GENL_CTRL_ATTR_OPS:\n\t\t\tops, err := parseOps(a.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tf.Ops = ops\n\t\tcase nl.GENL_CTRL_ATTR_MCAST_GROUPS:\n\t\t\tgroups, err := parseMulticastGroups(a.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tf.Groups = groups\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc parseFamilies(msgs [][]byte) ([]*GenlFamily, error) {\n\tfamilies := make([]*GenlFamily, 0, len(msgs))\n\tfor _, m := range msgs {\n\t\tattrs, err := nl.ParseRouteAttr(m[nl.SizeofGenlmsg:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfamily := &GenlFamily{}\n\t\tif err := family.parseAttributes(attrs); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tfamilies = append(families, family)\n\t}\n\treturn families, nil\n}\n\nfunc (h *Handle) GenlFamilyList() ([]*GenlFamily, error) {\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_CTRL_CMD_GETFAMILY,\n\t\tVersion: nl.GENL_CTRL_VERSION,\n\t}\n\treq := h.newNetlinkRequest(nl.GENL_ID_CTRL, syscall.NLM_F_DUMP)\n\treq.AddData(msg)\n\tmsgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parseFamilies(msgs)\n}\n\nfunc GenlFamilyList() ([]*GenlFamily, error) {\n\treturn pkgHandle.GenlFamilyList()\n}\n\nfunc (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error) {\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_CTRL_CMD_GETFAMILY,\n\t\tVersion: nl.GENL_CTRL_VERSION,\n\t}\n\treq := h.newNetlinkRequest(nl.GENL_ID_CTRL, 0)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_CTRL_ATTR_FAMILY_NAME, nl.ZeroTerminated(name)))\n\tmsgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfamilies, err := parseFamilies(msgs)\n\tif len(families) != 1 {\n\t\treturn nil, fmt.Errorf(\"invalid response for GENL_CTRL_CMD_GETFAMILY\")\n\t}\n\treturn families[0], nil\n}\n\nfunc GenlFamilyGet(name string) (*GenlFamily, error) {\n\treturn pkgHandle.GenlFamilyGet(name)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/genetlink_unspecified.go",
    "content": "// +build !linux\n\npackage netlink\n\ntype GenlOp struct{}\n\ntype GenlMulticastGroup struct{}\n\ntype GenlFamily struct{}\n\nfunc (h *Handle) GenlFamilyList() ([]*GenlFamily, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc GenlFamilyList() ([]*GenlFamily, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc GenlFamilyGet(name string) (*GenlFamily, error) {\n\treturn nil, ErrNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/gtp_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\ntype PDP struct {\n\tVersion     uint32\n\tTID         uint64\n\tPeerAddress net.IP\n\tMSAddress   net.IP\n\tFlow        uint16\n\tNetNSFD     uint32\n\tITEI        uint32\n\tOTEI        uint32\n}\n\nfunc (pdp *PDP) String() string {\n\telems := []string{}\n\telems = append(elems, fmt.Sprintf(\"Version: %d\", pdp.Version))\n\tif pdp.Version == 0 {\n\t\telems = append(elems, fmt.Sprintf(\"TID: %d\", pdp.TID))\n\t} else if pdp.Version == 1 {\n\t\telems = append(elems, fmt.Sprintf(\"TEI: %d/%d\", pdp.ITEI, pdp.OTEI))\n\t}\n\telems = append(elems, fmt.Sprintf(\"MS-Address: %s\", pdp.MSAddress))\n\telems = append(elems, fmt.Sprintf(\"Peer-Address: %s\", pdp.PeerAddress))\n\treturn fmt.Sprintf(\"{%s}\", strings.Join(elems, \" \"))\n}\n\nfunc (p *PDP) parseAttributes(attrs []syscall.NetlinkRouteAttr) error {\n\tfor _, a := range attrs {\n\t\tswitch a.Attr.Type {\n\t\tcase nl.GENL_GTP_ATTR_VERSION:\n\t\t\tp.Version = native.Uint32(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_TID:\n\t\t\tp.TID = native.Uint64(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_PEER_ADDRESS:\n\t\t\tp.PeerAddress = net.IP(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_MS_ADDRESS:\n\t\t\tp.MSAddress = net.IP(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_FLOW:\n\t\t\tp.Flow = native.Uint16(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_NET_NS_FD:\n\t\t\tp.NetNSFD = native.Uint32(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_I_TEI:\n\t\t\tp.ITEI = native.Uint32(a.Value)\n\t\tcase nl.GENL_GTP_ATTR_O_TEI:\n\t\t\tp.OTEI = native.Uint32(a.Value)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc parsePDP(msgs [][]byte) ([]*PDP, error) {\n\tpdps := make([]*PDP, 0, len(msgs))\n\tfor _, m := range msgs {\n\t\tattrs, err := nl.ParseRouteAttr(m[nl.SizeofGenlmsg:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpdp := &PDP{}\n\t\tif err := pdp.parseAttributes(attrs); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpdps = append(pdps, pdp)\n\t}\n\treturn pdps, nil\n}\n\nfunc (h *Handle) GTPPDPList() ([]*PDP, error) {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_GETPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_DUMP)\n\treq.AddData(msg)\n\tmsgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn parsePDP(msgs)\n}\n\nfunc GTPPDPList() ([]*PDP, error) {\n\treturn pkgHandle.GTPPDPList()\n}\n\nfunc gtpPDPGet(req *nl.NetlinkRequest) (*PDP, error) {\n\tmsgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpdps, err := parsePDP(msgs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(pdps) != 1 {\n\t\treturn nil, fmt.Errorf(\"invalid reqponse for GENL_GTP_CMD_GETPDP\")\n\t}\n\treturn pdps[0], nil\n}\n\nfunc (h *Handle) GTPPDPByTID(link Link, tid int) (*PDP, error) {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_GETPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), 0)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(0)))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_TID, nl.Uint64Attr(uint64(tid))))\n\treturn gtpPDPGet(req)\n}\n\nfunc GTPPDPByTID(link Link, tid int) (*PDP, error) {\n\treturn pkgHandle.GTPPDPByTID(link, tid)\n}\n\nfunc (h *Handle) GTPPDPByITEI(link Link, itei int) (*PDP, error) {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_GETPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), 0)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(1)))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_I_TEI, nl.Uint32Attr(uint32(itei))))\n\treturn gtpPDPGet(req)\n}\n\nfunc GTPPDPByITEI(link Link, itei int) (*PDP, error) {\n\treturn pkgHandle.GTPPDPByITEI(link, itei)\n}\n\nfunc (h *Handle) GTPPDPByMSAddress(link Link, addr net.IP) (*PDP, error) {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_GETPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), 0)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(0)))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_MS_ADDRESS, []byte(addr.To4())))\n\treturn gtpPDPGet(req)\n}\n\nfunc GTPPDPByMSAddress(link Link, addr net.IP) (*PDP, error) {\n\treturn pkgHandle.GTPPDPByMSAddress(link, addr)\n}\n\nfunc (h *Handle) GTPPDPAdd(link Link, pdp *PDP) error {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_NEWPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(pdp.Version)))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_PEER_ADDRESS, []byte(pdp.PeerAddress.To4())))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_MS_ADDRESS, []byte(pdp.MSAddress.To4())))\n\n\tswitch pdp.Version {\n\tcase 0:\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_TID, nl.Uint64Attr(pdp.TID)))\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_FLOW, nl.Uint16Attr(pdp.Flow)))\n\tcase 1:\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_I_TEI, nl.Uint32Attr(pdp.ITEI)))\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_O_TEI, nl.Uint32Attr(pdp.OTEI)))\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported GTP version: %d\", pdp.Version)\n\t}\n\t_, err = req.Execute(syscall.NETLINK_GENERIC, 0)\n\treturn err\n}\n\nfunc GTPPDPAdd(link Link, pdp *PDP) error {\n\treturn pkgHandle.GTPPDPAdd(link, pdp)\n}\n\nfunc (h *Handle) GTPPDPDel(link Link, pdp *PDP) error {\n\tf, err := h.GenlFamilyGet(nl.GENL_GTP_NAME)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmsg := &nl.Genlmsg{\n\t\tCommand: nl.GENL_GTP_CMD_DELPDP,\n\t\tVersion: nl.GENL_GTP_VERSION,\n\t}\n\treq := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\treq.AddData(msg)\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(pdp.Version)))\n\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))\n\n\tswitch pdp.Version {\n\tcase 0:\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_TID, nl.Uint64Attr(pdp.TID)))\n\tcase 1:\n\t\treq.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_I_TEI, nl.Uint32Attr(pdp.ITEI)))\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported GTP version: %d\", pdp.Version)\n\t}\n\t_, err = req.Execute(syscall.NETLINK_GENERIC, 0)\n\treturn err\n}\n\nfunc GTPPDPDel(link Link, pdp *PDP) error {\n\treturn pkgHandle.GTPPDPDel(link, pdp)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/handle_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n\t\"github.com/vishvananda/netns\"\n)\n\n// Empty handle used by the netlink package methods\nvar pkgHandle = &Handle{}\n\n// Handle is an handle for the netlink requests on a\n// specific network namespace. All the requests on the\n// same netlink family share the same netlink socket,\n// which gets released when the handle is deleted.\ntype Handle struct {\n\tsockets      map[int]*nl.SocketHandle\n\tlookupByDump bool\n}\n\n// SupportsNetlinkFamily reports whether the passed netlink family is supported by this Handle\nfunc (h *Handle) SupportsNetlinkFamily(nlFamily int) bool {\n\t_, ok := h.sockets[nlFamily]\n\treturn ok\n}\n\n// NewHandle returns a netlink handle on the current network namespace.\n// Caller may specify the netlink families the handle should support.\n// If no families are specified, all the families the netlink package\n// supports will be automatically added.\nfunc NewHandle(nlFamilies ...int) (*Handle, error) {\n\treturn newHandle(netns.None(), netns.None(), nlFamilies...)\n}\n\n// SetSocketTimeout sets the send and receive timeout for each socket in the\n// netlink handle. Although the socket timeout has granularity of one\n// microsecond, the effective granularity is floored by the kernel timer tick,\n// which default value is four milliseconds.\nfunc (h *Handle) SetSocketTimeout(to time.Duration) error {\n\tif to < time.Microsecond {\n\t\treturn fmt.Errorf(\"invalid timeout, minimul value is %s\", time.Microsecond)\n\t}\n\ttv := syscall.NsecToTimeval(to.Nanoseconds())\n\tfor _, sh := range h.sockets {\n\t\tfd := sh.Socket.GetFd()\n\t\terr := syscall.SetsockoptTimeval(fd, syscall.SOL_SOCKET, syscall.SO_RCVTIMEO, &tv)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = syscall.SetsockoptTimeval(fd, syscall.SOL_SOCKET, syscall.SO_SNDTIMEO, &tv)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// NewHandle returns a netlink handle on the network namespace\n// specified by ns. If ns=netns.None(), current network namespace\n// will be assumed\nfunc NewHandleAt(ns netns.NsHandle, nlFamilies ...int) (*Handle, error) {\n\treturn newHandle(ns, netns.None(), nlFamilies...)\n}\n\n// NewHandleAtFrom works as NewHandle but allows client to specify the\n// new and the origin netns Handle.\nfunc NewHandleAtFrom(newNs, curNs netns.NsHandle) (*Handle, error) {\n\treturn newHandle(newNs, curNs)\n}\n\nfunc newHandle(newNs, curNs netns.NsHandle, nlFamilies ...int) (*Handle, error) {\n\th := &Handle{sockets: map[int]*nl.SocketHandle{}}\n\tfams := nl.SupportedNlFamilies\n\tif len(nlFamilies) != 0 {\n\t\tfams = nlFamilies\n\t}\n\tfor _, f := range fams {\n\t\ts, err := nl.GetNetlinkSocketAt(newNs, curNs, f)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\th.sockets[f] = &nl.SocketHandle{Socket: s}\n\t}\n\treturn h, nil\n}\n\n// Delete releases the resources allocated to this handle\nfunc (h *Handle) Delete() {\n\tfor _, sh := range h.sockets {\n\t\tsh.Close()\n\t}\n\th.sockets = nil\n}\n\nfunc (h *Handle) newNetlinkRequest(proto, flags int) *nl.NetlinkRequest {\n\t// Do this so that package API still use nl package variable nextSeqNr\n\tif h.sockets == nil {\n\t\treturn nl.NewNetlinkRequest(proto, flags)\n\t}\n\treturn &nl.NetlinkRequest{\n\t\tNlMsghdr: syscall.NlMsghdr{\n\t\t\tLen:   uint32(syscall.SizeofNlMsghdr),\n\t\t\tType:  uint16(proto),\n\t\t\tFlags: syscall.NLM_F_REQUEST | uint16(flags),\n\t\t},\n\t\tSockets: h.sockets,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/handle_unspecified.go",
    "content": "// +build !linux\n\npackage netlink\n\nimport (\n\t\"net\"\n\t\"time\"\n\n\t\"github.com/vishvananda/netns\"\n)\n\ntype Handle struct{}\n\nfunc NewHandle(nlFamilies ...int) (*Handle, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc NewHandleAt(ns netns.NsHandle, nlFamilies ...int) (*Handle, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc NewHandleAtFrom(newNs, curNs netns.NsHandle) (*Handle, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) Delete() {}\n\nfunc (h *Handle) SupportsNetlinkFamily(nlFamily int) bool {\n\treturn false\n}\n\nfunc (h *Handle) SetSocketTimeout(to time.Duration) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) SetPromiscOn(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) SetPromiscOff(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetUp(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetDown(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetMTU(link Link, mtu int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetName(link Link, name string) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetAlias(link Link, name string) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetVfVlan(link Link, vf, vlan int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetVfTxRate(link Link, vf, rate int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetMaster(link Link, master *Bridge) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetNoMaster(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetMasterByIndex(link Link, masterIndex int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetNsPid(link Link, nspid int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetNsFd(link Link, fd int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkAdd(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkDel(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkByName(name string) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) LinkByAlias(alias string) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) LinkByIndex(index int) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) LinkList() ([]Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetHairpin(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetGuard(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetFastLeave(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetLearning(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetRootBlock(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) LinkSetFlood(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) setProtinfoAttr(link Link, mode bool, attr int) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) AddrAdd(link Link, addr *Addr) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) AddrDel(link Link, addr *Addr) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) AddrList(link Link, family int) ([]Addr, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) ClassDel(class Class) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) ClassChange(class Class) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) ClassReplace(class Class) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) ClassAdd(class Class) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) FilterDel(filter Filter) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) FilterAdd(filter Filter) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) NeighAdd(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) NeighSet(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) NeighAppend(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) NeighDel(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc (h *Handle) NeighList(linkIndex, family int) ([]Neigh, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error) {\n\treturn nil, ErrNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/link.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// Link represents a link device from netlink. Shared link attributes\n// like name may be retrieved using the Attrs() method. Unique data\n// can be retrieved by casting the object to the proper type.\ntype Link interface {\n\tAttrs() *LinkAttrs\n\tType() string\n}\n\ntype (\n\tNsPid int\n\tNsFd  int\n)\n\n// LinkAttrs represents data shared by most link types\ntype LinkAttrs struct {\n\tIndex        int\n\tMTU          int\n\tTxQLen       int // Transmit Queue Length\n\tName         string\n\tHardwareAddr net.HardwareAddr\n\tFlags        net.Flags\n\tRawFlags     uint32\n\tParentIndex  int         // index of the parent link device\n\tMasterIndex  int         // must be the index of a bridge\n\tNamespace    interface{} // nil | NsPid | NsFd\n\tAlias        string\n\tStatistics   *LinkStatistics\n\tPromisc      int\n\tXdp          *LinkXdp\n\tEncapType    string\n\tProtinfo     *Protinfo\n\tOperState    LinkOperState\n}\n\n// LinkOperState represents the values of the IFLA_OPERSTATE link\n// attribute, which contains the RFC2863 state of the interface.\ntype LinkOperState uint8\n\nconst (\n\tOperUnknown        = iota // Status can't be determined.\n\tOperNotPresent            // Some component is missing.\n\tOperDown                  // Down.\n\tOperLowerLayerDown        // Down due to state of lower layer.\n\tOperTesting               // In some test mode.\n\tOperDormant               // Not up but pending an external event.\n\tOperUp                    // Up, ready to send packets.\n)\n\nfunc (s LinkOperState) String() string {\n\tswitch s {\n\tcase OperNotPresent:\n\t\treturn \"not-present\"\n\tcase OperDown:\n\t\treturn \"down\"\n\tcase OperLowerLayerDown:\n\t\treturn \"lower-layer-down\"\n\tcase OperTesting:\n\t\treturn \"testing\"\n\tcase OperDormant:\n\t\treturn \"dormant\"\n\tcase OperUp:\n\t\treturn \"up\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\n// NewLinkAttrs returns LinkAttrs structure filled with default values\nfunc NewLinkAttrs() LinkAttrs {\n\treturn LinkAttrs{\n\t\tTxQLen: -1,\n\t}\n}\n\ntype LinkStatistics LinkStatistics64\n\n/*\nRef: struct rtnl_link_stats {...}\n*/\ntype LinkStatistics32 struct {\n\tRxPackets         uint32\n\tTxPackets         uint32\n\tRxBytes           uint32\n\tTxBytes           uint32\n\tRxErrors          uint32\n\tTxErrors          uint32\n\tRxDropped         uint32\n\tTxDropped         uint32\n\tMulticast         uint32\n\tCollisions        uint32\n\tRxLengthErrors    uint32\n\tRxOverErrors      uint32\n\tRxCrcErrors       uint32\n\tRxFrameErrors     uint32\n\tRxFifoErrors      uint32\n\tRxMissedErrors    uint32\n\tTxAbortedErrors   uint32\n\tTxCarrierErrors   uint32\n\tTxFifoErrors      uint32\n\tTxHeartbeatErrors uint32\n\tTxWindowErrors    uint32\n\tRxCompressed      uint32\n\tTxCompressed      uint32\n}\n\nfunc (s32 LinkStatistics32) to64() *LinkStatistics64 {\n\treturn &LinkStatistics64{\n\t\tRxPackets:         uint64(s32.RxPackets),\n\t\tTxPackets:         uint64(s32.TxPackets),\n\t\tRxBytes:           uint64(s32.RxBytes),\n\t\tTxBytes:           uint64(s32.TxBytes),\n\t\tRxErrors:          uint64(s32.RxErrors),\n\t\tTxErrors:          uint64(s32.TxErrors),\n\t\tRxDropped:         uint64(s32.RxDropped),\n\t\tTxDropped:         uint64(s32.TxDropped),\n\t\tMulticast:         uint64(s32.Multicast),\n\t\tCollisions:        uint64(s32.Collisions),\n\t\tRxLengthErrors:    uint64(s32.RxLengthErrors),\n\t\tRxOverErrors:      uint64(s32.RxOverErrors),\n\t\tRxCrcErrors:       uint64(s32.RxCrcErrors),\n\t\tRxFrameErrors:     uint64(s32.RxFrameErrors),\n\t\tRxFifoErrors:      uint64(s32.RxFifoErrors),\n\t\tRxMissedErrors:    uint64(s32.RxMissedErrors),\n\t\tTxAbortedErrors:   uint64(s32.TxAbortedErrors),\n\t\tTxCarrierErrors:   uint64(s32.TxCarrierErrors),\n\t\tTxFifoErrors:      uint64(s32.TxFifoErrors),\n\t\tTxHeartbeatErrors: uint64(s32.TxHeartbeatErrors),\n\t\tTxWindowErrors:    uint64(s32.TxWindowErrors),\n\t\tRxCompressed:      uint64(s32.RxCompressed),\n\t\tTxCompressed:      uint64(s32.TxCompressed),\n\t}\n}\n\n/*\nRef: struct rtnl_link_stats64 {...}\n*/\ntype LinkStatistics64 struct {\n\tRxPackets         uint64\n\tTxPackets         uint64\n\tRxBytes           uint64\n\tTxBytes           uint64\n\tRxErrors          uint64\n\tTxErrors          uint64\n\tRxDropped         uint64\n\tTxDropped         uint64\n\tMulticast         uint64\n\tCollisions        uint64\n\tRxLengthErrors    uint64\n\tRxOverErrors      uint64\n\tRxCrcErrors       uint64\n\tRxFrameErrors     uint64\n\tRxFifoErrors      uint64\n\tRxMissedErrors    uint64\n\tTxAbortedErrors   uint64\n\tTxCarrierErrors   uint64\n\tTxFifoErrors      uint64\n\tTxHeartbeatErrors uint64\n\tTxWindowErrors    uint64\n\tRxCompressed      uint64\n\tTxCompressed      uint64\n}\n\ntype LinkXdp struct {\n\tFd       int\n\tAttached bool\n\tFlags    uint32\n\tProgId   uint32\n}\n\n// Device links cannot be created via netlink. These links\n// are links created by udev like 'lo' and 'etho0'\ntype Device struct {\n\tLinkAttrs\n}\n\nfunc (device *Device) Attrs() *LinkAttrs {\n\treturn &device.LinkAttrs\n}\n\nfunc (device *Device) Type() string {\n\treturn \"device\"\n}\n\n// Dummy links are dummy ethernet devices\ntype Dummy struct {\n\tLinkAttrs\n}\n\nfunc (dummy *Dummy) Attrs() *LinkAttrs {\n\treturn &dummy.LinkAttrs\n}\n\nfunc (dummy *Dummy) Type() string {\n\treturn \"dummy\"\n}\n\n// Ifb links are advanced dummy devices for packet filtering\ntype Ifb struct {\n\tLinkAttrs\n}\n\nfunc (ifb *Ifb) Attrs() *LinkAttrs {\n\treturn &ifb.LinkAttrs\n}\n\nfunc (ifb *Ifb) Type() string {\n\treturn \"ifb\"\n}\n\n// Bridge links are simple linux bridges\ntype Bridge struct {\n\tLinkAttrs\n\tMulticastSnooping *bool\n\tHelloTime         *uint32\n}\n\nfunc (bridge *Bridge) Attrs() *LinkAttrs {\n\treturn &bridge.LinkAttrs\n}\n\nfunc (bridge *Bridge) Type() string {\n\treturn \"bridge\"\n}\n\n// Vlan links have ParentIndex set in their Attrs()\ntype Vlan struct {\n\tLinkAttrs\n\tVlanId int\n}\n\nfunc (vlan *Vlan) Attrs() *LinkAttrs {\n\treturn &vlan.LinkAttrs\n}\n\nfunc (vlan *Vlan) Type() string {\n\treturn \"vlan\"\n}\n\ntype MacvlanMode uint16\n\nconst (\n\tMACVLAN_MODE_DEFAULT MacvlanMode = iota\n\tMACVLAN_MODE_PRIVATE\n\tMACVLAN_MODE_VEPA\n\tMACVLAN_MODE_BRIDGE\n\tMACVLAN_MODE_PASSTHRU\n\tMACVLAN_MODE_SOURCE\n)\n\n// Macvlan links have ParentIndex set in their Attrs()\ntype Macvlan struct {\n\tLinkAttrs\n\tMode MacvlanMode\n}\n\nfunc (macvlan *Macvlan) Attrs() *LinkAttrs {\n\treturn &macvlan.LinkAttrs\n}\n\nfunc (macvlan *Macvlan) Type() string {\n\treturn \"macvlan\"\n}\n\n// Macvtap - macvtap is a virtual interfaces based on macvlan\ntype Macvtap struct {\n\tMacvlan\n}\n\nfunc (macvtap Macvtap) Type() string {\n\treturn \"macvtap\"\n}\n\ntype TuntapMode uint16\ntype TuntapFlag uint16\n\n// Tuntap links created via /dev/tun/tap, but can be destroyed via netlink\ntype Tuntap struct {\n\tLinkAttrs\n\tMode  TuntapMode\n\tFlags TuntapFlag\n}\n\nfunc (tuntap *Tuntap) Attrs() *LinkAttrs {\n\treturn &tuntap.LinkAttrs\n}\n\nfunc (tuntap *Tuntap) Type() string {\n\treturn \"tuntap\"\n}\n\n// Veth devices must specify PeerName on create\ntype Veth struct {\n\tLinkAttrs\n\tPeerName string // veth on create only\n}\n\nfunc (veth *Veth) Attrs() *LinkAttrs {\n\treturn &veth.LinkAttrs\n}\n\nfunc (veth *Veth) Type() string {\n\treturn \"veth\"\n}\n\n// GenericLink links represent types that are not currently understood\n// by this netlink library.\ntype GenericLink struct {\n\tLinkAttrs\n\tLinkType string\n}\n\nfunc (generic *GenericLink) Attrs() *LinkAttrs {\n\treturn &generic.LinkAttrs\n}\n\nfunc (generic *GenericLink) Type() string {\n\treturn generic.LinkType\n}\n\ntype Vxlan struct {\n\tLinkAttrs\n\tVxlanId      int\n\tVtepDevIndex int\n\tSrcAddr      net.IP\n\tGroup        net.IP\n\tTTL          int\n\tTOS          int\n\tLearning     bool\n\tProxy        bool\n\tRSC          bool\n\tL2miss       bool\n\tL3miss       bool\n\tUDPCSum      bool\n\tNoAge        bool\n\tGBP          bool\n\tFlowBased    bool\n\tAge          int\n\tLimit        int\n\tPort         int\n\tPortLow      int\n\tPortHigh     int\n}\n\nfunc (vxlan *Vxlan) Attrs() *LinkAttrs {\n\treturn &vxlan.LinkAttrs\n}\n\nfunc (vxlan *Vxlan) Type() string {\n\treturn \"vxlan\"\n}\n\ntype IPVlanMode uint16\n\nconst (\n\tIPVLAN_MODE_L2 IPVlanMode = iota\n\tIPVLAN_MODE_L3\n\tIPVLAN_MODE_L3S\n\tIPVLAN_MODE_MAX\n)\n\ntype IPVlan struct {\n\tLinkAttrs\n\tMode IPVlanMode\n}\n\nfunc (ipvlan *IPVlan) Attrs() *LinkAttrs {\n\treturn &ipvlan.LinkAttrs\n}\n\nfunc (ipvlan *IPVlan) Type() string {\n\treturn \"ipvlan\"\n}\n\n// BondMode type\ntype BondMode int\n\nfunc (b BondMode) String() string {\n\ts, ok := bondModeToString[b]\n\tif !ok {\n\t\treturn fmt.Sprintf(\"BondMode(%d)\", b)\n\t}\n\treturn s\n}\n\n// StringToBondMode returns bond mode, or uknonw is the s is invalid.\nfunc StringToBondMode(s string) BondMode {\n\tmode, ok := StringToBondModeMap[s]\n\tif !ok {\n\t\treturn BOND_MODE_UNKNOWN\n\t}\n\treturn mode\n}\n\n// Possible BondMode\nconst (\n\tBOND_MODE_BALANCE_RR BondMode = iota\n\tBOND_MODE_ACTIVE_BACKUP\n\tBOND_MODE_BALANCE_XOR\n\tBOND_MODE_BROADCAST\n\tBOND_MODE_802_3AD\n\tBOND_MODE_BALANCE_TLB\n\tBOND_MODE_BALANCE_ALB\n\tBOND_MODE_UNKNOWN\n)\n\nvar bondModeToString = map[BondMode]string{\n\tBOND_MODE_BALANCE_RR:    \"balance-rr\",\n\tBOND_MODE_ACTIVE_BACKUP: \"active-backup\",\n\tBOND_MODE_BALANCE_XOR:   \"balance-xor\",\n\tBOND_MODE_BROADCAST:     \"broadcast\",\n\tBOND_MODE_802_3AD:       \"802.3ad\",\n\tBOND_MODE_BALANCE_TLB:   \"balance-tlb\",\n\tBOND_MODE_BALANCE_ALB:   \"balance-alb\",\n}\nvar StringToBondModeMap = map[string]BondMode{\n\t\"balance-rr\":    BOND_MODE_BALANCE_RR,\n\t\"active-backup\": BOND_MODE_ACTIVE_BACKUP,\n\t\"balance-xor\":   BOND_MODE_BALANCE_XOR,\n\t\"broadcast\":     BOND_MODE_BROADCAST,\n\t\"802.3ad\":       BOND_MODE_802_3AD,\n\t\"balance-tlb\":   BOND_MODE_BALANCE_TLB,\n\t\"balance-alb\":   BOND_MODE_BALANCE_ALB,\n}\n\n// BondArpValidate type\ntype BondArpValidate int\n\n// Possible BondArpValidate value\nconst (\n\tBOND_ARP_VALIDATE_NONE BondArpValidate = iota\n\tBOND_ARP_VALIDATE_ACTIVE\n\tBOND_ARP_VALIDATE_BACKUP\n\tBOND_ARP_VALIDATE_ALL\n)\n\n// BondPrimaryReselect type\ntype BondPrimaryReselect int\n\n// Possible BondPrimaryReselect value\nconst (\n\tBOND_PRIMARY_RESELECT_ALWAYS BondPrimaryReselect = iota\n\tBOND_PRIMARY_RESELECT_BETTER\n\tBOND_PRIMARY_RESELECT_FAILURE\n)\n\n// BondArpAllTargets type\ntype BondArpAllTargets int\n\n// Possible BondArpAllTargets value\nconst (\n\tBOND_ARP_ALL_TARGETS_ANY BondArpAllTargets = iota\n\tBOND_ARP_ALL_TARGETS_ALL\n)\n\n// BondFailOverMac type\ntype BondFailOverMac int\n\n// Possible BondFailOverMac value\nconst (\n\tBOND_FAIL_OVER_MAC_NONE BondFailOverMac = iota\n\tBOND_FAIL_OVER_MAC_ACTIVE\n\tBOND_FAIL_OVER_MAC_FOLLOW\n)\n\n// BondXmitHashPolicy type\ntype BondXmitHashPolicy int\n\nfunc (b BondXmitHashPolicy) String() string {\n\ts, ok := bondXmitHashPolicyToString[b]\n\tif !ok {\n\t\treturn fmt.Sprintf(\"XmitHashPolicy(%d)\", b)\n\t}\n\treturn s\n}\n\n// StringToBondXmitHashPolicy returns bond lacp arte, or uknonw is the s is invalid.\nfunc StringToBondXmitHashPolicy(s string) BondXmitHashPolicy {\n\tlacp, ok := StringToBondXmitHashPolicyMap[s]\n\tif !ok {\n\t\treturn BOND_XMIT_HASH_POLICY_UNKNOWN\n\t}\n\treturn lacp\n}\n\n// Possible BondXmitHashPolicy value\nconst (\n\tBOND_XMIT_HASH_POLICY_LAYER2 BondXmitHashPolicy = iota\n\tBOND_XMIT_HASH_POLICY_LAYER3_4\n\tBOND_XMIT_HASH_POLICY_LAYER2_3\n\tBOND_XMIT_HASH_POLICY_ENCAP2_3\n\tBOND_XMIT_HASH_POLICY_ENCAP3_4\n\tBOND_XMIT_HASH_POLICY_UNKNOWN\n)\n\nvar bondXmitHashPolicyToString = map[BondXmitHashPolicy]string{\n\tBOND_XMIT_HASH_POLICY_LAYER2:   \"layer2\",\n\tBOND_XMIT_HASH_POLICY_LAYER3_4: \"layer3+4\",\n\tBOND_XMIT_HASH_POLICY_LAYER2_3: \"layer2+3\",\n\tBOND_XMIT_HASH_POLICY_ENCAP2_3: \"encap2+3\",\n\tBOND_XMIT_HASH_POLICY_ENCAP3_4: \"encap3+4\",\n}\nvar StringToBondXmitHashPolicyMap = map[string]BondXmitHashPolicy{\n\t\"layer2\":   BOND_XMIT_HASH_POLICY_LAYER2,\n\t\"layer3+4\": BOND_XMIT_HASH_POLICY_LAYER3_4,\n\t\"layer2+3\": BOND_XMIT_HASH_POLICY_LAYER2_3,\n\t\"encap2+3\": BOND_XMIT_HASH_POLICY_ENCAP2_3,\n\t\"encap3+4\": BOND_XMIT_HASH_POLICY_ENCAP3_4,\n}\n\n// BondLacpRate type\ntype BondLacpRate int\n\nfunc (b BondLacpRate) String() string {\n\ts, ok := bondLacpRateToString[b]\n\tif !ok {\n\t\treturn fmt.Sprintf(\"LacpRate(%d)\", b)\n\t}\n\treturn s\n}\n\n// StringToBondLacpRate returns bond lacp arte, or uknonw is the s is invalid.\nfunc StringToBondLacpRate(s string) BondLacpRate {\n\tlacp, ok := StringToBondLacpRateMap[s]\n\tif !ok {\n\t\treturn BOND_LACP_RATE_UNKNOWN\n\t}\n\treturn lacp\n}\n\n// Possible BondLacpRate value\nconst (\n\tBOND_LACP_RATE_SLOW BondLacpRate = iota\n\tBOND_LACP_RATE_FAST\n\tBOND_LACP_RATE_UNKNOWN\n)\n\nvar bondLacpRateToString = map[BondLacpRate]string{\n\tBOND_LACP_RATE_SLOW: \"slow\",\n\tBOND_LACP_RATE_FAST: \"fast\",\n}\nvar StringToBondLacpRateMap = map[string]BondLacpRate{\n\t\"slow\": BOND_LACP_RATE_SLOW,\n\t\"fast\": BOND_LACP_RATE_FAST,\n}\n\n// BondAdSelect type\ntype BondAdSelect int\n\n// Possible BondAdSelect value\nconst (\n\tBOND_AD_SELECT_STABLE BondAdSelect = iota\n\tBOND_AD_SELECT_BANDWIDTH\n\tBOND_AD_SELECT_COUNT\n)\n\n// BondAdInfo represents ad info for bond\ntype BondAdInfo struct {\n\tAggregatorId int\n\tNumPorts     int\n\tActorKey     int\n\tPartnerKey   int\n\tPartnerMac   net.HardwareAddr\n}\n\n// Bond representation\ntype Bond struct {\n\tLinkAttrs\n\tMode            BondMode\n\tActiveSlave     int\n\tMiimon          int\n\tUpDelay         int\n\tDownDelay       int\n\tUseCarrier      int\n\tArpInterval     int\n\tArpIpTargets    []net.IP\n\tArpValidate     BondArpValidate\n\tArpAllTargets   BondArpAllTargets\n\tPrimary         int\n\tPrimaryReselect BondPrimaryReselect\n\tFailOverMac     BondFailOverMac\n\tXmitHashPolicy  BondXmitHashPolicy\n\tResendIgmp      int\n\tNumPeerNotif    int\n\tAllSlavesActive int\n\tMinLinks        int\n\tLpInterval      int\n\tPackersPerSlave int\n\tLacpRate        BondLacpRate\n\tAdSelect        BondAdSelect\n\t// looking at iproute tool AdInfo can only be retrived. It can't be set.\n\tAdInfo         *BondAdInfo\n\tAdActorSysPrio int\n\tAdUserPortKey  int\n\tAdActorSystem  net.HardwareAddr\n\tTlbDynamicLb   int\n}\n\nfunc NewLinkBond(atr LinkAttrs) *Bond {\n\treturn &Bond{\n\t\tLinkAttrs:       atr,\n\t\tMode:            -1,\n\t\tActiveSlave:     -1,\n\t\tMiimon:          -1,\n\t\tUpDelay:         -1,\n\t\tDownDelay:       -1,\n\t\tUseCarrier:      -1,\n\t\tArpInterval:     -1,\n\t\tArpIpTargets:    nil,\n\t\tArpValidate:     -1,\n\t\tArpAllTargets:   -1,\n\t\tPrimary:         -1,\n\t\tPrimaryReselect: -1,\n\t\tFailOverMac:     -1,\n\t\tXmitHashPolicy:  -1,\n\t\tResendIgmp:      -1,\n\t\tNumPeerNotif:    -1,\n\t\tAllSlavesActive: -1,\n\t\tMinLinks:        -1,\n\t\tLpInterval:      -1,\n\t\tPackersPerSlave: -1,\n\t\tLacpRate:        -1,\n\t\tAdSelect:        -1,\n\t\tAdActorSysPrio:  -1,\n\t\tAdUserPortKey:   -1,\n\t\tAdActorSystem:   nil,\n\t\tTlbDynamicLb:    -1,\n\t}\n}\n\n// Flag mask for bond options. Bond.Flagmask must be set to on for option to work.\nconst (\n\tBOND_MODE_MASK uint64 = 1 << (1 + iota)\n\tBOND_ACTIVE_SLAVE_MASK\n\tBOND_MIIMON_MASK\n\tBOND_UPDELAY_MASK\n\tBOND_DOWNDELAY_MASK\n\tBOND_USE_CARRIER_MASK\n\tBOND_ARP_INTERVAL_MASK\n\tBOND_ARP_VALIDATE_MASK\n\tBOND_ARP_ALL_TARGETS_MASK\n\tBOND_PRIMARY_MASK\n\tBOND_PRIMARY_RESELECT_MASK\n\tBOND_FAIL_OVER_MAC_MASK\n\tBOND_XMIT_HASH_POLICY_MASK\n\tBOND_RESEND_IGMP_MASK\n\tBOND_NUM_PEER_NOTIF_MASK\n\tBOND_ALL_SLAVES_ACTIVE_MASK\n\tBOND_MIN_LINKS_MASK\n\tBOND_LP_INTERVAL_MASK\n\tBOND_PACKETS_PER_SLAVE_MASK\n\tBOND_LACP_RATE_MASK\n\tBOND_AD_SELECT_MASK\n)\n\n// Attrs implementation.\nfunc (bond *Bond) Attrs() *LinkAttrs {\n\treturn &bond.LinkAttrs\n}\n\n// Type implementation fro Vxlan.\nfunc (bond *Bond) Type() string {\n\treturn \"bond\"\n}\n\n// Gretap devices must specify LocalIP and RemoteIP on create\ntype Gretap struct {\n\tLinkAttrs\n\tIKey       uint32\n\tOKey       uint32\n\tEncapSport uint16\n\tEncapDport uint16\n\tLocal      net.IP\n\tRemote     net.IP\n\tIFlags     uint16\n\tOFlags     uint16\n\tPMtuDisc   uint8\n\tTtl        uint8\n\tTos        uint8\n\tEncapType  uint16\n\tEncapFlags uint16\n\tLink       uint32\n\tFlowBased  bool\n}\n\nfunc (gretap *Gretap) Attrs() *LinkAttrs {\n\treturn &gretap.LinkAttrs\n}\n\nfunc (gretap *Gretap) Type() string {\n\treturn \"gretap\"\n}\n\ntype Iptun struct {\n\tLinkAttrs\n\tTtl      uint8\n\tTos      uint8\n\tPMtuDisc uint8\n\tLink     uint32\n\tLocal    net.IP\n\tRemote   net.IP\n}\n\nfunc (iptun *Iptun) Attrs() *LinkAttrs {\n\treturn &iptun.LinkAttrs\n}\n\nfunc (iptun *Iptun) Type() string {\n\treturn \"ipip\"\n}\n\ntype Vti struct {\n\tLinkAttrs\n\tIKey   uint32\n\tOKey   uint32\n\tLink   uint32\n\tLocal  net.IP\n\tRemote net.IP\n}\n\nfunc (vti *Vti) Attrs() *LinkAttrs {\n\treturn &vti.LinkAttrs\n}\n\nfunc (iptun *Vti) Type() string {\n\treturn \"vti\"\n}\n\ntype Vrf struct {\n\tLinkAttrs\n\tTable uint32\n}\n\nfunc (vrf *Vrf) Attrs() *LinkAttrs {\n\treturn &vrf.LinkAttrs\n}\n\nfunc (vrf *Vrf) Type() string {\n\treturn \"vrf\"\n}\n\ntype GTP struct {\n\tLinkAttrs\n\tFD0         int\n\tFD1         int\n\tRole        int\n\tPDPHashsize int\n}\n\nfunc (gtp *GTP) Attrs() *LinkAttrs {\n\treturn &gtp.LinkAttrs\n}\n\nfunc (gtp *GTP) Type() string {\n\treturn \"gtp\"\n}\n\n// iproute2 supported devices;\n// vlan | veth | vcan | dummy | ifb | macvlan | macvtap |\n// bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan |\n// gre | gretap | ip6gre | ip6gretap | vti | nlmon |\n// bond_slave | ipvlan\n\n// LinkNotFoundError wraps the various not found errors when\n// getting/reading links. This is intended for better error\n// handling by dependent code so that \"not found error\" can\n// be distinguished from other errors\ntype LinkNotFoundError struct {\n\terror\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/link_linux.go",
    "content": "package netlink\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n\t\"github.com/vishvananda/netns\"\n)\n\nconst (\n\tSizeofLinkStats32 = 0x5c\n\tSizeofLinkStats64 = 0xd8\n\tIFLA_STATS64      = 0x17 // syscall pkg does not contain this one\n)\n\nconst (\n\tTUNTAP_MODE_TUN  TuntapMode = syscall.IFF_TUN\n\tTUNTAP_MODE_TAP  TuntapMode = syscall.IFF_TAP\n\tTUNTAP_DEFAULTS  TuntapFlag = syscall.IFF_TUN_EXCL | syscall.IFF_ONE_QUEUE\n\tTUNTAP_VNET_HDR  TuntapFlag = syscall.IFF_VNET_HDR\n\tTUNTAP_TUN_EXCL  TuntapFlag = syscall.IFF_TUN_EXCL\n\tTUNTAP_NO_PI     TuntapFlag = syscall.IFF_NO_PI\n\tTUNTAP_ONE_QUEUE TuntapFlag = syscall.IFF_ONE_QUEUE\n)\n\nvar lookupByDump = false\n\nvar macvlanModes = [...]uint32{\n\t0,\n\tnl.MACVLAN_MODE_PRIVATE,\n\tnl.MACVLAN_MODE_VEPA,\n\tnl.MACVLAN_MODE_BRIDGE,\n\tnl.MACVLAN_MODE_PASSTHRU,\n\tnl.MACVLAN_MODE_SOURCE,\n}\n\nfunc ensureIndex(link *LinkAttrs) {\n\tif link != nil && link.Index == 0 {\n\t\tnewlink, _ := LinkByName(link.Name)\n\t\tif newlink != nil {\n\t\t\tlink.Index = newlink.Attrs().Index\n\t\t}\n\t}\n}\n\nfunc (h *Handle) ensureIndex(link *LinkAttrs) {\n\tif link != nil && link.Index == 0 {\n\t\tnewlink, _ := h.LinkByName(link.Name)\n\t\tif newlink != nil {\n\t\t\tlink.Index = newlink.Attrs().Index\n\t\t}\n\t}\n}\n\nfunc (h *Handle) LinkSetARPOff(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change |= syscall.IFF_NOARP\n\tmsg.Flags |= syscall.IFF_NOARP\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc LinkSetARPOff(link Link) error {\n\treturn pkgHandle.LinkSetARPOff(link)\n}\n\nfunc (h *Handle) LinkSetARPOn(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change |= syscall.IFF_NOARP\n\tmsg.Flags &= ^uint32(syscall.IFF_NOARP)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc LinkSetARPOn(link Link) error {\n\treturn pkgHandle.LinkSetARPOn(link)\n}\n\nfunc (h *Handle) SetPromiscOn(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change = syscall.IFF_PROMISC\n\tmsg.Flags = syscall.IFF_PROMISC\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc BridgeSetMcastSnoop(link Link, on bool) error {\n\treturn pkgHandle.BridgeSetMcastSnoop(link, on)\n}\n\nfunc (h *Handle) BridgeSetMcastSnoop(link Link, on bool) error {\n\tbridge := link.(*Bridge)\n\tbridge.MulticastSnooping = &on\n\treturn h.linkModify(bridge, syscall.NLM_F_ACK)\n}\n\nfunc SetPromiscOn(link Link) error {\n\treturn pkgHandle.SetPromiscOn(link)\n}\n\nfunc (h *Handle) SetPromiscOff(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change = syscall.IFF_PROMISC\n\tmsg.Flags = 0 & ^syscall.IFF_PROMISC\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc SetPromiscOff(link Link) error {\n\treturn pkgHandle.SetPromiscOff(link)\n}\n\n// LinkSetUp enables the link device.\n// Equivalent to: `ip link set $link up`\nfunc LinkSetUp(link Link) error {\n\treturn pkgHandle.LinkSetUp(link)\n}\n\n// LinkSetUp enables the link device.\n// Equivalent to: `ip link set $link up`\nfunc (h *Handle) LinkSetUp(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_NEWLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change = syscall.IFF_UP\n\tmsg.Flags = syscall.IFF_UP\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetDown disables link device.\n// Equivalent to: `ip link set $link down`\nfunc LinkSetDown(link Link) error {\n\treturn pkgHandle.LinkSetDown(link)\n}\n\n// LinkSetDown disables link device.\n// Equivalent to: `ip link set $link down`\nfunc (h *Handle) LinkSetDown(link Link) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_NEWLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Change = syscall.IFF_UP\n\tmsg.Flags = 0 & ^syscall.IFF_UP\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetMTU sets the mtu of the link device.\n// Equivalent to: `ip link set $link mtu $mtu`\nfunc LinkSetMTU(link Link, mtu int) error {\n\treturn pkgHandle.LinkSetMTU(link, mtu)\n}\n\n// LinkSetMTU sets the mtu of the link device.\n// Equivalent to: `ip link set $link mtu $mtu`\nfunc (h *Handle) LinkSetMTU(link Link, mtu int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(mtu))\n\n\tdata := nl.NewRtAttr(syscall.IFLA_MTU, b)\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetName sets the name of the link device.\n// Equivalent to: `ip link set $link name $name`\nfunc LinkSetName(link Link, name string) error {\n\treturn pkgHandle.LinkSetName(link, name)\n}\n\n// LinkSetName sets the name of the link device.\n// Equivalent to: `ip link set $link name $name`\nfunc (h *Handle) LinkSetName(link Link, name string) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(syscall.IFLA_IFNAME, []byte(name))\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetAlias sets the alias of the link device.\n// Equivalent to: `ip link set dev $link alias $name`\nfunc LinkSetAlias(link Link, name string) error {\n\treturn pkgHandle.LinkSetAlias(link, name)\n}\n\n// LinkSetAlias sets the alias of the link device.\n// Equivalent to: `ip link set dev $link alias $name`\nfunc (h *Handle) LinkSetAlias(link Link, name string) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(syscall.IFLA_IFALIAS, []byte(name))\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetHardwareAddr sets the hardware address of the link device.\n// Equivalent to: `ip link set $link address $hwaddr`\nfunc LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {\n\treturn pkgHandle.LinkSetHardwareAddr(link, hwaddr)\n}\n\n// LinkSetHardwareAddr sets the hardware address of the link device.\n// Equivalent to: `ip link set $link address $hwaddr`\nfunc (h *Handle) LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(syscall.IFLA_ADDRESS, []byte(hwaddr))\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetVfHardwareAddr sets the hardware address of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf mac $hwaddr`\nfunc LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {\n\treturn pkgHandle.LinkSetVfHardwareAddr(link, vf, hwaddr)\n}\n\n// LinkSetVfHardwareAddr sets the hardware address of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf mac $hwaddr`\nfunc (h *Handle) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(nl.IFLA_VFINFO_LIST, nil)\n\tinfo := nl.NewRtAttrChild(data, nl.IFLA_VF_INFO, nil)\n\tvfmsg := nl.VfMac{\n\t\tVf: uint32(vf),\n\t}\n\tcopy(vfmsg.Mac[:], []byte(hwaddr))\n\tnl.NewRtAttrChild(info, nl.IFLA_VF_MAC, vfmsg.Serialize())\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetVfVlan sets the vlan of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf vlan $vlan`\nfunc LinkSetVfVlan(link Link, vf, vlan int) error {\n\treturn pkgHandle.LinkSetVfVlan(link, vf, vlan)\n}\n\n// LinkSetVfVlan sets the vlan of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf vlan $vlan`\nfunc (h *Handle) LinkSetVfVlan(link Link, vf, vlan int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(nl.IFLA_VFINFO_LIST, nil)\n\tinfo := nl.NewRtAttrChild(data, nl.IFLA_VF_INFO, nil)\n\tvfmsg := nl.VfVlan{\n\t\tVf:   uint32(vf),\n\t\tVlan: uint32(vlan),\n\t}\n\tnl.NewRtAttrChild(info, nl.IFLA_VF_VLAN, vfmsg.Serialize())\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetVfTxRate sets the tx rate of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf rate $rate`\nfunc LinkSetVfTxRate(link Link, vf, rate int) error {\n\treturn pkgHandle.LinkSetVfTxRate(link, vf, rate)\n}\n\n// LinkSetVfTxRate sets the tx rate of a vf for the link.\n// Equivalent to: `ip link set $link vf $vf rate $rate`\nfunc (h *Handle) LinkSetVfTxRate(link Link, vf, rate int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(nl.IFLA_VFINFO_LIST, nil)\n\tinfo := nl.NewRtAttrChild(data, nl.IFLA_VF_INFO, nil)\n\tvfmsg := nl.VfTxRate{\n\t\tVf:   uint32(vf),\n\t\tRate: uint32(rate),\n\t}\n\tnl.NewRtAttrChild(info, nl.IFLA_VF_TX_RATE, vfmsg.Serialize())\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetVfSpoofchk enables/disables spoof check on a vf for the link.\n// Equivalent to: `ip link set $link vf $vf spoofchk $check`\nfunc LinkSetVfSpoofchk(link Link, vf int, check bool) error {\n\treturn pkgHandle.LinkSetVfSpoofchk(link, vf, check)\n}\n\n// LinkSetVfSpookfchk enables/disables spoof check on a vf for the link.\n// Equivalent to: `ip link set $link vf $vf spoofchk $check`\nfunc (h *Handle) LinkSetVfSpoofchk(link Link, vf int, check bool) error {\n\tvar setting uint32\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(nl.IFLA_VFINFO_LIST, nil)\n\tinfo := nl.NewRtAttrChild(data, nl.IFLA_VF_INFO, nil)\n\tif check {\n\t\tsetting = 1\n\t}\n\tvfmsg := nl.VfSpoofchk{\n\t\tVf:      uint32(vf),\n\t\tSetting: setting,\n\t}\n\tnl.NewRtAttrChild(info, nl.IFLA_VF_SPOOFCHK, vfmsg.Serialize())\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetVfTrust enables/disables trust state on a vf for the link.\n// Equivalent to: `ip link set $link vf $vf trust $state`\nfunc LinkSetVfTrust(link Link, vf int, state bool) error {\n\treturn pkgHandle.LinkSetVfTrust(link, vf, state)\n}\n\n// LinkSetVfTrust enables/disables trust state on a vf for the link.\n// Equivalent to: `ip link set $link vf $vf trust $state`\nfunc (h *Handle) LinkSetVfTrust(link Link, vf int, state bool) error {\n\tvar setting uint32\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tdata := nl.NewRtAttr(nl.IFLA_VFINFO_LIST, nil)\n\tinfo := nl.NewRtAttrChild(data, nl.IFLA_VF_INFO, nil)\n\tif state {\n\t\tsetting = 1\n\t}\n\tvfmsg := nl.VfTrust{\n\t\tVf:      uint32(vf),\n\t\tSetting: setting,\n\t}\n\tnl.NewRtAttrChild(info, nl.IFLA_VF_TRUST, vfmsg.Serialize())\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetMaster sets the master of the link device.\n// Equivalent to: `ip link set $link master $master`\nfunc LinkSetMaster(link Link, master *Bridge) error {\n\treturn pkgHandle.LinkSetMaster(link, master)\n}\n\n// LinkSetMaster sets the master of the link device.\n// Equivalent to: `ip link set $link master $master`\nfunc (h *Handle) LinkSetMaster(link Link, master *Bridge) error {\n\tindex := 0\n\tif master != nil {\n\t\tmasterBase := master.Attrs()\n\t\th.ensureIndex(masterBase)\n\t\tindex = masterBase.Index\n\t}\n\tif index <= 0 {\n\t\treturn fmt.Errorf(\"Device does not exist\")\n\t}\n\treturn h.LinkSetMasterByIndex(link, index)\n}\n\n// LinkSetNoMaster removes the master of the link device.\n// Equivalent to: `ip link set $link nomaster`\nfunc LinkSetNoMaster(link Link) error {\n\treturn pkgHandle.LinkSetNoMaster(link)\n}\n\n// LinkSetNoMaster removes the master of the link device.\n// Equivalent to: `ip link set $link nomaster`\nfunc (h *Handle) LinkSetNoMaster(link Link) error {\n\treturn h.LinkSetMasterByIndex(link, 0)\n}\n\n// LinkSetMasterByIndex sets the master of the link device.\n// Equivalent to: `ip link set $link master $master`\nfunc LinkSetMasterByIndex(link Link, masterIndex int) error {\n\treturn pkgHandle.LinkSetMasterByIndex(link, masterIndex)\n}\n\n// LinkSetMasterByIndex sets the master of the link device.\n// Equivalent to: `ip link set $link master $master`\nfunc (h *Handle) LinkSetMasterByIndex(link Link, masterIndex int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(masterIndex))\n\n\tdata := nl.NewRtAttr(syscall.IFLA_MASTER, b)\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetNsPid puts the device into a new network namespace. The\n// pid must be a pid of a running process.\n// Equivalent to: `ip link set $link netns $pid`\nfunc LinkSetNsPid(link Link, nspid int) error {\n\treturn pkgHandle.LinkSetNsPid(link, nspid)\n}\n\n// LinkSetNsPid puts the device into a new network namespace. The\n// pid must be a pid of a running process.\n// Equivalent to: `ip link set $link netns $pid`\nfunc (h *Handle) LinkSetNsPid(link Link, nspid int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(nspid))\n\n\tdata := nl.NewRtAttr(syscall.IFLA_NET_NS_PID, b)\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetNsFd puts the device into a new network namespace. The\n// fd must be an open file descriptor to a network namespace.\n// Similar to: `ip link set $link netns $ns`\nfunc LinkSetNsFd(link Link, fd int) error {\n\treturn pkgHandle.LinkSetNsFd(link, fd)\n}\n\n// LinkSetNsFd puts the device into a new network namespace. The\n// fd must be an open file descriptor to a network namespace.\n// Similar to: `ip link set $link netns $ns`\nfunc (h *Handle) LinkSetNsFd(link Link, fd int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(fd))\n\n\tdata := nl.NewRtAttr(nl.IFLA_NET_NS_FD, b)\n\treq.AddData(data)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// LinkSetXdpFd adds a bpf function to the driver. The fd must be a bpf\n// program loaded with bpf(type=BPF_PROG_TYPE_XDP)\nfunc LinkSetXdpFd(link Link, fd int) error {\n\tbase := link.Attrs()\n\tensureIndex(base)\n\treq := nl.NewNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\taddXdpAttrs(&LinkXdp{Fd: fd}, req)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc boolAttr(val bool) []byte {\n\tvar v uint8\n\tif val {\n\t\tv = 1\n\t}\n\treturn nl.Uint8Attr(v)\n}\n\ntype vxlanPortRange struct {\n\tLo, Hi uint16\n}\n\nfunc addVxlanAttrs(vxlan *Vxlan, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\n\tif vxlan.FlowBased {\n\t\tvxlan.VxlanId = 0\n\t}\n\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_ID, nl.Uint32Attr(uint32(vxlan.VxlanId)))\n\n\tif vxlan.VtepDevIndex != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_LINK, nl.Uint32Attr(uint32(vxlan.VtepDevIndex)))\n\t}\n\tif vxlan.SrcAddr != nil {\n\t\tip := vxlan.SrcAddr.To4()\n\t\tif ip != nil {\n\t\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_LOCAL, []byte(ip))\n\t\t} else {\n\t\t\tip = vxlan.SrcAddr.To16()\n\t\t\tif ip != nil {\n\t\t\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_LOCAL6, []byte(ip))\n\t\t\t}\n\t\t}\n\t}\n\tif vxlan.Group != nil {\n\t\tgroup := vxlan.Group.To4()\n\t\tif group != nil {\n\t\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_GROUP, []byte(group))\n\t\t} else {\n\t\t\tgroup = vxlan.Group.To16()\n\t\t\tif group != nil {\n\t\t\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_GROUP6, []byte(group))\n\t\t\t}\n\t\t}\n\t}\n\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_TTL, nl.Uint8Attr(uint8(vxlan.TTL)))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_TOS, nl.Uint8Attr(uint8(vxlan.TOS)))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_LEARNING, boolAttr(vxlan.Learning))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_PROXY, boolAttr(vxlan.Proxy))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_RSC, boolAttr(vxlan.RSC))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_L2MISS, boolAttr(vxlan.L2miss))\n\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_L3MISS, boolAttr(vxlan.L3miss))\n\n\tif vxlan.UDPCSum {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_UDP_CSUM, boolAttr(vxlan.UDPCSum))\n\t}\n\tif vxlan.GBP {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_GBP, []byte{})\n\t}\n\tif vxlan.FlowBased {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_FLOWBASED, boolAttr(vxlan.FlowBased))\n\t}\n\tif vxlan.NoAge {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_AGEING, nl.Uint32Attr(0))\n\t} else if vxlan.Age > 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_AGEING, nl.Uint32Attr(uint32(vxlan.Age)))\n\t}\n\tif vxlan.Limit > 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_LIMIT, nl.Uint32Attr(uint32(vxlan.Limit)))\n\t}\n\tif vxlan.Port > 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_PORT, htons(uint16(vxlan.Port)))\n\t}\n\tif vxlan.PortLow > 0 || vxlan.PortHigh > 0 {\n\t\tpr := vxlanPortRange{uint16(vxlan.PortLow), uint16(vxlan.PortHigh)}\n\n\t\tbuf := new(bytes.Buffer)\n\t\tbinary.Write(buf, binary.BigEndian, &pr)\n\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VXLAN_PORT_RANGE, buf.Bytes())\n\t}\n}\n\nfunc addBondAttrs(bond *Bond, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\tif bond.Mode >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_MODE, nl.Uint8Attr(uint8(bond.Mode)))\n\t}\n\tif bond.ActiveSlave >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_ACTIVE_SLAVE, nl.Uint32Attr(uint32(bond.ActiveSlave)))\n\t}\n\tif bond.Miimon >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_MIIMON, nl.Uint32Attr(uint32(bond.Miimon)))\n\t}\n\tif bond.UpDelay >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_UPDELAY, nl.Uint32Attr(uint32(bond.UpDelay)))\n\t}\n\tif bond.DownDelay >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_DOWNDELAY, nl.Uint32Attr(uint32(bond.DownDelay)))\n\t}\n\tif bond.UseCarrier >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_USE_CARRIER, nl.Uint8Attr(uint8(bond.UseCarrier)))\n\t}\n\tif bond.ArpInterval >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_ARP_INTERVAL, nl.Uint32Attr(uint32(bond.ArpInterval)))\n\t}\n\tif bond.ArpIpTargets != nil {\n\t\tmsg := nl.NewRtAttrChild(data, nl.IFLA_BOND_ARP_IP_TARGET, nil)\n\t\tfor i := range bond.ArpIpTargets {\n\t\t\tip := bond.ArpIpTargets[i].To4()\n\t\t\tif ip != nil {\n\t\t\t\tnl.NewRtAttrChild(msg, i, []byte(ip))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tip = bond.ArpIpTargets[i].To16()\n\t\t\tif ip != nil {\n\t\t\t\tnl.NewRtAttrChild(msg, i, []byte(ip))\n\t\t\t}\n\t\t}\n\t}\n\tif bond.ArpValidate >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_ARP_VALIDATE, nl.Uint32Attr(uint32(bond.ArpValidate)))\n\t}\n\tif bond.ArpAllTargets >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_ARP_ALL_TARGETS, nl.Uint32Attr(uint32(bond.ArpAllTargets)))\n\t}\n\tif bond.Primary >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_PRIMARY, nl.Uint32Attr(uint32(bond.Primary)))\n\t}\n\tif bond.PrimaryReselect >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_PRIMARY_RESELECT, nl.Uint8Attr(uint8(bond.PrimaryReselect)))\n\t}\n\tif bond.FailOverMac >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_FAIL_OVER_MAC, nl.Uint8Attr(uint8(bond.FailOverMac)))\n\t}\n\tif bond.XmitHashPolicy >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_XMIT_HASH_POLICY, nl.Uint8Attr(uint8(bond.XmitHashPolicy)))\n\t}\n\tif bond.ResendIgmp >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_RESEND_IGMP, nl.Uint32Attr(uint32(bond.ResendIgmp)))\n\t}\n\tif bond.NumPeerNotif >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_NUM_PEER_NOTIF, nl.Uint8Attr(uint8(bond.NumPeerNotif)))\n\t}\n\tif bond.AllSlavesActive >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_ALL_SLAVES_ACTIVE, nl.Uint8Attr(uint8(bond.AllSlavesActive)))\n\t}\n\tif bond.MinLinks >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_MIN_LINKS, nl.Uint32Attr(uint32(bond.MinLinks)))\n\t}\n\tif bond.LpInterval >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_LP_INTERVAL, nl.Uint32Attr(uint32(bond.LpInterval)))\n\t}\n\tif bond.PackersPerSlave >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_PACKETS_PER_SLAVE, nl.Uint32Attr(uint32(bond.PackersPerSlave)))\n\t}\n\tif bond.LacpRate >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_AD_LACP_RATE, nl.Uint8Attr(uint8(bond.LacpRate)))\n\t}\n\tif bond.AdSelect >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_AD_SELECT, nl.Uint8Attr(uint8(bond.AdSelect)))\n\t}\n\tif bond.AdActorSysPrio >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_AD_ACTOR_SYS_PRIO, nl.Uint16Attr(uint16(bond.AdActorSysPrio)))\n\t}\n\tif bond.AdUserPortKey >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_AD_USER_PORT_KEY, nl.Uint16Attr(uint16(bond.AdUserPortKey)))\n\t}\n\tif bond.AdActorSystem != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_AD_ACTOR_SYSTEM, []byte(bond.AdActorSystem))\n\t}\n\tif bond.TlbDynamicLb >= 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BOND_TLB_DYNAMIC_LB, nl.Uint8Attr(uint8(bond.TlbDynamicLb)))\n\t}\n}\n\n// LinkAdd adds a new link device. The type and features of the device\n// are taken from the parameters in the link object.\n// Equivalent to: `ip link add $link`\nfunc LinkAdd(link Link) error {\n\treturn pkgHandle.LinkAdd(link)\n}\n\n// LinkAdd adds a new link device. The type and features of the device\n// are taken fromt the parameters in the link object.\n// Equivalent to: `ip link add $link`\nfunc (h *Handle) LinkAdd(link Link) error {\n\treturn h.linkModify(link, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n}\n\nfunc (h *Handle) linkModify(link Link, flags int) error {\n\t// TODO: support extra data for macvlan\n\tbase := link.Attrs()\n\n\tif base.Name == \"\" {\n\t\treturn fmt.Errorf(\"LinkAttrs.Name cannot be empty!\")\n\t}\n\n\tif tuntap, ok := link.(*Tuntap); ok {\n\t\t// TODO: support user\n\t\t// TODO: support group\n\t\t// TODO: multi_queue\n\t\t// TODO: support non- persistent\n\t\tif tuntap.Mode < syscall.IFF_TUN || tuntap.Mode > syscall.IFF_TAP {\n\t\t\treturn fmt.Errorf(\"Tuntap.Mode %v unknown!\", tuntap.Mode)\n\t\t}\n\t\tfile, err := os.OpenFile(\"/dev/net/tun\", os.O_RDWR, 0)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer file.Close()\n\t\tvar req ifReq\n\t\tif tuntap.Flags == 0 {\n\t\t\treq.Flags = uint16(TUNTAP_DEFAULTS)\n\t\t} else {\n\t\t\treq.Flags = uint16(tuntap.Flags)\n\t\t}\n\t\treq.Flags |= uint16(tuntap.Mode)\n\t\tcopy(req.Name[:15], base.Name)\n\t\t_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, file.Fd(), uintptr(syscall.TUNSETIFF), uintptr(unsafe.Pointer(&req)))\n\t\tif errno != 0 {\n\t\t\treturn fmt.Errorf(\"Tuntap IOCTL TUNSETIFF failed, errno %v\", errno)\n\t\t}\n\t\t_, _, errno = syscall.Syscall(syscall.SYS_IOCTL, file.Fd(), uintptr(syscall.TUNSETPERSIST), 1)\n\t\tif errno != 0 {\n\t\t\treturn fmt.Errorf(\"Tuntap IOCTL TUNSETPERSIST failed, errno %v\", errno)\n\t\t}\n\t\th.ensureIndex(base)\n\n\t\t// can't set master during create, so set it afterwards\n\t\tif base.MasterIndex != 0 {\n\t\t\t// TODO: verify MasterIndex is actually a bridge?\n\t\t\treturn h.LinkSetMasterByIndex(link, base.MasterIndex)\n\t\t}\n\t\treturn nil\n\t}\n\n\treq := h.newNetlinkRequest(syscall.RTM_NEWLINK, flags)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\t// TODO: make it shorter\n\tif base.Flags&net.FlagUp != 0 {\n\t\tmsg.Change = syscall.IFF_UP\n\t\tmsg.Flags = syscall.IFF_UP\n\t}\n\tif base.Flags&net.FlagBroadcast != 0 {\n\t\tmsg.Change |= syscall.IFF_BROADCAST\n\t\tmsg.Flags |= syscall.IFF_BROADCAST\n\t}\n\tif base.Flags&net.FlagLoopback != 0 {\n\t\tmsg.Change |= syscall.IFF_LOOPBACK\n\t\tmsg.Flags |= syscall.IFF_LOOPBACK\n\t}\n\tif base.Flags&net.FlagPointToPoint != 0 {\n\t\tmsg.Change |= syscall.IFF_POINTOPOINT\n\t\tmsg.Flags |= syscall.IFF_POINTOPOINT\n\t}\n\tif base.Flags&net.FlagMulticast != 0 {\n\t\tmsg.Change |= syscall.IFF_MULTICAST\n\t\tmsg.Flags |= syscall.IFF_MULTICAST\n\t}\n\treq.AddData(msg)\n\n\tif base.ParentIndex != 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(base.ParentIndex))\n\t\tdata := nl.NewRtAttr(syscall.IFLA_LINK, b)\n\t\treq.AddData(data)\n\t} else if link.Type() == \"ipvlan\" {\n\t\treturn fmt.Errorf(\"Can't create ipvlan link without ParentIndex\")\n\t}\n\n\tnameData := nl.NewRtAttr(syscall.IFLA_IFNAME, nl.ZeroTerminated(base.Name))\n\treq.AddData(nameData)\n\n\tif base.MTU > 0 {\n\t\tmtu := nl.NewRtAttr(syscall.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))\n\t\treq.AddData(mtu)\n\t}\n\n\tif base.TxQLen >= 0 {\n\t\tqlen := nl.NewRtAttr(syscall.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))\n\t\treq.AddData(qlen)\n\t}\n\n\tif base.HardwareAddr != nil {\n\t\thwaddr := nl.NewRtAttr(syscall.IFLA_ADDRESS, []byte(base.HardwareAddr))\n\t\treq.AddData(hwaddr)\n\t}\n\n\tif base.Namespace != nil {\n\t\tvar attr *nl.RtAttr\n\t\tswitch base.Namespace.(type) {\n\t\tcase NsPid:\n\t\t\tval := nl.Uint32Attr(uint32(base.Namespace.(NsPid)))\n\t\t\tattr = nl.NewRtAttr(syscall.IFLA_NET_NS_PID, val)\n\t\tcase NsFd:\n\t\t\tval := nl.Uint32Attr(uint32(base.Namespace.(NsFd)))\n\t\t\tattr = nl.NewRtAttr(nl.IFLA_NET_NS_FD, val)\n\t\t}\n\n\t\treq.AddData(attr)\n\t}\n\n\tif base.Xdp != nil {\n\t\taddXdpAttrs(base.Xdp, req)\n\t}\n\n\tlinkInfo := nl.NewRtAttr(syscall.IFLA_LINKINFO, nil)\n\tnl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_KIND, nl.NonZeroTerminated(link.Type()))\n\n\tif vlan, ok := link.(*Vlan); ok {\n\t\tb := make([]byte, 2)\n\t\tnative.PutUint16(b, uint16(vlan.VlanId))\n\t\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VLAN_ID, b)\n\t} else if veth, ok := link.(*Veth); ok {\n\t\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\t\tpeer := nl.NewRtAttrChild(data, nl.VETH_INFO_PEER, nil)\n\t\tnl.NewIfInfomsgChild(peer, syscall.AF_UNSPEC)\n\t\tnl.NewRtAttrChild(peer, syscall.IFLA_IFNAME, nl.ZeroTerminated(veth.PeerName))\n\t\tif base.TxQLen >= 0 {\n\t\t\tnl.NewRtAttrChild(peer, syscall.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))\n\t\t}\n\t\tif base.MTU > 0 {\n\t\t\tnl.NewRtAttrChild(peer, syscall.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))\n\t\t}\n\n\t} else if vxlan, ok := link.(*Vxlan); ok {\n\t\taddVxlanAttrs(vxlan, linkInfo)\n\t} else if bond, ok := link.(*Bond); ok {\n\t\taddBondAttrs(bond, linkInfo)\n\t} else if ipv, ok := link.(*IPVlan); ok {\n\t\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\t\tnl.NewRtAttrChild(data, nl.IFLA_IPVLAN_MODE, nl.Uint16Attr(uint16(ipv.Mode)))\n\t} else if macv, ok := link.(*Macvlan); ok {\n\t\tif macv.Mode != MACVLAN_MODE_DEFAULT {\n\t\t\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\t\t\tnl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[macv.Mode]))\n\t\t}\n\t} else if macv, ok := link.(*Macvtap); ok {\n\t\tif macv.Mode != MACVLAN_MODE_DEFAULT {\n\t\t\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\t\t\tnl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[macv.Mode]))\n\t\t}\n\t} else if gretap, ok := link.(*Gretap); ok {\n\t\taddGretapAttrs(gretap, linkInfo)\n\t} else if iptun, ok := link.(*Iptun); ok {\n\t\taddIptunAttrs(iptun, linkInfo)\n\t} else if vti, ok := link.(*Vti); ok {\n\t\taddVtiAttrs(vti, linkInfo)\n\t} else if vrf, ok := link.(*Vrf); ok {\n\t\taddVrfAttrs(vrf, linkInfo)\n\t} else if bridge, ok := link.(*Bridge); ok {\n\t\taddBridgeAttrs(bridge, linkInfo)\n\t} else if gtp, ok := link.(*GTP); ok {\n\t\taddGTPAttrs(gtp, linkInfo)\n\t}\n\n\treq.AddData(linkInfo)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\th.ensureIndex(base)\n\n\t// can't set master during create, so set it afterwards\n\tif base.MasterIndex != 0 {\n\t\t// TODO: verify MasterIndex is actually a bridge?\n\t\treturn h.LinkSetMasterByIndex(link, base.MasterIndex)\n\t}\n\treturn nil\n}\n\n// LinkDel deletes link device. Either Index or Name must be set in\n// the link object for it to be deleted. The other values are ignored.\n// Equivalent to: `ip link del $link`\nfunc LinkDel(link Link) error {\n\treturn pkgHandle.LinkDel(link)\n}\n\n// LinkDel deletes link device. Either Index or Name must be set in\n// the link object for it to be deleted. The other values are ignored.\n// Equivalent to: `ip link del $link`\nfunc (h *Handle) LinkDel(link Link) error {\n\tbase := link.Attrs()\n\n\th.ensureIndex(base)\n\n\treq := h.newNetlinkRequest(syscall.RTM_DELLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc (h *Handle) linkByNameDump(name string) (Link, error) {\n\tlinks, err := h.LinkList()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, link := range links {\n\t\tif link.Attrs().Name == name {\n\t\t\treturn link, nil\n\t\t}\n\t}\n\treturn nil, LinkNotFoundError{fmt.Errorf(\"Link %s not found\", name)}\n}\n\nfunc (h *Handle) linkByAliasDump(alias string) (Link, error) {\n\tlinks, err := h.LinkList()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, link := range links {\n\t\tif link.Attrs().Alias == alias {\n\t\t\treturn link, nil\n\t\t}\n\t}\n\treturn nil, LinkNotFoundError{fmt.Errorf(\"Link alias %s not found\", alias)}\n}\n\n// LinkByName finds a link by name and returns a pointer to the object.\nfunc LinkByName(name string) (Link, error) {\n\treturn pkgHandle.LinkByName(name)\n}\n\n// LinkByName finds a link by name and returns a pointer to the object.\nfunc (h *Handle) LinkByName(name string) (Link, error) {\n\tif h.lookupByDump {\n\t\treturn h.linkByNameDump(name)\n\t}\n\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\treq.AddData(msg)\n\n\tnameData := nl.NewRtAttr(syscall.IFLA_IFNAME, nl.ZeroTerminated(name))\n\treq.AddData(nameData)\n\n\tlink, err := execGetLink(req)\n\tif err == syscall.EINVAL {\n\t\t// older kernels don't support looking up via IFLA_IFNAME\n\t\t// so fall back to dumping all links\n\t\th.lookupByDump = true\n\t\treturn h.linkByNameDump(name)\n\t}\n\n\treturn link, err\n}\n\n// LinkByAlias finds a link by its alias and returns a pointer to the object.\n// If there are multiple links with the alias it returns the first one\nfunc LinkByAlias(alias string) (Link, error) {\n\treturn pkgHandle.LinkByAlias(alias)\n}\n\n// LinkByAlias finds a link by its alias and returns a pointer to the object.\n// If there are multiple links with the alias it returns the first one\nfunc (h *Handle) LinkByAlias(alias string) (Link, error) {\n\tif h.lookupByDump {\n\t\treturn h.linkByAliasDump(alias)\n\t}\n\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\treq.AddData(msg)\n\n\tnameData := nl.NewRtAttr(syscall.IFLA_IFALIAS, nl.ZeroTerminated(alias))\n\treq.AddData(nameData)\n\n\tlink, err := execGetLink(req)\n\tif err == syscall.EINVAL {\n\t\t// older kernels don't support looking up via IFLA_IFALIAS\n\t\t// so fall back to dumping all links\n\t\th.lookupByDump = true\n\t\treturn h.linkByAliasDump(alias)\n\t}\n\n\treturn link, err\n}\n\n// LinkByIndex finds a link by index and returns a pointer to the object.\nfunc LinkByIndex(index int) (Link, error) {\n\treturn pkgHandle.LinkByIndex(index)\n}\n\n// LinkByIndex finds a link by index and returns a pointer to the object.\nfunc (h *Handle) LinkByIndex(index int) (Link, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\tmsg.Index = int32(index)\n\treq.AddData(msg)\n\n\treturn execGetLink(req)\n}\n\nfunc execGetLink(req *nl.NetlinkRequest) (Link, error) {\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\tif err != nil {\n\t\tif errno, ok := err.(syscall.Errno); ok {\n\t\t\tif errno == syscall.ENODEV {\n\t\t\t\treturn nil, LinkNotFoundError{fmt.Errorf(\"Link not found\")}\n\t\t\t}\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tswitch {\n\tcase len(msgs) == 0:\n\t\treturn nil, LinkNotFoundError{fmt.Errorf(\"Link not found\")}\n\n\tcase len(msgs) == 1:\n\t\treturn LinkDeserialize(nil, msgs[0])\n\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"More than one link found\")\n\t}\n}\n\n// linkDeserialize deserializes a raw message received from netlink into\n// a link object.\nfunc LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {\n\tmsg := nl.DeserializeIfInfomsg(m)\n\n\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbase := LinkAttrs{Index: int(msg.Index), RawFlags: msg.Flags, Flags: linkFlags(msg.Flags), EncapType: msg.EncapType()}\n\tif msg.Flags&syscall.IFF_PROMISC != 0 {\n\t\tbase.Promisc = 1\n\t}\n\tvar (\n\t\tlink     Link\n\t\tstats32  []byte\n\t\tstats64  []byte\n\t\tlinkType string\n\t)\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase syscall.IFLA_LINKINFO:\n\t\t\tinfos, err := nl.ParseRouteAttr(attr.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfor _, info := range infos {\n\t\t\t\tswitch info.Attr.Type {\n\t\t\t\tcase nl.IFLA_INFO_KIND:\n\t\t\t\t\tlinkType = string(info.Value[:len(info.Value)-1])\n\t\t\t\t\tswitch linkType {\n\t\t\t\t\tcase \"dummy\":\n\t\t\t\t\t\tlink = &Dummy{}\n\t\t\t\t\tcase \"ifb\":\n\t\t\t\t\t\tlink = &Ifb{}\n\t\t\t\t\tcase \"bridge\":\n\t\t\t\t\t\tlink = &Bridge{}\n\t\t\t\t\tcase \"vlan\":\n\t\t\t\t\t\tlink = &Vlan{}\n\t\t\t\t\tcase \"veth\":\n\t\t\t\t\t\tlink = &Veth{}\n\t\t\t\t\tcase \"vxlan\":\n\t\t\t\t\t\tlink = &Vxlan{}\n\t\t\t\t\tcase \"bond\":\n\t\t\t\t\t\tlink = &Bond{}\n\t\t\t\t\tcase \"ipvlan\":\n\t\t\t\t\t\tlink = &IPVlan{}\n\t\t\t\t\tcase \"macvlan\":\n\t\t\t\t\t\tlink = &Macvlan{}\n\t\t\t\t\tcase \"macvtap\":\n\t\t\t\t\t\tlink = &Macvtap{}\n\t\t\t\t\tcase \"gretap\":\n\t\t\t\t\t\tlink = &Gretap{}\n\t\t\t\t\tcase \"ipip\":\n\t\t\t\t\t\tlink = &Iptun{}\n\t\t\t\t\tcase \"vti\":\n\t\t\t\t\t\tlink = &Vti{}\n\t\t\t\t\tcase \"vrf\":\n\t\t\t\t\t\tlink = &Vrf{}\n\t\t\t\t\tcase \"gtp\":\n\t\t\t\t\t\tlink = &GTP{}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlink = &GenericLink{LinkType: linkType}\n\t\t\t\t\t}\n\t\t\t\tcase nl.IFLA_INFO_DATA:\n\t\t\t\t\tdata, err := nl.ParseRouteAttr(info.Value)\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\tswitch linkType {\n\t\t\t\t\tcase \"vlan\":\n\t\t\t\t\t\tparseVlanData(link, data)\n\t\t\t\t\tcase \"vxlan\":\n\t\t\t\t\t\tparseVxlanData(link, data)\n\t\t\t\t\tcase \"bond\":\n\t\t\t\t\t\tparseBondData(link, data)\n\t\t\t\t\tcase \"ipvlan\":\n\t\t\t\t\t\tparseIPVlanData(link, data)\n\t\t\t\t\tcase \"macvlan\":\n\t\t\t\t\t\tparseMacvlanData(link, data)\n\t\t\t\t\tcase \"macvtap\":\n\t\t\t\t\t\tparseMacvtapData(link, data)\n\t\t\t\t\tcase \"gretap\":\n\t\t\t\t\t\tparseGretapData(link, data)\n\t\t\t\t\tcase \"ipip\":\n\t\t\t\t\t\tparseIptunData(link, data)\n\t\t\t\t\tcase \"vti\":\n\t\t\t\t\t\tparseVtiData(link, data)\n\t\t\t\t\tcase \"vrf\":\n\t\t\t\t\t\tparseVrfData(link, data)\n\t\t\t\t\tcase \"bridge\":\n\t\t\t\t\t\tparseBridgeData(link, data)\n\t\t\t\t\tcase \"gtp\":\n\t\t\t\t\t\tparseGTPData(link, data)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase syscall.IFLA_ADDRESS:\n\t\t\tvar nonzero bool\n\t\t\tfor _, b := range attr.Value {\n\t\t\t\tif b != 0 {\n\t\t\t\t\tnonzero = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif nonzero {\n\t\t\t\tbase.HardwareAddr = attr.Value[:]\n\t\t\t}\n\t\tcase syscall.IFLA_IFNAME:\n\t\t\tbase.Name = string(attr.Value[:len(attr.Value)-1])\n\t\tcase syscall.IFLA_MTU:\n\t\t\tbase.MTU = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.IFLA_LINK:\n\t\t\tbase.ParentIndex = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.IFLA_MASTER:\n\t\t\tbase.MasterIndex = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.IFLA_TXQLEN:\n\t\t\tbase.TxQLen = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.IFLA_IFALIAS:\n\t\t\tbase.Alias = string(attr.Value[:len(attr.Value)-1])\n\t\tcase syscall.IFLA_STATS:\n\t\t\tstats32 = attr.Value[:]\n\t\tcase IFLA_STATS64:\n\t\t\tstats64 = attr.Value[:]\n\t\tcase nl.IFLA_XDP:\n\t\t\txdp, err := parseLinkXdp(attr.Value[:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tbase.Xdp = xdp\n\t\tcase syscall.IFLA_PROTINFO | syscall.NLA_F_NESTED:\n\t\t\tif hdr != nil && hdr.Type == syscall.RTM_NEWLINK &&\n\t\t\t\tmsg.Family == syscall.AF_BRIDGE {\n\t\t\t\tattrs, err := nl.ParseRouteAttr(attr.Value[:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tbase.Protinfo = parseProtinfo(attrs)\n\t\t\t}\n\t\tcase syscall.IFLA_OPERSTATE:\n\t\t\tbase.OperState = LinkOperState(uint8(attr.Value[0]))\n\t\t}\n\t}\n\n\tif stats64 != nil {\n\t\tbase.Statistics = parseLinkStats64(stats64)\n\t} else if stats32 != nil {\n\t\tbase.Statistics = parseLinkStats32(stats32)\n\t}\n\n\t// Links that don't have IFLA_INFO_KIND are hardware devices\n\tif link == nil {\n\t\tlink = &Device{}\n\t}\n\t*link.Attrs() = base\n\n\treturn link, nil\n}\n\n// LinkList gets a list of link devices.\n// Equivalent to: `ip link show`\nfunc LinkList() ([]Link, error) {\n\treturn pkgHandle.LinkList()\n}\n\n// LinkList gets a list of link devices.\n// Equivalent to: `ip link show`\nfunc (h *Handle) LinkList() ([]Link, error) {\n\t// NOTE(vish): This duplicates functionality in net/iface_linux.go, but we need\n\t//             to get the message ourselves to parse link type.\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_UNSPEC)\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWLINK)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Link\n\tfor _, m := range msgs {\n\t\tlink, err := LinkDeserialize(nil, m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tres = append(res, link)\n\t}\n\n\treturn res, nil\n}\n\n// LinkUpdate is used to pass information back from LinkSubscribe()\ntype LinkUpdate struct {\n\tnl.IfInfomsg\n\tHeader syscall.NlMsghdr\n\tLink\n}\n\n// LinkSubscribe takes a chan down which notifications will be sent\n// when links change.  Close the 'done' chan to stop subscription.\nfunc LinkSubscribe(ch chan<- LinkUpdate, done <-chan struct{}) error {\n\treturn linkSubscribe(netns.None(), netns.None(), ch, done)\n}\n\n// LinkSubscribeAt works like LinkSubscribe plus it allows the caller\n// to choose the network namespace in which to subscribe (ns).\nfunc LinkSubscribeAt(ns netns.NsHandle, ch chan<- LinkUpdate, done <-chan struct{}) error {\n\treturn linkSubscribe(ns, netns.None(), ch, done)\n}\n\nfunc linkSubscribe(newNs, curNs netns.NsHandle, ch chan<- LinkUpdate, done <-chan struct{}) error {\n\ts, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_LINK)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif done != nil {\n\t\tgo func() {\n\t\t\t<-done\n\t\t\ts.Close()\n\t\t}()\n\t}\n\tgo func() {\n\t\tdefer close(ch)\n\t\tfor {\n\t\t\tmsgs, err := s.Receive()\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor _, m := range msgs {\n\t\t\t\tifmsg := nl.DeserializeIfInfomsg(m.Data)\n\t\t\t\tlink, err := LinkDeserialize(&m.Header, m.Data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tch <- LinkUpdate{IfInfomsg: *ifmsg, Header: m.Header, Link: link}\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn nil\n}\n\nfunc LinkSetHairpin(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetHairpin(link, mode)\n}\n\nfunc (h *Handle) LinkSetHairpin(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_MODE)\n}\n\nfunc LinkSetGuard(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetGuard(link, mode)\n}\n\nfunc (h *Handle) LinkSetGuard(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_GUARD)\n}\n\nfunc LinkSetFastLeave(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetFastLeave(link, mode)\n}\n\nfunc (h *Handle) LinkSetFastLeave(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_FAST_LEAVE)\n}\n\nfunc LinkSetLearning(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetLearning(link, mode)\n}\n\nfunc (h *Handle) LinkSetLearning(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_LEARNING)\n}\n\nfunc LinkSetRootBlock(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetRootBlock(link, mode)\n}\n\nfunc (h *Handle) LinkSetRootBlock(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_PROTECT)\n}\n\nfunc LinkSetFlood(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetFlood(link, mode)\n}\n\nfunc (h *Handle) LinkSetFlood(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_UNICAST_FLOOD)\n}\n\nfunc LinkSetBrProxyArp(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetBrProxyArp(link, mode)\n}\n\nfunc (h *Handle) LinkSetBrProxyArp(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_PROXYARP)\n}\n\nfunc LinkSetBrProxyArpWiFi(link Link, mode bool) error {\n\treturn pkgHandle.LinkSetBrProxyArpWiFi(link, mode)\n}\n\nfunc (h *Handle) LinkSetBrProxyArpWiFi(link Link, mode bool) error {\n\treturn h.setProtinfoAttr(link, mode, nl.IFLA_BRPORT_PROXYARP_WIFI)\n}\n\nfunc (h *Handle) setProtinfoAttr(link Link, mode bool, attr int) error {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\treq := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)\n\n\tmsg := nl.NewIfInfomsg(syscall.AF_BRIDGE)\n\tmsg.Index = int32(base.Index)\n\treq.AddData(msg)\n\n\tbr := nl.NewRtAttr(syscall.IFLA_PROTINFO|syscall.NLA_F_NESTED, nil)\n\tnl.NewRtAttrChild(br, attr, boolToByte(mode))\n\treq.AddData(br)\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc parseVlanData(link Link, data []syscall.NetlinkRouteAttr) {\n\tvlan := link.(*Vlan)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_VLAN_ID:\n\t\t\tvlan.VlanId = int(native.Uint16(datum.Value[0:2]))\n\t\t}\n\t}\n}\n\nfunc parseVxlanData(link Link, data []syscall.NetlinkRouteAttr) {\n\tvxlan := link.(*Vxlan)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_VXLAN_ID:\n\t\t\tvxlan.VxlanId = int(native.Uint32(datum.Value[0:4]))\n\t\tcase nl.IFLA_VXLAN_LINK:\n\t\t\tvxlan.VtepDevIndex = int(native.Uint32(datum.Value[0:4]))\n\t\tcase nl.IFLA_VXLAN_LOCAL:\n\t\t\tvxlan.SrcAddr = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_VXLAN_LOCAL6:\n\t\t\tvxlan.SrcAddr = net.IP(datum.Value[0:16])\n\t\tcase nl.IFLA_VXLAN_GROUP:\n\t\t\tvxlan.Group = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_VXLAN_GROUP6:\n\t\t\tvxlan.Group = net.IP(datum.Value[0:16])\n\t\tcase nl.IFLA_VXLAN_TTL:\n\t\t\tvxlan.TTL = int(datum.Value[0])\n\t\tcase nl.IFLA_VXLAN_TOS:\n\t\t\tvxlan.TOS = int(datum.Value[0])\n\t\tcase nl.IFLA_VXLAN_LEARNING:\n\t\t\tvxlan.Learning = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_PROXY:\n\t\t\tvxlan.Proxy = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_RSC:\n\t\t\tvxlan.RSC = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_L2MISS:\n\t\t\tvxlan.L2miss = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_L3MISS:\n\t\t\tvxlan.L3miss = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_UDP_CSUM:\n\t\t\tvxlan.UDPCSum = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_GBP:\n\t\t\tvxlan.GBP = true\n\t\tcase nl.IFLA_VXLAN_FLOWBASED:\n\t\t\tvxlan.FlowBased = int8(datum.Value[0]) != 0\n\t\tcase nl.IFLA_VXLAN_AGEING:\n\t\t\tvxlan.Age = int(native.Uint32(datum.Value[0:4]))\n\t\t\tvxlan.NoAge = vxlan.Age == 0\n\t\tcase nl.IFLA_VXLAN_LIMIT:\n\t\t\tvxlan.Limit = int(native.Uint32(datum.Value[0:4]))\n\t\tcase nl.IFLA_VXLAN_PORT:\n\t\t\tvxlan.Port = int(ntohs(datum.Value[0:2]))\n\t\tcase nl.IFLA_VXLAN_PORT_RANGE:\n\t\t\tbuf := bytes.NewBuffer(datum.Value[0:4])\n\t\t\tvar pr vxlanPortRange\n\t\t\tif binary.Read(buf, binary.BigEndian, &pr) != nil {\n\t\t\t\tvxlan.PortLow = int(pr.Lo)\n\t\t\t\tvxlan.PortHigh = int(pr.Hi)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc parseBondData(link Link, data []syscall.NetlinkRouteAttr) {\n\tbond := link.(*Bond)\n\tfor i := range data {\n\t\tswitch data[i].Attr.Type {\n\t\tcase nl.IFLA_BOND_MODE:\n\t\t\tbond.Mode = BondMode(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_ACTIVE_SLAVE:\n\t\t\tbond.ActiveSlave = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_MIIMON:\n\t\t\tbond.Miimon = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_UPDELAY:\n\t\t\tbond.UpDelay = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_DOWNDELAY:\n\t\t\tbond.DownDelay = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_USE_CARRIER:\n\t\t\tbond.UseCarrier = int(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_ARP_INTERVAL:\n\t\t\tbond.ArpInterval = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_ARP_IP_TARGET:\n\t\t\t// TODO: implement\n\t\tcase nl.IFLA_BOND_ARP_VALIDATE:\n\t\t\tbond.ArpValidate = BondArpValidate(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_ARP_ALL_TARGETS:\n\t\t\tbond.ArpAllTargets = BondArpAllTargets(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_PRIMARY:\n\t\t\tbond.Primary = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_PRIMARY_RESELECT:\n\t\t\tbond.PrimaryReselect = BondPrimaryReselect(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_FAIL_OVER_MAC:\n\t\t\tbond.FailOverMac = BondFailOverMac(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_XMIT_HASH_POLICY:\n\t\t\tbond.XmitHashPolicy = BondXmitHashPolicy(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_RESEND_IGMP:\n\t\t\tbond.ResendIgmp = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_NUM_PEER_NOTIF:\n\t\t\tbond.NumPeerNotif = int(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_ALL_SLAVES_ACTIVE:\n\t\t\tbond.AllSlavesActive = int(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_MIN_LINKS:\n\t\t\tbond.MinLinks = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_LP_INTERVAL:\n\t\t\tbond.LpInterval = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_PACKETS_PER_SLAVE:\n\t\t\tbond.PackersPerSlave = int(native.Uint32(data[i].Value[0:4]))\n\t\tcase nl.IFLA_BOND_AD_LACP_RATE:\n\t\t\tbond.LacpRate = BondLacpRate(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_AD_SELECT:\n\t\t\tbond.AdSelect = BondAdSelect(data[i].Value[0])\n\t\tcase nl.IFLA_BOND_AD_INFO:\n\t\t\t// TODO: implement\n\t\tcase nl.IFLA_BOND_AD_ACTOR_SYS_PRIO:\n\t\t\tbond.AdActorSysPrio = int(native.Uint16(data[i].Value[0:2]))\n\t\tcase nl.IFLA_BOND_AD_USER_PORT_KEY:\n\t\t\tbond.AdUserPortKey = int(native.Uint16(data[i].Value[0:2]))\n\t\tcase nl.IFLA_BOND_AD_ACTOR_SYSTEM:\n\t\t\tbond.AdActorSystem = net.HardwareAddr(data[i].Value[0:6])\n\t\tcase nl.IFLA_BOND_TLB_DYNAMIC_LB:\n\t\t\tbond.TlbDynamicLb = int(data[i].Value[0])\n\t\t}\n\t}\n}\n\nfunc parseIPVlanData(link Link, data []syscall.NetlinkRouteAttr) {\n\tipv := link.(*IPVlan)\n\tfor _, datum := range data {\n\t\tif datum.Attr.Type == nl.IFLA_IPVLAN_MODE {\n\t\t\tipv.Mode = IPVlanMode(native.Uint32(datum.Value[0:4]))\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc parseMacvtapData(link Link, data []syscall.NetlinkRouteAttr) {\n\tmacv := link.(*Macvtap)\n\tparseMacvlanData(&macv.Macvlan, data)\n}\n\nfunc parseMacvlanData(link Link, data []syscall.NetlinkRouteAttr) {\n\tmacv := link.(*Macvlan)\n\tfor _, datum := range data {\n\t\tif datum.Attr.Type == nl.IFLA_MACVLAN_MODE {\n\t\t\tswitch native.Uint32(datum.Value[0:4]) {\n\t\t\tcase nl.MACVLAN_MODE_PRIVATE:\n\t\t\t\tmacv.Mode = MACVLAN_MODE_PRIVATE\n\t\t\tcase nl.MACVLAN_MODE_VEPA:\n\t\t\t\tmacv.Mode = MACVLAN_MODE_VEPA\n\t\t\tcase nl.MACVLAN_MODE_BRIDGE:\n\t\t\t\tmacv.Mode = MACVLAN_MODE_BRIDGE\n\t\t\tcase nl.MACVLAN_MODE_PASSTHRU:\n\t\t\t\tmacv.Mode = MACVLAN_MODE_PASSTHRU\n\t\t\tcase nl.MACVLAN_MODE_SOURCE:\n\t\t\t\tmacv.Mode = MACVLAN_MODE_SOURCE\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// copied from pkg/net_linux.go\nfunc linkFlags(rawFlags uint32) net.Flags {\n\tvar f net.Flags\n\tif rawFlags&syscall.IFF_UP != 0 {\n\t\tf |= net.FlagUp\n\t}\n\tif rawFlags&syscall.IFF_BROADCAST != 0 {\n\t\tf |= net.FlagBroadcast\n\t}\n\tif rawFlags&syscall.IFF_LOOPBACK != 0 {\n\t\tf |= net.FlagLoopback\n\t}\n\tif rawFlags&syscall.IFF_POINTOPOINT != 0 {\n\t\tf |= net.FlagPointToPoint\n\t}\n\tif rawFlags&syscall.IFF_MULTICAST != 0 {\n\t\tf |= net.FlagMulticast\n\t}\n\treturn f\n}\n\nfunc addGretapAttrs(gretap *Gretap, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\n\tif gretap.FlowBased {\n\t\t// In flow based mode, no other attributes need to be configured\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_COLLECT_METADATA, boolAttr(gretap.FlowBased))\n\t\treturn\n\t}\n\n\tip := gretap.Local.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_LOCAL, []byte(ip))\n\t}\n\tip = gretap.Remote.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_REMOTE, []byte(ip))\n\t}\n\n\tif gretap.IKey != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_IKEY, htonl(gretap.IKey))\n\t\tgretap.IFlags |= uint16(nl.GRE_KEY)\n\t}\n\n\tif gretap.OKey != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_OKEY, htonl(gretap.OKey))\n\t\tgretap.OFlags |= uint16(nl.GRE_KEY)\n\t}\n\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_IFLAGS, htons(gretap.IFlags))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_OFLAGS, htons(gretap.OFlags))\n\n\tif gretap.Link != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GRE_LINK, nl.Uint32Attr(gretap.Link))\n\t}\n\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_PMTUDISC, nl.Uint8Attr(gretap.PMtuDisc))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_TTL, nl.Uint8Attr(gretap.Ttl))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_TOS, nl.Uint8Attr(gretap.Tos))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_TYPE, nl.Uint16Attr(gretap.EncapType))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_FLAGS, nl.Uint16Attr(gretap.EncapFlags))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_SPORT, htons(gretap.EncapSport))\n\tnl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_DPORT, htons(gretap.EncapDport))\n}\n\nfunc parseGretapData(link Link, data []syscall.NetlinkRouteAttr) {\n\tgre := link.(*Gretap)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_GRE_OKEY:\n\t\t\tgre.IKey = ntohl(datum.Value[0:4])\n\t\tcase nl.IFLA_GRE_IKEY:\n\t\t\tgre.OKey = ntohl(datum.Value[0:4])\n\t\tcase nl.IFLA_GRE_LOCAL:\n\t\t\tgre.Local = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_GRE_REMOTE:\n\t\t\tgre.Remote = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_GRE_ENCAP_SPORT:\n\t\t\tgre.EncapSport = ntohs(datum.Value[0:2])\n\t\tcase nl.IFLA_GRE_ENCAP_DPORT:\n\t\t\tgre.EncapDport = ntohs(datum.Value[0:2])\n\t\tcase nl.IFLA_GRE_IFLAGS:\n\t\t\tgre.IFlags = ntohs(datum.Value[0:2])\n\t\tcase nl.IFLA_GRE_OFLAGS:\n\t\t\tgre.OFlags = ntohs(datum.Value[0:2])\n\n\t\tcase nl.IFLA_GRE_TTL:\n\t\t\tgre.Ttl = uint8(datum.Value[0])\n\t\tcase nl.IFLA_GRE_TOS:\n\t\t\tgre.Tos = uint8(datum.Value[0])\n\t\tcase nl.IFLA_GRE_PMTUDISC:\n\t\t\tgre.PMtuDisc = uint8(datum.Value[0])\n\t\tcase nl.IFLA_GRE_ENCAP_TYPE:\n\t\t\tgre.EncapType = native.Uint16(datum.Value[0:2])\n\t\tcase nl.IFLA_GRE_ENCAP_FLAGS:\n\t\t\tgre.EncapFlags = native.Uint16(datum.Value[0:2])\n\t\tcase nl.IFLA_GRE_COLLECT_METADATA:\n\t\t\tgre.FlowBased = int8(datum.Value[0]) != 0\n\t\t}\n\t}\n}\n\nfunc parseLinkStats32(data []byte) *LinkStatistics {\n\treturn (*LinkStatistics)((*LinkStatistics32)(unsafe.Pointer(&data[0:SizeofLinkStats32][0])).to64())\n}\n\nfunc parseLinkStats64(data []byte) *LinkStatistics {\n\treturn (*LinkStatistics)((*LinkStatistics64)(unsafe.Pointer(&data[0:SizeofLinkStats64][0])))\n}\n\nfunc addXdpAttrs(xdp *LinkXdp, req *nl.NetlinkRequest) {\n\tattrs := nl.NewRtAttr(nl.IFLA_XDP|syscall.NLA_F_NESTED, nil)\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(xdp.Fd))\n\tnl.NewRtAttrChild(attrs, nl.IFLA_XDP_FD, b)\n\tnative.PutUint32(b, xdp.Flags)\n\tnl.NewRtAttrChild(attrs, nl.IFLA_XDP_FLAGS, b)\n\treq.AddData(attrs)\n}\n\nfunc parseLinkXdp(data []byte) (*LinkXdp, error) {\n\tattrs, err := nl.ParseRouteAttr(data)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\txdp := &LinkXdp{}\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase nl.IFLA_XDP_FD:\n\t\t\txdp.Fd = int(native.Uint32(attr.Value[0:4]))\n\t\tcase nl.IFLA_XDP_ATTACHED:\n\t\t\txdp.Attached = attr.Value[0] != 0\n\t\tcase nl.IFLA_XDP_FLAGS:\n\t\t\txdp.Flags = native.Uint32(attr.Value[0:4])\n\t\tcase nl.IFLA_XDP_PROG_ID:\n\t\t\txdp.ProgId = native.Uint32(attr.Value[0:4])\n\t\t}\n\t}\n\treturn xdp, nil\n}\n\nfunc addIptunAttrs(iptun *Iptun, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\n\tip := iptun.Local.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_LOCAL, []byte(ip))\n\t}\n\n\tip = iptun.Remote.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_REMOTE, []byte(ip))\n\t}\n\n\tif iptun.Link != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_LINK, nl.Uint32Attr(iptun.Link))\n\t}\n\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_PMTUDISC, nl.Uint8Attr(iptun.PMtuDisc))\n\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_TTL, nl.Uint8Attr(iptun.Ttl))\n\tnl.NewRtAttrChild(data, nl.IFLA_IPTUN_TOS, nl.Uint8Attr(iptun.Tos))\n}\n\nfunc parseIptunData(link Link, data []syscall.NetlinkRouteAttr) {\n\tiptun := link.(*Iptun)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_IPTUN_LOCAL:\n\t\t\tiptun.Local = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_IPTUN_REMOTE:\n\t\t\tiptun.Remote = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_IPTUN_TTL:\n\t\t\tiptun.Ttl = uint8(datum.Value[0])\n\t\tcase nl.IFLA_IPTUN_TOS:\n\t\t\tiptun.Tos = uint8(datum.Value[0])\n\t\tcase nl.IFLA_IPTUN_PMTUDISC:\n\t\t\tiptun.PMtuDisc = uint8(datum.Value[0])\n\t\t}\n\t}\n}\n\nfunc addVtiAttrs(vti *Vti, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\n\tip := vti.Local.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VTI_LOCAL, []byte(ip))\n\t}\n\n\tip = vti.Remote.To4()\n\tif ip != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VTI_REMOTE, []byte(ip))\n\t}\n\n\tif vti.Link != 0 {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_VTI_LINK, nl.Uint32Attr(vti.Link))\n\t}\n\n\tnl.NewRtAttrChild(data, nl.IFLA_VTI_IKEY, htonl(vti.IKey))\n\tnl.NewRtAttrChild(data, nl.IFLA_VTI_OKEY, htonl(vti.OKey))\n}\n\nfunc parseVtiData(link Link, data []syscall.NetlinkRouteAttr) {\n\tvti := link.(*Vti)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_VTI_LOCAL:\n\t\t\tvti.Local = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_VTI_REMOTE:\n\t\t\tvti.Remote = net.IP(datum.Value[0:4])\n\t\tcase nl.IFLA_VTI_IKEY:\n\t\t\tvti.IKey = ntohl(datum.Value[0:4])\n\t\tcase nl.IFLA_VTI_OKEY:\n\t\t\tvti.OKey = ntohl(datum.Value[0:4])\n\t\t}\n\t}\n}\n\nfunc addVrfAttrs(vrf *Vrf, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\tb := make([]byte, 4)\n\tnative.PutUint32(b, uint32(vrf.Table))\n\tnl.NewRtAttrChild(data, nl.IFLA_VRF_TABLE, b)\n}\n\nfunc parseVrfData(link Link, data []syscall.NetlinkRouteAttr) {\n\tvrf := link.(*Vrf)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_VRF_TABLE:\n\t\t\tvrf.Table = native.Uint32(datum.Value[0:4])\n\t\t}\n\t}\n}\n\nfunc addBridgeAttrs(bridge *Bridge, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\tif bridge.MulticastSnooping != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BR_MCAST_SNOOPING, boolToByte(*bridge.MulticastSnooping))\n\t}\n\tif bridge.HelloTime != nil {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_BR_HELLO_TIME, nl.Uint32Attr(*bridge.HelloTime))\n\t}\n}\n\nfunc parseBridgeData(bridge Link, data []syscall.NetlinkRouteAttr) {\n\tbr := bridge.(*Bridge)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_BR_HELLO_TIME:\n\t\t\thelloTime := native.Uint32(datum.Value[0:4])\n\t\t\tbr.HelloTime = &helloTime\n\t\tcase nl.IFLA_BR_MCAST_SNOOPING:\n\t\t\tmcastSnooping := datum.Value[0] == 1\n\t\t\tbr.MulticastSnooping = &mcastSnooping\n\t\t}\n\t}\n}\n\nfunc addGTPAttrs(gtp *GTP, linkInfo *nl.RtAttr) {\n\tdata := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)\n\tnl.NewRtAttrChild(data, nl.IFLA_GTP_FD0, nl.Uint32Attr(uint32(gtp.FD0)))\n\tnl.NewRtAttrChild(data, nl.IFLA_GTP_FD1, nl.Uint32Attr(uint32(gtp.FD1)))\n\tnl.NewRtAttrChild(data, nl.IFLA_GTP_PDP_HASHSIZE, nl.Uint32Attr(131072))\n\tif gtp.Role != nl.GTP_ROLE_GGSN {\n\t\tnl.NewRtAttrChild(data, nl.IFLA_GTP_ROLE, nl.Uint32Attr(uint32(gtp.Role)))\n\t}\n}\n\nfunc parseGTPData(link Link, data []syscall.NetlinkRouteAttr) {\n\tgtp := link.(*GTP)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.IFLA_GTP_FD0:\n\t\t\tgtp.FD0 = int(native.Uint32(datum.Value))\n\t\tcase nl.IFLA_GTP_FD1:\n\t\t\tgtp.FD1 = int(native.Uint32(datum.Value))\n\t\tcase nl.IFLA_GTP_PDP_HASHSIZE:\n\t\t\tgtp.PDPHashsize = int(native.Uint32(datum.Value))\n\t\tcase nl.IFLA_GTP_ROLE:\n\t\t\tgtp.Role = int(native.Uint32(datum.Value))\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/link_tuntap_linux.go",
    "content": "package netlink\n\n// ideally golang.org/x/sys/unix would define IfReq but it only has\n// IFNAMSIZ, hence this minimalistic implementation\nconst (\n\tSizeOfIfReq = 40\n\tIFNAMSIZ    = 16\n)\n\ntype ifReq struct {\n\tName  [IFNAMSIZ]byte\n\tFlags uint16\n\tpad   [SizeOfIfReq - IFNAMSIZ - 2]byte\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/neigh.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// Neigh represents a link layer neighbor from netlink.\ntype Neigh struct {\n\tLinkIndex    int\n\tFamily       int\n\tState        int\n\tType         int\n\tFlags        int\n\tIP           net.IP\n\tHardwareAddr net.HardwareAddr\n}\n\n// String returns $ip/$hwaddr $label\nfunc (neigh *Neigh) String() string {\n\treturn fmt.Sprintf(\"%s %s\", neigh.IP, neigh.HardwareAddr)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/neigh_linux.go",
    "content": "package netlink\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nconst (\n\tNDA_UNSPEC = iota\n\tNDA_DST\n\tNDA_LLADDR\n\tNDA_CACHEINFO\n\tNDA_PROBES\n\tNDA_VLAN\n\tNDA_PORT\n\tNDA_VNI\n\tNDA_IFINDEX\n\tNDA_MAX = NDA_IFINDEX\n)\n\n// Neighbor Cache Entry States.\nconst (\n\tNUD_NONE       = 0x00\n\tNUD_INCOMPLETE = 0x01\n\tNUD_REACHABLE  = 0x02\n\tNUD_STALE      = 0x04\n\tNUD_DELAY      = 0x08\n\tNUD_PROBE      = 0x10\n\tNUD_FAILED     = 0x20\n\tNUD_NOARP      = 0x40\n\tNUD_PERMANENT  = 0x80\n)\n\n// Neighbor Flags\nconst (\n\tNTF_USE    = 0x01\n\tNTF_SELF   = 0x02\n\tNTF_MASTER = 0x04\n\tNTF_PROXY  = 0x08\n\tNTF_ROUTER = 0x80\n)\n\ntype Ndmsg struct {\n\tFamily uint8\n\tIndex  uint32\n\tState  uint16\n\tFlags  uint8\n\tType   uint8\n}\n\nfunc deserializeNdmsg(b []byte) *Ndmsg {\n\tvar dummy Ndmsg\n\treturn (*Ndmsg)(unsafe.Pointer(&b[0:unsafe.Sizeof(dummy)][0]))\n}\n\nfunc (msg *Ndmsg) Serialize() []byte {\n\treturn (*(*[unsafe.Sizeof(*msg)]byte)(unsafe.Pointer(msg)))[:]\n}\n\nfunc (msg *Ndmsg) Len() int {\n\treturn int(unsafe.Sizeof(*msg))\n}\n\n// NeighAdd will add an IP to MAC mapping to the ARP table\n// Equivalent to: `ip neigh add ....`\nfunc NeighAdd(neigh *Neigh) error {\n\treturn pkgHandle.NeighAdd(neigh)\n}\n\n// NeighAdd will add an IP to MAC mapping to the ARP table\n// Equivalent to: `ip neigh add ....`\nfunc (h *Handle) NeighAdd(neigh *Neigh) error {\n\treturn h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL)\n}\n\n// NeighSet will add or replace an IP to MAC mapping to the ARP table\n// Equivalent to: `ip neigh replace....`\nfunc NeighSet(neigh *Neigh) error {\n\treturn pkgHandle.NeighSet(neigh)\n}\n\n// NeighSet will add or replace an IP to MAC mapping to the ARP table\n// Equivalent to: `ip neigh replace....`\nfunc (h *Handle) NeighSet(neigh *Neigh) error {\n\treturn h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_REPLACE)\n}\n\n// NeighAppend will append an entry to FDB\n// Equivalent to: `bridge fdb append...`\nfunc NeighAppend(neigh *Neigh) error {\n\treturn pkgHandle.NeighAppend(neigh)\n}\n\n// NeighAppend will append an entry to FDB\n// Equivalent to: `bridge fdb append...`\nfunc (h *Handle) NeighAppend(neigh *Neigh) error {\n\treturn h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_APPEND)\n}\n\n// NeighAppend will append an entry to FDB\n// Equivalent to: `bridge fdb append...`\nfunc neighAdd(neigh *Neigh, mode int) error {\n\treturn pkgHandle.neighAdd(neigh, mode)\n}\n\n// NeighAppend will append an entry to FDB\n// Equivalent to: `bridge fdb append...`\nfunc (h *Handle) neighAdd(neigh *Neigh, mode int) error {\n\treq := h.newNetlinkRequest(syscall.RTM_NEWNEIGH, mode|syscall.NLM_F_ACK)\n\treturn neighHandle(neigh, req)\n}\n\n// NeighDel will delete an IP address from a link device.\n// Equivalent to: `ip addr del $addr dev $link`\nfunc NeighDel(neigh *Neigh) error {\n\treturn pkgHandle.NeighDel(neigh)\n}\n\n// NeighDel will delete an IP address from a link device.\n// Equivalent to: `ip addr del $addr dev $link`\nfunc (h *Handle) NeighDel(neigh *Neigh) error {\n\treq := h.newNetlinkRequest(syscall.RTM_DELNEIGH, syscall.NLM_F_ACK)\n\treturn neighHandle(neigh, req)\n}\n\nfunc neighHandle(neigh *Neigh, req *nl.NetlinkRequest) error {\n\tvar family int\n\tif neigh.Family > 0 {\n\t\tfamily = neigh.Family\n\t} else {\n\t\tfamily = nl.GetIPFamily(neigh.IP)\n\t}\n\n\tmsg := Ndmsg{\n\t\tFamily: uint8(family),\n\t\tIndex:  uint32(neigh.LinkIndex),\n\t\tState:  uint16(neigh.State),\n\t\tType:   uint8(neigh.Type),\n\t\tFlags:  uint8(neigh.Flags),\n\t}\n\treq.AddData(&msg)\n\n\tipData := neigh.IP.To4()\n\tif ipData == nil {\n\t\tipData = neigh.IP.To16()\n\t}\n\n\tdstData := nl.NewRtAttr(NDA_DST, ipData)\n\treq.AddData(dstData)\n\n\tif neigh.Flags != NTF_PROXY || neigh.HardwareAddr != nil {\n\t\thwData := nl.NewRtAttr(NDA_LLADDR, []byte(neigh.HardwareAddr))\n\t\treq.AddData(hwData)\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// NeighList gets a list of IP-MAC mappings in the system (ARP table).\n// Equivalent to: `ip neighbor show`.\n// The list can be filtered by link and ip family.\nfunc NeighList(linkIndex, family int) ([]Neigh, error) {\n\treturn pkgHandle.NeighList(linkIndex, family)\n}\n\n// NeighProxyList gets a list of neighbor proxies in the system.\n// Equivalent to: `ip neighbor show proxy`.\n// The list can be filtered by link and ip family.\nfunc NeighProxyList(linkIndex, family int) ([]Neigh, error) {\n\treturn pkgHandle.NeighProxyList(linkIndex, family)\n}\n\n// NeighList gets a list of IP-MAC mappings in the system (ARP table).\n// Equivalent to: `ip neighbor show`.\n// The list can be filtered by link and ip family.\nfunc (h *Handle) NeighList(linkIndex, family int) ([]Neigh, error) {\n\treturn h.neighList(linkIndex, family, 0)\n}\n\n// NeighProxyList gets a list of neighbor proxies in the system.\n// Equivalent to: `ip neighbor show proxy`.\n// The list can be filtered by link, ip family.\nfunc (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error) {\n\treturn h.neighList(linkIndex, family, NTF_PROXY)\n}\n\nfunc (h *Handle) neighList(linkIndex, family, flags int) ([]Neigh, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETNEIGH, syscall.NLM_F_DUMP)\n\tmsg := Ndmsg{\n\t\tFamily: uint8(family),\n\t\tIndex:  uint32(linkIndex),\n\t\tFlags:  uint8(flags),\n\t}\n\treq.AddData(&msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWNEIGH)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Neigh\n\tfor _, m := range msgs {\n\t\tndm := deserializeNdmsg(m)\n\t\tif linkIndex != 0 && int(ndm.Index) != linkIndex {\n\t\t\t// Ignore messages from other interfaces\n\t\t\tcontinue\n\t\t}\n\n\t\tneigh, err := NeighDeserialize(m)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tres = append(res, *neigh)\n\t}\n\n\treturn res, nil\n}\n\nfunc NeighDeserialize(m []byte) (*Neigh, error) {\n\tmsg := deserializeNdmsg(m)\n\n\tneigh := Neigh{\n\t\tLinkIndex: int(msg.Index),\n\t\tFamily:    int(msg.Family),\n\t\tState:     int(msg.State),\n\t\tType:      int(msg.Type),\n\t\tFlags:     int(msg.Flags),\n\t}\n\n\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase NDA_DST:\n\t\t\tneigh.IP = net.IP(attr.Value)\n\t\tcase NDA_LLADDR:\n\t\t\tneigh.HardwareAddr = net.HardwareAddr(attr.Value)\n\t\t}\n\t}\n\n\treturn &neigh, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/netlink.go",
    "content": "// Package netlink provides a simple library for netlink. Netlink is\n// the interface a user-space program in linux uses to communicate with\n// the kernel. It can be used to add and remove interfaces, set up ip\n// addresses and routes, and confiugre ipsec. Netlink communication\n// requires elevated privileges, so in most cases this code needs to\n// be run as root. The low level primitives for netlink are contained\n// in the nl subpackage. This package attempts to provide a high-level\n// interface that is loosly modeled on the iproute2 cli.\npackage netlink\n\nimport (\n\t\"errors\"\n\t\"net\"\n)\n\nvar (\n\t// ErrNotImplemented is returned when a requested feature is not implemented.\n\tErrNotImplemented = errors.New(\"not implemented\")\n)\n\n// ParseIPNet parses a string in ip/net format and returns a net.IPNet.\n// This is valuable because addresses in netlink are often IPNets and\n// ParseCIDR returns an IPNet with the IP part set to the base IP of the\n// range.\nfunc ParseIPNet(s string) (*net.IPNet, error) {\n\tip, ipNet, err := net.ParseCIDR(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &net.IPNet{IP: ip, Mask: ipNet.Mask}, nil\n}\n\n// NewIPNet generates an IPNet from an ip address using a netmask of 32 or 128.\nfunc NewIPNet(ip net.IP) *net.IPNet {\n\tif ip.To4() != nil {\n\t\treturn &net.IPNet{IP: ip, Mask: net.CIDRMask(32, 32)}\n\t}\n\treturn &net.IPNet{IP: ip, Mask: net.CIDRMask(128, 128)}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/netlink_linux.go",
    "content": "package netlink\n\nimport \"github.com/vishvananda/netlink/nl\"\n\n// Family type definitions\nconst (\n\tFAMILY_ALL  = nl.FAMILY_ALL\n\tFAMILY_V4   = nl.FAMILY_V4\n\tFAMILY_V6   = nl.FAMILY_V6\n\tFAMILY_MPLS = nl.FAMILY_MPLS\n)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/netlink_unspecified.go",
    "content": "// +build !linux\n\npackage netlink\n\nimport \"net\"\n\nfunc LinkSetUp(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetDown(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetMTU(link Link, mtu int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetMaster(link Link, master *Bridge) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetNsPid(link Link, nspid int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetNsFd(link Link, fd int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetName(link Link, name string) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetAlias(link Link, name string) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetVfVlan(link Link, vf, vlan int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetVfTxRate(link Link, vf, rate int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetNoMaster(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetMasterByIndex(link Link, masterIndex int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetXdpFd(link Link, fd int) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetARPOff(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetARPOn(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkByName(name string) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc LinkByAlias(alias string) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc LinkByIndex(index int) (Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc LinkSetHairpin(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetGuard(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetFastLeave(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetLearning(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetRootBlock(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkSetFlood(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkAdd(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkDel(link Link) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetHairpin(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetGuard(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetFastLeave(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetLearning(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetRootBlock(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc SetFlood(link Link, mode bool) error {\n\treturn ErrNotImplemented\n}\n\nfunc LinkList() ([]Link, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc AddrAdd(link Link, addr *Addr) error {\n\treturn ErrNotImplemented\n}\n\nfunc AddrDel(link Link, addr *Addr) error {\n\treturn ErrNotImplemented\n}\n\nfunc AddrList(link Link, family int) ([]Addr, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc RouteAdd(route *Route) error {\n\treturn ErrNotImplemented\n}\n\nfunc RouteDel(route *Route) error {\n\treturn ErrNotImplemented\n}\n\nfunc RouteList(link Link, family int) ([]Route, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc XfrmPolicyAdd(policy *XfrmPolicy) error {\n\treturn ErrNotImplemented\n}\n\nfunc XfrmPolicyDel(policy *XfrmPolicy) error {\n\treturn ErrNotImplemented\n}\n\nfunc XfrmPolicyList(family int) ([]XfrmPolicy, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc XfrmStateAdd(policy *XfrmState) error {\n\treturn ErrNotImplemented\n}\n\nfunc XfrmStateDel(policy *XfrmState) error {\n\treturn ErrNotImplemented\n}\n\nfunc XfrmStateList(family int) ([]XfrmState, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc NeighAdd(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc NeighSet(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc NeighAppend(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc NeighDel(neigh *Neigh) error {\n\treturn ErrNotImplemented\n}\n\nfunc NeighList(linkIndex, family int) ([]Neigh, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc NeighDeserialize(m []byte) (*Neigh, error) {\n\treturn nil, ErrNotImplemented\n}\n\nfunc SocketGet(local, remote net.Addr) (*Socket, error) {\n\treturn nil, ErrNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/addr_linux.go",
    "content": "package nl\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\ntype IfAddrmsg struct {\n\tsyscall.IfAddrmsg\n}\n\nfunc NewIfAddrmsg(family int) *IfAddrmsg {\n\treturn &IfAddrmsg{\n\t\tIfAddrmsg: syscall.IfAddrmsg{\n\t\t\tFamily: uint8(family),\n\t\t},\n\t}\n}\n\n// struct ifaddrmsg {\n//   __u8    ifa_family;\n//   __u8    ifa_prefixlen;  /* The prefix length    */\n//   __u8    ifa_flags;  /* Flags      */\n//   __u8    ifa_scope;  /* Address scope    */\n//   __u32   ifa_index;  /* Link index     */\n// };\n\n// type IfAddrmsg struct {\n// \tFamily    uint8\n// \tPrefixlen uint8\n// \tFlags     uint8\n// \tScope     uint8\n// \tIndex     uint32\n// }\n// SizeofIfAddrmsg     = 0x8\n\nfunc DeserializeIfAddrmsg(b []byte) *IfAddrmsg {\n\treturn (*IfAddrmsg)(unsafe.Pointer(&b[0:syscall.SizeofIfAddrmsg][0]))\n}\n\nfunc (msg *IfAddrmsg) Serialize() []byte {\n\treturn (*(*[syscall.SizeofIfAddrmsg]byte)(unsafe.Pointer(msg)))[:]\n}\n\nfunc (msg *IfAddrmsg) Len() int {\n\treturn syscall.SizeofIfAddrmsg\n}\n\n// struct ifa_cacheinfo {\n// \t__u32\tifa_prefered;\n// \t__u32\tifa_valid;\n// \t__u32\tcstamp; /* created timestamp, hundredths of seconds */\n// \t__u32\ttstamp; /* updated timestamp, hundredths of seconds */\n// };\n\nconst IFA_CACHEINFO = 6\nconst SizeofIfaCacheInfo = 0x10\n\ntype IfaCacheInfo struct {\n\tIfaPrefered uint32\n\tIfaValid    uint32\n\tCstamp      uint32\n\tTstamp      uint32\n}\n\nfunc (msg *IfaCacheInfo) Len() int {\n\treturn SizeofIfaCacheInfo\n}\n\nfunc DeserializeIfaCacheInfo(b []byte) *IfaCacheInfo {\n\treturn (*IfaCacheInfo)(unsafe.Pointer(&b[0:SizeofIfaCacheInfo][0]))\n}\n\nfunc (msg *IfaCacheInfo) Serialize() []byte {\n\treturn (*(*[SizeofIfaCacheInfo]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/bridge_linux.go",
    "content": "package nl\n\nimport (\n\t\"fmt\"\n\t\"unsafe\"\n)\n\nconst (\n\tSizeofBridgeVlanInfo = 0x04\n)\n\n/* Bridge Flags */\nconst (\n\tBRIDGE_FLAGS_MASTER = iota /* Bridge command to/from master */\n\tBRIDGE_FLAGS_SELF          /* Bridge command to/from lowerdev */\n)\n\n/* Bridge management nested attributes\n * [IFLA_AF_SPEC] = {\n *     [IFLA_BRIDGE_FLAGS]\n *     [IFLA_BRIDGE_MODE]\n *     [IFLA_BRIDGE_VLAN_INFO]\n * }\n */\nconst (\n\tIFLA_BRIDGE_FLAGS = iota\n\tIFLA_BRIDGE_MODE\n\tIFLA_BRIDGE_VLAN_INFO\n)\n\nconst (\n\tBRIDGE_VLAN_INFO_MASTER = 1 << iota\n\tBRIDGE_VLAN_INFO_PVID\n\tBRIDGE_VLAN_INFO_UNTAGGED\n\tBRIDGE_VLAN_INFO_RANGE_BEGIN\n\tBRIDGE_VLAN_INFO_RANGE_END\n)\n\n// struct bridge_vlan_info {\n//   __u16 flags;\n//   __u16 vid;\n// };\n\ntype BridgeVlanInfo struct {\n\tFlags uint16\n\tVid   uint16\n}\n\nfunc (b *BridgeVlanInfo) Serialize() []byte {\n\treturn (*(*[SizeofBridgeVlanInfo]byte)(unsafe.Pointer(b)))[:]\n}\n\nfunc DeserializeBridgeVlanInfo(b []byte) *BridgeVlanInfo {\n\treturn (*BridgeVlanInfo)(unsafe.Pointer(&b[0:SizeofBridgeVlanInfo][0]))\n}\n\nfunc (b *BridgeVlanInfo) PortVID() bool {\n\treturn b.Flags&BRIDGE_VLAN_INFO_PVID > 0\n}\n\nfunc (b *BridgeVlanInfo) EngressUntag() bool {\n\treturn b.Flags&BRIDGE_VLAN_INFO_UNTAGGED > 0\n}\n\nfunc (b *BridgeVlanInfo) String() string {\n\treturn fmt.Sprintf(\"%+v\", *b)\n}\n\n/* New extended info filters for IFLA_EXT_MASK */\nconst (\n\tRTEXT_FILTER_VF = 1 << iota\n\tRTEXT_FILTER_BRVLAN\n\tRTEXT_FILTER_BRVLAN_COMPRESSED\n)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/conntrack_linux.go",
    "content": "package nl\n\nimport \"unsafe\"\n\n// Track the message sizes for the correct serialization/deserialization\nconst (\n\tSizeofNfgenmsg      = 4\n\tSizeofNfattr        = 4\n\tSizeofNfConntrack   = 376\n\tSizeofNfctTupleHead = 52\n)\n\nvar L4ProtoMap = map[uint8]string{\n\t6:  \"tcp\",\n\t17: \"udp\",\n}\n\n// All the following constants are coming from:\n// https://github.com/torvalds/linux/blob/master/include/uapi/linux/netfilter/nfnetlink_conntrack.h\n\n// enum cntl_msg_types {\n// \tIPCTNL_MSG_CT_NEW,\n// \tIPCTNL_MSG_CT_GET,\n// \tIPCTNL_MSG_CT_DELETE,\n// \tIPCTNL_MSG_CT_GET_CTRZERO,\n// \tIPCTNL_MSG_CT_GET_STATS_CPU,\n// \tIPCTNL_MSG_CT_GET_STATS,\n// \tIPCTNL_MSG_CT_GET_DYING,\n// \tIPCTNL_MSG_CT_GET_UNCONFIRMED,\n//\n// \tIPCTNL_MSG_MAX\n// };\nconst (\n\tIPCTNL_MSG_CT_GET    = 1\n\tIPCTNL_MSG_CT_DELETE = 2\n)\n\n// #define NFNETLINK_V0\t0\nconst (\n\tNFNETLINK_V0 = 0\n)\n\n// #define NLA_F_NESTED (1 << 15)\nconst (\n\tNLA_F_NESTED = (1 << 15)\n)\n\n// enum ctattr_type {\n// \tCTA_UNSPEC,\n// \tCTA_TUPLE_ORIG,\n// \tCTA_TUPLE_REPLY,\n// \tCTA_STATUS,\n// \tCTA_PROTOINFO,\n// \tCTA_HELP,\n// \tCTA_NAT_SRC,\n// #define CTA_NAT\tCTA_NAT_SRC\t/* backwards compatibility */\n// \tCTA_TIMEOUT,\n// \tCTA_MARK,\n// \tCTA_COUNTERS_ORIG,\n// \tCTA_COUNTERS_REPLY,\n// \tCTA_USE,\n// \tCTA_ID,\n// \tCTA_NAT_DST,\n// \tCTA_TUPLE_MASTER,\n// \tCTA_SEQ_ADJ_ORIG,\n// \tCTA_NAT_SEQ_ADJ_ORIG\t= CTA_SEQ_ADJ_ORIG,\n// \tCTA_SEQ_ADJ_REPLY,\n// \tCTA_NAT_SEQ_ADJ_REPLY\t= CTA_SEQ_ADJ_REPLY,\n// \tCTA_SECMARK,\t\t/* obsolete */\n// \tCTA_ZONE,\n// \tCTA_SECCTX,\n// \tCTA_TIMESTAMP,\n// \tCTA_MARK_MASK,\n// \tCTA_LABELS,\n// \tCTA_LABELS_MASK,\n// \t__CTA_MAX\n// };\nconst (\n\tCTA_TUPLE_ORIG  = 1\n\tCTA_TUPLE_REPLY = 2\n\tCTA_STATUS      = 3\n\tCTA_TIMEOUT     = 7\n\tCTA_MARK        = 8\n\tCTA_PROTOINFO   = 4\n)\n\n// enum ctattr_tuple {\n// \tCTA_TUPLE_UNSPEC,\n// \tCTA_TUPLE_IP,\n// \tCTA_TUPLE_PROTO,\n// \tCTA_TUPLE_ZONE,\n// \t__CTA_TUPLE_MAX\n// };\n// #define CTA_TUPLE_MAX (__CTA_TUPLE_MAX - 1)\nconst (\n\tCTA_TUPLE_IP    = 1\n\tCTA_TUPLE_PROTO = 2\n)\n\n// enum ctattr_ip {\n// \tCTA_IP_UNSPEC,\n// \tCTA_IP_V4_SRC,\n// \tCTA_IP_V4_DST,\n// \tCTA_IP_V6_SRC,\n// \tCTA_IP_V6_DST,\n// \t__CTA_IP_MAX\n// };\n// #define CTA_IP_MAX (__CTA_IP_MAX - 1)\nconst (\n\tCTA_IP_V4_SRC = 1\n\tCTA_IP_V4_DST = 2\n\tCTA_IP_V6_SRC = 3\n\tCTA_IP_V6_DST = 4\n)\n\n// enum ctattr_l4proto {\n// \tCTA_PROTO_UNSPEC,\n// \tCTA_PROTO_NUM,\n// \tCTA_PROTO_SRC_PORT,\n// \tCTA_PROTO_DST_PORT,\n// \tCTA_PROTO_ICMP_ID,\n// \tCTA_PROTO_ICMP_TYPE,\n// \tCTA_PROTO_ICMP_CODE,\n// \tCTA_PROTO_ICMPV6_ID,\n// \tCTA_PROTO_ICMPV6_TYPE,\n// \tCTA_PROTO_ICMPV6_CODE,\n// \t__CTA_PROTO_MAX\n// };\n// #define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)\nconst (\n\tCTA_PROTO_NUM      = 1\n\tCTA_PROTO_SRC_PORT = 2\n\tCTA_PROTO_DST_PORT = 3\n)\n\n// enum ctattr_protoinfo {\n// \tCTA_PROTOINFO_UNSPEC,\n// \tCTA_PROTOINFO_TCP,\n// \tCTA_PROTOINFO_DCCP,\n// \tCTA_PROTOINFO_SCTP,\n// \t__CTA_PROTOINFO_MAX\n// };\n// #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1)\nconst (\n\tCTA_PROTOINFO_TCP = 1\n)\n\n// enum ctattr_protoinfo_tcp {\n// \tCTA_PROTOINFO_TCP_UNSPEC,\n// \tCTA_PROTOINFO_TCP_STATE,\n// \tCTA_PROTOINFO_TCP_WSCALE_ORIGINAL,\n// \tCTA_PROTOINFO_TCP_WSCALE_REPLY,\n// \tCTA_PROTOINFO_TCP_FLAGS_ORIGINAL,\n// \tCTA_PROTOINFO_TCP_FLAGS_REPLY,\n// \t__CTA_PROTOINFO_TCP_MAX\n// };\n// #define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1)\nconst (\n\tCTA_PROTOINFO_TCP_STATE           = 1\n\tCTA_PROTOINFO_TCP_WSCALE_ORIGINAL = 2\n\tCTA_PROTOINFO_TCP_WSCALE_REPLY    = 3\n\tCTA_PROTOINFO_TCP_FLAGS_ORIGINAL  = 4\n\tCTA_PROTOINFO_TCP_FLAGS_REPLY     = 5\n)\n\n// /* General form of address family dependent message.\n//  */\n// struct nfgenmsg {\n// \t__u8  nfgen_family;\t\t/* AF_xxx */\n// \t__u8  version;\t\t/* nfnetlink version */\n// \t__be16    res_id;\t\t/* resource id */\n// };\ntype Nfgenmsg struct {\n\tNfgenFamily uint8\n\tVersion     uint8\n\tResId       uint16 // big endian\n}\n\nfunc (msg *Nfgenmsg) Len() int {\n\treturn SizeofNfgenmsg\n}\n\nfunc DeserializeNfgenmsg(b []byte) *Nfgenmsg {\n\treturn (*Nfgenmsg)(unsafe.Pointer(&b[0:SizeofNfgenmsg][0]))\n}\n\nfunc (msg *Nfgenmsg) Serialize() []byte {\n\treturn (*(*[SizeofNfgenmsg]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/genetlink_linux.go",
    "content": "package nl\n\nimport (\n\t\"unsafe\"\n)\n\nconst SizeofGenlmsg = 4\n\nconst (\n\tGENL_ID_CTRL      = 0x10\n\tGENL_CTRL_VERSION = 2\n\tGENL_CTRL_NAME    = \"nlctrl\"\n)\n\nconst (\n\tGENL_CTRL_CMD_GETFAMILY = 3\n)\n\nconst (\n\tGENL_CTRL_ATTR_UNSPEC = iota\n\tGENL_CTRL_ATTR_FAMILY_ID\n\tGENL_CTRL_ATTR_FAMILY_NAME\n\tGENL_CTRL_ATTR_VERSION\n\tGENL_CTRL_ATTR_HDRSIZE\n\tGENL_CTRL_ATTR_MAXATTR\n\tGENL_CTRL_ATTR_OPS\n\tGENL_CTRL_ATTR_MCAST_GROUPS\n)\n\nconst (\n\tGENL_CTRL_ATTR_OP_UNSPEC = iota\n\tGENL_CTRL_ATTR_OP_ID\n\tGENL_CTRL_ATTR_OP_FLAGS\n)\n\nconst (\n\tGENL_ADMIN_PERM = 1 << iota\n\tGENL_CMD_CAP_DO\n\tGENL_CMD_CAP_DUMP\n\tGENL_CMD_CAP_HASPOL\n)\n\nconst (\n\tGENL_CTRL_ATTR_MCAST_GRP_UNSPEC = iota\n\tGENL_CTRL_ATTR_MCAST_GRP_NAME\n\tGENL_CTRL_ATTR_MCAST_GRP_ID\n)\n\nconst (\n\tGENL_GTP_VERSION = 0\n\tGENL_GTP_NAME    = \"gtp\"\n)\n\nconst (\n\tGENL_GTP_CMD_NEWPDP = iota\n\tGENL_GTP_CMD_DELPDP\n\tGENL_GTP_CMD_GETPDP\n)\n\nconst (\n\tGENL_GTP_ATTR_UNSPEC = iota\n\tGENL_GTP_ATTR_LINK\n\tGENL_GTP_ATTR_VERSION\n\tGENL_GTP_ATTR_TID\n\tGENL_GTP_ATTR_PEER_ADDRESS\n\tGENL_GTP_ATTR_MS_ADDRESS\n\tGENL_GTP_ATTR_FLOW\n\tGENL_GTP_ATTR_NET_NS_FD\n\tGENL_GTP_ATTR_I_TEI\n\tGENL_GTP_ATTR_O_TEI\n\tGENL_GTP_ATTR_PAD\n)\n\ntype Genlmsg struct {\n\tCommand uint8\n\tVersion uint8\n}\n\nfunc (msg *Genlmsg) Len() int {\n\treturn SizeofGenlmsg\n}\n\nfunc DeserializeGenlmsg(b []byte) *Genlmsg {\n\treturn (*Genlmsg)(unsafe.Pointer(&b[0:SizeofGenlmsg][0]))\n}\n\nfunc (msg *Genlmsg) Serialize() []byte {\n\treturn (*(*[SizeofGenlmsg]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/link_linux.go",
    "content": "package nl\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tDEFAULT_CHANGE = 0xFFFFFFFF\n\t// doesn't exist in syscall\n\tIFLA_VFINFO_LIST = syscall.IFLA_IFALIAS + 1 + iota\n\tIFLA_STATS64\n\tIFLA_VF_PORTS\n\tIFLA_PORT_SELF\n\tIFLA_AF_SPEC\n\tIFLA_GROUP\n\tIFLA_NET_NS_FD\n\tIFLA_EXT_MASK\n\tIFLA_PROMISCUITY\n\tIFLA_NUM_TX_QUEUES\n\tIFLA_NUM_RX_QUEUES\n\tIFLA_CARRIER\n\tIFLA_PHYS_PORT_ID\n\tIFLA_CARRIER_CHANGES\n\tIFLA_PHYS_SWITCH_ID\n\tIFLA_LINK_NETNSID\n\tIFLA_PHYS_PORT_NAME\n\tIFLA_PROTO_DOWN\n\tIFLA_GSO_MAX_SEGS\n\tIFLA_GSO_MAX_SIZE\n\tIFLA_PAD\n\tIFLA_XDP\n)\n\nconst (\n\tIFLA_INFO_UNSPEC = iota\n\tIFLA_INFO_KIND\n\tIFLA_INFO_DATA\n\tIFLA_INFO_XSTATS\n\tIFLA_INFO_MAX = IFLA_INFO_XSTATS\n)\n\nconst (\n\tIFLA_VLAN_UNSPEC = iota\n\tIFLA_VLAN_ID\n\tIFLA_VLAN_FLAGS\n\tIFLA_VLAN_EGRESS_QOS\n\tIFLA_VLAN_INGRESS_QOS\n\tIFLA_VLAN_PROTOCOL\n\tIFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL\n)\n\nconst (\n\tVETH_INFO_UNSPEC = iota\n\tVETH_INFO_PEER\n\tVETH_INFO_MAX = VETH_INFO_PEER\n)\n\nconst (\n\tIFLA_VXLAN_UNSPEC = iota\n\tIFLA_VXLAN_ID\n\tIFLA_VXLAN_GROUP\n\tIFLA_VXLAN_LINK\n\tIFLA_VXLAN_LOCAL\n\tIFLA_VXLAN_TTL\n\tIFLA_VXLAN_TOS\n\tIFLA_VXLAN_LEARNING\n\tIFLA_VXLAN_AGEING\n\tIFLA_VXLAN_LIMIT\n\tIFLA_VXLAN_PORT_RANGE\n\tIFLA_VXLAN_PROXY\n\tIFLA_VXLAN_RSC\n\tIFLA_VXLAN_L2MISS\n\tIFLA_VXLAN_L3MISS\n\tIFLA_VXLAN_PORT\n\tIFLA_VXLAN_GROUP6\n\tIFLA_VXLAN_LOCAL6\n\tIFLA_VXLAN_UDP_CSUM\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX\n\tIFLA_VXLAN_REMCSUM_TX\n\tIFLA_VXLAN_REMCSUM_RX\n\tIFLA_VXLAN_GBP\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL\n\tIFLA_VXLAN_FLOWBASED\n\tIFLA_VXLAN_MAX = IFLA_VXLAN_FLOWBASED\n)\n\nconst (\n\tBRIDGE_MODE_UNSPEC = iota\n\tBRIDGE_MODE_HAIRPIN\n)\n\nconst (\n\tIFLA_BRPORT_UNSPEC = iota\n\tIFLA_BRPORT_STATE\n\tIFLA_BRPORT_PRIORITY\n\tIFLA_BRPORT_COST\n\tIFLA_BRPORT_MODE\n\tIFLA_BRPORT_GUARD\n\tIFLA_BRPORT_PROTECT\n\tIFLA_BRPORT_FAST_LEAVE\n\tIFLA_BRPORT_LEARNING\n\tIFLA_BRPORT_UNICAST_FLOOD\n\tIFLA_BRPORT_PROXYARP\n\tIFLA_BRPORT_LEARNING_SYNC\n\tIFLA_BRPORT_PROXYARP_WIFI\n\tIFLA_BRPORT_MAX = IFLA_BRPORT_PROXYARP_WIFI\n)\n\nconst (\n\tIFLA_IPVLAN_UNSPEC = iota\n\tIFLA_IPVLAN_MODE\n\tIFLA_IPVLAN_MAX = IFLA_IPVLAN_MODE\n)\n\nconst (\n\tIFLA_MACVLAN_UNSPEC = iota\n\tIFLA_MACVLAN_MODE\n\tIFLA_MACVLAN_FLAGS\n\tIFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS\n)\n\nconst (\n\tMACVLAN_MODE_PRIVATE  = 1\n\tMACVLAN_MODE_VEPA     = 2\n\tMACVLAN_MODE_BRIDGE   = 4\n\tMACVLAN_MODE_PASSTHRU = 8\n\tMACVLAN_MODE_SOURCE   = 16\n)\n\nconst (\n\tIFLA_BOND_UNSPEC = iota\n\tIFLA_BOND_MODE\n\tIFLA_BOND_ACTIVE_SLAVE\n\tIFLA_BOND_MIIMON\n\tIFLA_BOND_UPDELAY\n\tIFLA_BOND_DOWNDELAY\n\tIFLA_BOND_USE_CARRIER\n\tIFLA_BOND_ARP_INTERVAL\n\tIFLA_BOND_ARP_IP_TARGET\n\tIFLA_BOND_ARP_VALIDATE\n\tIFLA_BOND_ARP_ALL_TARGETS\n\tIFLA_BOND_PRIMARY\n\tIFLA_BOND_PRIMARY_RESELECT\n\tIFLA_BOND_FAIL_OVER_MAC\n\tIFLA_BOND_XMIT_HASH_POLICY\n\tIFLA_BOND_RESEND_IGMP\n\tIFLA_BOND_NUM_PEER_NOTIF\n\tIFLA_BOND_ALL_SLAVES_ACTIVE\n\tIFLA_BOND_MIN_LINKS\n\tIFLA_BOND_LP_INTERVAL\n\tIFLA_BOND_PACKETS_PER_SLAVE\n\tIFLA_BOND_AD_LACP_RATE\n\tIFLA_BOND_AD_SELECT\n\tIFLA_BOND_AD_INFO\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO\n\tIFLA_BOND_AD_USER_PORT_KEY\n\tIFLA_BOND_AD_ACTOR_SYSTEM\n\tIFLA_BOND_TLB_DYNAMIC_LB\n)\n\nconst (\n\tIFLA_BOND_AD_INFO_UNSPEC = iota\n\tIFLA_BOND_AD_INFO_AGGREGATOR\n\tIFLA_BOND_AD_INFO_NUM_PORTS\n\tIFLA_BOND_AD_INFO_ACTOR_KEY\n\tIFLA_BOND_AD_INFO_PARTNER_KEY\n\tIFLA_BOND_AD_INFO_PARTNER_MAC\n)\n\nconst (\n\tIFLA_BOND_SLAVE_UNSPEC = iota\n\tIFLA_BOND_SLAVE_STATE\n\tIFLA_BOND_SLAVE_MII_STATUS\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT\n\tIFLA_BOND_SLAVE_PERM_HWADDR\n\tIFLA_BOND_SLAVE_QUEUE_ID\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID\n)\n\nconst (\n\tIFLA_GRE_UNSPEC = iota\n\tIFLA_GRE_LINK\n\tIFLA_GRE_IFLAGS\n\tIFLA_GRE_OFLAGS\n\tIFLA_GRE_IKEY\n\tIFLA_GRE_OKEY\n\tIFLA_GRE_LOCAL\n\tIFLA_GRE_REMOTE\n\tIFLA_GRE_TTL\n\tIFLA_GRE_TOS\n\tIFLA_GRE_PMTUDISC\n\tIFLA_GRE_ENCAP_LIMIT\n\tIFLA_GRE_FLOWINFO\n\tIFLA_GRE_FLAGS\n\tIFLA_GRE_ENCAP_TYPE\n\tIFLA_GRE_ENCAP_FLAGS\n\tIFLA_GRE_ENCAP_SPORT\n\tIFLA_GRE_ENCAP_DPORT\n\tIFLA_GRE_COLLECT_METADATA\n\tIFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA\n)\n\nconst (\n\tGRE_CSUM    = 0x8000\n\tGRE_ROUTING = 0x4000\n\tGRE_KEY     = 0x2000\n\tGRE_SEQ     = 0x1000\n\tGRE_STRICT  = 0x0800\n\tGRE_REC     = 0x0700\n\tGRE_FLAGS   = 0x00F8\n\tGRE_VERSION = 0x0007\n)\n\nconst (\n\tIFLA_VF_INFO_UNSPEC = iota\n\tIFLA_VF_INFO\n\tIFLA_VF_INFO_MAX = IFLA_VF_INFO\n)\n\nconst (\n\tIFLA_VF_UNSPEC = iota\n\tIFLA_VF_MAC    /* Hardware queue specific attributes */\n\tIFLA_VF_VLAN\n\tIFLA_VF_TX_RATE      /* Max TX Bandwidth Allocation */\n\tIFLA_VF_SPOOFCHK     /* Spoof Checking on/off switch */\n\tIFLA_VF_LINK_STATE   /* link state enable/disable/auto switch */\n\tIFLA_VF_RATE         /* Min and Max TX Bandwidth Allocation */\n\tIFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query\n\t * on/off switch\n\t */\n\tIFLA_VF_STATS /* network device statistics */\n\tIFLA_VF_TRUST /* Trust state of VF */\n\tIFLA_VF_MAX   = IFLA_VF_TRUST\n)\n\nconst (\n\tIFLA_VF_LINK_STATE_AUTO    = iota /* link state of the uplink */\n\tIFLA_VF_LINK_STATE_ENABLE         /* link always up */\n\tIFLA_VF_LINK_STATE_DISABLE        /* link always down */\n\tIFLA_VF_LINK_STATE_MAX     = IFLA_VF_LINK_STATE_DISABLE\n)\n\nconst (\n\tIFLA_VF_STATS_RX_PACKETS = iota\n\tIFLA_VF_STATS_TX_PACKETS\n\tIFLA_VF_STATS_RX_BYTES\n\tIFLA_VF_STATS_TX_BYTES\n\tIFLA_VF_STATS_BROADCAST\n\tIFLA_VF_STATS_MULTICAST\n\tIFLA_VF_STATS_MAX = IFLA_VF_STATS_MULTICAST\n)\n\nconst (\n\tSizeofVfMac        = 0x24\n\tSizeofVfVlan       = 0x0c\n\tSizeofVfTxRate     = 0x08\n\tSizeofVfRate       = 0x0c\n\tSizeofVfSpoofchk   = 0x08\n\tSizeofVfLinkState  = 0x08\n\tSizeofVfRssQueryEn = 0x08\n\tSizeofVfTrust      = 0x08\n)\n\n// struct ifla_vf_mac {\n//   __u32 vf;\n//   __u8 mac[32]; /* MAX_ADDR_LEN */\n// };\n\ntype VfMac struct {\n\tVf  uint32\n\tMac [32]byte\n}\n\nfunc (msg *VfMac) Len() int {\n\treturn SizeofVfMac\n}\n\nfunc DeserializeVfMac(b []byte) *VfMac {\n\treturn (*VfMac)(unsafe.Pointer(&b[0:SizeofVfMac][0]))\n}\n\nfunc (msg *VfMac) Serialize() []byte {\n\treturn (*(*[SizeofVfMac]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_vlan {\n//   __u32 vf;\n//   __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */\n//   __u32 qos;\n// };\n\ntype VfVlan struct {\n\tVf   uint32\n\tVlan uint32\n\tQos  uint32\n}\n\nfunc (msg *VfVlan) Len() int {\n\treturn SizeofVfVlan\n}\n\nfunc DeserializeVfVlan(b []byte) *VfVlan {\n\treturn (*VfVlan)(unsafe.Pointer(&b[0:SizeofVfVlan][0]))\n}\n\nfunc (msg *VfVlan) Serialize() []byte {\n\treturn (*(*[SizeofVfVlan]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_tx_rate {\n//   __u32 vf;\n//   __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */\n// };\n\ntype VfTxRate struct {\n\tVf   uint32\n\tRate uint32\n}\n\nfunc (msg *VfTxRate) Len() int {\n\treturn SizeofVfTxRate\n}\n\nfunc DeserializeVfTxRate(b []byte) *VfTxRate {\n\treturn (*VfTxRate)(unsafe.Pointer(&b[0:SizeofVfTxRate][0]))\n}\n\nfunc (msg *VfTxRate) Serialize() []byte {\n\treturn (*(*[SizeofVfTxRate]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_rate {\n//   __u32 vf;\n//   __u32 min_tx_rate; /* Min Bandwidth in Mbps */\n//   __u32 max_tx_rate; /* Max Bandwidth in Mbps */\n// };\n\ntype VfRate struct {\n\tVf        uint32\n\tMinTxRate uint32\n\tMaxTxRate uint32\n}\n\nfunc (msg *VfRate) Len() int {\n\treturn SizeofVfRate\n}\n\nfunc DeserializeVfRate(b []byte) *VfRate {\n\treturn (*VfRate)(unsafe.Pointer(&b[0:SizeofVfRate][0]))\n}\n\nfunc (msg *VfRate) Serialize() []byte {\n\treturn (*(*[SizeofVfRate]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_spoofchk {\n//   __u32 vf;\n//   __u32 setting;\n// };\n\ntype VfSpoofchk struct {\n\tVf      uint32\n\tSetting uint32\n}\n\nfunc (msg *VfSpoofchk) Len() int {\n\treturn SizeofVfSpoofchk\n}\n\nfunc DeserializeVfSpoofchk(b []byte) *VfSpoofchk {\n\treturn (*VfSpoofchk)(unsafe.Pointer(&b[0:SizeofVfSpoofchk][0]))\n}\n\nfunc (msg *VfSpoofchk) Serialize() []byte {\n\treturn (*(*[SizeofVfSpoofchk]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_link_state {\n//   __u32 vf;\n//   __u32 link_state;\n// };\n\ntype VfLinkState struct {\n\tVf        uint32\n\tLinkState uint32\n}\n\nfunc (msg *VfLinkState) Len() int {\n\treturn SizeofVfLinkState\n}\n\nfunc DeserializeVfLinkState(b []byte) *VfLinkState {\n\treturn (*VfLinkState)(unsafe.Pointer(&b[0:SizeofVfLinkState][0]))\n}\n\nfunc (msg *VfLinkState) Serialize() []byte {\n\treturn (*(*[SizeofVfLinkState]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_rss_query_en {\n//   __u32 vf;\n//   __u32 setting;\n// };\n\ntype VfRssQueryEn struct {\n\tVf      uint32\n\tSetting uint32\n}\n\nfunc (msg *VfRssQueryEn) Len() int {\n\treturn SizeofVfRssQueryEn\n}\n\nfunc DeserializeVfRssQueryEn(b []byte) *VfRssQueryEn {\n\treturn (*VfRssQueryEn)(unsafe.Pointer(&b[0:SizeofVfRssQueryEn][0]))\n}\n\nfunc (msg *VfRssQueryEn) Serialize() []byte {\n\treturn (*(*[SizeofVfRssQueryEn]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct ifla_vf_trust {\n//   __u32 vf;\n//   __u32 setting;\n// };\n\ntype VfTrust struct {\n\tVf      uint32\n\tSetting uint32\n}\n\nfunc (msg *VfTrust) Len() int {\n\treturn SizeofVfTrust\n}\n\nfunc DeserializeVfTrust(b []byte) *VfTrust {\n\treturn (*VfTrust)(unsafe.Pointer(&b[0:SizeofVfTrust][0]))\n}\n\nfunc (msg *VfTrust) Serialize() []byte {\n\treturn (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:]\n}\n\nconst (\n\tIFLA_XDP_UNSPEC   = iota\n\tIFLA_XDP_FD       /* fd of xdp program to attach, or -1 to remove */\n\tIFLA_XDP_ATTACHED /* read-only bool indicating if prog is attached */\n\tIFLA_XDP_FLAGS    /* xdp prog related flags */\n\tIFLA_XDP_PROG_ID  /* xdp prog id */\n\tIFLA_XDP_MAX      = IFLA_XDP_PROG_ID\n)\n\nconst (\n\tIFLA_IPTUN_UNSPEC = iota\n\tIFLA_IPTUN_LINK\n\tIFLA_IPTUN_LOCAL\n\tIFLA_IPTUN_REMOTE\n\tIFLA_IPTUN_TTL\n\tIFLA_IPTUN_TOS\n\tIFLA_IPTUN_ENCAP_LIMIT\n\tIFLA_IPTUN_FLOWINFO\n\tIFLA_IPTUN_FLAGS\n\tIFLA_IPTUN_PROTO\n\tIFLA_IPTUN_PMTUDISC\n\tIFLA_IPTUN_6RD_PREFIX\n\tIFLA_IPTUN_6RD_RELAY_PREFIX\n\tIFLA_IPTUN_6RD_PREFIXLEN\n\tIFLA_IPTUN_6RD_RELAY_PREFIXLEN\n\tIFLA_IPTUN_MAX = IFLA_IPTUN_6RD_RELAY_PREFIXLEN\n)\n\nconst (\n\tIFLA_VTI_UNSPEC = iota\n\tIFLA_VTI_LINK\n\tIFLA_VTI_IKEY\n\tIFLA_VTI_OKEY\n\tIFLA_VTI_LOCAL\n\tIFLA_VTI_REMOTE\n\tIFLA_VTI_MAX = IFLA_VTI_REMOTE\n)\n\nconst (\n\tIFLA_VRF_UNSPEC = iota\n\tIFLA_VRF_TABLE\n)\n\nconst (\n\tIFLA_BR_UNSPEC = iota\n\tIFLA_BR_FORWARD_DELAY\n\tIFLA_BR_HELLO_TIME\n\tIFLA_BR_MAX_AGE\n\tIFLA_BR_AGEING_TIME\n\tIFLA_BR_STP_STATE\n\tIFLA_BR_PRIORITY\n\tIFLA_BR_VLAN_FILTERING\n\tIFLA_BR_VLAN_PROTOCOL\n\tIFLA_BR_GROUP_FWD_MASK\n\tIFLA_BR_ROOT_ID\n\tIFLA_BR_BRIDGE_ID\n\tIFLA_BR_ROOT_PORT\n\tIFLA_BR_ROOT_PATH_COST\n\tIFLA_BR_TOPOLOGY_CHANGE\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED\n\tIFLA_BR_HELLO_TIMER\n\tIFLA_BR_TCN_TIMER\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER\n\tIFLA_BR_GC_TIMER\n\tIFLA_BR_GROUP_ADDR\n\tIFLA_BR_FDB_FLUSH\n\tIFLA_BR_MCAST_ROUTER\n\tIFLA_BR_MCAST_SNOOPING\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR\n\tIFLA_BR_MCAST_QUERIER\n\tIFLA_BR_MCAST_HASH_ELASTICITY\n\tIFLA_BR_MCAST_HASH_MAX\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL\n\tIFLA_BR_MCAST_QUERIER_INTVL\n\tIFLA_BR_MCAST_QUERY_INTVL\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL\n\tIFLA_BR_NF_CALL_IPTABLES\n\tIFLA_BR_NF_CALL_IP6TABLES\n\tIFLA_BR_NF_CALL_ARPTABLES\n\tIFLA_BR_VLAN_DEFAULT_PVID\n\tIFLA_BR_PAD\n\tIFLA_BR_VLAN_STATS_ENABLED\n\tIFLA_BR_MCAST_STATS_ENABLED\n\tIFLA_BR_MCAST_IGMP_VERSION\n\tIFLA_BR_MCAST_MLD_VERSION\n\tIFLA_BR_MAX = IFLA_BR_MCAST_MLD_VERSION\n)\n\nconst (\n\tIFLA_GTP_UNSPEC = iota\n\tIFLA_GTP_FD0\n\tIFLA_GTP_FD1\n\tIFLA_GTP_PDP_HASHSIZE\n\tIFLA_GTP_ROLE\n)\n\nconst (\n\tGTP_ROLE_GGSN = iota\n\tGTP_ROLE_SGSN\n)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/mpls_linux.go",
    "content": "package nl\n\nimport \"encoding/binary\"\n\nconst (\n\tMPLS_LS_LABEL_SHIFT = 12\n\tMPLS_LS_S_SHIFT     = 8\n)\n\nfunc EncodeMPLSStack(labels ...int) []byte {\n\tb := make([]byte, 4*len(labels))\n\tfor idx, label := range labels {\n\t\tl := label << MPLS_LS_LABEL_SHIFT\n\t\tif idx == len(labels)-1 {\n\t\t\tl |= 1 << MPLS_LS_S_SHIFT\n\t\t}\n\t\tbinary.BigEndian.PutUint32(b[idx*4:], uint32(l))\n\t}\n\treturn b\n}\n\nfunc DecodeMPLSStack(buf []byte) []int {\n\tif len(buf)%4 != 0 {\n\t\treturn nil\n\t}\n\tstack := make([]int, 0, len(buf)/4)\n\tfor len(buf) > 0 {\n\t\tl := binary.BigEndian.Uint32(buf[:4])\n\t\tbuf = buf[4:]\n\t\tstack = append(stack, int(l)>>MPLS_LS_LABEL_SHIFT)\n\t\tif (l>>MPLS_LS_S_SHIFT)&1 > 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn stack\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/nl_linux.go",
    "content": "// Package nl has low level primitives for making Netlink calls.\npackage nl\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"net\"\n\t\"runtime\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/vishvananda/netns\"\n)\n\nconst (\n\t// Family type definitions\n\tFAMILY_ALL  = syscall.AF_UNSPEC\n\tFAMILY_V4   = syscall.AF_INET\n\tFAMILY_V6   = syscall.AF_INET6\n\tFAMILY_MPLS = AF_MPLS\n)\n\n// SupportedNlFamilies contains the list of netlink families this netlink package supports\nvar SupportedNlFamilies = []int{syscall.NETLINK_ROUTE, syscall.NETLINK_XFRM, syscall.NETLINK_NETFILTER}\n\nvar nextSeqNr uint32\n\n// GetIPFamily returns the family type of a net.IP.\nfunc GetIPFamily(ip net.IP) int {\n\tif len(ip) <= net.IPv4len {\n\t\treturn FAMILY_V4\n\t}\n\tif ip.To4() != nil {\n\t\treturn FAMILY_V4\n\t}\n\treturn FAMILY_V6\n}\n\nvar nativeEndian binary.ByteOrder\n\n// Get native endianness for the system\nfunc NativeEndian() binary.ByteOrder {\n\tif nativeEndian == nil {\n\t\tvar x uint32 = 0x01020304\n\t\tif *(*byte)(unsafe.Pointer(&x)) == 0x01 {\n\t\t\tnativeEndian = binary.BigEndian\n\t\t} else {\n\t\t\tnativeEndian = binary.LittleEndian\n\t\t}\n\t}\n\treturn nativeEndian\n}\n\n// Byte swap a 16 bit value if we aren't big endian\nfunc Swap16(i uint16) uint16 {\n\tif NativeEndian() == binary.BigEndian {\n\t\treturn i\n\t}\n\treturn (i&0xff00)>>8 | (i&0xff)<<8\n}\n\n// Byte swap a 32 bit value if aren't big endian\nfunc Swap32(i uint32) uint32 {\n\tif NativeEndian() == binary.BigEndian {\n\t\treturn i\n\t}\n\treturn (i&0xff000000)>>24 | (i&0xff0000)>>8 | (i&0xff00)<<8 | (i&0xff)<<24\n}\n\ntype NetlinkRequestData interface {\n\tLen() int\n\tSerialize() []byte\n}\n\n// IfInfomsg is related to links, but it is used for list requests as well\ntype IfInfomsg struct {\n\tsyscall.IfInfomsg\n}\n\n// Create an IfInfomsg with family specified\nfunc NewIfInfomsg(family int) *IfInfomsg {\n\treturn &IfInfomsg{\n\t\tIfInfomsg: syscall.IfInfomsg{\n\t\t\tFamily: uint8(family),\n\t\t},\n\t}\n}\n\nfunc DeserializeIfInfomsg(b []byte) *IfInfomsg {\n\treturn (*IfInfomsg)(unsafe.Pointer(&b[0:syscall.SizeofIfInfomsg][0]))\n}\n\nfunc (msg *IfInfomsg) Serialize() []byte {\n\treturn (*(*[syscall.SizeofIfInfomsg]byte)(unsafe.Pointer(msg)))[:]\n}\n\nfunc (msg *IfInfomsg) Len() int {\n\treturn syscall.SizeofIfInfomsg\n}\n\nfunc (msg *IfInfomsg) EncapType() string {\n\tswitch msg.Type {\n\tcase 0:\n\t\treturn \"generic\"\n\tcase syscall.ARPHRD_ETHER:\n\t\treturn \"ether\"\n\tcase syscall.ARPHRD_EETHER:\n\t\treturn \"eether\"\n\tcase syscall.ARPHRD_AX25:\n\t\treturn \"ax25\"\n\tcase syscall.ARPHRD_PRONET:\n\t\treturn \"pronet\"\n\tcase syscall.ARPHRD_CHAOS:\n\t\treturn \"chaos\"\n\tcase syscall.ARPHRD_IEEE802:\n\t\treturn \"ieee802\"\n\tcase syscall.ARPHRD_ARCNET:\n\t\treturn \"arcnet\"\n\tcase syscall.ARPHRD_APPLETLK:\n\t\treturn \"atalk\"\n\tcase syscall.ARPHRD_DLCI:\n\t\treturn \"dlci\"\n\tcase syscall.ARPHRD_ATM:\n\t\treturn \"atm\"\n\tcase syscall.ARPHRD_METRICOM:\n\t\treturn \"metricom\"\n\tcase syscall.ARPHRD_IEEE1394:\n\t\treturn \"ieee1394\"\n\tcase syscall.ARPHRD_INFINIBAND:\n\t\treturn \"infiniband\"\n\tcase syscall.ARPHRD_SLIP:\n\t\treturn \"slip\"\n\tcase syscall.ARPHRD_CSLIP:\n\t\treturn \"cslip\"\n\tcase syscall.ARPHRD_SLIP6:\n\t\treturn \"slip6\"\n\tcase syscall.ARPHRD_CSLIP6:\n\t\treturn \"cslip6\"\n\tcase syscall.ARPHRD_RSRVD:\n\t\treturn \"rsrvd\"\n\tcase syscall.ARPHRD_ADAPT:\n\t\treturn \"adapt\"\n\tcase syscall.ARPHRD_ROSE:\n\t\treturn \"rose\"\n\tcase syscall.ARPHRD_X25:\n\t\treturn \"x25\"\n\tcase syscall.ARPHRD_HWX25:\n\t\treturn \"hwx25\"\n\tcase syscall.ARPHRD_PPP:\n\t\treturn \"ppp\"\n\tcase syscall.ARPHRD_HDLC:\n\t\treturn \"hdlc\"\n\tcase syscall.ARPHRD_LAPB:\n\t\treturn \"lapb\"\n\tcase syscall.ARPHRD_DDCMP:\n\t\treturn \"ddcmp\"\n\tcase syscall.ARPHRD_RAWHDLC:\n\t\treturn \"rawhdlc\"\n\tcase syscall.ARPHRD_TUNNEL:\n\t\treturn \"ipip\"\n\tcase syscall.ARPHRD_TUNNEL6:\n\t\treturn \"tunnel6\"\n\tcase syscall.ARPHRD_FRAD:\n\t\treturn \"frad\"\n\tcase syscall.ARPHRD_SKIP:\n\t\treturn \"skip\"\n\tcase syscall.ARPHRD_LOOPBACK:\n\t\treturn \"loopback\"\n\tcase syscall.ARPHRD_LOCALTLK:\n\t\treturn \"ltalk\"\n\tcase syscall.ARPHRD_FDDI:\n\t\treturn \"fddi\"\n\tcase syscall.ARPHRD_BIF:\n\t\treturn \"bif\"\n\tcase syscall.ARPHRD_SIT:\n\t\treturn \"sit\"\n\tcase syscall.ARPHRD_IPDDP:\n\t\treturn \"ip/ddp\"\n\tcase syscall.ARPHRD_IPGRE:\n\t\treturn \"gre\"\n\tcase syscall.ARPHRD_PIMREG:\n\t\treturn \"pimreg\"\n\tcase syscall.ARPHRD_HIPPI:\n\t\treturn \"hippi\"\n\tcase syscall.ARPHRD_ASH:\n\t\treturn \"ash\"\n\tcase syscall.ARPHRD_ECONET:\n\t\treturn \"econet\"\n\tcase syscall.ARPHRD_IRDA:\n\t\treturn \"irda\"\n\tcase syscall.ARPHRD_FCPP:\n\t\treturn \"fcpp\"\n\tcase syscall.ARPHRD_FCAL:\n\t\treturn \"fcal\"\n\tcase syscall.ARPHRD_FCPL:\n\t\treturn \"fcpl\"\n\tcase syscall.ARPHRD_FCFABRIC:\n\t\treturn \"fcfb0\"\n\tcase syscall.ARPHRD_FCFABRIC + 1:\n\t\treturn \"fcfb1\"\n\tcase syscall.ARPHRD_FCFABRIC + 2:\n\t\treturn \"fcfb2\"\n\tcase syscall.ARPHRD_FCFABRIC + 3:\n\t\treturn \"fcfb3\"\n\tcase syscall.ARPHRD_FCFABRIC + 4:\n\t\treturn \"fcfb4\"\n\tcase syscall.ARPHRD_FCFABRIC + 5:\n\t\treturn \"fcfb5\"\n\tcase syscall.ARPHRD_FCFABRIC + 6:\n\t\treturn \"fcfb6\"\n\tcase syscall.ARPHRD_FCFABRIC + 7:\n\t\treturn \"fcfb7\"\n\tcase syscall.ARPHRD_FCFABRIC + 8:\n\t\treturn \"fcfb8\"\n\tcase syscall.ARPHRD_FCFABRIC + 9:\n\t\treturn \"fcfb9\"\n\tcase syscall.ARPHRD_FCFABRIC + 10:\n\t\treturn \"fcfb10\"\n\tcase syscall.ARPHRD_FCFABRIC + 11:\n\t\treturn \"fcfb11\"\n\tcase syscall.ARPHRD_FCFABRIC + 12:\n\t\treturn \"fcfb12\"\n\tcase syscall.ARPHRD_IEEE802_TR:\n\t\treturn \"tr\"\n\tcase syscall.ARPHRD_IEEE80211:\n\t\treturn \"ieee802.11\"\n\tcase syscall.ARPHRD_IEEE80211_PRISM:\n\t\treturn \"ieee802.11/prism\"\n\tcase syscall.ARPHRD_IEEE80211_RADIOTAP:\n\t\treturn \"ieee802.11/radiotap\"\n\tcase syscall.ARPHRD_IEEE802154:\n\t\treturn \"ieee802.15.4\"\n\n\tcase 65534:\n\t\treturn \"none\"\n\tcase 65535:\n\t\treturn \"void\"\n\t}\n\treturn fmt.Sprintf(\"unknown%d\", msg.Type)\n}\n\nfunc rtaAlignOf(attrlen int) int {\n\treturn (attrlen + syscall.RTA_ALIGNTO - 1) & ^(syscall.RTA_ALIGNTO - 1)\n}\n\nfunc NewIfInfomsgChild(parent *RtAttr, family int) *IfInfomsg {\n\tmsg := NewIfInfomsg(family)\n\tparent.children = append(parent.children, msg)\n\treturn msg\n}\n\n// Extend RtAttr to handle data and children\ntype RtAttr struct {\n\tsyscall.RtAttr\n\tData     []byte\n\tchildren []NetlinkRequestData\n}\n\n// Create a new Extended RtAttr object\nfunc NewRtAttr(attrType int, data []byte) *RtAttr {\n\treturn &RtAttr{\n\t\tRtAttr: syscall.RtAttr{\n\t\t\tType: uint16(attrType),\n\t\t},\n\t\tchildren: []NetlinkRequestData{},\n\t\tData:     data,\n\t}\n}\n\n// Create a new RtAttr obj anc add it as a child of an existing object\nfunc NewRtAttrChild(parent *RtAttr, attrType int, data []byte) *RtAttr {\n\tattr := NewRtAttr(attrType, data)\n\tparent.children = append(parent.children, attr)\n\treturn attr\n}\n\nfunc (a *RtAttr) Len() int {\n\tif len(a.children) == 0 {\n\t\treturn (syscall.SizeofRtAttr + len(a.Data))\n\t}\n\n\tl := 0\n\tfor _, child := range a.children {\n\t\tl += rtaAlignOf(child.Len())\n\t}\n\tl += syscall.SizeofRtAttr\n\treturn rtaAlignOf(l + len(a.Data))\n}\n\n// Serialize the RtAttr into a byte array\n// This can't just unsafe.cast because it must iterate through children.\nfunc (a *RtAttr) Serialize() []byte {\n\tnative := NativeEndian()\n\n\tlength := a.Len()\n\tbuf := make([]byte, rtaAlignOf(length))\n\n\tnext := 4\n\tif a.Data != nil {\n\t\tcopy(buf[next:], a.Data)\n\t\tnext += rtaAlignOf(len(a.Data))\n\t}\n\tif len(a.children) > 0 {\n\t\tfor _, child := range a.children {\n\t\t\tchildBuf := child.Serialize()\n\t\t\tcopy(buf[next:], childBuf)\n\t\t\tnext += rtaAlignOf(len(childBuf))\n\t\t}\n\t}\n\n\tif l := uint16(length); l != 0 {\n\t\tnative.PutUint16(buf[0:2], l)\n\t}\n\tnative.PutUint16(buf[2:4], a.Type)\n\treturn buf\n}\n\ntype NetlinkRequest struct {\n\tsyscall.NlMsghdr\n\tData    []NetlinkRequestData\n\tRawData []byte\n\tSockets map[int]*SocketHandle\n}\n\n// Serialize the Netlink Request into a byte array\nfunc (req *NetlinkRequest) Serialize() []byte {\n\tlength := syscall.SizeofNlMsghdr\n\tdataBytes := make([][]byte, len(req.Data))\n\tfor i, data := range req.Data {\n\t\tdataBytes[i] = data.Serialize()\n\t\tlength = length + len(dataBytes[i])\n\t}\n\tlength += len(req.RawData)\n\n\treq.Len = uint32(length)\n\tb := make([]byte, length)\n\thdr := (*(*[syscall.SizeofNlMsghdr]byte)(unsafe.Pointer(req)))[:]\n\tnext := syscall.SizeofNlMsghdr\n\tcopy(b[0:next], hdr)\n\tfor _, data := range dataBytes {\n\t\tfor _, dataByte := range data {\n\t\t\tb[next] = dataByte\n\t\t\tnext = next + 1\n\t\t}\n\t}\n\t// Add the raw data if any\n\tif len(req.RawData) > 0 {\n\t\tcopy(b[next:length], req.RawData)\n\t}\n\treturn b\n}\n\nfunc (req *NetlinkRequest) AddData(data NetlinkRequestData) {\n\tif data != nil {\n\t\treq.Data = append(req.Data, data)\n\t}\n}\n\n// AddRawData adds raw bytes to the end of the NetlinkRequest object during serialization\nfunc (req *NetlinkRequest) AddRawData(data []byte) {\n\tif data != nil {\n\t\treq.RawData = append(req.RawData, data...)\n\t}\n}\n\n// Execute the request against a the given sockType.\n// Returns a list of netlink messages in serialized format, optionally filtered\n// by resType.\nfunc (req *NetlinkRequest) Execute(sockType int, resType uint16) ([][]byte, error) {\n\tvar (\n\t\ts   *NetlinkSocket\n\t\terr error\n\t)\n\n\tif req.Sockets != nil {\n\t\tif sh, ok := req.Sockets[sockType]; ok {\n\t\t\ts = sh.Socket\n\t\t\treq.Seq = atomic.AddUint32(&sh.Seq, 1)\n\t\t}\n\t}\n\tsharedSocket := s != nil\n\n\tif s == nil {\n\t\ts, err = getNetlinkSocket(sockType)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer s.Close()\n\t} else {\n\t\ts.Lock()\n\t\tdefer s.Unlock()\n\t}\n\n\tif err := s.Send(req); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpid, err := s.GetPid()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res [][]byte\n\ndone:\n\tfor {\n\t\tmsgs, err := s.Receive()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, m := range msgs {\n\t\t\tif m.Header.Seq != req.Seq {\n\t\t\t\tif sharedSocket {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn nil, fmt.Errorf(\"Wrong Seq nr %d, expected %d\", m.Header.Seq, req.Seq)\n\t\t\t}\n\t\t\tif m.Header.Pid != pid {\n\t\t\t\treturn nil, fmt.Errorf(\"Wrong pid %d, expected %d\", m.Header.Pid, pid)\n\t\t\t}\n\t\t\tif m.Header.Type == syscall.NLMSG_DONE {\n\t\t\t\tbreak done\n\t\t\t}\n\t\t\tif m.Header.Type == syscall.NLMSG_ERROR {\n\t\t\t\tnative := NativeEndian()\n\t\t\t\terror := int32(native.Uint32(m.Data[0:4]))\n\t\t\t\tif error == 0 {\n\t\t\t\t\tbreak done\n\t\t\t\t}\n\t\t\t\treturn nil, syscall.Errno(-error)\n\t\t\t}\n\t\t\tif resType != 0 && m.Header.Type != resType {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tres = append(res, m.Data)\n\t\t\tif m.Header.Flags&syscall.NLM_F_MULTI == 0 {\n\t\t\t\tbreak done\n\t\t\t}\n\t\t}\n\t}\n\treturn res, nil\n}\n\n// Create a new netlink request from proto and flags\n// Note the Len value will be inaccurate once data is added until\n// the message is serialized\nfunc NewNetlinkRequest(proto, flags int) *NetlinkRequest {\n\treturn &NetlinkRequest{\n\t\tNlMsghdr: syscall.NlMsghdr{\n\t\t\tLen:   uint32(syscall.SizeofNlMsghdr),\n\t\t\tType:  uint16(proto),\n\t\t\tFlags: syscall.NLM_F_REQUEST | uint16(flags),\n\t\t\tSeq:   atomic.AddUint32(&nextSeqNr, 1),\n\t\t},\n\t}\n}\n\ntype NetlinkSocket struct {\n\tfd  int32\n\tlsa syscall.SockaddrNetlink\n\tsync.Mutex\n}\n\nfunc getNetlinkSocket(protocol int) (*NetlinkSocket, error) {\n\tfd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW|syscall.SOCK_CLOEXEC, protocol)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts := &NetlinkSocket{\n\t\tfd: int32(fd),\n\t}\n\ts.lsa.Family = syscall.AF_NETLINK\n\tif err := syscall.Bind(fd, &s.lsa); err != nil {\n\t\tsyscall.Close(fd)\n\t\treturn nil, err\n\t}\n\n\treturn s, nil\n}\n\n// GetNetlinkSocketAt opens a netlink socket in the network namespace newNs\n// and positions the thread back into the network namespace specified by curNs,\n// when done. If curNs is close, the function derives the current namespace and\n// moves back into it when done. If newNs is close, the socket will be opened\n// in the current network namespace.\nfunc GetNetlinkSocketAt(newNs, curNs netns.NsHandle, protocol int) (*NetlinkSocket, error) {\n\tc, err := executeInNetns(newNs, curNs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer c()\n\treturn getNetlinkSocket(protocol)\n}\n\n// executeInNetns sets execution of the code following this call to the\n// network namespace newNs, then moves the thread back to curNs if open,\n// otherwise to the current netns at the time the function was invoked\n// In case of success, the caller is expected to execute the returned function\n// at the end of the code that needs to be executed in the network namespace.\n// Example:\n// func jobAt(...) error {\n//      d, err := executeInNetns(...)\n//      if err != nil { return err}\n//      defer d()\n//      < code which needs to be executed in specific netns>\n//  }\n// TODO: his function probably belongs to netns pkg.\nfunc executeInNetns(newNs, curNs netns.NsHandle) (func(), error) {\n\tvar (\n\t\terr       error\n\t\tmoveBack  func(netns.NsHandle) error\n\t\tcloseNs   func() error\n\t\tunlockThd func()\n\t)\n\trestore := func() {\n\t\t// order matters\n\t\tif moveBack != nil {\n\t\t\tmoveBack(curNs)\n\t\t}\n\t\tif closeNs != nil {\n\t\t\tcloseNs()\n\t\t}\n\t\tif unlockThd != nil {\n\t\t\tunlockThd()\n\t\t}\n\t}\n\tif newNs.IsOpen() {\n\t\truntime.LockOSThread()\n\t\tunlockThd = runtime.UnlockOSThread\n\t\tif !curNs.IsOpen() {\n\t\t\tif curNs, err = netns.Get(); err != nil {\n\t\t\t\trestore()\n\t\t\t\treturn nil, fmt.Errorf(\"could not get current namespace while creating netlink socket: %v\", err)\n\t\t\t}\n\t\t\tcloseNs = curNs.Close\n\t\t}\n\t\tif err := netns.Set(newNs); err != nil {\n\t\t\trestore()\n\t\t\treturn nil, fmt.Errorf(\"failed to set into network namespace %d while creating netlink socket: %v\", newNs, err)\n\t\t}\n\t\tmoveBack = netns.Set\n\t}\n\treturn restore, nil\n}\n\n// Create a netlink socket with a given protocol (e.g. NETLINK_ROUTE)\n// and subscribe it to multicast groups passed in variable argument list.\n// Returns the netlink socket on which Receive() method can be called\n// to retrieve the messages from the kernel.\nfunc Subscribe(protocol int, groups ...uint) (*NetlinkSocket, error) {\n\tfd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW, protocol)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts := &NetlinkSocket{\n\t\tfd: int32(fd),\n\t}\n\ts.lsa.Family = syscall.AF_NETLINK\n\n\tfor _, g := range groups {\n\t\ts.lsa.Groups |= (1 << (g - 1))\n\t}\n\n\tif err := syscall.Bind(fd, &s.lsa); err != nil {\n\t\tsyscall.Close(fd)\n\t\treturn nil, err\n\t}\n\n\treturn s, nil\n}\n\n// SubscribeAt works like Subscribe plus let's the caller choose the network\n// namespace in which the socket would be opened (newNs). Then control goes back\n// to curNs if open, otherwise to the netns at the time this function was called.\nfunc SubscribeAt(newNs, curNs netns.NsHandle, protocol int, groups ...uint) (*NetlinkSocket, error) {\n\tc, err := executeInNetns(newNs, curNs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer c()\n\treturn Subscribe(protocol, groups...)\n}\n\nfunc (s *NetlinkSocket) Close() {\n\tfd := int(atomic.SwapInt32(&s.fd, -1))\n\tsyscall.Close(fd)\n}\n\nfunc (s *NetlinkSocket) GetFd() int {\n\treturn int(atomic.LoadInt32(&s.fd))\n}\n\nfunc (s *NetlinkSocket) Send(request *NetlinkRequest) error {\n\tfd := int(atomic.LoadInt32(&s.fd))\n\tif fd < 0 {\n\t\treturn fmt.Errorf(\"Send called on a closed socket\")\n\t}\n\tif err := syscall.Sendto(fd, request.Serialize(), 0, &s.lsa); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (s *NetlinkSocket) Receive() ([]syscall.NetlinkMessage, error) {\n\tfd := int(atomic.LoadInt32(&s.fd))\n\tif fd < 0 {\n\t\treturn nil, fmt.Errorf(\"Receive called on a closed socket\")\n\t}\n\trb := make([]byte, syscall.Getpagesize())\n\tnr, _, err := syscall.Recvfrom(fd, rb, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif nr < syscall.NLMSG_HDRLEN {\n\t\treturn nil, fmt.Errorf(\"Got short response from netlink\")\n\t}\n\trb = rb[:nr]\n\treturn syscall.ParseNetlinkMessage(rb)\n}\n\nfunc (s *NetlinkSocket) GetPid() (uint32, error) {\n\tfd := int(atomic.LoadInt32(&s.fd))\n\tlsa, err := syscall.Getsockname(fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tswitch v := lsa.(type) {\n\tcase *syscall.SockaddrNetlink:\n\t\treturn v.Pid, nil\n\t}\n\treturn 0, fmt.Errorf(\"Wrong socket type\")\n}\n\nfunc ZeroTerminated(s string) []byte {\n\tbytes := make([]byte, len(s)+1)\n\tfor i := 0; i < len(s); i++ {\n\t\tbytes[i] = s[i]\n\t}\n\tbytes[len(s)] = 0\n\treturn bytes\n}\n\nfunc NonZeroTerminated(s string) []byte {\n\tbytes := make([]byte, len(s))\n\tfor i := 0; i < len(s); i++ {\n\t\tbytes[i] = s[i]\n\t}\n\treturn bytes\n}\n\nfunc BytesToString(b []byte) string {\n\tn := bytes.Index(b, []byte{0})\n\treturn string(b[:n])\n}\n\nfunc Uint8Attr(v uint8) []byte {\n\treturn []byte{byte(v)}\n}\n\nfunc Uint16Attr(v uint16) []byte {\n\tnative := NativeEndian()\n\tbytes := make([]byte, 2)\n\tnative.PutUint16(bytes, v)\n\treturn bytes\n}\n\nfunc Uint32Attr(v uint32) []byte {\n\tnative := NativeEndian()\n\tbytes := make([]byte, 4)\n\tnative.PutUint32(bytes, v)\n\treturn bytes\n}\n\nfunc Uint64Attr(v uint64) []byte {\n\tnative := NativeEndian()\n\tbytes := make([]byte, 8)\n\tnative.PutUint64(bytes, v)\n\treturn bytes\n}\n\nfunc ParseRouteAttr(b []byte) ([]syscall.NetlinkRouteAttr, error) {\n\tvar attrs []syscall.NetlinkRouteAttr\n\tfor len(b) >= syscall.SizeofRtAttr {\n\t\ta, vbuf, alen, err := netlinkRouteAttrAndValue(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tra := syscall.NetlinkRouteAttr{Attr: *a, Value: vbuf[:int(a.Len)-syscall.SizeofRtAttr]}\n\t\tattrs = append(attrs, ra)\n\t\tb = b[alen:]\n\t}\n\treturn attrs, nil\n}\n\nfunc netlinkRouteAttrAndValue(b []byte) (*syscall.RtAttr, []byte, int, error) {\n\ta := (*syscall.RtAttr)(unsafe.Pointer(&b[0]))\n\tif int(a.Len) < syscall.SizeofRtAttr || int(a.Len) > len(b) {\n\t\treturn nil, nil, 0, syscall.EINVAL\n\t}\n\treturn a, b[syscall.SizeofRtAttr:], rtaAlignOf(int(a.Len)), nil\n}\n\n// SocketHandle contains the netlink socket and the associated\n// sequence counter for a specific netlink family\ntype SocketHandle struct {\n\tSeq    uint32\n\tSocket *NetlinkSocket\n}\n\n// Close closes the netlink socket\nfunc (sh *SocketHandle) Close() {\n\tif sh.Socket != nil {\n\t\tsh.Socket.Close()\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/nl_unspecified.go",
    "content": "// +build !linux\n\npackage nl\n\nimport \"encoding/binary\"\n\nvar SupportedNlFamilies = []int{}\n\nfunc NativeEndian() binary.ByteOrder {\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/route_linux.go",
    "content": "package nl\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\ntype RtMsg struct {\n\tsyscall.RtMsg\n}\n\nfunc NewRtMsg() *RtMsg {\n\treturn &RtMsg{\n\t\tRtMsg: syscall.RtMsg{\n\t\t\tTable:    syscall.RT_TABLE_MAIN,\n\t\t\tScope:    syscall.RT_SCOPE_UNIVERSE,\n\t\t\tProtocol: syscall.RTPROT_BOOT,\n\t\t\tType:     syscall.RTN_UNICAST,\n\t\t},\n\t}\n}\n\nfunc NewRtDelMsg() *RtMsg {\n\treturn &RtMsg{\n\t\tRtMsg: syscall.RtMsg{\n\t\t\tTable: syscall.RT_TABLE_MAIN,\n\t\t\tScope: syscall.RT_SCOPE_NOWHERE,\n\t\t},\n\t}\n}\n\nfunc (msg *RtMsg) Len() int {\n\treturn syscall.SizeofRtMsg\n}\n\nfunc DeserializeRtMsg(b []byte) *RtMsg {\n\treturn (*RtMsg)(unsafe.Pointer(&b[0:syscall.SizeofRtMsg][0]))\n}\n\nfunc (msg *RtMsg) Serialize() []byte {\n\treturn (*(*[syscall.SizeofRtMsg]byte)(unsafe.Pointer(msg)))[:]\n}\n\ntype RtNexthop struct {\n\tsyscall.RtNexthop\n\tChildren []NetlinkRequestData\n}\n\nfunc DeserializeRtNexthop(b []byte) *RtNexthop {\n\treturn (*RtNexthop)(unsafe.Pointer(&b[0:syscall.SizeofRtNexthop][0]))\n}\n\nfunc (msg *RtNexthop) Len() int {\n\tif len(msg.Children) == 0 {\n\t\treturn syscall.SizeofRtNexthop\n\t}\n\n\tl := 0\n\tfor _, child := range msg.Children {\n\t\tl += rtaAlignOf(child.Len())\n\t}\n\tl += syscall.SizeofRtNexthop\n\treturn rtaAlignOf(l)\n}\n\nfunc (msg *RtNexthop) Serialize() []byte {\n\tlength := msg.Len()\n\tmsg.RtNexthop.Len = uint16(length)\n\tbuf := make([]byte, length)\n\tcopy(buf, (*(*[syscall.SizeofRtNexthop]byte)(unsafe.Pointer(msg)))[:])\n\tnext := rtaAlignOf(syscall.SizeofRtNexthop)\n\tif len(msg.Children) > 0 {\n\t\tfor _, child := range msg.Children {\n\t\t\tchildBuf := child.Serialize()\n\t\t\tcopy(buf[next:], childBuf)\n\t\t\tnext += rtaAlignOf(len(childBuf))\n\t\t}\n\t}\n\treturn buf\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/syscall.go",
    "content": "package nl\n\n// syscall package lack of rule atributes type.\n// Thus there are defined below\nconst (\n\tFRA_UNSPEC  = iota\n\tFRA_DST     /* destination address */\n\tFRA_SRC     /* source address */\n\tFRA_IIFNAME /* interface name */\n\tFRA_GOTO    /* target to jump to (FR_ACT_GOTO) */\n\tFRA_UNUSED2\n\tFRA_PRIORITY /* priority/preference */\n\tFRA_UNUSED3\n\tFRA_UNUSED4\n\tFRA_UNUSED5\n\tFRA_FWMARK /* mark */\n\tFRA_FLOW   /* flow/class id */\n\tFRA_TUN_ID\n\tFRA_SUPPRESS_IFGROUP\n\tFRA_SUPPRESS_PREFIXLEN\n\tFRA_TABLE  /* Extended table id */\n\tFRA_FWMASK /* mask for netfilter mark */\n\tFRA_OIFNAME\n)\n\n// ip rule netlink request types\nconst (\n\tFR_ACT_UNSPEC = iota\n\tFR_ACT_TO_TBL /* Pass to fixed table */\n\tFR_ACT_GOTO   /* Jump to another rule */\n\tFR_ACT_NOP    /* No operation */\n\tFR_ACT_RES3\n\tFR_ACT_RES4\n\tFR_ACT_BLACKHOLE   /* Drop without notification */\n\tFR_ACT_UNREACHABLE /* Drop with ENETUNREACH */\n\tFR_ACT_PROHIBIT    /* Drop with EACCES */\n)\n\n// socket diags related\nconst (\n\tSOCK_DIAG_BY_FAMILY = 20         /* linux.sock_diag.h */\n\tTCPDIAG_NOCOOKIE    = 0xFFFFFFFF /* TCPDIAG_NOCOOKIE in net/ipv4/tcp_diag.h*/\n)\n\nconst (\n\tAF_MPLS = 28\n)\n\nconst (\n\tRTA_NEWDST     = 0x13\n\tRTA_ENCAP_TYPE = 0x15\n\tRTA_ENCAP      = 0x16\n)\n\n// RTA_ENCAP subtype\nconst (\n\tMPLS_IPTUNNEL_UNSPEC = iota\n\tMPLS_IPTUNNEL_DST\n)\n\n// light weight tunnel encap types\nconst (\n\tLWTUNNEL_ENCAP_NONE = iota\n\tLWTUNNEL_ENCAP_MPLS\n\tLWTUNNEL_ENCAP_IP\n\tLWTUNNEL_ENCAP_ILA\n\tLWTUNNEL_ENCAP_IP6\n)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/tc_linux.go",
    "content": "package nl\n\nimport (\n\t\"unsafe\"\n)\n\n// LinkLayer\nconst (\n\tLINKLAYER_UNSPEC = iota\n\tLINKLAYER_ETHERNET\n\tLINKLAYER_ATM\n)\n\n// ATM\nconst (\n\tATM_CELL_PAYLOAD = 48\n\tATM_CELL_SIZE    = 53\n)\n\nconst TC_LINKLAYER_MASK = 0x0F\n\n// Police\nconst (\n\tTCA_POLICE_UNSPEC = iota\n\tTCA_POLICE_TBF\n\tTCA_POLICE_RATE\n\tTCA_POLICE_PEAKRATE\n\tTCA_POLICE_AVRATE\n\tTCA_POLICE_RESULT\n\tTCA_POLICE_MAX = TCA_POLICE_RESULT\n)\n\n// Message types\nconst (\n\tTCA_UNSPEC = iota\n\tTCA_KIND\n\tTCA_OPTIONS\n\tTCA_STATS\n\tTCA_XSTATS\n\tTCA_RATE\n\tTCA_FCNT\n\tTCA_STATS2\n\tTCA_STAB\n\tTCA_MAX = TCA_STAB\n)\n\nconst (\n\tTCA_ACT_TAB = 1\n\tTCAA_MAX    = 1\n)\n\nconst (\n\tTCA_ACT_UNSPEC = iota\n\tTCA_ACT_KIND\n\tTCA_ACT_OPTIONS\n\tTCA_ACT_INDEX\n\tTCA_ACT_STATS\n\tTCA_ACT_MAX\n)\n\nconst (\n\tTCA_PRIO_UNSPEC = iota\n\tTCA_PRIO_MQ\n\tTCA_PRIO_MAX = TCA_PRIO_MQ\n)\n\nconst (\n\tSizeofTcMsg          = 0x14\n\tSizeofTcActionMsg    = 0x04\n\tSizeofTcPrioMap      = 0x14\n\tSizeofTcRateSpec     = 0x0c\n\tSizeofTcNetemQopt    = 0x18\n\tSizeofTcNetemCorr    = 0x0c\n\tSizeofTcNetemReorder = 0x08\n\tSizeofTcNetemCorrupt = 0x08\n\tSizeofTcTbfQopt      = 2*SizeofTcRateSpec + 0x0c\n\tSizeofTcHtbCopt      = 2*SizeofTcRateSpec + 0x14\n\tSizeofTcHtbGlob      = 0x14\n\tSizeofTcU32Key       = 0x10\n\tSizeofTcU32Sel       = 0x10 // without keys\n\tSizeofTcGen          = 0x14\n\tSizeofTcMirred       = SizeofTcGen + 0x08\n\tSizeofTcPolice       = 2*SizeofTcRateSpec + 0x20\n)\n\n// struct tcmsg {\n//   unsigned char tcm_family;\n//   unsigned char tcm__pad1;\n//   unsigned short  tcm__pad2;\n//   int   tcm_ifindex;\n//   __u32   tcm_handle;\n//   __u32   tcm_parent;\n//   __u32   tcm_info;\n// };\n\ntype TcMsg struct {\n\tFamily  uint8\n\tPad     [3]byte\n\tIfindex int32\n\tHandle  uint32\n\tParent  uint32\n\tInfo    uint32\n}\n\nfunc (msg *TcMsg) Len() int {\n\treturn SizeofTcMsg\n}\n\nfunc DeserializeTcMsg(b []byte) *TcMsg {\n\treturn (*TcMsg)(unsafe.Pointer(&b[0:SizeofTcMsg][0]))\n}\n\nfunc (x *TcMsg) Serialize() []byte {\n\treturn (*(*[SizeofTcMsg]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tcamsg {\n//   unsigned char tca_family;\n//   unsigned char tca__pad1;\n//   unsigned short  tca__pad2;\n// };\n\ntype TcActionMsg struct {\n\tFamily uint8\n\tPad    [3]byte\n}\n\nfunc (msg *TcActionMsg) Len() int {\n\treturn SizeofTcActionMsg\n}\n\nfunc DeserializeTcActionMsg(b []byte) *TcActionMsg {\n\treturn (*TcActionMsg)(unsafe.Pointer(&b[0:SizeofTcActionMsg][0]))\n}\n\nfunc (x *TcActionMsg) Serialize() []byte {\n\treturn (*(*[SizeofTcActionMsg]byte)(unsafe.Pointer(x)))[:]\n}\n\nconst (\n\tTC_PRIO_MAX = 15\n)\n\n// struct tc_prio_qopt {\n// \tint bands;      /* Number of bands */\n// \t__u8  priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */\n// };\n\ntype TcPrioMap struct {\n\tBands   int32\n\tPriomap [TC_PRIO_MAX + 1]uint8\n}\n\nfunc (msg *TcPrioMap) Len() int {\n\treturn SizeofTcPrioMap\n}\n\nfunc DeserializeTcPrioMap(b []byte) *TcPrioMap {\n\treturn (*TcPrioMap)(unsafe.Pointer(&b[0:SizeofTcPrioMap][0]))\n}\n\nfunc (x *TcPrioMap) Serialize() []byte {\n\treturn (*(*[SizeofTcPrioMap]byte)(unsafe.Pointer(x)))[:]\n}\n\nconst (\n\tTCA_TBF_UNSPEC = iota\n\tTCA_TBF_PARMS\n\tTCA_TBF_RTAB\n\tTCA_TBF_PTAB\n\tTCA_TBF_RATE64\n\tTCA_TBF_PRATE64\n\tTCA_TBF_BURST\n\tTCA_TBF_PBURST\n\tTCA_TBF_MAX = TCA_TBF_PBURST\n)\n\n// struct tc_ratespec {\n//   unsigned char cell_log;\n//   __u8    linklayer; /* lower 4 bits */\n//   unsigned short  overhead;\n//   short   cell_align;\n//   unsigned short  mpu;\n//   __u32   rate;\n// };\n\ntype TcRateSpec struct {\n\tCellLog   uint8\n\tLinklayer uint8\n\tOverhead  uint16\n\tCellAlign int16\n\tMpu       uint16\n\tRate      uint32\n}\n\nfunc (msg *TcRateSpec) Len() int {\n\treturn SizeofTcRateSpec\n}\n\nfunc DeserializeTcRateSpec(b []byte) *TcRateSpec {\n\treturn (*TcRateSpec)(unsafe.Pointer(&b[0:SizeofTcRateSpec][0]))\n}\n\nfunc (x *TcRateSpec) Serialize() []byte {\n\treturn (*(*[SizeofTcRateSpec]byte)(unsafe.Pointer(x)))[:]\n}\n\n/**\n* NETEM\n */\n\nconst (\n\tTCA_NETEM_UNSPEC = iota\n\tTCA_NETEM_CORR\n\tTCA_NETEM_DELAY_DIST\n\tTCA_NETEM_REORDER\n\tTCA_NETEM_CORRUPT\n\tTCA_NETEM_LOSS\n\tTCA_NETEM_RATE\n\tTCA_NETEM_ECN\n\tTCA_NETEM_RATE64\n\tTCA_NETEM_MAX = TCA_NETEM_RATE64\n)\n\n// struct tc_netem_qopt {\n//\t__u32\tlatency;\t/* added delay (us) */\n//\t__u32   limit;\t\t/* fifo limit (packets) */\n//\t__u32\tloss;\t\t/* random packet loss (0=none ~0=100%) */\n//\t__u32\tgap;\t\t/* re-ordering gap (0 for none) */\n//\t__u32   duplicate;\t/* random packet dup  (0=none ~0=100%) */\n// \t__u32\tjitter;\t\t/* random jitter in latency (us) */\n// };\n\ntype TcNetemQopt struct {\n\tLatency   uint32\n\tLimit     uint32\n\tLoss      uint32\n\tGap       uint32\n\tDuplicate uint32\n\tJitter    uint32\n}\n\nfunc (msg *TcNetemQopt) Len() int {\n\treturn SizeofTcNetemQopt\n}\n\nfunc DeserializeTcNetemQopt(b []byte) *TcNetemQopt {\n\treturn (*TcNetemQopt)(unsafe.Pointer(&b[0:SizeofTcNetemQopt][0]))\n}\n\nfunc (x *TcNetemQopt) Serialize() []byte {\n\treturn (*(*[SizeofTcNetemQopt]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_netem_corr {\n//  __u32   delay_corr; /* delay correlation */\n//  __u32   loss_corr;  /* packet loss correlation */\n//  __u32   dup_corr;   /* duplicate correlation  */\n// };\n\ntype TcNetemCorr struct {\n\tDelayCorr uint32\n\tLossCorr  uint32\n\tDupCorr   uint32\n}\n\nfunc (msg *TcNetemCorr) Len() int {\n\treturn SizeofTcNetemCorr\n}\n\nfunc DeserializeTcNetemCorr(b []byte) *TcNetemCorr {\n\treturn (*TcNetemCorr)(unsafe.Pointer(&b[0:SizeofTcNetemCorr][0]))\n}\n\nfunc (x *TcNetemCorr) Serialize() []byte {\n\treturn (*(*[SizeofTcNetemCorr]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_netem_reorder {\n//  __u32   probability;\n//  __u32   correlation;\n// };\n\ntype TcNetemReorder struct {\n\tProbability uint32\n\tCorrelation uint32\n}\n\nfunc (msg *TcNetemReorder) Len() int {\n\treturn SizeofTcNetemReorder\n}\n\nfunc DeserializeTcNetemReorder(b []byte) *TcNetemReorder {\n\treturn (*TcNetemReorder)(unsafe.Pointer(&b[0:SizeofTcNetemReorder][0]))\n}\n\nfunc (x *TcNetemReorder) Serialize() []byte {\n\treturn (*(*[SizeofTcNetemReorder]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_netem_corrupt {\n//  __u32   probability;\n//  __u32   correlation;\n// };\n\ntype TcNetemCorrupt struct {\n\tProbability uint32\n\tCorrelation uint32\n}\n\nfunc (msg *TcNetemCorrupt) Len() int {\n\treturn SizeofTcNetemCorrupt\n}\n\nfunc DeserializeTcNetemCorrupt(b []byte) *TcNetemCorrupt {\n\treturn (*TcNetemCorrupt)(unsafe.Pointer(&b[0:SizeofTcNetemCorrupt][0]))\n}\n\nfunc (x *TcNetemCorrupt) Serialize() []byte {\n\treturn (*(*[SizeofTcNetemCorrupt]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_tbf_qopt {\n//   struct tc_ratespec rate;\n//   struct tc_ratespec peakrate;\n//   __u32   limit;\n//   __u32   buffer;\n//   __u32   mtu;\n// };\n\ntype TcTbfQopt struct {\n\tRate     TcRateSpec\n\tPeakrate TcRateSpec\n\tLimit    uint32\n\tBuffer   uint32\n\tMtu      uint32\n}\n\nfunc (msg *TcTbfQopt) Len() int {\n\treturn SizeofTcTbfQopt\n}\n\nfunc DeserializeTcTbfQopt(b []byte) *TcTbfQopt {\n\treturn (*TcTbfQopt)(unsafe.Pointer(&b[0:SizeofTcTbfQopt][0]))\n}\n\nfunc (x *TcTbfQopt) Serialize() []byte {\n\treturn (*(*[SizeofTcTbfQopt]byte)(unsafe.Pointer(x)))[:]\n}\n\nconst (\n\tTCA_HTB_UNSPEC = iota\n\tTCA_HTB_PARMS\n\tTCA_HTB_INIT\n\tTCA_HTB_CTAB\n\tTCA_HTB_RTAB\n\tTCA_HTB_DIRECT_QLEN\n\tTCA_HTB_RATE64\n\tTCA_HTB_CEIL64\n\tTCA_HTB_MAX = TCA_HTB_CEIL64\n)\n\n//struct tc_htb_opt {\n//\tstruct tc_ratespec\trate;\n//\tstruct tc_ratespec\tceil;\n//\t__u32\tbuffer;\n//\t__u32\tcbuffer;\n//\t__u32\tquantum;\n//\t__u32\tlevel;\t\t/* out only */\n//\t__u32\tprio;\n//};\n\ntype TcHtbCopt struct {\n\tRate    TcRateSpec\n\tCeil    TcRateSpec\n\tBuffer  uint32\n\tCbuffer uint32\n\tQuantum uint32\n\tLevel   uint32\n\tPrio    uint32\n}\n\nfunc (msg *TcHtbCopt) Len() int {\n\treturn SizeofTcHtbCopt\n}\n\nfunc DeserializeTcHtbCopt(b []byte) *TcHtbCopt {\n\treturn (*TcHtbCopt)(unsafe.Pointer(&b[0:SizeofTcHtbCopt][0]))\n}\n\nfunc (x *TcHtbCopt) Serialize() []byte {\n\treturn (*(*[SizeofTcHtbCopt]byte)(unsafe.Pointer(x)))[:]\n}\n\ntype TcHtbGlob struct {\n\tVersion      uint32\n\tRate2Quantum uint32\n\tDefcls       uint32\n\tDebug        uint32\n\tDirectPkts   uint32\n}\n\nfunc (msg *TcHtbGlob) Len() int {\n\treturn SizeofTcHtbGlob\n}\n\nfunc DeserializeTcHtbGlob(b []byte) *TcHtbGlob {\n\treturn (*TcHtbGlob)(unsafe.Pointer(&b[0:SizeofTcHtbGlob][0]))\n}\n\nfunc (x *TcHtbGlob) Serialize() []byte {\n\treturn (*(*[SizeofTcHtbGlob]byte)(unsafe.Pointer(x)))[:]\n}\n\nconst (\n\tTCA_U32_UNSPEC = iota\n\tTCA_U32_CLASSID\n\tTCA_U32_HASH\n\tTCA_U32_LINK\n\tTCA_U32_DIVISOR\n\tTCA_U32_SEL\n\tTCA_U32_POLICE\n\tTCA_U32_ACT\n\tTCA_U32_INDEV\n\tTCA_U32_PCNT\n\tTCA_U32_MARK\n\tTCA_U32_MAX = TCA_U32_MARK\n)\n\n// struct tc_u32_key {\n//   __be32    mask;\n//   __be32    val;\n//   int   off;\n//   int   offmask;\n// };\n\ntype TcU32Key struct {\n\tMask    uint32 // big endian\n\tVal     uint32 // big endian\n\tOff     int32\n\tOffMask int32\n}\n\nfunc (msg *TcU32Key) Len() int {\n\treturn SizeofTcU32Key\n}\n\nfunc DeserializeTcU32Key(b []byte) *TcU32Key {\n\treturn (*TcU32Key)(unsafe.Pointer(&b[0:SizeofTcU32Key][0]))\n}\n\nfunc (x *TcU32Key) Serialize() []byte {\n\treturn (*(*[SizeofTcU32Key]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_u32_sel {\n//   unsigned char   flags;\n//   unsigned char   offshift;\n//   unsigned char   nkeys;\n//\n//   __be16      offmask;\n//   __u16     off;\n//   short     offoff;\n//\n//   short     hoff;\n//   __be32      hmask;\n//   struct tc_u32_key keys[0];\n// };\n\nconst (\n\tTC_U32_TERMINAL  = 1 << iota\n\tTC_U32_OFFSET    = 1 << iota\n\tTC_U32_VAROFFSET = 1 << iota\n\tTC_U32_EAT       = 1 << iota\n)\n\ntype TcU32Sel struct {\n\tFlags    uint8\n\tOffshift uint8\n\tNkeys    uint8\n\tPad      uint8\n\tOffmask  uint16 // big endian\n\tOff      uint16\n\tOffoff   int16\n\tHoff     int16\n\tHmask    uint32 // big endian\n\tKeys     []TcU32Key\n}\n\nfunc (msg *TcU32Sel) Len() int {\n\treturn SizeofTcU32Sel + int(msg.Nkeys)*SizeofTcU32Key\n}\n\nfunc DeserializeTcU32Sel(b []byte) *TcU32Sel {\n\tx := &TcU32Sel{}\n\tcopy((*(*[SizeofTcU32Sel]byte)(unsafe.Pointer(x)))[:], b)\n\tnext := SizeofTcU32Sel\n\tvar i uint8\n\tfor i = 0; i < x.Nkeys; i++ {\n\t\tx.Keys = append(x.Keys, *DeserializeTcU32Key(b[next:]))\n\t\tnext += SizeofTcU32Key\n\t}\n\treturn x\n}\n\nfunc (x *TcU32Sel) Serialize() []byte {\n\t// This can't just unsafe.cast because it must iterate through keys.\n\tbuf := make([]byte, x.Len())\n\tcopy(buf, (*(*[SizeofTcU32Sel]byte)(unsafe.Pointer(x)))[:])\n\tnext := SizeofTcU32Sel\n\tfor _, key := range x.Keys {\n\t\tkeyBuf := key.Serialize()\n\t\tcopy(buf[next:], keyBuf)\n\t\tnext += SizeofTcU32Key\n\t}\n\treturn buf\n}\n\ntype TcGen struct {\n\tIndex   uint32\n\tCapab   uint32\n\tAction  int32\n\tRefcnt  int32\n\tBindcnt int32\n}\n\nfunc (msg *TcGen) Len() int {\n\treturn SizeofTcGen\n}\n\nfunc DeserializeTcGen(b []byte) *TcGen {\n\treturn (*TcGen)(unsafe.Pointer(&b[0:SizeofTcGen][0]))\n}\n\nfunc (x *TcGen) Serialize() []byte {\n\treturn (*(*[SizeofTcGen]byte)(unsafe.Pointer(x)))[:]\n}\n\n// #define tc_gen \\\n//   __u32                 index; \\\n//   __u32                 capab; \\\n//   int                   action; \\\n//   int                   refcnt; \\\n//   int                   bindcnt\n\nconst (\n\tTCA_ACT_GACT = 5\n)\n\nconst (\n\tTCA_GACT_UNSPEC = iota\n\tTCA_GACT_TM\n\tTCA_GACT_PARMS\n\tTCA_GACT_PROB\n\tTCA_GACT_MAX = TCA_GACT_PROB\n)\n\ntype TcGact TcGen\n\nconst (\n\tTCA_ACT_BPF = 13\n)\n\nconst (\n\tTCA_ACT_BPF_UNSPEC = iota\n\tTCA_ACT_BPF_TM\n\tTCA_ACT_BPF_PARMS\n\tTCA_ACT_BPF_OPS_LEN\n\tTCA_ACT_BPF_OPS\n\tTCA_ACT_BPF_FD\n\tTCA_ACT_BPF_NAME\n\tTCA_ACT_BPF_MAX = TCA_ACT_BPF_NAME\n)\n\nconst (\n\tTCA_BPF_FLAG_ACT_DIRECT uint32 = 1 << iota\n)\n\nconst (\n\tTCA_BPF_UNSPEC = iota\n\tTCA_BPF_ACT\n\tTCA_BPF_POLICE\n\tTCA_BPF_CLASSID\n\tTCA_BPF_OPS_LEN\n\tTCA_BPF_OPS\n\tTCA_BPF_FD\n\tTCA_BPF_NAME\n\tTCA_BPF_FLAGS\n\tTCA_BPF_MAX = TCA_BPF_FLAGS\n)\n\ntype TcBpf TcGen\n\nconst (\n\tTCA_ACT_MIRRED = 8\n)\n\nconst (\n\tTCA_MIRRED_UNSPEC = iota\n\tTCA_MIRRED_TM\n\tTCA_MIRRED_PARMS\n\tTCA_MIRRED_MAX = TCA_MIRRED_PARMS\n)\n\n// struct tc_mirred {\n// \ttc_gen;\n// \tint                     eaction;   /* one of IN/EGRESS_MIRROR/REDIR */\n// \t__u32                   ifindex;  /* ifindex of egress port */\n// };\n\ntype TcMirred struct {\n\tTcGen\n\tEaction int32\n\tIfindex uint32\n}\n\nfunc (msg *TcMirred) Len() int {\n\treturn SizeofTcMirred\n}\n\nfunc DeserializeTcMirred(b []byte) *TcMirred {\n\treturn (*TcMirred)(unsafe.Pointer(&b[0:SizeofTcMirred][0]))\n}\n\nfunc (x *TcMirred) Serialize() []byte {\n\treturn (*(*[SizeofTcMirred]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct tc_police {\n// \t__u32\t\t\tindex;\n// \tint\t\t\taction;\n// \t__u32\t\t\tlimit;\n// \t__u32\t\t\tburst;\n// \t__u32\t\t\tmtu;\n// \tstruct tc_ratespec\trate;\n// \tstruct tc_ratespec\tpeakrate;\n// \tint\t\t\t\trefcnt;\n// \tint\t\t\t\tbindcnt;\n// \t__u32\t\t\tcapab;\n// };\n\ntype TcPolice struct {\n\tIndex    uint32\n\tAction   int32\n\tLimit    uint32\n\tBurst    uint32\n\tMtu      uint32\n\tRate     TcRateSpec\n\tPeakRate TcRateSpec\n\tRefcnt   int32\n\tBindcnt  int32\n\tCapab    uint32\n}\n\nfunc (msg *TcPolice) Len() int {\n\treturn SizeofTcPolice\n}\n\nfunc DeserializeTcPolice(b []byte) *TcPolice {\n\treturn (*TcPolice)(unsafe.Pointer(&b[0:SizeofTcPolice][0]))\n}\n\nfunc (x *TcPolice) Serialize() []byte {\n\treturn (*(*[SizeofTcPolice]byte)(unsafe.Pointer(x)))[:]\n}\n\nconst (\n\tTCA_FW_UNSPEC = iota\n\tTCA_FW_CLASSID\n\tTCA_FW_POLICE\n\tTCA_FW_INDEV\n\tTCA_FW_ACT\n\tTCA_FW_MASK\n\tTCA_FW_MAX = TCA_FW_MASK\n)\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/xfrm_linux.go",
    "content": "package nl\n\nimport (\n\t\"bytes\"\n\t\"net\"\n\t\"unsafe\"\n)\n\n// Infinity for packet and byte counts\nconst (\n\tXFRM_INF = ^uint64(0)\n)\n\ntype XfrmMsgType uint8\n\ntype XfrmMsg interface {\n\tType() XfrmMsgType\n}\n\n// Message Types\nconst (\n\tXFRM_MSG_BASE        XfrmMsgType = 0x10\n\tXFRM_MSG_NEWSA                   = 0x10\n\tXFRM_MSG_DELSA                   = 0x11\n\tXFRM_MSG_GETSA                   = 0x12\n\tXFRM_MSG_NEWPOLICY               = 0x13\n\tXFRM_MSG_DELPOLICY               = 0x14\n\tXFRM_MSG_GETPOLICY               = 0x15\n\tXFRM_MSG_ALLOCSPI                = 0x16\n\tXFRM_MSG_ACQUIRE                 = 0x17\n\tXFRM_MSG_EXPIRE                  = 0x18\n\tXFRM_MSG_UPDPOLICY               = 0x19\n\tXFRM_MSG_UPDSA                   = 0x1a\n\tXFRM_MSG_POLEXPIRE               = 0x1b\n\tXFRM_MSG_FLUSHSA                 = 0x1c\n\tXFRM_MSG_FLUSHPOLICY             = 0x1d\n\tXFRM_MSG_NEWAE                   = 0x1e\n\tXFRM_MSG_GETAE                   = 0x1f\n\tXFRM_MSG_REPORT                  = 0x20\n\tXFRM_MSG_MIGRATE                 = 0x21\n\tXFRM_MSG_NEWSADINFO              = 0x22\n\tXFRM_MSG_GETSADINFO              = 0x23\n\tXFRM_MSG_NEWSPDINFO              = 0x24\n\tXFRM_MSG_GETSPDINFO              = 0x25\n\tXFRM_MSG_MAPPING                 = 0x26\n\tXFRM_MSG_MAX                     = 0x26\n\tXFRM_NR_MSGTYPES                 = 0x17\n)\n\n// Attribute types\nconst (\n\t/* Netlink message attributes.  */\n\tXFRMA_UNSPEC         = 0x00\n\tXFRMA_ALG_AUTH       = 0x01 /* struct xfrm_algo */\n\tXFRMA_ALG_CRYPT      = 0x02 /* struct xfrm_algo */\n\tXFRMA_ALG_COMP       = 0x03 /* struct xfrm_algo */\n\tXFRMA_ENCAP          = 0x04 /* struct xfrm_algo + struct xfrm_encap_tmpl */\n\tXFRMA_TMPL           = 0x05 /* 1 or more struct xfrm_user_tmpl */\n\tXFRMA_SA             = 0x06 /* struct xfrm_usersa_info  */\n\tXFRMA_POLICY         = 0x07 /* struct xfrm_userpolicy_info */\n\tXFRMA_SEC_CTX        = 0x08 /* struct xfrm_sec_ctx */\n\tXFRMA_LTIME_VAL      = 0x09\n\tXFRMA_REPLAY_VAL     = 0x0a\n\tXFRMA_REPLAY_THRESH  = 0x0b\n\tXFRMA_ETIMER_THRESH  = 0x0c\n\tXFRMA_SRCADDR        = 0x0d /* xfrm_address_t */\n\tXFRMA_COADDR         = 0x0e /* xfrm_address_t */\n\tXFRMA_LASTUSED       = 0x0f /* unsigned long  */\n\tXFRMA_POLICY_TYPE    = 0x10 /* struct xfrm_userpolicy_type */\n\tXFRMA_MIGRATE        = 0x11\n\tXFRMA_ALG_AEAD       = 0x12 /* struct xfrm_algo_aead */\n\tXFRMA_KMADDRESS      = 0x13 /* struct xfrm_user_kmaddress */\n\tXFRMA_ALG_AUTH_TRUNC = 0x14 /* struct xfrm_algo_auth */\n\tXFRMA_MARK           = 0x15 /* struct xfrm_mark */\n\tXFRMA_TFCPAD         = 0x16 /* __u32 */\n\tXFRMA_REPLAY_ESN_VAL = 0x17 /* struct xfrm_replay_esn */\n\tXFRMA_SA_EXTRA_FLAGS = 0x18 /* __u32 */\n\tXFRMA_MAX            = 0x18\n)\n\nconst (\n\tSizeofXfrmAddress     = 0x10\n\tSizeofXfrmSelector    = 0x38\n\tSizeofXfrmLifetimeCfg = 0x40\n\tSizeofXfrmLifetimeCur = 0x20\n\tSizeofXfrmId          = 0x18\n\tSizeofXfrmMark        = 0x08\n)\n\n// Netlink groups\nconst (\n\tXFRMNLGRP_NONE    = 0x0\n\tXFRMNLGRP_ACQUIRE = 0x1\n\tXFRMNLGRP_EXPIRE  = 0x2\n\tXFRMNLGRP_SA      = 0x3\n\tXFRMNLGRP_POLICY  = 0x4\n\tXFRMNLGRP_AEVENTS = 0x5\n\tXFRMNLGRP_REPORT  = 0x6\n\tXFRMNLGRP_MIGRATE = 0x7\n\tXFRMNLGRP_MAPPING = 0x8\n\t__XFRMNLGRP_MAX   = 0x9\n)\n\n// typedef union {\n//   __be32    a4;\n//   __be32    a6[4];\n// } xfrm_address_t;\n\ntype XfrmAddress [SizeofXfrmAddress]byte\n\nfunc (x *XfrmAddress) ToIP() net.IP {\n\tvar empty = [12]byte{}\n\tip := make(net.IP, net.IPv6len)\n\tif bytes.Equal(x[4:16], empty[:]) {\n\t\tip[10] = 0xff\n\t\tip[11] = 0xff\n\t\tcopy(ip[12:16], x[0:4])\n\t} else {\n\t\tcopy(ip[:], x[:])\n\t}\n\treturn ip\n}\n\nfunc (x *XfrmAddress) ToIPNet(prefixlen uint8) *net.IPNet {\n\tip := x.ToIP()\n\tif GetIPFamily(ip) == FAMILY_V4 {\n\t\treturn &net.IPNet{IP: ip, Mask: net.CIDRMask(int(prefixlen), 32)}\n\t}\n\treturn &net.IPNet{IP: ip, Mask: net.CIDRMask(int(prefixlen), 128)}\n}\n\nfunc (x *XfrmAddress) FromIP(ip net.IP) {\n\tvar empty = [16]byte{}\n\tif len(ip) < net.IPv4len {\n\t\tcopy(x[4:16], empty[:])\n\t} else if GetIPFamily(ip) == FAMILY_V4 {\n\t\tcopy(x[0:4], ip.To4()[0:4])\n\t\tcopy(x[4:16], empty[:12])\n\t} else {\n\t\tcopy(x[0:16], ip.To16()[0:16])\n\t}\n}\n\nfunc DeserializeXfrmAddress(b []byte) *XfrmAddress {\n\treturn (*XfrmAddress)(unsafe.Pointer(&b[0:SizeofXfrmAddress][0]))\n}\n\nfunc (x *XfrmAddress) Serialize() []byte {\n\treturn (*(*[SizeofXfrmAddress]byte)(unsafe.Pointer(x)))[:]\n}\n\n// struct xfrm_selector {\n//   xfrm_address_t  daddr;\n//   xfrm_address_t  saddr;\n//   __be16  dport;\n//   __be16  dport_mask;\n//   __be16  sport;\n//   __be16  sport_mask;\n//   __u16 family;\n//   __u8  prefixlen_d;\n//   __u8  prefixlen_s;\n//   __u8  proto;\n//   int ifindex;\n//   __kernel_uid32_t  user;\n// };\n\ntype XfrmSelector struct {\n\tDaddr      XfrmAddress\n\tSaddr      XfrmAddress\n\tDport      uint16 // big endian\n\tDportMask  uint16 // big endian\n\tSport      uint16 // big endian\n\tSportMask  uint16 // big endian\n\tFamily     uint16\n\tPrefixlenD uint8\n\tPrefixlenS uint8\n\tProto      uint8\n\tPad        [3]byte\n\tIfindex    int32\n\tUser       uint32\n}\n\nfunc (msg *XfrmSelector) Len() int {\n\treturn SizeofXfrmSelector\n}\n\nfunc DeserializeXfrmSelector(b []byte) *XfrmSelector {\n\treturn (*XfrmSelector)(unsafe.Pointer(&b[0:SizeofXfrmSelector][0]))\n}\n\nfunc (msg *XfrmSelector) Serialize() []byte {\n\treturn (*(*[SizeofXfrmSelector]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_lifetime_cfg {\n//   __u64 soft_byte_limit;\n//   __u64 hard_byte_limit;\n//   __u64 soft_packet_limit;\n//   __u64 hard_packet_limit;\n//   __u64 soft_add_expires_seconds;\n//   __u64 hard_add_expires_seconds;\n//   __u64 soft_use_expires_seconds;\n//   __u64 hard_use_expires_seconds;\n// };\n//\n\ntype XfrmLifetimeCfg struct {\n\tSoftByteLimit         uint64\n\tHardByteLimit         uint64\n\tSoftPacketLimit       uint64\n\tHardPacketLimit       uint64\n\tSoftAddExpiresSeconds uint64\n\tHardAddExpiresSeconds uint64\n\tSoftUseExpiresSeconds uint64\n\tHardUseExpiresSeconds uint64\n}\n\nfunc (msg *XfrmLifetimeCfg) Len() int {\n\treturn SizeofXfrmLifetimeCfg\n}\n\nfunc DeserializeXfrmLifetimeCfg(b []byte) *XfrmLifetimeCfg {\n\treturn (*XfrmLifetimeCfg)(unsafe.Pointer(&b[0:SizeofXfrmLifetimeCfg][0]))\n}\n\nfunc (msg *XfrmLifetimeCfg) Serialize() []byte {\n\treturn (*(*[SizeofXfrmLifetimeCfg]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_lifetime_cur {\n//   __u64 bytes;\n//   __u64 packets;\n//   __u64 add_time;\n//   __u64 use_time;\n// };\n\ntype XfrmLifetimeCur struct {\n\tBytes   uint64\n\tPackets uint64\n\tAddTime uint64\n\tUseTime uint64\n}\n\nfunc (msg *XfrmLifetimeCur) Len() int {\n\treturn SizeofXfrmLifetimeCur\n}\n\nfunc DeserializeXfrmLifetimeCur(b []byte) *XfrmLifetimeCur {\n\treturn (*XfrmLifetimeCur)(unsafe.Pointer(&b[0:SizeofXfrmLifetimeCur][0]))\n}\n\nfunc (msg *XfrmLifetimeCur) Serialize() []byte {\n\treturn (*(*[SizeofXfrmLifetimeCur]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_id {\n//   xfrm_address_t  daddr;\n//   __be32    spi;\n//   __u8    proto;\n// };\n\ntype XfrmId struct {\n\tDaddr XfrmAddress\n\tSpi   uint32 // big endian\n\tProto uint8\n\tPad   [3]byte\n}\n\nfunc (msg *XfrmId) Len() int {\n\treturn SizeofXfrmId\n}\n\nfunc DeserializeXfrmId(b []byte) *XfrmId {\n\treturn (*XfrmId)(unsafe.Pointer(&b[0:SizeofXfrmId][0]))\n}\n\nfunc (msg *XfrmId) Serialize() []byte {\n\treturn (*(*[SizeofXfrmId]byte)(unsafe.Pointer(msg)))[:]\n}\n\ntype XfrmMark struct {\n\tValue uint32\n\tMask  uint32\n}\n\nfunc (msg *XfrmMark) Len() int {\n\treturn SizeofXfrmMark\n}\n\nfunc DeserializeXfrmMark(b []byte) *XfrmMark {\n\treturn (*XfrmMark)(unsafe.Pointer(&b[0:SizeofXfrmMark][0]))\n}\n\nfunc (msg *XfrmMark) Serialize() []byte {\n\treturn (*(*[SizeofXfrmMark]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/xfrm_monitor_linux.go",
    "content": "package nl\n\nimport (\n\t\"unsafe\"\n)\n\nconst (\n\tSizeofXfrmUserExpire = 0xe8\n)\n\n// struct xfrm_user_expire {\n// \tstruct xfrm_usersa_info\t\tstate;\n// \t__u8\t\t\t\thard;\n// };\n\ntype XfrmUserExpire struct {\n\tXfrmUsersaInfo XfrmUsersaInfo\n\tHard           uint8\n\tPad            [7]byte\n}\n\nfunc (msg *XfrmUserExpire) Len() int {\n\treturn SizeofXfrmUserExpire\n}\n\nfunc DeserializeXfrmUserExpire(b []byte) *XfrmUserExpire {\n\treturn (*XfrmUserExpire)(unsafe.Pointer(&b[0:SizeofXfrmUserExpire][0]))\n}\n\nfunc (msg *XfrmUserExpire) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUserExpire]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/xfrm_policy_linux.go",
    "content": "package nl\n\nimport (\n\t\"unsafe\"\n)\n\nconst (\n\tSizeofXfrmUserpolicyId   = 0x40\n\tSizeofXfrmUserpolicyInfo = 0xa8\n\tSizeofXfrmUserTmpl       = 0x40\n)\n\n// struct xfrm_userpolicy_id {\n//   struct xfrm_selector    sel;\n//   __u32       index;\n//   __u8        dir;\n// };\n//\n\ntype XfrmUserpolicyId struct {\n\tSel   XfrmSelector\n\tIndex uint32\n\tDir   uint8\n\tPad   [3]byte\n}\n\nfunc (msg *XfrmUserpolicyId) Len() int {\n\treturn SizeofXfrmUserpolicyId\n}\n\nfunc DeserializeXfrmUserpolicyId(b []byte) *XfrmUserpolicyId {\n\treturn (*XfrmUserpolicyId)(unsafe.Pointer(&b[0:SizeofXfrmUserpolicyId][0]))\n}\n\nfunc (msg *XfrmUserpolicyId) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUserpolicyId]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_userpolicy_info {\n//   struct xfrm_selector    sel;\n//   struct xfrm_lifetime_cfg  lft;\n//   struct xfrm_lifetime_cur  curlft;\n//   __u32       priority;\n//   __u32       index;\n//   __u8        dir;\n//   __u8        action;\n// #define XFRM_POLICY_ALLOW 0\n// #define XFRM_POLICY_BLOCK 1\n//   __u8        flags;\n// #define XFRM_POLICY_LOCALOK 1 /* Allow user to override global policy */\n//   /* Automatically expand selector to include matching ICMP payloads. */\n// #define XFRM_POLICY_ICMP  2\n//   __u8        share;\n// };\n\ntype XfrmUserpolicyInfo struct {\n\tSel      XfrmSelector\n\tLft      XfrmLifetimeCfg\n\tCurlft   XfrmLifetimeCur\n\tPriority uint32\n\tIndex    uint32\n\tDir      uint8\n\tAction   uint8\n\tFlags    uint8\n\tShare    uint8\n\tPad      [4]byte\n}\n\nfunc (msg *XfrmUserpolicyInfo) Len() int {\n\treturn SizeofXfrmUserpolicyInfo\n}\n\nfunc DeserializeXfrmUserpolicyInfo(b []byte) *XfrmUserpolicyInfo {\n\treturn (*XfrmUserpolicyInfo)(unsafe.Pointer(&b[0:SizeofXfrmUserpolicyInfo][0]))\n}\n\nfunc (msg *XfrmUserpolicyInfo) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUserpolicyInfo]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_user_tmpl {\n//   struct xfrm_id    id;\n//   __u16     family;\n//   xfrm_address_t    saddr;\n//   __u32     reqid;\n//   __u8      mode;\n//   __u8      share;\n//   __u8      optional;\n//   __u32     aalgos;\n//   __u32     ealgos;\n//   __u32     calgos;\n// }\n\ntype XfrmUserTmpl struct {\n\tXfrmId   XfrmId\n\tFamily   uint16\n\tPad1     [2]byte\n\tSaddr    XfrmAddress\n\tReqid    uint32\n\tMode     uint8\n\tShare    uint8\n\tOptional uint8\n\tPad2     byte\n\tAalgos   uint32\n\tEalgos   uint32\n\tCalgos   uint32\n}\n\nfunc (msg *XfrmUserTmpl) Len() int {\n\treturn SizeofXfrmUserTmpl\n}\n\nfunc DeserializeXfrmUserTmpl(b []byte) *XfrmUserTmpl {\n\treturn (*XfrmUserTmpl)(unsafe.Pointer(&b[0:SizeofXfrmUserTmpl][0]))\n}\n\nfunc (msg *XfrmUserTmpl) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUserTmpl]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/nl/xfrm_state_linux.go",
    "content": "package nl\n\nimport (\n\t\"unsafe\"\n)\n\nconst (\n\tSizeofXfrmUsersaId       = 0x18\n\tSizeofXfrmStats          = 0x0c\n\tSizeofXfrmUsersaInfo     = 0xe0\n\tSizeofXfrmUserSpiInfo    = 0xe8\n\tSizeofXfrmAlgo           = 0x44\n\tSizeofXfrmAlgoAuth       = 0x48\n\tSizeofXfrmAlgoAEAD       = 0x48\n\tSizeofXfrmEncapTmpl      = 0x18\n\tSizeofXfrmUsersaFlush    = 0x8\n\tSizeofXfrmReplayStateEsn = 0x18\n)\n\nconst (\n\tXFRM_STATE_NOECN      = 1\n\tXFRM_STATE_DECAP_DSCP = 2\n\tXFRM_STATE_NOPMTUDISC = 4\n\tXFRM_STATE_WILDRECV   = 8\n\tXFRM_STATE_ICMP       = 16\n\tXFRM_STATE_AF_UNSPEC  = 32\n\tXFRM_STATE_ALIGN4     = 64\n\tXFRM_STATE_ESN        = 128\n)\n\n// struct xfrm_usersa_id {\n//   xfrm_address_t      daddr;\n//   __be32        spi;\n//   __u16       family;\n//   __u8        proto;\n// };\n\ntype XfrmUsersaId struct {\n\tDaddr  XfrmAddress\n\tSpi    uint32 // big endian\n\tFamily uint16\n\tProto  uint8\n\tPad    byte\n}\n\nfunc (msg *XfrmUsersaId) Len() int {\n\treturn SizeofXfrmUsersaId\n}\n\nfunc DeserializeXfrmUsersaId(b []byte) *XfrmUsersaId {\n\treturn (*XfrmUsersaId)(unsafe.Pointer(&b[0:SizeofXfrmUsersaId][0]))\n}\n\nfunc (msg *XfrmUsersaId) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUsersaId]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_stats {\n//   __u32 replay_window;\n//   __u32 replay;\n//   __u32 integrity_failed;\n// };\n\ntype XfrmStats struct {\n\tReplayWindow    uint32\n\tReplay          uint32\n\tIntegrityFailed uint32\n}\n\nfunc (msg *XfrmStats) Len() int {\n\treturn SizeofXfrmStats\n}\n\nfunc DeserializeXfrmStats(b []byte) *XfrmStats {\n\treturn (*XfrmStats)(unsafe.Pointer(&b[0:SizeofXfrmStats][0]))\n}\n\nfunc (msg *XfrmStats) Serialize() []byte {\n\treturn (*(*[SizeofXfrmStats]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_usersa_info {\n//   struct xfrm_selector    sel;\n//   struct xfrm_id      id;\n//   xfrm_address_t      saddr;\n//   struct xfrm_lifetime_cfg  lft;\n//   struct xfrm_lifetime_cur  curlft;\n//   struct xfrm_stats   stats;\n//   __u32       seq;\n//   __u32       reqid;\n//   __u16       family;\n//   __u8        mode;   /* XFRM_MODE_xxx */\n//   __u8        replay_window;\n//   __u8        flags;\n// #define XFRM_STATE_NOECN  1\n// #define XFRM_STATE_DECAP_DSCP 2\n// #define XFRM_STATE_NOPMTUDISC 4\n// #define XFRM_STATE_WILDRECV 8\n// #define XFRM_STATE_ICMP   16\n// #define XFRM_STATE_AF_UNSPEC  32\n// #define XFRM_STATE_ALIGN4 64\n// #define XFRM_STATE_ESN    128\n// };\n//\n// #define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1\n//\n\ntype XfrmUsersaInfo struct {\n\tSel          XfrmSelector\n\tId           XfrmId\n\tSaddr        XfrmAddress\n\tLft          XfrmLifetimeCfg\n\tCurlft       XfrmLifetimeCur\n\tStats        XfrmStats\n\tSeq          uint32\n\tReqid        uint32\n\tFamily       uint16\n\tMode         uint8\n\tReplayWindow uint8\n\tFlags        uint8\n\tPad          [7]byte\n}\n\nfunc (msg *XfrmUsersaInfo) Len() int {\n\treturn SizeofXfrmUsersaInfo\n}\n\nfunc DeserializeXfrmUsersaInfo(b []byte) *XfrmUsersaInfo {\n\treturn (*XfrmUsersaInfo)(unsafe.Pointer(&b[0:SizeofXfrmUsersaInfo][0]))\n}\n\nfunc (msg *XfrmUsersaInfo) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUsersaInfo]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_userspi_info {\n// \tstruct xfrm_usersa_info\t\tinfo;\n// \t__u32\t\t\t\tmin;\n// \t__u32\t\t\t\tmax;\n// };\n\ntype XfrmUserSpiInfo struct {\n\tXfrmUsersaInfo XfrmUsersaInfo\n\tMin            uint32\n\tMax            uint32\n}\n\nfunc (msg *XfrmUserSpiInfo) Len() int {\n\treturn SizeofXfrmUserSpiInfo\n}\n\nfunc DeserializeXfrmUserSpiInfo(b []byte) *XfrmUserSpiInfo {\n\treturn (*XfrmUserSpiInfo)(unsafe.Pointer(&b[0:SizeofXfrmUserSpiInfo][0]))\n}\n\nfunc (msg *XfrmUserSpiInfo) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUserSpiInfo]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_algo {\n//   char    alg_name[64];\n//   unsigned int  alg_key_len;    /* in bits */\n//   char    alg_key[0];\n// };\n\ntype XfrmAlgo struct {\n\tAlgName   [64]byte\n\tAlgKeyLen uint32\n\tAlgKey    []byte\n}\n\nfunc (msg *XfrmAlgo) Len() int {\n\treturn SizeofXfrmAlgo + int(msg.AlgKeyLen/8)\n}\n\nfunc DeserializeXfrmAlgo(b []byte) *XfrmAlgo {\n\tret := XfrmAlgo{}\n\tcopy(ret.AlgName[:], b[0:64])\n\tret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))\n\tret.AlgKey = b[68:ret.Len()]\n\treturn &ret\n}\n\nfunc (msg *XfrmAlgo) Serialize() []byte {\n\tb := make([]byte, msg.Len())\n\tcopy(b[0:64], msg.AlgName[:])\n\tcopy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])\n\tcopy(b[68:msg.Len()], msg.AlgKey[:])\n\treturn b\n}\n\n// struct xfrm_algo_auth {\n//   char    alg_name[64];\n//   unsigned int  alg_key_len;    /* in bits */\n//   unsigned int  alg_trunc_len;  /* in bits */\n//   char    alg_key[0];\n// };\n\ntype XfrmAlgoAuth struct {\n\tAlgName     [64]byte\n\tAlgKeyLen   uint32\n\tAlgTruncLen uint32\n\tAlgKey      []byte\n}\n\nfunc (msg *XfrmAlgoAuth) Len() int {\n\treturn SizeofXfrmAlgoAuth + int(msg.AlgKeyLen/8)\n}\n\nfunc DeserializeXfrmAlgoAuth(b []byte) *XfrmAlgoAuth {\n\tret := XfrmAlgoAuth{}\n\tcopy(ret.AlgName[:], b[0:64])\n\tret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))\n\tret.AlgTruncLen = *(*uint32)(unsafe.Pointer(&b[68]))\n\tret.AlgKey = b[72:ret.Len()]\n\treturn &ret\n}\n\nfunc (msg *XfrmAlgoAuth) Serialize() []byte {\n\tb := make([]byte, msg.Len())\n\tcopy(b[0:64], msg.AlgName[:])\n\tcopy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])\n\tcopy(b[68:72], (*(*[4]byte)(unsafe.Pointer(&msg.AlgTruncLen)))[:])\n\tcopy(b[72:msg.Len()], msg.AlgKey[:])\n\treturn b\n}\n\n// struct xfrm_algo_aead {\n//   char    alg_name[64];\n//   unsigned int  alg_key_len;  /* in bits */\n//   unsigned int  alg_icv_len;  /* in bits */\n//   char    alg_key[0];\n// }\n\ntype XfrmAlgoAEAD struct {\n\tAlgName   [64]byte\n\tAlgKeyLen uint32\n\tAlgICVLen uint32\n\tAlgKey    []byte\n}\n\nfunc (msg *XfrmAlgoAEAD) Len() int {\n\treturn SizeofXfrmAlgoAEAD + int(msg.AlgKeyLen/8)\n}\n\nfunc DeserializeXfrmAlgoAEAD(b []byte) *XfrmAlgoAEAD {\n\tret := XfrmAlgoAEAD{}\n\tcopy(ret.AlgName[:], b[0:64])\n\tret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))\n\tret.AlgICVLen = *(*uint32)(unsafe.Pointer(&b[68]))\n\tret.AlgKey = b[72:ret.Len()]\n\treturn &ret\n}\n\nfunc (msg *XfrmAlgoAEAD) Serialize() []byte {\n\tb := make([]byte, msg.Len())\n\tcopy(b[0:64], msg.AlgName[:])\n\tcopy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])\n\tcopy(b[68:72], (*(*[4]byte)(unsafe.Pointer(&msg.AlgICVLen)))[:])\n\tcopy(b[72:msg.Len()], msg.AlgKey[:])\n\treturn b\n}\n\n// struct xfrm_encap_tmpl {\n//   __u16   encap_type;\n//   __be16    encap_sport;\n//   __be16    encap_dport;\n//   xfrm_address_t  encap_oa;\n// };\n\ntype XfrmEncapTmpl struct {\n\tEncapType  uint16\n\tEncapSport uint16 // big endian\n\tEncapDport uint16 // big endian\n\tPad        [2]byte\n\tEncapOa    XfrmAddress\n}\n\nfunc (msg *XfrmEncapTmpl) Len() int {\n\treturn SizeofXfrmEncapTmpl\n}\n\nfunc DeserializeXfrmEncapTmpl(b []byte) *XfrmEncapTmpl {\n\treturn (*XfrmEncapTmpl)(unsafe.Pointer(&b[0:SizeofXfrmEncapTmpl][0]))\n}\n\nfunc (msg *XfrmEncapTmpl) Serialize() []byte {\n\treturn (*(*[SizeofXfrmEncapTmpl]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_usersa_flush {\n//    __u8 proto;\n// };\n\ntype XfrmUsersaFlush struct {\n\tProto uint8\n}\n\nfunc (msg *XfrmUsersaFlush) Len() int {\n\treturn SizeofXfrmUsersaFlush\n}\n\nfunc DeserializeXfrmUsersaFlush(b []byte) *XfrmUsersaFlush {\n\treturn (*XfrmUsersaFlush)(unsafe.Pointer(&b[0:SizeofXfrmUsersaFlush][0]))\n}\n\nfunc (msg *XfrmUsersaFlush) Serialize() []byte {\n\treturn (*(*[SizeofXfrmUsersaFlush]byte)(unsafe.Pointer(msg)))[:]\n}\n\n// struct xfrm_replay_state_esn {\n//     unsigned int    bmp_len;\n//     __u32           oseq;\n//     __u32           seq;\n//     __u32           oseq_hi;\n//     __u32           seq_hi;\n//     __u32           replay_window;\n//     __u32           bmp[0];\n// };\n\ntype XfrmReplayStateEsn struct {\n\tBmpLen       uint32\n\tOSeq         uint32\n\tSeq          uint32\n\tOSeqHi       uint32\n\tSeqHi        uint32\n\tReplayWindow uint32\n\tBmp          []uint32\n}\n\nfunc (msg *XfrmReplayStateEsn) Serialize() []byte {\n\t// We deliberately do not pass Bmp, as it gets set by the kernel.\n\treturn (*(*[SizeofXfrmReplayStateEsn]byte)(unsafe.Pointer(msg)))[:]\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/order.go",
    "content": "package netlink\n\nimport (\n\t\"encoding/binary\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nvar (\n\tnative       = nl.NativeEndian()\n\tnetworkOrder = binary.BigEndian\n)\n\nfunc htonl(val uint32) []byte {\n\tbytes := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(bytes, val)\n\treturn bytes\n}\n\nfunc htons(val uint16) []byte {\n\tbytes := make([]byte, 2)\n\tbinary.BigEndian.PutUint16(bytes, val)\n\treturn bytes\n}\n\nfunc ntohl(buf []byte) uint32 {\n\treturn binary.BigEndian.Uint32(buf)\n}\n\nfunc ntohs(buf []byte) uint16 {\n\treturn binary.BigEndian.Uint16(buf)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/protinfo.go",
    "content": "package netlink\n\nimport (\n\t\"strings\"\n)\n\n// Protinfo represents bridge flags from netlink.\ntype Protinfo struct {\n\tHairpin      bool\n\tGuard        bool\n\tFastLeave    bool\n\tRootBlock    bool\n\tLearning     bool\n\tFlood        bool\n\tProxyArp     bool\n\tProxyArpWiFi bool\n}\n\n// String returns a list of enabled flags\nfunc (prot *Protinfo) String() string {\n\tvar boolStrings []string\n\tif prot.Hairpin {\n\t\tboolStrings = append(boolStrings, \"Hairpin\")\n\t}\n\tif prot.Guard {\n\t\tboolStrings = append(boolStrings, \"Guard\")\n\t}\n\tif prot.FastLeave {\n\t\tboolStrings = append(boolStrings, \"FastLeave\")\n\t}\n\tif prot.RootBlock {\n\t\tboolStrings = append(boolStrings, \"RootBlock\")\n\t}\n\tif prot.Learning {\n\t\tboolStrings = append(boolStrings, \"Learning\")\n\t}\n\tif prot.Flood {\n\t\tboolStrings = append(boolStrings, \"Flood\")\n\t}\n\tif prot.ProxyArp {\n\t\tboolStrings = append(boolStrings, \"ProxyArp\")\n\t}\n\tif prot.ProxyArpWiFi {\n\t\tboolStrings = append(boolStrings, \"ProxyArpWiFi\")\n\t}\n\treturn strings.Join(boolStrings, \" \")\n}\n\nfunc boolToByte(x bool) []byte {\n\tif x {\n\t\treturn []byte{1}\n\t}\n\treturn []byte{0}\n}\n\nfunc byteToBool(x byte) bool {\n\treturn uint8(x) != 0\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/protinfo_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nfunc LinkGetProtinfo(link Link) (Protinfo, error) {\n\treturn pkgHandle.LinkGetProtinfo(link)\n}\n\nfunc (h *Handle) LinkGetProtinfo(link Link) (Protinfo, error) {\n\tbase := link.Attrs()\n\th.ensureIndex(base)\n\tvar pi Protinfo\n\treq := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)\n\tmsg := nl.NewIfInfomsg(syscall.AF_BRIDGE)\n\treq.AddData(msg)\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\tif err != nil {\n\t\treturn pi, err\n\t}\n\n\tfor _, m := range msgs {\n\t\tans := nl.DeserializeIfInfomsg(m)\n\t\tif int(ans.Index) != base.Index {\n\t\t\tcontinue\n\t\t}\n\t\tattrs, err := nl.ParseRouteAttr(m[ans.Len():])\n\t\tif err != nil {\n\t\t\treturn pi, err\n\t\t}\n\t\tfor _, attr := range attrs {\n\t\t\tif attr.Attr.Type != syscall.IFLA_PROTINFO|syscall.NLA_F_NESTED {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tinfos, err := nl.ParseRouteAttr(attr.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn pi, err\n\t\t\t}\n\t\t\tpi = *parseProtinfo(infos)\n\n\t\t\treturn pi, nil\n\t\t}\n\t}\n\treturn pi, fmt.Errorf(\"Device with index %d not found\", base.Index)\n}\n\nfunc parseProtinfo(infos []syscall.NetlinkRouteAttr) *Protinfo {\n\tvar pi Protinfo\n\tfor _, info := range infos {\n\t\tswitch info.Attr.Type {\n\t\tcase nl.IFLA_BRPORT_MODE:\n\t\t\tpi.Hairpin = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_GUARD:\n\t\t\tpi.Guard = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_FAST_LEAVE:\n\t\t\tpi.FastLeave = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_PROTECT:\n\t\t\tpi.RootBlock = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_LEARNING:\n\t\t\tpi.Learning = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_UNICAST_FLOOD:\n\t\t\tpi.Flood = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_PROXYARP:\n\t\t\tpi.ProxyArp = byteToBool(info.Value[0])\n\t\tcase nl.IFLA_BRPORT_PROXYARP_WIFI:\n\t\t\tpi.ProxyArpWiFi = byteToBool(info.Value[0])\n\t\t}\n\t}\n\treturn &pi\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/qdisc.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"math\"\n)\n\nconst (\n\tHANDLE_NONE      = 0\n\tHANDLE_INGRESS   = 0xFFFFFFF1\n\tHANDLE_CLSACT    = HANDLE_INGRESS\n\tHANDLE_ROOT      = 0xFFFFFFFF\n\tPRIORITY_MAP_LEN = 16\n)\nconst (\n\tHANDLE_MIN_INGRESS = 0xFFFFFFF2\n\tHANDLE_MIN_EGRESS  = 0xFFFFFFF3\n)\n\ntype Qdisc interface {\n\tAttrs() *QdiscAttrs\n\tType() string\n}\n\n// QdiscAttrs represents a netlink qdisc. A qdisc is associated with a link,\n// has a handle, a parent and a refcnt. The root qdisc of a device should\n// have parent == HANDLE_ROOT.\ntype QdiscAttrs struct {\n\tLinkIndex int\n\tHandle    uint32\n\tParent    uint32\n\tRefcnt    uint32 // read only\n}\n\nfunc (q QdiscAttrs) String() string {\n\treturn fmt.Sprintf(\"{LinkIndex: %d, Handle: %s, Parent: %s, Refcnt: %d}\", q.LinkIndex, HandleStr(q.Handle), HandleStr(q.Parent), q.Refcnt)\n}\n\nfunc MakeHandle(major, minor uint16) uint32 {\n\treturn (uint32(major) << 16) | uint32(minor)\n}\n\nfunc MajorMinor(handle uint32) (uint16, uint16) {\n\treturn uint16((handle & 0xFFFF0000) >> 16), uint16(handle & 0x0000FFFFF)\n}\n\nfunc HandleStr(handle uint32) string {\n\tswitch handle {\n\tcase HANDLE_NONE:\n\t\treturn \"none\"\n\tcase HANDLE_INGRESS:\n\t\treturn \"ingress\"\n\tcase HANDLE_ROOT:\n\t\treturn \"root\"\n\tdefault:\n\t\tmajor, minor := MajorMinor(handle)\n\t\treturn fmt.Sprintf(\"%x:%x\", major, minor)\n\t}\n}\n\nfunc Percentage2u32(percentage float32) uint32 {\n\t// FIXME this is most likely not the best way to convert from % to uint32\n\tif percentage == 100 {\n\t\treturn math.MaxUint32\n\t}\n\treturn uint32(math.MaxUint32 * (percentage / 100))\n}\n\n// PfifoFast is the default qdisc created by the kernel if one has not\n// been defined for the interface\ntype PfifoFast struct {\n\tQdiscAttrs\n\tBands       uint8\n\tPriorityMap [PRIORITY_MAP_LEN]uint8\n}\n\nfunc (qdisc *PfifoFast) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *PfifoFast) Type() string {\n\treturn \"pfifo_fast\"\n}\n\n// Prio is a basic qdisc that works just like PfifoFast\ntype Prio struct {\n\tQdiscAttrs\n\tBands       uint8\n\tPriorityMap [PRIORITY_MAP_LEN]uint8\n}\n\nfunc NewPrio(attrs QdiscAttrs) *Prio {\n\treturn &Prio{\n\t\tQdiscAttrs:  attrs,\n\t\tBands:       3,\n\t\tPriorityMap: [PRIORITY_MAP_LEN]uint8{1, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},\n\t}\n}\n\nfunc (qdisc *Prio) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *Prio) Type() string {\n\treturn \"prio\"\n}\n\n// Htb is a classful qdisc that rate limits based on tokens\ntype Htb struct {\n\tQdiscAttrs\n\tVersion      uint32\n\tRate2Quantum uint32\n\tDefcls       uint32\n\tDebug        uint32\n\tDirectPkts   uint32\n}\n\nfunc NewHtb(attrs QdiscAttrs) *Htb {\n\treturn &Htb{\n\t\tQdiscAttrs:   attrs,\n\t\tVersion:      3,\n\t\tDefcls:       0,\n\t\tRate2Quantum: 10,\n\t\tDebug:        0,\n\t\tDirectPkts:   0,\n\t}\n}\n\nfunc (qdisc *Htb) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *Htb) Type() string {\n\treturn \"htb\"\n}\n\n// Netem is a classless qdisc that rate limits based on tokens\n\ntype NetemQdiscAttrs struct {\n\tLatency       uint32  // in us\n\tDelayCorr     float32 // in %\n\tLimit         uint32\n\tLoss          float32 // in %\n\tLossCorr      float32 // in %\n\tGap           uint32\n\tDuplicate     float32 // in %\n\tDuplicateCorr float32 // in %\n\tJitter        uint32  // in us\n\tReorderProb   float32 // in %\n\tReorderCorr   float32 // in %\n\tCorruptProb   float32 // in %\n\tCorruptCorr   float32 // in %\n}\n\nfunc (q NetemQdiscAttrs) String() string {\n\treturn fmt.Sprintf(\n\t\t\"{Latency: %d, Limit: %d, Loss: %f, Gap: %d, Duplicate: %f, Jitter: %d}\",\n\t\tq.Latency, q.Limit, q.Loss, q.Gap, q.Duplicate, q.Jitter,\n\t)\n}\n\ntype Netem struct {\n\tQdiscAttrs\n\tLatency       uint32\n\tDelayCorr     uint32\n\tLimit         uint32\n\tLoss          uint32\n\tLossCorr      uint32\n\tGap           uint32\n\tDuplicate     uint32\n\tDuplicateCorr uint32\n\tJitter        uint32\n\tReorderProb   uint32\n\tReorderCorr   uint32\n\tCorruptProb   uint32\n\tCorruptCorr   uint32\n}\n\nfunc (qdisc *Netem) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *Netem) Type() string {\n\treturn \"netem\"\n}\n\n// Tbf is a classless qdisc that rate limits based on tokens\ntype Tbf struct {\n\tQdiscAttrs\n\tRate     uint64\n\tLimit    uint32\n\tBuffer   uint32\n\tPeakrate uint64\n\tMinburst uint32\n\t// TODO: handle other settings\n}\n\nfunc (qdisc *Tbf) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *Tbf) Type() string {\n\treturn \"tbf\"\n}\n\n// Ingress is a qdisc for adding ingress filters\ntype Ingress struct {\n\tQdiscAttrs\n}\n\nfunc (qdisc *Ingress) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *Ingress) Type() string {\n\treturn \"ingress\"\n}\n\n// GenericQdisc qdiscs represent types that are not currently understood\n// by this netlink library.\ntype GenericQdisc struct {\n\tQdiscAttrs\n\tQdiscType string\n}\n\nfunc (qdisc *GenericQdisc) Attrs() *QdiscAttrs {\n\treturn &qdisc.QdiscAttrs\n}\n\nfunc (qdisc *GenericQdisc) Type() string {\n\treturn qdisc.QdiscType\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/qdisc_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// NOTE function is here because it uses other linux functions\nfunc NewNetem(attrs QdiscAttrs, nattrs NetemQdiscAttrs) *Netem {\n\tvar limit uint32 = 1000\n\tvar lossCorr, delayCorr, duplicateCorr uint32\n\tvar reorderProb, reorderCorr uint32\n\tvar corruptProb, corruptCorr uint32\n\n\tlatency := nattrs.Latency\n\tloss := Percentage2u32(nattrs.Loss)\n\tgap := nattrs.Gap\n\tduplicate := Percentage2u32(nattrs.Duplicate)\n\tjitter := nattrs.Jitter\n\n\t// Correlation\n\tif latency > 0 && jitter > 0 {\n\t\tdelayCorr = Percentage2u32(nattrs.DelayCorr)\n\t}\n\tif loss > 0 {\n\t\tlossCorr = Percentage2u32(nattrs.LossCorr)\n\t}\n\tif duplicate > 0 {\n\t\tduplicateCorr = Percentage2u32(nattrs.DuplicateCorr)\n\t}\n\t// FIXME should validate values(like loss/duplicate are percentages...)\n\tlatency = time2Tick(latency)\n\n\tif nattrs.Limit != 0 {\n\t\tlimit = nattrs.Limit\n\t}\n\t// Jitter is only value if latency is > 0\n\tif latency > 0 {\n\t\tjitter = time2Tick(jitter)\n\t}\n\n\treorderProb = Percentage2u32(nattrs.ReorderProb)\n\treorderCorr = Percentage2u32(nattrs.ReorderCorr)\n\n\tif reorderProb > 0 {\n\t\t// ERROR if lantency == 0\n\t\tif gap == 0 {\n\t\t\tgap = 1\n\t\t}\n\t}\n\n\tcorruptProb = Percentage2u32(nattrs.CorruptProb)\n\tcorruptCorr = Percentage2u32(nattrs.CorruptCorr)\n\n\treturn &Netem{\n\t\tQdiscAttrs:    attrs,\n\t\tLatency:       latency,\n\t\tDelayCorr:     delayCorr,\n\t\tLimit:         limit,\n\t\tLoss:          loss,\n\t\tLossCorr:      lossCorr,\n\t\tGap:           gap,\n\t\tDuplicate:     duplicate,\n\t\tDuplicateCorr: duplicateCorr,\n\t\tJitter:        jitter,\n\t\tReorderProb:   reorderProb,\n\t\tReorderCorr:   reorderCorr,\n\t\tCorruptProb:   corruptProb,\n\t\tCorruptCorr:   corruptCorr,\n\t}\n}\n\n// QdiscDel will delete a qdisc from the system.\n// Equivalent to: `tc qdisc del $qdisc`\nfunc QdiscDel(qdisc Qdisc) error {\n\treturn pkgHandle.QdiscDel(qdisc)\n}\n\n// QdiscDel will delete a qdisc from the system.\n// Equivalent to: `tc qdisc del $qdisc`\nfunc (h *Handle) QdiscDel(qdisc Qdisc) error {\n\treturn h.qdiscModify(syscall.RTM_DELQDISC, 0, qdisc)\n}\n\n// QdiscChange will change a qdisc in place\n// Equivalent to: `tc qdisc change $qdisc`\n// The parent and handle MUST NOT be changed.\nfunc QdiscChange(qdisc Qdisc) error {\n\treturn pkgHandle.QdiscChange(qdisc)\n}\n\n// QdiscChange will change a qdisc in place\n// Equivalent to: `tc qdisc change $qdisc`\n// The parent and handle MUST NOT be changed.\nfunc (h *Handle) QdiscChange(qdisc Qdisc) error {\n\treturn h.qdiscModify(syscall.RTM_NEWQDISC, 0, qdisc)\n}\n\n// QdiscReplace will replace a qdisc to the system.\n// Equivalent to: `tc qdisc replace $qdisc`\n// The handle MUST change.\nfunc QdiscReplace(qdisc Qdisc) error {\n\treturn pkgHandle.QdiscReplace(qdisc)\n}\n\n// QdiscReplace will replace a qdisc to the system.\n// Equivalent to: `tc qdisc replace $qdisc`\n// The handle MUST change.\nfunc (h *Handle) QdiscReplace(qdisc Qdisc) error {\n\treturn h.qdiscModify(\n\t\tsyscall.RTM_NEWQDISC,\n\t\tsyscall.NLM_F_CREATE|syscall.NLM_F_REPLACE,\n\t\tqdisc)\n}\n\n// QdiscAdd will add a qdisc to the system.\n// Equivalent to: `tc qdisc add $qdisc`\nfunc QdiscAdd(qdisc Qdisc) error {\n\treturn pkgHandle.QdiscAdd(qdisc)\n}\n\n// QdiscAdd will add a qdisc to the system.\n// Equivalent to: `tc qdisc add $qdisc`\nfunc (h *Handle) QdiscAdd(qdisc Qdisc) error {\n\treturn h.qdiscModify(\n\t\tsyscall.RTM_NEWQDISC,\n\t\tsyscall.NLM_F_CREATE|syscall.NLM_F_EXCL,\n\t\tqdisc)\n}\n\nfunc (h *Handle) qdiscModify(cmd, flags int, qdisc Qdisc) error {\n\treq := h.newNetlinkRequest(cmd, flags|syscall.NLM_F_ACK)\n\tbase := qdisc.Attrs()\n\tmsg := &nl.TcMsg{\n\t\tFamily:  nl.FAMILY_ALL,\n\t\tIfindex: int32(base.LinkIndex),\n\t\tHandle:  base.Handle,\n\t\tParent:  base.Parent,\n\t}\n\treq.AddData(msg)\n\n\t// When deleting don't bother building the rest of the netlink payload\n\tif cmd != syscall.RTM_DELQDISC {\n\t\tif err := qdiscPayload(req, qdisc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\nfunc qdiscPayload(req *nl.NetlinkRequest, qdisc Qdisc) error {\n\n\treq.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(qdisc.Type())))\n\n\toptions := nl.NewRtAttr(nl.TCA_OPTIONS, nil)\n\tif prio, ok := qdisc.(*Prio); ok {\n\t\ttcmap := nl.TcPrioMap{\n\t\t\tBands:   int32(prio.Bands),\n\t\t\tPriomap: prio.PriorityMap,\n\t\t}\n\t\toptions = nl.NewRtAttr(nl.TCA_OPTIONS, tcmap.Serialize())\n\t} else if tbf, ok := qdisc.(*Tbf); ok {\n\t\topt := nl.TcTbfQopt{}\n\t\topt.Rate.Rate = uint32(tbf.Rate)\n\t\topt.Peakrate.Rate = uint32(tbf.Peakrate)\n\t\topt.Limit = tbf.Limit\n\t\topt.Buffer = tbf.Buffer\n\t\tnl.NewRtAttrChild(options, nl.TCA_TBF_PARMS, opt.Serialize())\n\t\tif tbf.Rate >= uint64(1<<32) {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_TBF_RATE64, nl.Uint64Attr(tbf.Rate))\n\t\t}\n\t\tif tbf.Peakrate >= uint64(1<<32) {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_TBF_PRATE64, nl.Uint64Attr(tbf.Peakrate))\n\t\t}\n\t\tif tbf.Peakrate > 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_TBF_PBURST, nl.Uint32Attr(tbf.Minburst))\n\t\t}\n\t} else if htb, ok := qdisc.(*Htb); ok {\n\t\topt := nl.TcHtbGlob{}\n\t\topt.Version = htb.Version\n\t\topt.Rate2Quantum = htb.Rate2Quantum\n\t\topt.Defcls = htb.Defcls\n\t\t// TODO: Handle Debug properly. For now default to 0\n\t\topt.Debug = htb.Debug\n\t\topt.DirectPkts = htb.DirectPkts\n\t\tnl.NewRtAttrChild(options, nl.TCA_HTB_INIT, opt.Serialize())\n\t\t// nl.NewRtAttrChild(options, nl.TCA_HTB_DIRECT_QLEN, opt.Serialize())\n\t} else if netem, ok := qdisc.(*Netem); ok {\n\t\topt := nl.TcNetemQopt{}\n\t\topt.Latency = netem.Latency\n\t\topt.Limit = netem.Limit\n\t\topt.Loss = netem.Loss\n\t\topt.Gap = netem.Gap\n\t\topt.Duplicate = netem.Duplicate\n\t\topt.Jitter = netem.Jitter\n\t\toptions = nl.NewRtAttr(nl.TCA_OPTIONS, opt.Serialize())\n\t\t// Correlation\n\t\tcorr := nl.TcNetemCorr{}\n\t\tcorr.DelayCorr = netem.DelayCorr\n\t\tcorr.LossCorr = netem.LossCorr\n\t\tcorr.DupCorr = netem.DuplicateCorr\n\n\t\tif corr.DelayCorr > 0 || corr.LossCorr > 0 || corr.DupCorr > 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_NETEM_CORR, corr.Serialize())\n\t\t}\n\t\t// Corruption\n\t\tcorruption := nl.TcNetemCorrupt{}\n\t\tcorruption.Probability = netem.CorruptProb\n\t\tcorruption.Correlation = netem.CorruptCorr\n\t\tif corruption.Probability > 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_NETEM_CORRUPT, corruption.Serialize())\n\t\t}\n\t\t// Reorder\n\t\treorder := nl.TcNetemReorder{}\n\t\treorder.Probability = netem.ReorderProb\n\t\treorder.Correlation = netem.ReorderCorr\n\t\tif reorder.Probability > 0 {\n\t\t\tnl.NewRtAttrChild(options, nl.TCA_NETEM_REORDER, reorder.Serialize())\n\t\t}\n\t} else if _, ok := qdisc.(*Ingress); ok {\n\t\t// ingress filters must use the proper handle\n\t\tif qdisc.Attrs().Parent != HANDLE_INGRESS {\n\t\t\treturn fmt.Errorf(\"Ingress filters must set Parent to HANDLE_INGRESS\")\n\t\t}\n\t}\n\n\treq.AddData(options)\n\treturn nil\n}\n\n// QdiscList gets a list of qdiscs in the system.\n// Equivalent to: `tc qdisc show`.\n// The list can be filtered by link.\nfunc QdiscList(link Link) ([]Qdisc, error) {\n\treturn pkgHandle.QdiscList(link)\n}\n\n// QdiscList gets a list of qdiscs in the system.\n// Equivalent to: `tc qdisc show`.\n// The list can be filtered by link.\nfunc (h *Handle) QdiscList(link Link) ([]Qdisc, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETQDISC, syscall.NLM_F_DUMP)\n\tindex := int32(0)\n\tif link != nil {\n\t\tbase := link.Attrs()\n\t\th.ensureIndex(base)\n\t\tindex = int32(base.Index)\n\t}\n\tmsg := &nl.TcMsg{\n\t\tFamily:  nl.FAMILY_ALL,\n\t\tIfindex: index,\n\t}\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWQDISC)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Qdisc\n\tfor _, m := range msgs {\n\t\tmsg := nl.DeserializeTcMsg(m)\n\n\t\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// skip qdiscs from other interfaces\n\t\tif link != nil && msg.Ifindex != index {\n\t\t\tcontinue\n\t\t}\n\n\t\tbase := QdiscAttrs{\n\t\t\tLinkIndex: int(msg.Ifindex),\n\t\t\tHandle:    msg.Handle,\n\t\t\tParent:    msg.Parent,\n\t\t\tRefcnt:    msg.Info,\n\t\t}\n\t\tvar qdisc Qdisc\n\t\tqdiscType := \"\"\n\t\tfor _, attr := range attrs {\n\t\t\tswitch attr.Attr.Type {\n\t\t\tcase nl.TCA_KIND:\n\t\t\t\tqdiscType = string(attr.Value[:len(attr.Value)-1])\n\t\t\t\tswitch qdiscType {\n\t\t\t\tcase \"pfifo_fast\":\n\t\t\t\t\tqdisc = &PfifoFast{}\n\t\t\t\tcase \"prio\":\n\t\t\t\t\tqdisc = &Prio{}\n\t\t\t\tcase \"tbf\":\n\t\t\t\t\tqdisc = &Tbf{}\n\t\t\t\tcase \"ingress\":\n\t\t\t\t\tqdisc = &Ingress{}\n\t\t\t\tcase \"htb\":\n\t\t\t\t\tqdisc = &Htb{}\n\t\t\t\tcase \"netem\":\n\t\t\t\t\tqdisc = &Netem{}\n\t\t\t\tdefault:\n\t\t\t\t\tqdisc = &GenericQdisc{QdiscType: qdiscType}\n\t\t\t\t}\n\t\t\tcase nl.TCA_OPTIONS:\n\t\t\t\tswitch qdiscType {\n\t\t\t\tcase \"pfifo_fast\":\n\t\t\t\t\t// pfifo returns TcPrioMap directly without wrapping it in rtattr\n\t\t\t\t\tif err := parsePfifoFastData(qdisc, attr.Value); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\tcase \"prio\":\n\t\t\t\t\t// prio returns TcPrioMap directly without wrapping it in rtattr\n\t\t\t\t\tif err := parsePrioData(qdisc, attr.Value); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\tcase \"tbf\":\n\t\t\t\t\tdata, err := nl.ParseRouteAttr(attr.Value)\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\tif err := parseTbfData(qdisc, data); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\tcase \"htb\":\n\t\t\t\t\tdata, err := nl.ParseRouteAttr(attr.Value)\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\tif err := parseHtbData(qdisc, data); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\tcase \"netem\":\n\t\t\t\t\tif err := parseNetemData(qdisc, attr.Value); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\n\t\t\t\t\t// no options for ingress\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t*qdisc.Attrs() = base\n\t\tres = append(res, qdisc)\n\t}\n\n\treturn res, nil\n}\n\nfunc parsePfifoFastData(qdisc Qdisc, value []byte) error {\n\tpfifo := qdisc.(*PfifoFast)\n\ttcmap := nl.DeserializeTcPrioMap(value)\n\tpfifo.PriorityMap = tcmap.Priomap\n\tpfifo.Bands = uint8(tcmap.Bands)\n\treturn nil\n}\n\nfunc parsePrioData(qdisc Qdisc, value []byte) error {\n\tprio := qdisc.(*Prio)\n\ttcmap := nl.DeserializeTcPrioMap(value)\n\tprio.PriorityMap = tcmap.Priomap\n\tprio.Bands = uint8(tcmap.Bands)\n\treturn nil\n}\n\nfunc parseHtbData(qdisc Qdisc, data []syscall.NetlinkRouteAttr) error {\n\tnative = nl.NativeEndian()\n\thtb := qdisc.(*Htb)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_HTB_INIT:\n\t\t\topt := nl.DeserializeTcHtbGlob(datum.Value)\n\t\t\thtb.Version = opt.Version\n\t\t\thtb.Rate2Quantum = opt.Rate2Quantum\n\t\t\thtb.Defcls = opt.Defcls\n\t\t\thtb.Debug = opt.Debug\n\t\t\thtb.DirectPkts = opt.DirectPkts\n\t\tcase nl.TCA_HTB_DIRECT_QLEN:\n\t\t\t// TODO\n\t\t\t//htb.DirectQlen = native.uint32(datum.Value)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc parseNetemData(qdisc Qdisc, value []byte) error {\n\tnetem := qdisc.(*Netem)\n\topt := nl.DeserializeTcNetemQopt(value)\n\tnetem.Latency = opt.Latency\n\tnetem.Limit = opt.Limit\n\tnetem.Loss = opt.Loss\n\tnetem.Gap = opt.Gap\n\tnetem.Duplicate = opt.Duplicate\n\tnetem.Jitter = opt.Jitter\n\tdata, err := nl.ParseRouteAttr(value[nl.SizeofTcNetemQopt:])\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_NETEM_CORR:\n\t\t\topt := nl.DeserializeTcNetemCorr(datum.Value)\n\t\t\tnetem.DelayCorr = opt.DelayCorr\n\t\t\tnetem.LossCorr = opt.LossCorr\n\t\t\tnetem.DuplicateCorr = opt.DupCorr\n\t\tcase nl.TCA_NETEM_CORRUPT:\n\t\t\topt := nl.DeserializeTcNetemCorrupt(datum.Value)\n\t\t\tnetem.CorruptProb = opt.Probability\n\t\t\tnetem.CorruptCorr = opt.Correlation\n\t\tcase nl.TCA_NETEM_REORDER:\n\t\t\topt := nl.DeserializeTcNetemReorder(datum.Value)\n\t\t\tnetem.ReorderProb = opt.Probability\n\t\t\tnetem.ReorderCorr = opt.Correlation\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc parseTbfData(qdisc Qdisc, data []syscall.NetlinkRouteAttr) error {\n\tnative = nl.NativeEndian()\n\ttbf := qdisc.(*Tbf)\n\tfor _, datum := range data {\n\t\tswitch datum.Attr.Type {\n\t\tcase nl.TCA_TBF_PARMS:\n\t\t\topt := nl.DeserializeTcTbfQopt(datum.Value)\n\t\t\ttbf.Rate = uint64(opt.Rate.Rate)\n\t\t\ttbf.Peakrate = uint64(opt.Peakrate.Rate)\n\t\t\ttbf.Limit = opt.Limit\n\t\t\ttbf.Buffer = opt.Buffer\n\t\tcase nl.TCA_TBF_RATE64:\n\t\t\ttbf.Rate = native.Uint64(datum.Value[0:8])\n\t\tcase nl.TCA_TBF_PRATE64:\n\t\t\ttbf.Peakrate = native.Uint64(datum.Value[0:8])\n\t\tcase nl.TCA_TBF_PBURST:\n\t\t\ttbf.Minburst = native.Uint32(datum.Value[0:4])\n\t\t}\n\t}\n\treturn nil\n}\n\nconst (\n\tTIME_UNITS_PER_SEC = 1000000\n)\n\nvar (\n\ttickInUsec  float64\n\tclockFactor float64\n\thz          float64\n)\n\nfunc initClock() {\n\tdata, err := ioutil.ReadFile(\"/proc/net/psched\")\n\tif err != nil {\n\t\treturn\n\t}\n\tparts := strings.Split(strings.TrimSpace(string(data)), \" \")\n\tif len(parts) < 3 {\n\t\treturn\n\t}\n\tvar vals [3]uint64\n\tfor i := range vals {\n\t\tval, err := strconv.ParseUint(parts[i], 16, 32)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tvals[i] = val\n\t}\n\t// compatibility\n\tif vals[2] == 1000000000 {\n\t\tvals[0] = vals[1]\n\t}\n\tclockFactor = float64(vals[2]) / TIME_UNITS_PER_SEC\n\ttickInUsec = float64(vals[0]) / float64(vals[1]) * clockFactor\n\thz = float64(vals[0])\n}\n\nfunc TickInUsec() float64 {\n\tif tickInUsec == 0.0 {\n\t\tinitClock()\n\t}\n\treturn tickInUsec\n}\n\nfunc ClockFactor() float64 {\n\tif clockFactor == 0.0 {\n\t\tinitClock()\n\t}\n\treturn clockFactor\n}\n\nfunc Hz() float64 {\n\tif hz == 0.0 {\n\t\tinitClock()\n\t}\n\treturn hz\n}\n\nfunc time2Tick(time uint32) uint32 {\n\treturn uint32(float64(time) * TickInUsec())\n}\n\nfunc tick2Time(tick uint32) uint32 {\n\treturn uint32(float64(tick) / TickInUsec())\n}\n\nfunc time2Ktime(time uint32) uint32 {\n\treturn uint32(float64(time) * ClockFactor())\n}\n\nfunc ktime2Time(ktime uint32) uint32 {\n\treturn uint32(float64(ktime) / ClockFactor())\n}\n\nfunc burst(rate uint64, buffer uint32) uint32 {\n\treturn uint32(float64(rate) * float64(tick2Time(buffer)) / TIME_UNITS_PER_SEC)\n}\n\nfunc latency(rate uint64, limit, buffer uint32) float64 {\n\treturn TIME_UNITS_PER_SEC*(float64(limit)/float64(rate)) - float64(tick2Time(buffer))\n}\n\nfunc Xmittime(rate uint64, size uint32) float64 {\n\treturn TickInUsec() * TIME_UNITS_PER_SEC * (float64(size) / float64(rate))\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/route.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n)\n\n// Scope is an enum representing a route scope.\ntype Scope uint8\n\ntype NextHopFlag int\n\ntype Destination interface {\n\tFamily() int\n\tDecode([]byte) error\n\tEncode() ([]byte, error)\n\tString() string\n}\n\ntype Encap interface {\n\tType() int\n\tDecode([]byte) error\n\tEncode() ([]byte, error)\n\tString() string\n}\n\n// Route represents a netlink route.\ntype Route struct {\n\tLinkIndex  int\n\tILinkIndex int\n\tScope      Scope\n\tDst        *net.IPNet\n\tSrc        net.IP\n\tGw         net.IP\n\tMultiPath  []*NexthopInfo\n\tProtocol   int\n\tPriority   int\n\tTable      int\n\tType       int\n\tTos        int\n\tFlags      int\n\tMPLSDst    *int\n\tNewDst     Destination\n\tEncap      Encap\n}\n\nfunc (r Route) String() string {\n\telems := []string{}\n\tif len(r.MultiPath) == 0 {\n\t\telems = append(elems, fmt.Sprintf(\"Ifindex: %d\", r.LinkIndex))\n\t}\n\tif r.MPLSDst != nil {\n\t\telems = append(elems, fmt.Sprintf(\"Dst: %d\", r.MPLSDst))\n\t} else {\n\t\telems = append(elems, fmt.Sprintf(\"Dst: %s\", r.Dst))\n\t}\n\tif r.NewDst != nil {\n\t\telems = append(elems, fmt.Sprintf(\"NewDst: %s\", r.NewDst))\n\t}\n\tif r.Encap != nil {\n\t\telems = append(elems, fmt.Sprintf(\"Encap: %s\", r.Encap))\n\t}\n\telems = append(elems, fmt.Sprintf(\"Src: %s\", r.Src))\n\tif len(r.MultiPath) > 0 {\n\t\telems = append(elems, fmt.Sprintf(\"Gw: %s\", r.MultiPath))\n\t} else {\n\t\telems = append(elems, fmt.Sprintf(\"Gw: %s\", r.Gw))\n\t}\n\telems = append(elems, fmt.Sprintf(\"Flags: %s\", r.ListFlags()))\n\telems = append(elems, fmt.Sprintf(\"Table: %d\", r.Table))\n\treturn fmt.Sprintf(\"{%s}\", strings.Join(elems, \" \"))\n}\n\nfunc (r *Route) SetFlag(flag NextHopFlag) {\n\tr.Flags |= int(flag)\n}\n\nfunc (r *Route) ClearFlag(flag NextHopFlag) {\n\tr.Flags &^= int(flag)\n}\n\ntype flagString struct {\n\tf NextHopFlag\n\ts string\n}\n\n// RouteUpdate is sent when a route changes - type is RTM_NEWROUTE or RTM_DELROUTE\ntype RouteUpdate struct {\n\tType uint16\n\tRoute\n}\n\ntype NexthopInfo struct {\n\tLinkIndex int\n\tHops      int\n\tGw        net.IP\n\tFlags     int\n\tNewDst    Destination\n\tEncap     Encap\n}\n\nfunc (n *NexthopInfo) String() string {\n\telems := []string{}\n\telems = append(elems, fmt.Sprintf(\"Ifindex: %d\", n.LinkIndex))\n\tif n.NewDst != nil {\n\t\telems = append(elems, fmt.Sprintf(\"NewDst: %s\", n.NewDst))\n\t}\n\tif n.Encap != nil {\n\t\telems = append(elems, fmt.Sprintf(\"Encap: %s\", n.Encap))\n\t}\n\telems = append(elems, fmt.Sprintf(\"Weight: %d\", n.Hops+1))\n\telems = append(elems, fmt.Sprintf(\"Gw: %d\", n.Gw))\n\telems = append(elems, fmt.Sprintf(\"Flags: %s\", n.ListFlags()))\n\treturn fmt.Sprintf(\"{%s}\", strings.Join(elems, \" \"))\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/route_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n\t\"github.com/vishvananda/netns\"\n)\n\n// RtAttr is shared so it is in netlink_linux.go\n\nconst (\n\tSCOPE_UNIVERSE Scope = syscall.RT_SCOPE_UNIVERSE\n\tSCOPE_SITE     Scope = syscall.RT_SCOPE_SITE\n\tSCOPE_LINK     Scope = syscall.RT_SCOPE_LINK\n\tSCOPE_HOST     Scope = syscall.RT_SCOPE_HOST\n\tSCOPE_NOWHERE  Scope = syscall.RT_SCOPE_NOWHERE\n)\n\nconst (\n\tRT_FILTER_PROTOCOL uint64 = 1 << (1 + iota)\n\tRT_FILTER_SCOPE\n\tRT_FILTER_TYPE\n\tRT_FILTER_TOS\n\tRT_FILTER_IIF\n\tRT_FILTER_OIF\n\tRT_FILTER_DST\n\tRT_FILTER_SRC\n\tRT_FILTER_GW\n\tRT_FILTER_TABLE\n)\n\nconst (\n\tFLAG_ONLINK    NextHopFlag = syscall.RTNH_F_ONLINK\n\tFLAG_PERVASIVE NextHopFlag = syscall.RTNH_F_PERVASIVE\n)\n\nvar testFlags = []flagString{\n\t{f: FLAG_ONLINK, s: \"onlink\"},\n\t{f: FLAG_PERVASIVE, s: \"pervasive\"},\n}\n\nfunc listFlags(flag int) []string {\n\tvar flags []string\n\tfor _, tf := range testFlags {\n\t\tif flag&int(tf.f) != 0 {\n\t\t\tflags = append(flags, tf.s)\n\t\t}\n\t}\n\treturn flags\n}\n\nfunc (r *Route) ListFlags() []string {\n\treturn listFlags(r.Flags)\n}\n\nfunc (n *NexthopInfo) ListFlags() []string {\n\treturn listFlags(n.Flags)\n}\n\ntype MPLSDestination struct {\n\tLabels []int\n}\n\nfunc (d *MPLSDestination) Family() int {\n\treturn nl.FAMILY_MPLS\n}\n\nfunc (d *MPLSDestination) Decode(buf []byte) error {\n\td.Labels = nl.DecodeMPLSStack(buf)\n\treturn nil\n}\n\nfunc (d *MPLSDestination) Encode() ([]byte, error) {\n\treturn nl.EncodeMPLSStack(d.Labels...), nil\n}\n\nfunc (d *MPLSDestination) String() string {\n\ts := make([]string, 0, len(d.Labels))\n\tfor _, l := range d.Labels {\n\t\ts = append(s, fmt.Sprintf(\"%d\", l))\n\t}\n\treturn strings.Join(s, \"/\")\n}\n\ntype MPLSEncap struct {\n\tLabels []int\n}\n\nfunc (e *MPLSEncap) Type() int {\n\treturn nl.LWTUNNEL_ENCAP_MPLS\n}\n\nfunc (e *MPLSEncap) Decode(buf []byte) error {\n\tif len(buf) < 4 {\n\t\treturn fmt.Errorf(\"Lack of bytes\")\n\t}\n\tnative := nl.NativeEndian()\n\tl := native.Uint16(buf)\n\tif len(buf) < int(l) {\n\t\treturn fmt.Errorf(\"Lack of bytes\")\n\t}\n\tbuf = buf[:l]\n\ttyp := native.Uint16(buf[2:])\n\tif typ != nl.MPLS_IPTUNNEL_DST {\n\t\treturn fmt.Errorf(\"Unknown MPLS Encap Type: %d\", typ)\n\t}\n\te.Labels = nl.DecodeMPLSStack(buf[4:])\n\treturn nil\n}\n\nfunc (e *MPLSEncap) Encode() ([]byte, error) {\n\ts := nl.EncodeMPLSStack(e.Labels...)\n\tnative := nl.NativeEndian()\n\thdr := make([]byte, 4)\n\tnative.PutUint16(hdr, uint16(len(s)+4))\n\tnative.PutUint16(hdr[2:], nl.MPLS_IPTUNNEL_DST)\n\treturn append(hdr, s...), nil\n}\n\nfunc (e *MPLSEncap) String() string {\n\ts := make([]string, 0, len(e.Labels))\n\tfor _, l := range e.Labels {\n\t\ts = append(s, fmt.Sprintf(\"%d\", l))\n\t}\n\treturn strings.Join(s, \"/\")\n}\n\n// RouteAdd will add a route to the system.\n// Equivalent to: `ip route add $route`\nfunc RouteAdd(route *Route) error {\n\treturn pkgHandle.RouteAdd(route)\n}\n\n// RouteAdd will add a route to the system.\n// Equivalent to: `ip route add $route`\nfunc (h *Handle) RouteAdd(route *Route) error {\n\tflags := syscall.NLM_F_CREATE | syscall.NLM_F_EXCL | syscall.NLM_F_ACK\n\treq := h.newNetlinkRequest(syscall.RTM_NEWROUTE, flags)\n\treturn h.routeHandle(route, req, nl.NewRtMsg())\n}\n\n// RouteReplace will add a route to the system.\n// Equivalent to: `ip route replace $route`\nfunc RouteReplace(route *Route) error {\n\treturn pkgHandle.RouteReplace(route)\n}\n\n// RouteReplace will add a route to the system.\n// Equivalent to: `ip route replace $route`\nfunc (h *Handle) RouteReplace(route *Route) error {\n\tflags := syscall.NLM_F_CREATE | syscall.NLM_F_REPLACE | syscall.NLM_F_ACK\n\treq := h.newNetlinkRequest(syscall.RTM_NEWROUTE, flags)\n\treturn h.routeHandle(route, req, nl.NewRtMsg())\n}\n\n// RouteDel will delete a route from the system.\n// Equivalent to: `ip route del $route`\nfunc RouteDel(route *Route) error {\n\treturn pkgHandle.RouteDel(route)\n}\n\n// RouteDel will delete a route from the system.\n// Equivalent to: `ip route del $route`\nfunc (h *Handle) RouteDel(route *Route) error {\n\treq := h.newNetlinkRequest(syscall.RTM_DELROUTE, syscall.NLM_F_ACK)\n\treturn h.routeHandle(route, req, nl.NewRtDelMsg())\n}\n\nfunc (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg) error {\n\tif (route.Dst == nil || route.Dst.IP == nil) && route.Src == nil && route.Gw == nil && route.MPLSDst == nil {\n\t\treturn fmt.Errorf(\"one of Dst.IP, Src, or Gw must not be nil\")\n\t}\n\n\tfamily := -1\n\tvar rtAttrs []*nl.RtAttr\n\n\tif route.Dst != nil && route.Dst.IP != nil {\n\t\tdstLen, _ := route.Dst.Mask.Size()\n\t\tmsg.Dst_len = uint8(dstLen)\n\t\tdstFamily := nl.GetIPFamily(route.Dst.IP)\n\t\tfamily = dstFamily\n\t\tvar dstData []byte\n\t\tif dstFamily == FAMILY_V4 {\n\t\t\tdstData = route.Dst.IP.To4()\n\t\t} else {\n\t\t\tdstData = route.Dst.IP.To16()\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, dstData))\n\t} else if route.MPLSDst != nil {\n\t\tfamily = nl.FAMILY_MPLS\n\t\tmsg.Dst_len = uint8(20)\n\t\tmsg.Type = syscall.RTN_UNICAST\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, nl.EncodeMPLSStack(*route.MPLSDst)))\n\t}\n\n\tif route.NewDst != nil {\n\t\tif family != -1 && family != route.NewDst.Family() {\n\t\t\treturn fmt.Errorf(\"new destination and destination are not the same address family\")\n\t\t}\n\t\tbuf, err := route.NewDst.Encode()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(nl.RTA_NEWDST, buf))\n\t}\n\n\tif route.Encap != nil {\n\t\tbuf := make([]byte, 2)\n\t\tnative.PutUint16(buf, uint16(route.Encap.Type()))\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(nl.RTA_ENCAP_TYPE, buf))\n\t\tbuf, err := route.Encap.Encode()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(nl.RTA_ENCAP, buf))\n\t}\n\n\tif route.Src != nil {\n\t\tsrcFamily := nl.GetIPFamily(route.Src)\n\t\tif family != -1 && family != srcFamily {\n\t\t\treturn fmt.Errorf(\"source and destination ip are not the same IP family\")\n\t\t}\n\t\tfamily = srcFamily\n\t\tvar srcData []byte\n\t\tif srcFamily == FAMILY_V4 {\n\t\t\tsrcData = route.Src.To4()\n\t\t} else {\n\t\t\tsrcData = route.Src.To16()\n\t\t}\n\t\t// The commonly used src ip for routes is actually PREFSRC\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_PREFSRC, srcData))\n\t}\n\n\tif route.Gw != nil {\n\t\tgwFamily := nl.GetIPFamily(route.Gw)\n\t\tif family != -1 && family != gwFamily {\n\t\t\treturn fmt.Errorf(\"gateway, source, and destination ip are not the same IP family\")\n\t\t}\n\t\tfamily = gwFamily\n\t\tvar gwData []byte\n\t\tif gwFamily == FAMILY_V4 {\n\t\t\tgwData = route.Gw.To4()\n\t\t} else {\n\t\t\tgwData = route.Gw.To16()\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_GATEWAY, gwData))\n\t}\n\n\tif len(route.MultiPath) > 0 {\n\t\tbuf := []byte{}\n\t\tfor _, nh := range route.MultiPath {\n\t\t\trtnh := &nl.RtNexthop{\n\t\t\t\tRtNexthop: syscall.RtNexthop{\n\t\t\t\t\tHops:    uint8(nh.Hops),\n\t\t\t\t\tIfindex: int32(nh.LinkIndex),\n\t\t\t\t\tFlags:   uint8(nh.Flags),\n\t\t\t\t},\n\t\t\t}\n\t\t\tchildren := []nl.NetlinkRequestData{}\n\t\t\tif nh.Gw != nil {\n\t\t\t\tgwFamily := nl.GetIPFamily(nh.Gw)\n\t\t\t\tif family != -1 && family != gwFamily {\n\t\t\t\t\treturn fmt.Errorf(\"gateway, source, and destination ip are not the same IP family\")\n\t\t\t\t}\n\t\t\t\tif gwFamily == FAMILY_V4 {\n\t\t\t\t\tchildren = append(children, nl.NewRtAttr(syscall.RTA_GATEWAY, []byte(nh.Gw.To4())))\n\t\t\t\t} else {\n\t\t\t\t\tchildren = append(children, nl.NewRtAttr(syscall.RTA_GATEWAY, []byte(nh.Gw.To16())))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif nh.NewDst != nil {\n\t\t\t\tif family != -1 && family != nh.NewDst.Family() {\n\t\t\t\t\treturn fmt.Errorf(\"new destination and destination are not the same address family\")\n\t\t\t\t}\n\t\t\t\tbuf, err := nh.NewDst.Encode()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tchildren = append(children, nl.NewRtAttr(nl.RTA_NEWDST, buf))\n\t\t\t}\n\t\t\tif nh.Encap != nil {\n\t\t\t\tbuf := make([]byte, 2)\n\t\t\t\tnative.PutUint16(buf, uint16(nh.Encap.Type()))\n\t\t\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(nl.RTA_ENCAP_TYPE, buf))\n\t\t\t\tbuf, err := nh.Encap.Encode()\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tchildren = append(children, nl.NewRtAttr(nl.RTA_ENCAP, buf))\n\t\t\t}\n\t\t\trtnh.Children = children\n\t\t\tbuf = append(buf, rtnh.Serialize()...)\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_MULTIPATH, buf))\n\t}\n\n\tif route.Table > 0 {\n\t\tif route.Table >= 256 {\n\t\t\tmsg.Table = syscall.RT_TABLE_UNSPEC\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, uint32(route.Table))\n\t\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_TABLE, b))\n\t\t} else {\n\t\t\tmsg.Table = uint8(route.Table)\n\t\t}\n\t}\n\n\tif route.Priority > 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(route.Priority))\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_PRIORITY, b))\n\t}\n\tif route.Tos > 0 {\n\t\tmsg.Tos = uint8(route.Tos)\n\t}\n\tif route.Protocol > 0 {\n\t\tmsg.Protocol = uint8(route.Protocol)\n\t}\n\tif route.Type > 0 {\n\t\tmsg.Type = uint8(route.Type)\n\t}\n\n\tmsg.Flags = uint32(route.Flags)\n\tmsg.Scope = uint8(route.Scope)\n\tmsg.Family = uint8(family)\n\treq.AddData(msg)\n\tfor _, attr := range rtAttrs {\n\t\treq.AddData(attr)\n\t}\n\n\tvar (\n\t\tb      = make([]byte, 4)\n\t\tnative = nl.NativeEndian()\n\t)\n\tnative.PutUint32(b, uint32(route.LinkIndex))\n\n\treq.AddData(nl.NewRtAttr(syscall.RTA_OIF, b))\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// RouteList gets a list of routes in the system.\n// Equivalent to: `ip route show`.\n// The list can be filtered by link and ip family.\nfunc RouteList(link Link, family int) ([]Route, error) {\n\treturn pkgHandle.RouteList(link, family)\n}\n\n// RouteList gets a list of routes in the system.\n// Equivalent to: `ip route show`.\n// The list can be filtered by link and ip family.\nfunc (h *Handle) RouteList(link Link, family int) ([]Route, error) {\n\tvar routeFilter *Route\n\tif link != nil {\n\t\trouteFilter = &Route{\n\t\t\tLinkIndex: link.Attrs().Index,\n\t\t}\n\t}\n\treturn h.RouteListFiltered(family, routeFilter, RT_FILTER_OIF)\n}\n\n// RouteListFiltered gets a list of routes in the system filtered with specified rules.\n// All rules must be defined in RouteFilter struct\nfunc RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, error) {\n\treturn pkgHandle.RouteListFiltered(family, filter, filterMask)\n}\n\n// RouteListFiltered gets a list of routes in the system filtered with specified rules.\n// All rules must be defined in RouteFilter struct\nfunc (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETROUTE, syscall.NLM_F_DUMP)\n\tinfmsg := nl.NewIfInfomsg(family)\n\treq.AddData(infmsg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWROUTE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Route\n\tfor _, m := range msgs {\n\t\tmsg := nl.DeserializeRtMsg(m)\n\t\tif msg.Flags&syscall.RTM_F_CLONED != 0 {\n\t\t\t// Ignore cloned routes\n\t\t\tcontinue\n\t\t}\n\t\tif msg.Table != syscall.RT_TABLE_MAIN {\n\t\t\tif filter == nil || filter != nil && filterMask&RT_FILTER_TABLE == 0 {\n\t\t\t\t// Ignore non-main tables\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\troute, err := deserializeRoute(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif filter != nil {\n\t\t\tswitch {\n\t\t\tcase filterMask&RT_FILTER_TABLE != 0 && filter.Table != syscall.RT_TABLE_UNSPEC && route.Table != filter.Table:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_PROTOCOL != 0 && route.Protocol != filter.Protocol:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_SCOPE != 0 && route.Scope != filter.Scope:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_TYPE != 0 && route.Type != filter.Type:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_TOS != 0 && route.Tos != filter.Tos:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_OIF != 0 && route.LinkIndex != filter.LinkIndex:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_IIF != 0 && route.ILinkIndex != filter.ILinkIndex:\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_GW != 0 && !route.Gw.Equal(filter.Gw):\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_SRC != 0 && !route.Src.Equal(filter.Src):\n\t\t\t\tcontinue\n\t\t\tcase filterMask&RT_FILTER_DST != 0:\n\t\t\t\tif filter.MPLSDst == nil || route.MPLSDst == nil || (*filter.MPLSDst) != (*route.MPLSDst) {\n\t\t\t\t\tif filter.Dst == nil {\n\t\t\t\t\t\tif route.Dst != nil {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif route.Dst == nil {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\taMaskLen, aMaskBits := route.Dst.Mask.Size()\n\t\t\t\t\t\tbMaskLen, bMaskBits := filter.Dst.Mask.Size()\n\t\t\t\t\t\tif !(route.Dst.IP.Equal(filter.Dst.IP) && aMaskLen == bMaskLen && aMaskBits == bMaskBits) {\n\t\t\t\t\t\t\tcontinue\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\t\tres = append(res, route)\n\t}\n\treturn res, nil\n}\n\n// deserializeRoute decodes a binary netlink message into a Route struct\nfunc deserializeRoute(m []byte) (Route, error) {\n\tmsg := nl.DeserializeRtMsg(m)\n\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\tif err != nil {\n\t\treturn Route{}, err\n\t}\n\troute := Route{\n\t\tScope:    Scope(msg.Scope),\n\t\tProtocol: int(msg.Protocol),\n\t\tTable:    int(msg.Table),\n\t\tType:     int(msg.Type),\n\t\tTos:      int(msg.Tos),\n\t\tFlags:    int(msg.Flags),\n\t}\n\n\tnative := nl.NativeEndian()\n\tvar encap, encapType syscall.NetlinkRouteAttr\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase syscall.RTA_GATEWAY:\n\t\t\troute.Gw = net.IP(attr.Value)\n\t\tcase syscall.RTA_PREFSRC:\n\t\t\troute.Src = net.IP(attr.Value)\n\t\tcase syscall.RTA_DST:\n\t\t\tif msg.Family == nl.FAMILY_MPLS {\n\t\t\t\tstack := nl.DecodeMPLSStack(attr.Value)\n\t\t\t\tif len(stack) == 0 || len(stack) > 1 {\n\t\t\t\t\treturn route, fmt.Errorf(\"invalid MPLS RTA_DST\")\n\t\t\t\t}\n\t\t\t\troute.MPLSDst = &stack[0]\n\t\t\t} else {\n\t\t\t\troute.Dst = &net.IPNet{\n\t\t\t\t\tIP:   attr.Value,\n\t\t\t\t\tMask: net.CIDRMask(int(msg.Dst_len), 8*len(attr.Value)),\n\t\t\t\t}\n\t\t\t}\n\t\tcase syscall.RTA_OIF:\n\t\t\troute.LinkIndex = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.RTA_IIF:\n\t\t\troute.ILinkIndex = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.RTA_PRIORITY:\n\t\t\troute.Priority = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.RTA_TABLE:\n\t\t\troute.Table = int(native.Uint32(attr.Value[0:4]))\n\t\tcase syscall.RTA_MULTIPATH:\n\t\t\tparseRtNexthop := func(value []byte) (*NexthopInfo, []byte, error) {\n\t\t\t\tif len(value) < syscall.SizeofRtNexthop {\n\t\t\t\t\treturn nil, nil, fmt.Errorf(\"Lack of bytes\")\n\t\t\t\t}\n\t\t\t\tnh := nl.DeserializeRtNexthop(value)\n\t\t\t\tif len(value) < int(nh.RtNexthop.Len) {\n\t\t\t\t\treturn nil, nil, fmt.Errorf(\"Lack of bytes\")\n\t\t\t\t}\n\t\t\t\tinfo := &NexthopInfo{\n\t\t\t\t\tLinkIndex: int(nh.RtNexthop.Ifindex),\n\t\t\t\t\tHops:      int(nh.RtNexthop.Hops),\n\t\t\t\t\tFlags:     int(nh.RtNexthop.Flags),\n\t\t\t\t}\n\t\t\t\tattrs, err := nl.ParseRouteAttr(value[syscall.SizeofRtNexthop:int(nh.RtNexthop.Len)])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, err\n\t\t\t\t}\n\t\t\t\tvar encap, encapType syscall.NetlinkRouteAttr\n\t\t\t\tfor _, attr := range attrs {\n\t\t\t\t\tswitch attr.Attr.Type {\n\t\t\t\t\tcase syscall.RTA_GATEWAY:\n\t\t\t\t\t\tinfo.Gw = net.IP(attr.Value)\n\t\t\t\t\tcase nl.RTA_NEWDST:\n\t\t\t\t\t\tvar d Destination\n\t\t\t\t\t\tswitch msg.Family {\n\t\t\t\t\t\tcase nl.FAMILY_MPLS:\n\t\t\t\t\t\t\td = &MPLSDestination{}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif err := d.Decode(attr.Value); err != nil {\n\t\t\t\t\t\t\treturn nil, nil, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinfo.NewDst = d\n\t\t\t\t\tcase nl.RTA_ENCAP_TYPE:\n\t\t\t\t\t\tencapType = attr\n\t\t\t\t\tcase nl.RTA_ENCAP:\n\t\t\t\t\t\tencap = attr\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif len(encap.Value) != 0 && len(encapType.Value) != 0 {\n\t\t\t\t\ttyp := int(native.Uint16(encapType.Value[0:2]))\n\t\t\t\t\tvar e Encap\n\t\t\t\t\tswitch typ {\n\t\t\t\t\tcase nl.LWTUNNEL_ENCAP_MPLS:\n\t\t\t\t\t\te = &MPLSEncap{}\n\t\t\t\t\t\tif err := e.Decode(encap.Value); err != nil {\n\t\t\t\t\t\t\treturn nil, nil, err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tinfo.Encap = e\n\t\t\t\t}\n\n\t\t\t\treturn info, value[int(nh.RtNexthop.Len):], nil\n\t\t\t}\n\t\t\trest := attr.Value\n\t\t\tfor len(rest) > 0 {\n\t\t\t\tinfo, buf, err := parseRtNexthop(rest)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn route, err\n\t\t\t\t}\n\t\t\t\troute.MultiPath = append(route.MultiPath, info)\n\t\t\t\trest = buf\n\t\t\t}\n\t\tcase nl.RTA_NEWDST:\n\t\t\tvar d Destination\n\t\t\tswitch msg.Family {\n\t\t\tcase nl.FAMILY_MPLS:\n\t\t\t\td = &MPLSDestination{}\n\t\t\t}\n\t\t\tif err := d.Decode(attr.Value); err != nil {\n\t\t\t\treturn route, err\n\t\t\t}\n\t\t\troute.NewDst = d\n\t\tcase nl.RTA_ENCAP_TYPE:\n\t\t\tencapType = attr\n\t\tcase nl.RTA_ENCAP:\n\t\t\tencap = attr\n\t\t}\n\t}\n\n\tif len(encap.Value) != 0 && len(encapType.Value) != 0 {\n\t\ttyp := int(native.Uint16(encapType.Value[0:2]))\n\t\tvar e Encap\n\t\tswitch typ {\n\t\tcase nl.LWTUNNEL_ENCAP_MPLS:\n\t\t\te = &MPLSEncap{}\n\t\t\tif err := e.Decode(encap.Value); err != nil {\n\t\t\t\treturn route, err\n\t\t\t}\n\t\t}\n\t\troute.Encap = e\n\t}\n\n\treturn route, nil\n}\n\n// RouteGet gets a route to a specific destination from the host system.\n// Equivalent to: 'ip route get'.\nfunc RouteGet(destination net.IP) ([]Route, error) {\n\treturn pkgHandle.RouteGet(destination)\n}\n\n// RouteGet gets a route to a specific destination from the host system.\n// Equivalent to: 'ip route get'.\nfunc (h *Handle) RouteGet(destination net.IP) ([]Route, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETROUTE, syscall.NLM_F_REQUEST)\n\tfamily := nl.GetIPFamily(destination)\n\tvar destinationData []byte\n\tvar bitlen uint8\n\tif family == FAMILY_V4 {\n\t\tdestinationData = destination.To4()\n\t\tbitlen = 32\n\t} else {\n\t\tdestinationData = destination.To16()\n\t\tbitlen = 128\n\t}\n\tmsg := &nl.RtMsg{}\n\tmsg.Family = uint8(family)\n\tmsg.Dst_len = bitlen\n\treq.AddData(msg)\n\n\trtaDst := nl.NewRtAttr(syscall.RTA_DST, destinationData)\n\treq.AddData(rtaDst)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWROUTE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []Route\n\tfor _, m := range msgs {\n\t\troute, err := deserializeRoute(m)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tres = append(res, route)\n\t}\n\treturn res, nil\n\n}\n\n// RouteSubscribe takes a chan down which notifications will be sent\n// when routes are added or deleted. Close the 'done' chan to stop subscription.\nfunc RouteSubscribe(ch chan<- RouteUpdate, done <-chan struct{}) error {\n\treturn routeSubscribeAt(netns.None(), netns.None(), ch, done)\n}\n\n// RouteSubscribeAt works like RouteSubscribe plus it allows the caller\n// to choose the network namespace in which to subscribe (ns).\nfunc RouteSubscribeAt(ns netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}) error {\n\treturn routeSubscribeAt(ns, netns.None(), ch, done)\n}\n\nfunc routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}) error {\n\ts, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_IPV4_ROUTE, syscall.RTNLGRP_IPV6_ROUTE)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif done != nil {\n\t\tgo func() {\n\t\t\t<-done\n\t\t\ts.Close()\n\t\t}()\n\t}\n\tgo func() {\n\t\tdefer close(ch)\n\t\tfor {\n\t\t\tmsgs, err := s.Receive()\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor _, m := range msgs {\n\t\t\t\troute, err := deserializeRoute(m.Data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tch <- RouteUpdate{Type: m.Header.Type, Route: route}\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/route_unspecified.go",
    "content": "// +build !linux\n\npackage netlink\n\nfunc (r *Route) ListFlags() []string {\n\treturn []string{}\n}\n\nfunc (n *NexthopInfo) ListFlags() []string {\n\treturn []string{}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/rule.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// Rule represents a netlink rule.\ntype Rule struct {\n\tPriority          int\n\tTable             int\n\tMark              int\n\tMask              int\n\tTunID             uint\n\tGoto              int\n\tSrc               *net.IPNet\n\tDst               *net.IPNet\n\tFlow              int\n\tIifName           string\n\tOifName           string\n\tSuppressIfgroup   int\n\tSuppressPrefixlen int\n}\n\nfunc (r Rule) String() string {\n\treturn fmt.Sprintf(\"ip rule %d: from %s table %d\", r.Priority, r.Src, r.Table)\n}\n\n// NewRule return empty rules.\nfunc NewRule() *Rule {\n\treturn &Rule{\n\t\tSuppressIfgroup:   -1,\n\t\tSuppressPrefixlen: -1,\n\t\tPriority:          -1,\n\t\tMark:              -1,\n\t\tMask:              -1,\n\t\tGoto:              -1,\n\t\tFlow:              -1,\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/rule_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\n// RuleAdd adds a rule to the system.\n// Equivalent to: ip rule add\nfunc RuleAdd(rule *Rule) error {\n\treturn pkgHandle.RuleAdd(rule)\n}\n\n// RuleAdd adds a rule to the system.\n// Equivalent to: ip rule add\nfunc (h *Handle) RuleAdd(rule *Rule) error {\n\treq := h.newNetlinkRequest(syscall.RTM_NEWRULE, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\treturn ruleHandle(rule, req)\n}\n\n// RuleDel deletes a rule from the system.\n// Equivalent to: ip rule del\nfunc RuleDel(rule *Rule) error {\n\treturn pkgHandle.RuleDel(rule)\n}\n\n// RuleDel deletes a rule from the system.\n// Equivalent to: ip rule del\nfunc (h *Handle) RuleDel(rule *Rule) error {\n\treq := h.newNetlinkRequest(syscall.RTM_DELRULE, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\treturn ruleHandle(rule, req)\n}\n\nfunc ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {\n\tmsg := nl.NewRtMsg()\n\tmsg.Family = syscall.AF_INET\n\tvar dstFamily uint8\n\n\tvar rtAttrs []*nl.RtAttr\n\tif rule.Dst != nil && rule.Dst.IP != nil {\n\t\tdstLen, _ := rule.Dst.Mask.Size()\n\t\tmsg.Dst_len = uint8(dstLen)\n\t\tmsg.Family = uint8(nl.GetIPFamily(rule.Dst.IP))\n\t\tdstFamily = msg.Family\n\t\tvar dstData []byte\n\t\tif msg.Family == syscall.AF_INET {\n\t\t\tdstData = rule.Dst.IP.To4()\n\t\t} else {\n\t\t\tdstData = rule.Dst.IP.To16()\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, dstData))\n\t}\n\n\tif rule.Src != nil && rule.Src.IP != nil {\n\t\tmsg.Family = uint8(nl.GetIPFamily(rule.Src.IP))\n\t\tif dstFamily != 0 && dstFamily != msg.Family {\n\t\t\treturn fmt.Errorf(\"source and destination ip are not the same IP family\")\n\t\t}\n\t\tsrcLen, _ := rule.Src.Mask.Size()\n\t\tmsg.Src_len = uint8(srcLen)\n\t\tvar srcData []byte\n\t\tif msg.Family == syscall.AF_INET {\n\t\t\tsrcData = rule.Src.IP.To4()\n\t\t} else {\n\t\t\tsrcData = rule.Src.IP.To16()\n\t\t}\n\t\trtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_SRC, srcData))\n\t}\n\n\tif rule.Table >= 0 {\n\t\tmsg.Table = uint8(rule.Table)\n\t\tif rule.Table >= 256 {\n\t\t\tmsg.Table = syscall.RT_TABLE_UNSPEC\n\t\t}\n\t}\n\n\treq.AddData(msg)\n\tfor i := range rtAttrs {\n\t\treq.AddData(rtAttrs[i])\n\t}\n\n\tnative := nl.NativeEndian()\n\n\tif rule.Priority >= 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Priority))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_PRIORITY, b))\n\t}\n\tif rule.Mark >= 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Mark))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_FWMARK, b))\n\t}\n\tif rule.Mask >= 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Mask))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_FWMASK, b))\n\t}\n\tif rule.Flow >= 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Flow))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_FLOW, b))\n\t}\n\tif rule.TunID > 0 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.TunID))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_TUN_ID, b))\n\t}\n\tif rule.Table >= 256 {\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Table))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_TABLE, b))\n\t}\n\tif msg.Table > 0 {\n\t\tif rule.SuppressPrefixlen >= 0 {\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, uint32(rule.SuppressPrefixlen))\n\t\t\treq.AddData(nl.NewRtAttr(nl.FRA_SUPPRESS_PREFIXLEN, b))\n\t\t}\n\t\tif rule.SuppressIfgroup >= 0 {\n\t\t\tb := make([]byte, 4)\n\t\t\tnative.PutUint32(b, uint32(rule.SuppressIfgroup))\n\t\t\treq.AddData(nl.NewRtAttr(nl.FRA_SUPPRESS_IFGROUP, b))\n\t\t}\n\t}\n\tif rule.IifName != \"\" {\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_IIFNAME, []byte(rule.IifName)))\n\t}\n\tif rule.OifName != \"\" {\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_OIFNAME, []byte(rule.OifName)))\n\t}\n\tif rule.Goto >= 0 {\n\t\tmsg.Type = nl.FR_ACT_NOP\n\t\tb := make([]byte, 4)\n\t\tnative.PutUint32(b, uint32(rule.Goto))\n\t\treq.AddData(nl.NewRtAttr(nl.FRA_GOTO, b))\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_ROUTE, 0)\n\treturn err\n}\n\n// RuleList lists rules in the system.\n// Equivalent to: ip rule list\nfunc RuleList(family int) ([]Rule, error) {\n\treturn pkgHandle.RuleList(family)\n}\n\n// RuleList lists rules in the system.\n// Equivalent to: ip rule list\nfunc (h *Handle) RuleList(family int) ([]Rule, error) {\n\treq := h.newNetlinkRequest(syscall.RTM_GETRULE, syscall.NLM_F_DUMP|syscall.NLM_F_REQUEST)\n\tmsg := nl.NewIfInfomsg(family)\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWRULE)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnative := nl.NativeEndian()\n\tvar res = make([]Rule, 0)\n\tfor i := range msgs {\n\t\tmsg := nl.DeserializeRtMsg(msgs[i])\n\t\tattrs, err := nl.ParseRouteAttr(msgs[i][msg.Len():])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\trule := NewRule()\n\n\t\tfor j := range attrs {\n\t\t\tswitch attrs[j].Attr.Type {\n\t\t\tcase syscall.RTA_TABLE:\n\t\t\t\trule.Table = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_SRC:\n\t\t\t\trule.Src = &net.IPNet{\n\t\t\t\t\tIP:   attrs[j].Value,\n\t\t\t\t\tMask: net.CIDRMask(int(msg.Src_len), 8*len(attrs[j].Value)),\n\t\t\t\t}\n\t\t\tcase nl.FRA_DST:\n\t\t\t\trule.Dst = &net.IPNet{\n\t\t\t\t\tIP:   attrs[j].Value,\n\t\t\t\t\tMask: net.CIDRMask(int(msg.Dst_len), 8*len(attrs[j].Value)),\n\t\t\t\t}\n\t\t\tcase nl.FRA_FWMARK:\n\t\t\t\trule.Mark = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_FWMASK:\n\t\t\t\trule.Mask = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_TUN_ID:\n\t\t\t\trule.TunID = uint(native.Uint64(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_IIFNAME:\n\t\t\t\trule.IifName = string(attrs[j].Value[:len(attrs[j].Value)-1])\n\t\t\tcase nl.FRA_OIFNAME:\n\t\t\t\trule.OifName = string(attrs[j].Value[:len(attrs[j].Value)-1])\n\t\t\tcase nl.FRA_SUPPRESS_PREFIXLEN:\n\t\t\t\ti := native.Uint32(attrs[j].Value[0:4])\n\t\t\t\tif i != 0xffffffff {\n\t\t\t\t\trule.SuppressPrefixlen = int(i)\n\t\t\t\t}\n\t\t\tcase nl.FRA_SUPPRESS_IFGROUP:\n\t\t\t\ti := native.Uint32(attrs[j].Value[0:4])\n\t\t\t\tif i != 0xffffffff {\n\t\t\t\t\trule.SuppressIfgroup = int(i)\n\t\t\t\t}\n\t\t\tcase nl.FRA_FLOW:\n\t\t\t\trule.Flow = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_GOTO:\n\t\t\t\trule.Goto = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\tcase nl.FRA_PRIORITY:\n\t\t\t\trule.Priority = int(native.Uint32(attrs[j].Value[0:4]))\n\t\t\t}\n\t\t}\n\t\tres = append(res, *rule)\n\t}\n\n\treturn res, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/socket.go",
    "content": "package netlink\n\nimport \"net\"\n\n// SocketID identifies a single socket.\ntype SocketID struct {\n\tSourcePort      uint16\n\tDestinationPort uint16\n\tSource          net.IP\n\tDestination     net.IP\n\tInterface       uint32\n\tCookie          [2]uint32\n}\n\n// Socket represents a netlink socket.\ntype Socket struct {\n\tFamily  uint8\n\tState   uint8\n\tTimer   uint8\n\tRetrans uint8\n\tID      SocketID\n\tExpires uint32\n\tRQueue  uint32\n\tWQueue  uint32\n\tUID     uint32\n\tINode   uint32\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/socket_linux.go",
    "content": "package netlink\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nconst (\n\tsizeofSocketID      = 0x30\n\tsizeofSocketRequest = sizeofSocketID + 0x8\n\tsizeofSocket        = sizeofSocketID + 0x18\n)\n\ntype socketRequest struct {\n\tFamily   uint8\n\tProtocol uint8\n\tExt      uint8\n\tpad      uint8\n\tStates   uint32\n\tID       SocketID\n}\n\ntype writeBuffer struct {\n\tBytes []byte\n\tpos   int\n}\n\nfunc (b *writeBuffer) Write(c byte) {\n\tb.Bytes[b.pos] = c\n\tb.pos++\n}\n\nfunc (b *writeBuffer) Next(n int) []byte {\n\ts := b.Bytes[b.pos : b.pos+n]\n\tb.pos += n\n\treturn s\n}\n\nfunc (r *socketRequest) Serialize() []byte {\n\tb := writeBuffer{Bytes: make([]byte, sizeofSocketRequest)}\n\tb.Write(r.Family)\n\tb.Write(r.Protocol)\n\tb.Write(r.Ext)\n\tb.Write(r.pad)\n\tnative.PutUint32(b.Next(4), r.States)\n\tnetworkOrder.PutUint16(b.Next(2), r.ID.SourcePort)\n\tnetworkOrder.PutUint16(b.Next(2), r.ID.DestinationPort)\n\tcopy(b.Next(4), r.ID.Source.To4())\n\tb.Next(12)\n\tcopy(b.Next(4), r.ID.Destination.To4())\n\tb.Next(12)\n\tnative.PutUint32(b.Next(4), r.ID.Interface)\n\tnative.PutUint32(b.Next(4), r.ID.Cookie[0])\n\tnative.PutUint32(b.Next(4), r.ID.Cookie[1])\n\treturn b.Bytes\n}\n\nfunc (r *socketRequest) Len() int { return sizeofSocketRequest }\n\ntype readBuffer struct {\n\tBytes []byte\n\tpos   int\n}\n\nfunc (b *readBuffer) Read() byte {\n\tc := b.Bytes[b.pos]\n\tb.pos++\n\treturn c\n}\n\nfunc (b *readBuffer) Next(n int) []byte {\n\ts := b.Bytes[b.pos : b.pos+n]\n\tb.pos += n\n\treturn s\n}\n\nfunc (s *Socket) deserialize(b []byte) error {\n\tif len(b) < sizeofSocket {\n\t\treturn fmt.Errorf(\"socket data short read (%d); want %d\", len(b), sizeofSocket)\n\t}\n\trb := readBuffer{Bytes: b}\n\ts.Family = rb.Read()\n\ts.State = rb.Read()\n\ts.Timer = rb.Read()\n\ts.Retrans = rb.Read()\n\ts.ID.SourcePort = networkOrder.Uint16(rb.Next(2))\n\ts.ID.DestinationPort = networkOrder.Uint16(rb.Next(2))\n\ts.ID.Source = net.IPv4(rb.Read(), rb.Read(), rb.Read(), rb.Read())\n\trb.Next(12)\n\ts.ID.Destination = net.IPv4(rb.Read(), rb.Read(), rb.Read(), rb.Read())\n\trb.Next(12)\n\ts.ID.Interface = native.Uint32(rb.Next(4))\n\ts.ID.Cookie[0] = native.Uint32(rb.Next(4))\n\ts.ID.Cookie[1] = native.Uint32(rb.Next(4))\n\ts.Expires = native.Uint32(rb.Next(4))\n\ts.RQueue = native.Uint32(rb.Next(4))\n\ts.WQueue = native.Uint32(rb.Next(4))\n\ts.UID = native.Uint32(rb.Next(4))\n\ts.INode = native.Uint32(rb.Next(4))\n\treturn nil\n}\n\n// SocketGet returns the Socket identified by its local and remote addresses.\nfunc SocketGet(local, remote net.Addr) (*Socket, error) {\n\tlocalTCP, ok := local.(*net.TCPAddr)\n\tif !ok {\n\t\treturn nil, ErrNotImplemented\n\t}\n\tremoteTCP, ok := remote.(*net.TCPAddr)\n\tif !ok {\n\t\treturn nil, ErrNotImplemented\n\t}\n\tlocalIP := localTCP.IP.To4()\n\tif localIP == nil {\n\t\treturn nil, ErrNotImplemented\n\t}\n\tremoteIP := remoteTCP.IP.To4()\n\tif remoteIP == nil {\n\t\treturn nil, ErrNotImplemented\n\t}\n\n\ts, err := nl.Subscribe(syscall.NETLINK_INET_DIAG)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer s.Close()\n\treq := nl.NewNetlinkRequest(nl.SOCK_DIAG_BY_FAMILY, 0)\n\treq.AddData(&socketRequest{\n\t\tFamily:   syscall.AF_INET,\n\t\tProtocol: syscall.IPPROTO_TCP,\n\t\tID: SocketID{\n\t\t\tSourcePort:      uint16(localTCP.Port),\n\t\t\tDestinationPort: uint16(remoteTCP.Port),\n\t\t\tSource:          localIP,\n\t\t\tDestination:     remoteIP,\n\t\t\tCookie:          [2]uint32{nl.TCPDIAG_NOCOOKIE, nl.TCPDIAG_NOCOOKIE},\n\t\t},\n\t})\n\ts.Send(req)\n\tmsgs, err := s.Receive()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(msgs) == 0 {\n\t\treturn nil, errors.New(\"no message nor error from netlink\")\n\t}\n\tif len(msgs) > 2 {\n\t\treturn nil, fmt.Errorf(\"multiple (%d) matching sockets\", len(msgs))\n\t}\n\tsock := &Socket{}\n\tif err := sock.deserialize(msgs[0].Data); err != nil {\n\t\treturn nil, err\n\t}\n\treturn sock, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n)\n\n// Proto is an enum representing an ipsec protocol.\ntype Proto uint8\n\nconst (\n\tXFRM_PROTO_ROUTE2    Proto = syscall.IPPROTO_ROUTING\n\tXFRM_PROTO_ESP       Proto = syscall.IPPROTO_ESP\n\tXFRM_PROTO_AH        Proto = syscall.IPPROTO_AH\n\tXFRM_PROTO_HAO       Proto = syscall.IPPROTO_DSTOPTS\n\tXFRM_PROTO_COMP      Proto = 0x6c // NOTE not defined on darwin\n\tXFRM_PROTO_IPSEC_ANY Proto = syscall.IPPROTO_RAW\n)\n\nfunc (p Proto) String() string {\n\tswitch p {\n\tcase XFRM_PROTO_ROUTE2:\n\t\treturn \"route2\"\n\tcase XFRM_PROTO_ESP:\n\t\treturn \"esp\"\n\tcase XFRM_PROTO_AH:\n\t\treturn \"ah\"\n\tcase XFRM_PROTO_HAO:\n\t\treturn \"hao\"\n\tcase XFRM_PROTO_COMP:\n\t\treturn \"comp\"\n\tcase XFRM_PROTO_IPSEC_ANY:\n\t\treturn \"ipsec-any\"\n\t}\n\treturn fmt.Sprintf(\"%d\", p)\n}\n\n// Mode is an enum representing an ipsec transport.\ntype Mode uint8\n\nconst (\n\tXFRM_MODE_TRANSPORT Mode = iota\n\tXFRM_MODE_TUNNEL\n\tXFRM_MODE_ROUTEOPTIMIZATION\n\tXFRM_MODE_IN_TRIGGER\n\tXFRM_MODE_BEET\n\tXFRM_MODE_MAX\n)\n\nfunc (m Mode) String() string {\n\tswitch m {\n\tcase XFRM_MODE_TRANSPORT:\n\t\treturn \"transport\"\n\tcase XFRM_MODE_TUNNEL:\n\t\treturn \"tunnel\"\n\tcase XFRM_MODE_ROUTEOPTIMIZATION:\n\t\treturn \"ro\"\n\tcase XFRM_MODE_IN_TRIGGER:\n\t\treturn \"in_trigger\"\n\tcase XFRM_MODE_BEET:\n\t\treturn \"beet\"\n\t}\n\treturn fmt.Sprintf(\"%d\", m)\n}\n\n// XfrmMark represents the mark associated to the state or policy\ntype XfrmMark struct {\n\tValue uint32\n\tMask  uint32\n}\n\nfunc (m *XfrmMark) String() string {\n\treturn fmt.Sprintf(\"(0x%x,0x%x)\", m.Value, m.Mask)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netns\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\ntype XfrmMsg interface {\n\tType() nl.XfrmMsgType\n}\n\ntype XfrmMsgExpire struct {\n\tXfrmState *XfrmState\n\tHard      bool\n}\n\nfunc (ue *XfrmMsgExpire) Type() nl.XfrmMsgType {\n\treturn nl.XFRM_MSG_EXPIRE\n}\n\nfunc parseXfrmMsgExpire(b []byte) *XfrmMsgExpire {\n\tvar e XfrmMsgExpire\n\n\tmsg := nl.DeserializeXfrmUserExpire(b)\n\te.XfrmState = xfrmStateFromXfrmUsersaInfo(&msg.XfrmUsersaInfo)\n\te.Hard = msg.Hard == 1\n\n\treturn &e\n}\n\nfunc XfrmMonitor(ch chan<- XfrmMsg, done <-chan struct{}, errorChan chan<- error,\n\ttypes ...nl.XfrmMsgType) error {\n\n\tgroups, err := xfrmMcastGroups(types)\n\tif err != nil {\n\t\treturn nil\n\t}\n\ts, err := nl.SubscribeAt(netns.None(), netns.None(), syscall.NETLINK_XFRM, groups...)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif done != nil {\n\t\tgo func() {\n\t\t\t<-done\n\t\t\ts.Close()\n\t\t}()\n\n\t}\n\n\tgo func() {\n\t\tdefer close(ch)\n\t\tfor {\n\t\t\tmsgs, err := s.Receive()\n\t\t\tif err != nil {\n\t\t\t\terrorChan <- err\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor _, m := range msgs {\n\t\t\t\tswitch m.Header.Type {\n\t\t\t\tcase nl.XFRM_MSG_EXPIRE:\n\t\t\t\t\tch <- parseXfrmMsgExpire(m.Data)\n\t\t\t\tdefault:\n\t\t\t\t\terrorChan <- fmt.Errorf(\"unsupported msg type: %x\", m.Header.Type)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn nil\n}\n\nfunc xfrmMcastGroups(types []nl.XfrmMsgType) ([]uint, error) {\n\tgroups := make([]uint, 0)\n\n\tif len(types) == 0 {\n\t\treturn nil, fmt.Errorf(\"no xfrm msg type specified\")\n\t}\n\n\tfor _, t := range types {\n\t\tvar group uint\n\n\t\tswitch t {\n\t\tcase nl.XFRM_MSG_EXPIRE:\n\t\t\tgroup = nl.XFRMNLGRP_EXPIRE\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported group: %x\", t)\n\t\t}\n\n\t\tgroups = append(groups, group)\n\t}\n\n\treturn groups, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm_policy.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// Dir is an enum representing an ipsec template direction.\ntype Dir uint8\n\nconst (\n\tXFRM_DIR_IN Dir = iota\n\tXFRM_DIR_OUT\n\tXFRM_DIR_FWD\n\tXFRM_SOCKET_IN\n\tXFRM_SOCKET_OUT\n\tXFRM_SOCKET_FWD\n)\n\nfunc (d Dir) String() string {\n\tswitch d {\n\tcase XFRM_DIR_IN:\n\t\treturn \"dir in\"\n\tcase XFRM_DIR_OUT:\n\t\treturn \"dir out\"\n\tcase XFRM_DIR_FWD:\n\t\treturn \"dir fwd\"\n\tcase XFRM_SOCKET_IN:\n\t\treturn \"socket in\"\n\tcase XFRM_SOCKET_OUT:\n\t\treturn \"socket out\"\n\tcase XFRM_SOCKET_FWD:\n\t\treturn \"socket fwd\"\n\t}\n\treturn fmt.Sprintf(\"socket %d\", d-XFRM_SOCKET_IN)\n}\n\n// XfrmPolicyTmpl encapsulates a rule for the base addresses of an ipsec\n// policy. These rules are matched with XfrmState to determine encryption\n// and authentication algorithms.\ntype XfrmPolicyTmpl struct {\n\tDst   net.IP\n\tSrc   net.IP\n\tProto Proto\n\tMode  Mode\n\tSpi   int\n\tReqid int\n}\n\nfunc (t XfrmPolicyTmpl) String() string {\n\treturn fmt.Sprintf(\"{Dst: %v, Src: %v, Proto: %s, Mode: %s, Spi: 0x%x, Reqid: 0x%x}\",\n\t\tt.Dst, t.Src, t.Proto, t.Mode, t.Spi, t.Reqid)\n}\n\n// XfrmPolicy represents an ipsec policy. It represents the overlay network\n// and has a list of XfrmPolicyTmpls representing the base addresses of\n// the policy.\ntype XfrmPolicy struct {\n\tDst      *net.IPNet\n\tSrc      *net.IPNet\n\tProto    Proto\n\tDstPort  int\n\tSrcPort  int\n\tDir      Dir\n\tPriority int\n\tIndex    int\n\tMark     *XfrmMark\n\tTmpls    []XfrmPolicyTmpl\n}\n\nfunc (p XfrmPolicy) String() string {\n\treturn fmt.Sprintf(\"{Dst: %v, Src: %v, Proto: %s, DstPort: %d, SrcPort: %d, Dir: %s, Priority: %d, Index: %d, Mark: %s, Tmpls: %s}\",\n\t\tp.Dst, p.Src, p.Proto, p.DstPort, p.SrcPort, p.Dir, p.Priority, p.Index, p.Mark, p.Tmpls)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go",
    "content": "package netlink\n\nimport (\n\t\"syscall\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nfunc selFromPolicy(sel *nl.XfrmSelector, policy *XfrmPolicy) {\n\tsel.Family = uint16(nl.FAMILY_V4)\n\tif policy.Dst != nil {\n\t\tsel.Family = uint16(nl.GetIPFamily(policy.Dst.IP))\n\t\tsel.Daddr.FromIP(policy.Dst.IP)\n\t\tprefixlenD, _ := policy.Dst.Mask.Size()\n\t\tsel.PrefixlenD = uint8(prefixlenD)\n\t}\n\tif policy.Src != nil {\n\t\tsel.Saddr.FromIP(policy.Src.IP)\n\t\tprefixlenS, _ := policy.Src.Mask.Size()\n\t\tsel.PrefixlenS = uint8(prefixlenS)\n\t}\n\tsel.Proto = uint8(policy.Proto)\n\tsel.Dport = nl.Swap16(uint16(policy.DstPort))\n\tsel.Sport = nl.Swap16(uint16(policy.SrcPort))\n\tif sel.Dport != 0 {\n\t\tsel.DportMask = ^uint16(0)\n\t}\n\tif sel.Sport != 0 {\n\t\tsel.SportMask = ^uint16(0)\n\t}\n}\n\n// XfrmPolicyAdd will add an xfrm policy to the system.\n// Equivalent to: `ip xfrm policy add $policy`\nfunc XfrmPolicyAdd(policy *XfrmPolicy) error {\n\treturn pkgHandle.XfrmPolicyAdd(policy)\n}\n\n// XfrmPolicyAdd will add an xfrm policy to the system.\n// Equivalent to: `ip xfrm policy add $policy`\nfunc (h *Handle) XfrmPolicyAdd(policy *XfrmPolicy) error {\n\treturn h.xfrmPolicyAddOrUpdate(policy, nl.XFRM_MSG_NEWPOLICY)\n}\n\n// XfrmPolicyUpdate will update an xfrm policy to the system.\n// Equivalent to: `ip xfrm policy update $policy`\nfunc XfrmPolicyUpdate(policy *XfrmPolicy) error {\n\treturn pkgHandle.XfrmPolicyUpdate(policy)\n}\n\n// XfrmPolicyUpdate will update an xfrm policy to the system.\n// Equivalent to: `ip xfrm policy update $policy`\nfunc (h *Handle) XfrmPolicyUpdate(policy *XfrmPolicy) error {\n\treturn h.xfrmPolicyAddOrUpdate(policy, nl.XFRM_MSG_UPDPOLICY)\n}\n\nfunc (h *Handle) xfrmPolicyAddOrUpdate(policy *XfrmPolicy, nlProto int) error {\n\treq := h.newNetlinkRequest(nlProto, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\n\tmsg := &nl.XfrmUserpolicyInfo{}\n\tselFromPolicy(&msg.Sel, policy)\n\tmsg.Priority = uint32(policy.Priority)\n\tmsg.Index = uint32(policy.Index)\n\tmsg.Dir = uint8(policy.Dir)\n\tmsg.Lft.SoftByteLimit = nl.XFRM_INF\n\tmsg.Lft.HardByteLimit = nl.XFRM_INF\n\tmsg.Lft.SoftPacketLimit = nl.XFRM_INF\n\tmsg.Lft.HardPacketLimit = nl.XFRM_INF\n\treq.AddData(msg)\n\n\ttmplData := make([]byte, nl.SizeofXfrmUserTmpl*len(policy.Tmpls))\n\tfor i, tmpl := range policy.Tmpls {\n\t\tstart := i * nl.SizeofXfrmUserTmpl\n\t\tuserTmpl := nl.DeserializeXfrmUserTmpl(tmplData[start : start+nl.SizeofXfrmUserTmpl])\n\t\tuserTmpl.XfrmId.Daddr.FromIP(tmpl.Dst)\n\t\tuserTmpl.Saddr.FromIP(tmpl.Src)\n\t\tuserTmpl.XfrmId.Proto = uint8(tmpl.Proto)\n\t\tuserTmpl.XfrmId.Spi = nl.Swap32(uint32(tmpl.Spi))\n\t\tuserTmpl.Mode = uint8(tmpl.Mode)\n\t\tuserTmpl.Reqid = uint32(tmpl.Reqid)\n\t\tuserTmpl.Aalgos = ^uint32(0)\n\t\tuserTmpl.Ealgos = ^uint32(0)\n\t\tuserTmpl.Calgos = ^uint32(0)\n\t}\n\tif len(tmplData) > 0 {\n\t\ttmpls := nl.NewRtAttr(nl.XFRMA_TMPL, tmplData)\n\t\treq.AddData(tmpls)\n\t}\n\tif policy.Mark != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_MARK, writeMark(policy.Mark))\n\t\treq.AddData(out)\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_XFRM, 0)\n\treturn err\n}\n\n// XfrmPolicyDel will delete an xfrm policy from the system. Note that\n// the Tmpls are ignored when matching the policy to delete.\n// Equivalent to: `ip xfrm policy del $policy`\nfunc XfrmPolicyDel(policy *XfrmPolicy) error {\n\treturn pkgHandle.XfrmPolicyDel(policy)\n}\n\n// XfrmPolicyDel will delete an xfrm policy from the system. Note that\n// the Tmpls are ignored when matching the policy to delete.\n// Equivalent to: `ip xfrm policy del $policy`\nfunc (h *Handle) XfrmPolicyDel(policy *XfrmPolicy) error {\n\t_, err := h.xfrmPolicyGetOrDelete(policy, nl.XFRM_MSG_DELPOLICY)\n\treturn err\n}\n\n// XfrmPolicyList gets a list of xfrm policies in the system.\n// Equivalent to: `ip xfrm policy show`.\n// The list can be filtered by ip family.\nfunc XfrmPolicyList(family int) ([]XfrmPolicy, error) {\n\treturn pkgHandle.XfrmPolicyList(family)\n}\n\n// XfrmPolicyList gets a list of xfrm policies in the system.\n// Equivalent to: `ip xfrm policy show`.\n// The list can be filtered by ip family.\nfunc (h *Handle) XfrmPolicyList(family int) ([]XfrmPolicy, error) {\n\treq := h.newNetlinkRequest(nl.XFRM_MSG_GETPOLICY, syscall.NLM_F_DUMP)\n\n\tmsg := nl.NewIfInfomsg(family)\n\treq.AddData(msg)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_XFRM, nl.XFRM_MSG_NEWPOLICY)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []XfrmPolicy\n\tfor _, m := range msgs {\n\t\tif policy, err := parseXfrmPolicy(m, family); err == nil {\n\t\t\tres = append(res, *policy)\n\t\t} else if err == familyError {\n\t\t\tcontinue\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn res, nil\n}\n\n// XfrmPolicyGet gets a the policy described by the index or selector, if found.\n// Equivalent to: `ip xfrm policy get { SELECTOR | index INDEX } dir DIR [ctx CTX ] [ mark MARK [ mask MASK ] ] [ ptype PTYPE ]`.\nfunc XfrmPolicyGet(policy *XfrmPolicy) (*XfrmPolicy, error) {\n\treturn pkgHandle.XfrmPolicyGet(policy)\n}\n\n// XfrmPolicyGet gets a the policy described by the index or selector, if found.\n// Equivalent to: `ip xfrm policy get { SELECTOR | index INDEX } dir DIR [ctx CTX ] [ mark MARK [ mask MASK ] ] [ ptype PTYPE ]`.\nfunc (h *Handle) XfrmPolicyGet(policy *XfrmPolicy) (*XfrmPolicy, error) {\n\treturn h.xfrmPolicyGetOrDelete(policy, nl.XFRM_MSG_GETPOLICY)\n}\n\n// XfrmPolicyFlush will flush the policies on the system.\n// Equivalent to: `ip xfrm policy flush`\nfunc XfrmPolicyFlush() error {\n\treturn pkgHandle.XfrmPolicyFlush()\n}\n\n// XfrmPolicyFlush will flush the policies on the system.\n// Equivalent to: `ip xfrm policy flush`\nfunc (h *Handle) XfrmPolicyFlush() error {\n\treq := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHPOLICY, syscall.NLM_F_ACK)\n\t_, err := req.Execute(syscall.NETLINK_XFRM, 0)\n\treturn err\n}\n\nfunc (h *Handle) xfrmPolicyGetOrDelete(policy *XfrmPolicy, nlProto int) (*XfrmPolicy, error) {\n\treq := h.newNetlinkRequest(nlProto, syscall.NLM_F_ACK)\n\n\tmsg := &nl.XfrmUserpolicyId{}\n\tselFromPolicy(&msg.Sel, policy)\n\tmsg.Index = uint32(policy.Index)\n\tmsg.Dir = uint8(policy.Dir)\n\treq.AddData(msg)\n\n\tif policy.Mark != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_MARK, writeMark(policy.Mark))\n\t\treq.AddData(out)\n\t}\n\n\tresType := nl.XFRM_MSG_NEWPOLICY\n\tif nlProto == nl.XFRM_MSG_DELPOLICY {\n\t\tresType = 0\n\t}\n\n\tmsgs, err := req.Execute(syscall.NETLINK_XFRM, uint16(resType))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif nlProto == nl.XFRM_MSG_DELPOLICY {\n\t\treturn nil, err\n\t}\n\n\tp, err := parseXfrmPolicy(msgs[0], FAMILY_ALL)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p, nil\n}\n\nfunc parseXfrmPolicy(m []byte, family int) (*XfrmPolicy, error) {\n\tmsg := nl.DeserializeXfrmUserpolicyInfo(m)\n\n\t// This is mainly for the policy dump\n\tif family != FAMILY_ALL && family != int(msg.Sel.Family) {\n\t\treturn nil, familyError\n\t}\n\n\tvar policy XfrmPolicy\n\n\tpolicy.Dst = msg.Sel.Daddr.ToIPNet(msg.Sel.PrefixlenD)\n\tpolicy.Src = msg.Sel.Saddr.ToIPNet(msg.Sel.PrefixlenS)\n\tpolicy.Proto = Proto(msg.Sel.Proto)\n\tpolicy.DstPort = int(nl.Swap16(msg.Sel.Dport))\n\tpolicy.SrcPort = int(nl.Swap16(msg.Sel.Sport))\n\tpolicy.Priority = int(msg.Priority)\n\tpolicy.Index = int(msg.Index)\n\tpolicy.Dir = Dir(msg.Dir)\n\n\tattrs, err := nl.ParseRouteAttr(m[msg.Len():])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase nl.XFRMA_TMPL:\n\t\t\tmax := len(attr.Value)\n\t\t\tfor i := 0; i < max; i += nl.SizeofXfrmUserTmpl {\n\t\t\t\tvar resTmpl XfrmPolicyTmpl\n\t\t\t\ttmpl := nl.DeserializeXfrmUserTmpl(attr.Value[i : i+nl.SizeofXfrmUserTmpl])\n\t\t\t\tresTmpl.Dst = tmpl.XfrmId.Daddr.ToIP()\n\t\t\t\tresTmpl.Src = tmpl.Saddr.ToIP()\n\t\t\t\tresTmpl.Proto = Proto(tmpl.XfrmId.Proto)\n\t\t\t\tresTmpl.Mode = Mode(tmpl.Mode)\n\t\t\t\tresTmpl.Spi = int(nl.Swap32(tmpl.XfrmId.Spi))\n\t\t\t\tresTmpl.Reqid = int(tmpl.Reqid)\n\t\t\t\tpolicy.Tmpls = append(policy.Tmpls, resTmpl)\n\t\t\t}\n\t\tcase nl.XFRMA_MARK:\n\t\t\tmark := nl.DeserializeXfrmMark(attr.Value[:])\n\t\t\tpolicy.Mark = new(XfrmMark)\n\t\t\tpolicy.Mark.Value = mark.Value\n\t\t\tpolicy.Mark.Mask = mark.Mask\n\t\t}\n\t}\n\n\treturn &policy, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm_state.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// XfrmStateAlgo represents the algorithm to use for the ipsec encryption.\ntype XfrmStateAlgo struct {\n\tName        string\n\tKey         []byte\n\tTruncateLen int // Auth only\n\tICVLen      int // AEAD only\n}\n\nfunc (a XfrmStateAlgo) String() string {\n\tbase := fmt.Sprintf(\"{Name: %s, Key: 0x%x\", a.Name, a.Key)\n\tif a.TruncateLen != 0 {\n\t\tbase = fmt.Sprintf(\"%s, Truncate length: %d\", base, a.TruncateLen)\n\t}\n\tif a.ICVLen != 0 {\n\t\tbase = fmt.Sprintf(\"%s, ICV length: %d\", base, a.ICVLen)\n\t}\n\treturn fmt.Sprintf(\"%s}\", base)\n}\n\n// EncapType is an enum representing the optional packet encapsulation.\ntype EncapType uint8\n\nconst (\n\tXFRM_ENCAP_ESPINUDP_NONIKE EncapType = iota + 1\n\tXFRM_ENCAP_ESPINUDP\n)\n\nfunc (e EncapType) String() string {\n\tswitch e {\n\tcase XFRM_ENCAP_ESPINUDP_NONIKE:\n\t\treturn \"espinudp-non-ike\"\n\tcase XFRM_ENCAP_ESPINUDP:\n\t\treturn \"espinudp\"\n\t}\n\treturn \"unknown\"\n}\n\n// XfrmStateEncap represents the encapsulation to use for the ipsec encryption.\ntype XfrmStateEncap struct {\n\tType            EncapType\n\tSrcPort         int\n\tDstPort         int\n\tOriginalAddress net.IP\n}\n\nfunc (e XfrmStateEncap) String() string {\n\treturn fmt.Sprintf(\"{Type: %s, Srcport: %d, DstPort: %d, OriginalAddress: %v}\",\n\t\te.Type, e.SrcPort, e.DstPort, e.OriginalAddress)\n}\n\n// XfrmStateLimits represents the configured limits for the state.\ntype XfrmStateLimits struct {\n\tByteSoft    uint64\n\tByteHard    uint64\n\tPacketSoft  uint64\n\tPacketHard  uint64\n\tTimeSoft    uint64\n\tTimeHard    uint64\n\tTimeUseSoft uint64\n\tTimeUseHard uint64\n}\n\n// XfrmState represents the state of an ipsec policy. It optionally\n// contains an XfrmStateAlgo for encryption and one for authentication.\ntype XfrmState struct {\n\tDst          net.IP\n\tSrc          net.IP\n\tProto        Proto\n\tMode         Mode\n\tSpi          int\n\tReqid        int\n\tReplayWindow int\n\tLimits       XfrmStateLimits\n\tMark         *XfrmMark\n\tAuth         *XfrmStateAlgo\n\tCrypt        *XfrmStateAlgo\n\tAead         *XfrmStateAlgo\n\tEncap        *XfrmStateEncap\n\tESN          bool\n}\n\nfunc (sa XfrmState) String() string {\n\treturn fmt.Sprintf(\"Dst: %v, Src: %v, Proto: %s, Mode: %s, SPI: 0x%x, ReqID: 0x%x, ReplayWindow: %d, Mark: %v, Auth: %v, Crypt: %v, Aead: %v, Encap: %v, ESN: %t\",\n\t\tsa.Dst, sa.Src, sa.Proto, sa.Mode, sa.Spi, sa.Reqid, sa.ReplayWindow, sa.Mark, sa.Auth, sa.Crypt, sa.Aead, sa.Encap, sa.ESN)\n}\nfunc (sa XfrmState) Print(stats bool) string {\n\tif !stats {\n\t\treturn sa.String()\n\t}\n\n\treturn fmt.Sprintf(\"%s, ByteSoft: %s, ByteHard: %s, PacketSoft: %s, PacketHard: %s, TimeSoft: %d, TimeHard: %d, TimeUseSoft: %d, TimeUseHard: %d\",\n\t\tsa.String(), printLimit(sa.Limits.ByteSoft), printLimit(sa.Limits.ByteHard), printLimit(sa.Limits.PacketSoft), printLimit(sa.Limits.PacketHard),\n\t\tsa.Limits.TimeSoft, sa.Limits.TimeHard, sa.Limits.TimeUseSoft, sa.Limits.TimeUseHard)\n}\n\nfunc printLimit(lmt uint64) string {\n\tif lmt == ^uint64(0) {\n\t\treturn \"(INF)\"\n\t}\n\treturn fmt.Sprintf(\"%d\", lmt)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netlink/xfrm_state_linux.go",
    "content": "package netlink\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"github.com/vishvananda/netlink/nl\"\n)\n\nfunc writeStateAlgo(a *XfrmStateAlgo) []byte {\n\talgo := nl.XfrmAlgo{\n\t\tAlgKeyLen: uint32(len(a.Key) * 8),\n\t\tAlgKey:    a.Key,\n\t}\n\tend := len(a.Name)\n\tif end > 64 {\n\t\tend = 64\n\t}\n\tcopy(algo.AlgName[:end], a.Name)\n\treturn algo.Serialize()\n}\n\nfunc writeStateAlgoAuth(a *XfrmStateAlgo) []byte {\n\talgo := nl.XfrmAlgoAuth{\n\t\tAlgKeyLen:   uint32(len(a.Key) * 8),\n\t\tAlgTruncLen: uint32(a.TruncateLen),\n\t\tAlgKey:      a.Key,\n\t}\n\tend := len(a.Name)\n\tif end > 64 {\n\t\tend = 64\n\t}\n\tcopy(algo.AlgName[:end], a.Name)\n\treturn algo.Serialize()\n}\n\nfunc writeStateAlgoAead(a *XfrmStateAlgo) []byte {\n\talgo := nl.XfrmAlgoAEAD{\n\t\tAlgKeyLen: uint32(len(a.Key) * 8),\n\t\tAlgICVLen: uint32(a.ICVLen),\n\t\tAlgKey:    a.Key,\n\t}\n\tend := len(a.Name)\n\tif end > 64 {\n\t\tend = 64\n\t}\n\tcopy(algo.AlgName[:end], a.Name)\n\treturn algo.Serialize()\n}\n\nfunc writeMark(m *XfrmMark) []byte {\n\tmark := &nl.XfrmMark{\n\t\tValue: m.Value,\n\t\tMask:  m.Mask,\n\t}\n\tif mark.Mask == 0 {\n\t\tmark.Mask = ^uint32(0)\n\t}\n\treturn mark.Serialize()\n}\n\nfunc writeReplayEsn(replayWindow int) []byte {\n\treplayEsn := &nl.XfrmReplayStateEsn{\n\t\tOSeq:         0,\n\t\tSeq:          0,\n\t\tOSeqHi:       0,\n\t\tSeqHi:        0,\n\t\tReplayWindow: uint32(replayWindow),\n\t}\n\n\t// taken from iproute2/ip/xfrm_state.c:\n\treplayEsn.BmpLen = uint32((replayWindow + (4 * 8) - 1) / (4 * 8))\n\n\treturn replayEsn.Serialize()\n}\n\n// XfrmStateAdd will add an xfrm state to the system.\n// Equivalent to: `ip xfrm state add $state`\nfunc XfrmStateAdd(state *XfrmState) error {\n\treturn pkgHandle.XfrmStateAdd(state)\n}\n\n// XfrmStateAdd will add an xfrm state to the system.\n// Equivalent to: `ip xfrm state add $state`\nfunc (h *Handle) XfrmStateAdd(state *XfrmState) error {\n\treturn h.xfrmStateAddOrUpdate(state, nl.XFRM_MSG_NEWSA)\n}\n\n// XfrmStateAllocSpi will allocate an xfrm state in the system.\n// Equivalent to: `ip xfrm state allocspi`\nfunc XfrmStateAllocSpi(state *XfrmState) (*XfrmState, error) {\n\treturn pkgHandle.xfrmStateAllocSpi(state)\n}\n\n// XfrmStateUpdate will update an xfrm state to the system.\n// Equivalent to: `ip xfrm state update $state`\nfunc XfrmStateUpdate(state *XfrmState) error {\n\treturn pkgHandle.XfrmStateUpdate(state)\n}\n\n// XfrmStateUpdate will update an xfrm state to the system.\n// Equivalent to: `ip xfrm state update $state`\nfunc (h *Handle) XfrmStateUpdate(state *XfrmState) error {\n\treturn h.xfrmStateAddOrUpdate(state, nl.XFRM_MSG_UPDSA)\n}\n\nfunc (h *Handle) xfrmStateAddOrUpdate(state *XfrmState, nlProto int) error {\n\n\t// A state with spi 0 can't be deleted so don't allow it to be set\n\tif state.Spi == 0 {\n\t\treturn fmt.Errorf(\"Spi must be set when adding xfrm state.\")\n\t}\n\treq := h.newNetlinkRequest(nlProto, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\n\tmsg := xfrmUsersaInfoFromXfrmState(state)\n\n\tif state.ESN {\n\t\tif state.ReplayWindow == 0 {\n\t\t\treturn fmt.Errorf(\"ESN flag set without ReplayWindow\")\n\t\t}\n\t\tmsg.Flags |= nl.XFRM_STATE_ESN\n\t\tmsg.ReplayWindow = 0\n\t}\n\n\tlimitsToLft(state.Limits, &msg.Lft)\n\treq.AddData(msg)\n\n\tif state.Auth != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_ALG_AUTH_TRUNC, writeStateAlgoAuth(state.Auth))\n\t\treq.AddData(out)\n\t}\n\tif state.Crypt != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_ALG_CRYPT, writeStateAlgo(state.Crypt))\n\t\treq.AddData(out)\n\t}\n\tif state.Aead != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_ALG_AEAD, writeStateAlgoAead(state.Aead))\n\t\treq.AddData(out)\n\t}\n\tif state.Encap != nil {\n\t\tencapData := make([]byte, nl.SizeofXfrmEncapTmpl)\n\t\tencap := nl.DeserializeXfrmEncapTmpl(encapData)\n\t\tencap.EncapType = uint16(state.Encap.Type)\n\t\tencap.EncapSport = nl.Swap16(uint16(state.Encap.SrcPort))\n\t\tencap.EncapDport = nl.Swap16(uint16(state.Encap.DstPort))\n\t\tencap.EncapOa.FromIP(state.Encap.OriginalAddress)\n\t\tout := nl.NewRtAttr(nl.XFRMA_ENCAP, encapData)\n\t\treq.AddData(out)\n\t}\n\tif state.Mark != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_MARK, writeMark(state.Mark))\n\t\treq.AddData(out)\n\t}\n\tif state.ESN {\n\t\tout := nl.NewRtAttr(nl.XFRMA_REPLAY_ESN_VAL, writeReplayEsn(state.ReplayWindow))\n\t\treq.AddData(out)\n\t}\n\n\t_, err := req.Execute(syscall.NETLINK_XFRM, 0)\n\treturn err\n}\n\nfunc (h *Handle) xfrmStateAllocSpi(state *XfrmState) (*XfrmState, error) {\n\treq := h.newNetlinkRequest(nl.XFRM_MSG_ALLOCSPI,\n\t\tsyscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)\n\n\tmsg := &nl.XfrmUserSpiInfo{}\n\tmsg.XfrmUsersaInfo = *(xfrmUsersaInfoFromXfrmState(state))\n\t// 1-255 is reserved by IANA for future use\n\tmsg.Min = 0x100\n\tmsg.Max = 0xffffffff\n\treq.AddData(msg)\n\n\tif state.Mark != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_MARK, writeMark(state.Mark))\n\t\treq.AddData(out)\n\t}\n\n\tmsgs, err := req.Execute(syscall.NETLINK_XFRM, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ts, err := parseXfrmState(msgs[0], FAMILY_ALL)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn s, err\n}\n\n// XfrmStateDel will delete an xfrm state from the system. Note that\n// the Algos are ignored when matching the state to delete.\n// Equivalent to: `ip xfrm state del $state`\nfunc XfrmStateDel(state *XfrmState) error {\n\treturn pkgHandle.XfrmStateDel(state)\n}\n\n// XfrmStateDel will delete an xfrm state from the system. Note that\n// the Algos are ignored when matching the state to delete.\n// Equivalent to: `ip xfrm state del $state`\nfunc (h *Handle) XfrmStateDel(state *XfrmState) error {\n\t_, err := h.xfrmStateGetOrDelete(state, nl.XFRM_MSG_DELSA)\n\treturn err\n}\n\n// XfrmStateList gets a list of xfrm states in the system.\n// Equivalent to: `ip [-4|-6] xfrm state show`.\n// The list can be filtered by ip family.\nfunc XfrmStateList(family int) ([]XfrmState, error) {\n\treturn pkgHandle.XfrmStateList(family)\n}\n\n// XfrmStateList gets a list of xfrm states in the system.\n// Equivalent to: `ip xfrm state show`.\n// The list can be filtered by ip family.\nfunc (h *Handle) XfrmStateList(family int) ([]XfrmState, error) {\n\treq := h.newNetlinkRequest(nl.XFRM_MSG_GETSA, syscall.NLM_F_DUMP)\n\n\tmsgs, err := req.Execute(syscall.NETLINK_XFRM, nl.XFRM_MSG_NEWSA)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar res []XfrmState\n\tfor _, m := range msgs {\n\t\tif state, err := parseXfrmState(m, family); err == nil {\n\t\t\tres = append(res, *state)\n\t\t} else if err == familyError {\n\t\t\tcontinue\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn res, nil\n}\n\n// XfrmStateGet gets the xfrm state described by the ID, if found.\n// Equivalent to: `ip xfrm state get ID [ mark MARK [ mask MASK ] ]`.\n// Only the fields which constitue the SA ID must be filled in:\n// ID := [ src ADDR ] [ dst ADDR ] [ proto XFRM-PROTO ] [ spi SPI ]\n// mark is optional\nfunc XfrmStateGet(state *XfrmState) (*XfrmState, error) {\n\treturn pkgHandle.XfrmStateGet(state)\n}\n\n// XfrmStateGet gets the xfrm state described by the ID, if found.\n// Equivalent to: `ip xfrm state get ID [ mark MARK [ mask MASK ] ]`.\n// Only the fields which constitue the SA ID must be filled in:\n// ID := [ src ADDR ] [ dst ADDR ] [ proto XFRM-PROTO ] [ spi SPI ]\n// mark is optional\nfunc (h *Handle) XfrmStateGet(state *XfrmState) (*XfrmState, error) {\n\treturn h.xfrmStateGetOrDelete(state, nl.XFRM_MSG_GETSA)\n}\n\nfunc (h *Handle) xfrmStateGetOrDelete(state *XfrmState, nlProto int) (*XfrmState, error) {\n\treq := h.newNetlinkRequest(nlProto, syscall.NLM_F_ACK)\n\n\tmsg := &nl.XfrmUsersaId{}\n\tmsg.Family = uint16(nl.GetIPFamily(state.Dst))\n\tmsg.Daddr.FromIP(state.Dst)\n\tmsg.Proto = uint8(state.Proto)\n\tmsg.Spi = nl.Swap32(uint32(state.Spi))\n\treq.AddData(msg)\n\n\tif state.Mark != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_MARK, writeMark(state.Mark))\n\t\treq.AddData(out)\n\t}\n\tif state.Src != nil {\n\t\tout := nl.NewRtAttr(nl.XFRMA_SRCADDR, state.Src.To16())\n\t\treq.AddData(out)\n\t}\n\n\tresType := nl.XFRM_MSG_NEWSA\n\tif nlProto == nl.XFRM_MSG_DELSA {\n\t\tresType = 0\n\t}\n\n\tmsgs, err := req.Execute(syscall.NETLINK_XFRM, uint16(resType))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif nlProto == nl.XFRM_MSG_DELSA {\n\t\treturn nil, nil\n\t}\n\n\ts, err := parseXfrmState(msgs[0], FAMILY_ALL)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn s, nil\n}\n\nvar familyError = fmt.Errorf(\"family error\")\n\nfunc xfrmStateFromXfrmUsersaInfo(msg *nl.XfrmUsersaInfo) *XfrmState {\n\tvar state XfrmState\n\n\tstate.Dst = msg.Id.Daddr.ToIP()\n\tstate.Src = msg.Saddr.ToIP()\n\tstate.Proto = Proto(msg.Id.Proto)\n\tstate.Mode = Mode(msg.Mode)\n\tstate.Spi = int(nl.Swap32(msg.Id.Spi))\n\tstate.Reqid = int(msg.Reqid)\n\tstate.ReplayWindow = int(msg.ReplayWindow)\n\tlftToLimits(&msg.Lft, &state.Limits)\n\n\treturn &state\n}\n\nfunc parseXfrmState(m []byte, family int) (*XfrmState, error) {\n\tmsg := nl.DeserializeXfrmUsersaInfo(m)\n\n\t// This is mainly for the state dump\n\tif family != FAMILY_ALL && family != int(msg.Family) {\n\t\treturn nil, familyError\n\t}\n\n\tstate := xfrmStateFromXfrmUsersaInfo(msg)\n\n\tattrs, err := nl.ParseRouteAttr(m[nl.SizeofXfrmUsersaInfo:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, attr := range attrs {\n\t\tswitch attr.Attr.Type {\n\t\tcase nl.XFRMA_ALG_AUTH, nl.XFRMA_ALG_CRYPT:\n\t\t\tvar resAlgo *XfrmStateAlgo\n\t\t\tif attr.Attr.Type == nl.XFRMA_ALG_AUTH {\n\t\t\t\tif state.Auth == nil {\n\t\t\t\t\tstate.Auth = new(XfrmStateAlgo)\n\t\t\t\t}\n\t\t\t\tresAlgo = state.Auth\n\t\t\t} else {\n\t\t\t\tstate.Crypt = new(XfrmStateAlgo)\n\t\t\t\tresAlgo = state.Crypt\n\t\t\t}\n\t\t\talgo := nl.DeserializeXfrmAlgo(attr.Value[:])\n\t\t\t(*resAlgo).Name = nl.BytesToString(algo.AlgName[:])\n\t\t\t(*resAlgo).Key = algo.AlgKey\n\t\tcase nl.XFRMA_ALG_AUTH_TRUNC:\n\t\t\tif state.Auth == nil {\n\t\t\t\tstate.Auth = new(XfrmStateAlgo)\n\t\t\t}\n\t\t\talgo := nl.DeserializeXfrmAlgoAuth(attr.Value[:])\n\t\t\tstate.Auth.Name = nl.BytesToString(algo.AlgName[:])\n\t\t\tstate.Auth.Key = algo.AlgKey\n\t\t\tstate.Auth.TruncateLen = int(algo.AlgTruncLen)\n\t\tcase nl.XFRMA_ALG_AEAD:\n\t\t\tstate.Aead = new(XfrmStateAlgo)\n\t\t\talgo := nl.DeserializeXfrmAlgoAEAD(attr.Value[:])\n\t\t\tstate.Aead.Name = nl.BytesToString(algo.AlgName[:])\n\t\t\tstate.Aead.Key = algo.AlgKey\n\t\t\tstate.Aead.ICVLen = int(algo.AlgICVLen)\n\t\tcase nl.XFRMA_ENCAP:\n\t\t\tencap := nl.DeserializeXfrmEncapTmpl(attr.Value[:])\n\t\t\tstate.Encap = new(XfrmStateEncap)\n\t\t\tstate.Encap.Type = EncapType(encap.EncapType)\n\t\t\tstate.Encap.SrcPort = int(nl.Swap16(encap.EncapSport))\n\t\t\tstate.Encap.DstPort = int(nl.Swap16(encap.EncapDport))\n\t\t\tstate.Encap.OriginalAddress = encap.EncapOa.ToIP()\n\t\tcase nl.XFRMA_MARK:\n\t\t\tmark := nl.DeserializeXfrmMark(attr.Value[:])\n\t\t\tstate.Mark = new(XfrmMark)\n\t\t\tstate.Mark.Value = mark.Value\n\t\t\tstate.Mark.Mask = mark.Mask\n\t\t}\n\t}\n\n\treturn state, nil\n}\n\n// XfrmStateFlush will flush the xfrm state on the system.\n// proto = 0 means any transformation protocols\n// Equivalent to: `ip xfrm state flush [ proto XFRM-PROTO ]`\nfunc XfrmStateFlush(proto Proto) error {\n\treturn pkgHandle.XfrmStateFlush(proto)\n}\n\n// XfrmStateFlush will flush the xfrm state on the system.\n// proto = 0 means any transformation protocols\n// Equivalent to: `ip xfrm state flush [ proto XFRM-PROTO ]`\nfunc (h *Handle) XfrmStateFlush(proto Proto) error {\n\treq := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHSA, syscall.NLM_F_ACK)\n\n\treq.AddData(&nl.XfrmUsersaFlush{Proto: uint8(proto)})\n\n\t_, err := req.Execute(syscall.NETLINK_XFRM, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc limitsToLft(lmts XfrmStateLimits, lft *nl.XfrmLifetimeCfg) {\n\tif lmts.ByteSoft != 0 {\n\t\tlft.SoftByteLimit = lmts.ByteSoft\n\t} else {\n\t\tlft.SoftByteLimit = nl.XFRM_INF\n\t}\n\tif lmts.ByteHard != 0 {\n\t\tlft.HardByteLimit = lmts.ByteHard\n\t} else {\n\t\tlft.HardByteLimit = nl.XFRM_INF\n\t}\n\tif lmts.PacketSoft != 0 {\n\t\tlft.SoftPacketLimit = lmts.PacketSoft\n\t} else {\n\t\tlft.SoftPacketLimit = nl.XFRM_INF\n\t}\n\tif lmts.PacketHard != 0 {\n\t\tlft.HardPacketLimit = lmts.PacketHard\n\t} else {\n\t\tlft.HardPacketLimit = nl.XFRM_INF\n\t}\n\tlft.SoftAddExpiresSeconds = lmts.TimeSoft\n\tlft.HardAddExpiresSeconds = lmts.TimeHard\n\tlft.SoftUseExpiresSeconds = lmts.TimeUseSoft\n\tlft.HardUseExpiresSeconds = lmts.TimeUseHard\n}\n\nfunc lftToLimits(lft *nl.XfrmLifetimeCfg, lmts *XfrmStateLimits) {\n\t*lmts = *(*XfrmStateLimits)(unsafe.Pointer(lft))\n}\n\nfunc xfrmUsersaInfoFromXfrmState(state *XfrmState) *nl.XfrmUsersaInfo {\n\tmsg := &nl.XfrmUsersaInfo{}\n\tmsg.Family = uint16(nl.GetIPFamily(state.Dst))\n\tmsg.Id.Daddr.FromIP(state.Dst)\n\tmsg.Saddr.FromIP(state.Src)\n\tmsg.Id.Proto = uint8(state.Proto)\n\tmsg.Mode = uint8(state.Mode)\n\tmsg.Id.Spi = nl.Swap32(uint32(state.Spi))\n\tmsg.Reqid = uint32(state.Reqid)\n\tmsg.ReplayWindow = uint8(state.ReplayWindow)\n\n\treturn msg\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netns/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   Copyright 2014 Vishvananda Ishaya.\n   Copyright 2014 Docker, Inc.\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/vishvananda/netns/README.md",
    "content": "# netns - network namespaces in go #\n\nThe netns package provides an ultra-simple interface for handling\nnetwork namespaces in go. Changing namespaces requires elevated\nprivileges, so in most cases this code needs to be run as root.\n\n## Local Build and Test ##\n\nYou can use go get command:\n\n    go get github.com/vishvananda/netns\n\nTesting (requires root):\n\n    sudo -E go test github.com/vishvananda/netns\n\n## Example ##\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"net\"\n    \"runtime\"\n    \"github.com/vishvananda/netns\"\n)\n\nfunc main() {\n    // Lock the OS Thread so we don't accidentally switch namespaces\n    runtime.LockOSThread()\n    defer runtime.UnlockOSThread()\n\n    // Save the current network namespace\n    origns, _ := netns.Get()\n    defer origns.Close()\n\n    // Create a new network namespace\n    newns, _ := netns.New()\n    netns.Set(newns)\n    defer newns.Close()\n\n    // Do something with the network namespace\n    ifaces, _ := net.Interfaces()\n    fmt.Printf(\"Interfaces: %v\\n\", ifaces)\n\n    // Switch back to the original namespace\n    netns.Set(origns)\n}\n\n```\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netns/netns.go",
    "content": "// Package netns allows ultra-simple network namespace handling. NsHandles\n// can be retrieved and set. Note that the current namespace is thread\n// local so actions that set and reset namespaces should use LockOSThread\n// to make sure the namespace doesn't change due to a goroutine switch.\n// It is best to close NsHandles when you are done with them. This can be\n// accomplished via a `defer ns.Close()` on the handle. Changing namespaces\n// requires elevated privileges, so in most cases this code needs to be run\n// as root.\npackage netns\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n)\n\n// NsHandle is a handle to a network namespace. It can be cast directly\n// to an int and used as a file descriptor.\ntype NsHandle int\n\n// Equal determines if two network handles refer to the same network\n// namespace. This is done by comparing the device and inode that the\n// file descriptors point to.\nfunc (ns NsHandle) Equal(other NsHandle) bool {\n\tif ns == other {\n\t\treturn true\n\t}\n\tvar s1, s2 syscall.Stat_t\n\tif err := syscall.Fstat(int(ns), &s1); err != nil {\n\t\treturn false\n\t}\n\tif err := syscall.Fstat(int(other), &s2); err != nil {\n\t\treturn false\n\t}\n\treturn (s1.Dev == s2.Dev) && (s1.Ino == s2.Ino)\n}\n\n// String shows the file descriptor number and its dev and inode.\nfunc (ns NsHandle) String() string {\n\tvar s syscall.Stat_t\n\tif ns == -1 {\n\t\treturn \"NS(None)\"\n\t}\n\tif err := syscall.Fstat(int(ns), &s); err != nil {\n\t\treturn fmt.Sprintf(\"NS(%d: unknown)\", ns)\n\t}\n\treturn fmt.Sprintf(\"NS(%d: %d, %d)\", ns, s.Dev, s.Ino)\n}\n\n// UniqueId returns a string which uniquely identifies the namespace\n// associated with the network handle.\nfunc (ns NsHandle) UniqueId() string {\n\tvar s syscall.Stat_t\n\tif ns == -1 {\n\t\treturn \"NS(none)\"\n\t}\n\tif err := syscall.Fstat(int(ns), &s); err != nil {\n\t\treturn \"NS(unknown)\"\n\t}\n\treturn fmt.Sprintf(\"NS(%d:%d)\", s.Dev, s.Ino)\n}\n\n// IsOpen returns true if Close() has not been called.\nfunc (ns NsHandle) IsOpen() bool {\n\treturn ns != -1\n}\n\n// Close closes the NsHandle and resets its file descriptor to -1.\n// It is not safe to use an NsHandle after Close() is called.\nfunc (ns *NsHandle) Close() error {\n\tif err := syscall.Close(int(*ns)); err != nil {\n\t\treturn err\n\t}\n\t(*ns) = -1\n\treturn nil\n}\n\n// None gets an empty (closed) NsHandle.\nfunc None() NsHandle {\n\treturn NsHandle(-1)\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netns/netns_linux.go",
    "content": "// +build linux\n\npackage netns\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n)\n\n// SYS_SETNS syscall allows changing the namespace of the current process.\nvar SYS_SETNS = map[string]uintptr{\n\t\"386\":     346,\n\t\"amd64\":   308,\n\t\"arm64\":   268,\n\t\"arm\":     375,\n\t\"mips\":    4344,\n\t\"mipsle\":  4344,\n\t\"ppc64\":   350,\n\t\"ppc64le\": 350,\n\t\"s390x\":   339,\n}[runtime.GOARCH]\n\n// Deprecated: use syscall pkg instead (go >= 1.5 needed).\nconst (\n\tCLONE_NEWUTS  = 0x04000000 /* New utsname group? */\n\tCLONE_NEWIPC  = 0x08000000 /* New ipcs */\n\tCLONE_NEWUSER = 0x10000000 /* New user namespace */\n\tCLONE_NEWPID  = 0x20000000 /* New pid namespace */\n\tCLONE_NEWNET  = 0x40000000 /* New network namespace */\n\tCLONE_IO      = 0x80000000 /* Get io context */\n)\n\n// Setns sets namespace using syscall. Note that this should be a method\n// in syscall but it has not been added.\nfunc Setns(ns NsHandle, nstype int) (err error) {\n\t_, _, e1 := syscall.Syscall(SYS_SETNS, uintptr(ns), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n// Set sets the current network namespace to the namespace represented\n// by NsHandle.\nfunc Set(ns NsHandle) (err error) {\n\treturn Setns(ns, CLONE_NEWNET)\n}\n\n// New creates a new network namespace and returns a handle to it.\nfunc New() (ns NsHandle, err error) {\n\tif err := syscall.Unshare(CLONE_NEWNET); err != nil {\n\t\treturn -1, err\n\t}\n\treturn Get()\n}\n\n// Get gets a handle to the current threads network namespace.\nfunc Get() (NsHandle, error) {\n\treturn GetFromThread(os.Getpid(), syscall.Gettid())\n}\n\n// GetFromPath gets a handle to a network namespace\n// identified by the path\nfunc GetFromPath(path string) (NsHandle, error) {\n\tfd, err := syscall.Open(path, syscall.O_RDONLY, 0)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\treturn NsHandle(fd), nil\n}\n\n// GetFromName gets a handle to a named network namespace such as one\n// created by `ip netns add`.\nfunc GetFromName(name string) (NsHandle, error) {\n\treturn GetFromPath(fmt.Sprintf(\"/var/run/netns/%s\", name))\n}\n\n// GetFromPid gets a handle to the network namespace of a given pid.\nfunc GetFromPid(pid int) (NsHandle, error) {\n\treturn GetFromPath(fmt.Sprintf(\"/proc/%d/ns/net\", pid))\n}\n\n// GetFromThread gets a handle to the network namespace of a given pid and tid.\nfunc GetFromThread(pid, tid int) (NsHandle, error) {\n\treturn GetFromPath(fmt.Sprintf(\"/proc/%d/task/%d/ns/net\", pid, tid))\n}\n\n// GetFromDocker gets a handle to the network namespace of a docker container.\n// Id is prefixed matched against the running docker containers, so a short\n// identifier can be used as long as it isn't ambiguous.\nfunc GetFromDocker(id string) (NsHandle, error) {\n\tpid, err := getPidForContainer(id)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\treturn GetFromPid(pid)\n}\n\n// borrowed from docker/utils/utils.go\nfunc findCgroupMountpoint(cgroupType string) (string, error) {\n\toutput, err := ioutil.ReadFile(\"/proc/mounts\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// /proc/mounts has 6 fields per line, one mount per line, e.g.\n\t// cgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices 0 0\n\tfor _, line := range strings.Split(string(output), \"\\n\") {\n\t\tparts := strings.Split(line, \" \")\n\t\tif len(parts) == 6 && parts[2] == \"cgroup\" {\n\t\t\tfor _, opt := range strings.Split(parts[3], \",\") {\n\t\t\t\tif opt == cgroupType {\n\t\t\t\t\treturn parts[1], nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"cgroup mountpoint not found for %s\", cgroupType)\n}\n\n// Returns the relative path to the cgroup docker is running in.\n// borrowed from docker/utils/utils.go\n// modified to get the docker pid instead of using /proc/self\nfunc getThisCgroup(cgroupType string) (string, error) {\n\tdockerpid, err := ioutil.ReadFile(\"/var/run/docker.pid\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tresult := strings.Split(string(dockerpid), \"\\n\")\n\tif len(result) == 0 || len(result[0]) == 0 {\n\t\treturn \"\", fmt.Errorf(\"docker pid not found in /var/run/docker.pid\")\n\t}\n\tpid, err := strconv.Atoi(result[0])\n\n\toutput, err := ioutil.ReadFile(fmt.Sprintf(\"/proc/%d/cgroup\", pid))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tfor _, line := range strings.Split(string(output), \"\\n\") {\n\t\tparts := strings.Split(line, \":\")\n\t\t// any type used by docker should work\n\t\tif parts[1] == cgroupType {\n\t\t\treturn parts[2], nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"cgroup '%s' not found in /proc/%d/cgroup\", cgroupType, pid)\n}\n\n// Returns the first pid in a container.\n// borrowed from docker/utils/utils.go\n// modified to only return the first pid\n// modified to glob with id\n// modified to search for newer docker containers\nfunc getPidForContainer(id string) (int, error) {\n\tpid := 0\n\n\t// memory is chosen randomly, any cgroup used by docker works\n\tcgroupType := \"memory\"\n\n\tcgroupRoot, err := findCgroupMountpoint(cgroupType)\n\tif err != nil {\n\t\treturn pid, err\n\t}\n\n\tcgroupThis, err := getThisCgroup(cgroupType)\n\tif err != nil {\n\t\treturn pid, err\n\t}\n\n\tid += \"*\"\n\n\tattempts := []string{\n\t\tfilepath.Join(cgroupRoot, cgroupThis, id, \"tasks\"),\n\t\t// With more recent lxc versions use, cgroup will be in lxc/\n\t\tfilepath.Join(cgroupRoot, cgroupThis, \"lxc\", id, \"tasks\"),\n\t\t// With more recent docker, cgroup will be in docker/\n\t\tfilepath.Join(cgroupRoot, cgroupThis, \"docker\", id, \"tasks\"),\n\t\t// Even more recent docker versions under systemd use docker-<id>.scope/\n\t\tfilepath.Join(cgroupRoot, \"system.slice\", \"docker-\"+id+\".scope\", \"tasks\"),\n\t\t// Even more recent docker versions under cgroup/systemd/docker/<id>/\n\t\tfilepath.Join(cgroupRoot, \"..\", \"systemd\", \"docker\", id, \"tasks\"),\n\t}\n\n\tvar filename string\n\tfor _, attempt := range attempts {\n\t\tfilenames, _ := filepath.Glob(attempt)\n\t\tif len(filenames) > 1 {\n\t\t\treturn pid, fmt.Errorf(\"Ambiguous id supplied: %v\", filenames)\n\t\t} else if len(filenames) == 1 {\n\t\t\tfilename = filenames[0]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif filename == \"\" {\n\t\treturn pid, fmt.Errorf(\"Unable to find container: %v\", id[:len(id)-1])\n\t}\n\n\toutput, err := ioutil.ReadFile(filename)\n\tif err != nil {\n\t\treturn pid, err\n\t}\n\n\tresult := strings.Split(string(output), \"\\n\")\n\tif len(result) == 0 || len(result[0]) == 0 {\n\t\treturn pid, fmt.Errorf(\"No pid found for container\")\n\t}\n\n\tpid, err = strconv.Atoi(result[0])\n\tif err != nil {\n\t\treturn pid, fmt.Errorf(\"Invalid pid '%s': %s\", result[0], err)\n\t}\n\n\treturn pid, nil\n}\n"
  },
  {
    "path": "vendor/github.com/vishvananda/netns/netns_unspecified.go",
    "content": "// +build !linux\n\npackage netns\n\nimport (\n\t\"errors\"\n)\n\nvar (\n\tErrNotImplemented = errors.New(\"not implemented\")\n)\n\nfunc Set(ns NsHandle) (err error) {\n\treturn ErrNotImplemented\n}\n\nfunc New() (ns NsHandle, err error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc Get() (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc GetFromPath(path string) (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc GetFromName(name string) (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc GetFromPid(pid int) (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc GetFromThread(pid, tid int) (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n\nfunc GetFromDocker(id string) (NsHandle, error) {\n\treturn -1, ErrNotImplemented\n}\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/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 2017 VMware, Inc. 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"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/README",
    "content": "This package provides access to the guestinfo variables exposed to a VMware virtual machine.\n\nsee examples/main.go for an example\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/bdoor.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage bdoor\n\nconst (\n\tBackdoorPort       = uint16(0x5658)\n\tBackdoorHighBWPort = uint16(0x5659)\n\n\tCommandGetVersion = uint32(10)\n\n\tCommandMessage       = uint16(0x1e)\n\tCommandHighBWMessage = uint16(0)\n\tCommandFlagCookie    = uint32(0x80000000)\n)\n\nfunc (p *BackdoorProto) InOut() *BackdoorProto {\n\tp.DX.AsUInt32().Low = BackdoorPort\n\tp.AX.SetValue(BackdoorMagic)\n\n\tretax, retbx, retcx, retdx, retsi, retdi, retbp := bdoor_inout(\n\t\tp.AX.Value(),\n\t\tp.BX.Value(),\n\t\tp.CX.Value(),\n\t\tp.DX.Value(),\n\t\tp.SI.Value(),\n\t\tp.DI.Value(),\n\t\tp.BP.Value(),\n\t)\n\n\tret := &BackdoorProto{}\n\tret.AX.SetValue(retax)\n\tret.BX.SetValue(retbx)\n\tret.CX.SetValue(retcx)\n\tret.DX.SetValue(retdx)\n\tret.SI.SetValue(retsi)\n\tret.DI.SetValue(retdi)\n\tret.BP.SetValue(retbp)\n\n\treturn ret\n}\n\nfunc (p *BackdoorProto) HighBandwidthOut() *BackdoorProto {\n\tp.DX.AsUInt32().Low = BackdoorHighBWPort\n\tp.AX.SetValue(BackdoorMagic)\n\n\tretax, retbx, retcx, retdx, retsi, retdi, retbp := bdoor_hbout(\n\t\tp.AX.Value(),\n\t\tp.BX.Value(),\n\t\tp.CX.Value(),\n\t\tp.DX.Value(),\n\t\tp.SI.Value(),\n\t\tp.DI.Value(),\n\t\tp.BP.Value(),\n\t)\n\n\tret := &BackdoorProto{}\n\tret.AX.SetValue(retax)\n\tret.BX.SetValue(retbx)\n\tret.CX.SetValue(retcx)\n\tret.DX.SetValue(retdx)\n\tret.SI.SetValue(retsi)\n\tret.DI.SetValue(retdi)\n\tret.BP.SetValue(retbp)\n\n\treturn ret\n}\n\nfunc (p *BackdoorProto) HighBandwidthIn() *BackdoorProto {\n\tp.DX.AsUInt32().Low = BackdoorHighBWPort\n\tp.AX.SetValue(BackdoorMagic)\n\n\tretax, retbx, retcx, retdx, retsi, retdi, retbp := bdoor_hbin(\n\t\tp.AX.Value(),\n\t\tp.BX.Value(),\n\t\tp.CX.Value(),\n\t\tp.DX.Value(),\n\t\tp.SI.Value(),\n\t\tp.DI.Value(),\n\t\tp.BP.Value(),\n\t)\n\n\tret := &BackdoorProto{}\n\tret.AX.SetValue(retax)\n\tret.BX.SetValue(retbx)\n\tret.CX.SetValue(retcx)\n\tret.DX.SetValue(retdx)\n\tret.SI.SetValue(retsi)\n\tret.DI.SetValue(retdi)\n\tret.BP.SetValue(retbp)\n\n\treturn ret\n}\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/bdoor_386.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage bdoor\n\nconst (\n\tBackdoorMagic = uint32(0x564D5868)\n)\n\ntype BackdoorProto struct {\n\t// typedef union {\n\t//   struct {\n\t//      DECLARE_REG_NAMED_STRUCT(ax);\n\t//      size_t size; /* Register bx. */\n\t//      DECLARE_REG_NAMED_STRUCT(cx);\n\t//      DECLARE_REG_NAMED_STRUCT(dx);\n\t//      DECLARE_REG_NAMED_STRUCT(si);\n\t//      DECLARE_REG_NAMED_STRUCT(di);\n\t//   } in;\n\t//   struct {\n\t//      DECLARE_REG_NAMED_STRUCT(ax);\n\t//      DECLARE_REG_NAMED_STRUCT(bx);\n\t//      DECLARE_REG_NAMED_STRUCT(cx);\n\t//      DECLARE_REG_NAMED_STRUCT(dx);\n\t//      DECLARE_REG_NAMED_STRUCT(si);\n\t//      DECLARE_REG_NAMED_STRUCT(di);\n\t//   } out;\n\t// } proto;\n\n\tAX, BX, CX, DX, SI, DI, BP UInt32\n\tsize                       uint32\n}\n\nfunc bdoor_inout(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nfunc bdoor_hbout(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nfunc bdoor_hbin(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nfunc bdoor_inout_test(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/bdoor_386.s",
    "content": "#include \"textflag.h\"\n\n// Doc of the golang plan9 assembler\n// http://p9.nyx.link/labs/sys/doc/asm.html\n//\n// A good primer of how to write golang with some plan9 flavored assembly\n// http://www.doxsey.net/blog/go-and-assembly\n//\n// Some x86 references\n// http://www.eecg.toronto.edu/~amza/www.mindsec.com/files/x86regs.html\n// https://cseweb.ucsd.edu/classes/sp10/cse141/pdf/02/S01_x86_64.key.pdf\n// https://en.wikibooks.org/wiki/X86_Assembly/Other_Instructions\n//\n// (This one is invaluable.  Has a working example of how a standard function\n// call looks on the stack with the associated assembly.)\n// https://www.recurse.com/blog/7-understanding-c-by-learning-assembly\n//\n// Reference with raw form of the Opcode\n// http://x86.renejeschke.de/html/file_module_x86_id_139.html\n//\n// Massive x86_64 reference\n// http://ref.x86asm.net/coder64.html#xED\n//\n// Adding instructions to the go assembler\n// https://blog.klauspost.com/adding-unsupported-instructions-in-golang-assembler/\n//\n// Backdoor commands\n// https://sites.google.com/site/chitchatvmback/backdoor\n\n// func bdoor_inout(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nTEXT ·bdoor_inout(SB), NOSPLIT|WRAPPER, $0\n\tMOVL ax+0(FP), AX\n\tMOVL bx+4(FP), BX\n\tMOVL cx+8(FP), CX\n\tMOVL dx+12(FP), DX\n\tMOVL si+16(FP), SI\n\tMOVL di+20(FP), DI\n\tMOVL bp+24(FP), BP\n\n\t// IN to DX from EAX\n\tINL\n\n\tMOVL AX, retax+28(FP)\n\tMOVL BX, retbx+32(FP)\n\tMOVL CX, retcx+36(FP)\n\tMOVL DX, retdx+40(FP)\n\tMOVL SI, retsi+44(FP)\n\tMOVL DI, retdi+48(FP)\n\tMOVL BP, retbp+52(FP)\n\tRET\n\n// func bdoor_hbout(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nTEXT ·bdoor_hbout(SB), NOSPLIT|WRAPPER, $0\n\tMOVL ax+0(FP), AX\n\tMOVL bx+4(FP), BX\n\tMOVL cx+8(FP), CX\n\tMOVL dx+12(FP), DX\n\tMOVL si+16(FP), SI\n\tMOVL di+20(FP), DI\n\tMOVL bp+24(FP), BP\n\n\tCLD; REP; OUTSB\n\n\tMOVL AX, retax+28(FP)\n\tMOVL BX, retbx+32(FP)\n\tMOVL CX, retcx+36(FP)\n\tMOVL DX, retdx+40(FP)\n\tMOVL SI, retsi+44(FP)\n\tMOVL DI, retdi+48(FP)\n\tMOVL BP, retbp+52(FP)\n\tRET\n\n// func bdoor_hbin(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nTEXT ·bdoor_hbin(SB), NOSPLIT|WRAPPER, $0\n\tMOVL ax+0(FP), AX\n\tMOVL bx+4(FP), BX\n\tMOVL cx+8(FP), CX\n\tMOVL dx+12(FP), DX\n\tMOVL si+16(FP), SI\n\tMOVL di+20(FP), DI\n\tMOVL bp+24(FP), BP\n\n\tCLD; REP; INSB\n\n\tMOVL AX, retax+28(FP)\n\tMOVL BX, retbx+32(FP)\n\tMOVL CX, retcx+40(FP)\n\tMOVL DX, retdx+44(FP)\n\tMOVL SI, retsi+48(FP)\n\tMOVL DI, retdi+52(FP)\n\tMOVL BP, retbp+56(FP)\n\tRET\n\n// func bdoor_inout_test(ax, bx, cx, dx, si, di, bp uint32) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint32)\nTEXT ·bdoor_inout_test(SB), NOSPLIT|WRAPPER, $0\n\tMOVL ax+0(FP), AX\n\tMOVL bx+4(FP), BX\n\tMOVL cx+8(FP), CX\n\tMOVL dx+12(FP), DX\n\tMOVL si+16(FP), SI\n\tMOVL di+20(FP), DI\n\tMOVL bp+24(FP), BP\n\n\tMOVL AX, retax+28(FP)\n\tMOVL BX, retbx+32(FP)\n\tMOVL CX, retcx+36(FP)\n\tMOVL DX, retdx+40(FP)\n\tMOVL SI, retsi+44(FP)\n\tMOVL DI, retdi+48(FP)\n\tMOVL BP, retbp+52(FP)\n\tRET\n\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/bdoor_amd64.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage bdoor\n\nconst (\n\tBackdoorMagic = uint64(0x564D5868)\n)\n\ntype BackdoorProto struct {\n\t// typedef union {\n\t//   struct {\n\t//      DECLARE_REG_NAMED_STRUCT(ax);\n\t//      size_t size; /* Register bx. */\n\t//      DECLARE_REG_NAMED_STRUCT(cx);\n\t//      DECLARE_REG_NAMED_STRUCT(dx);\n\t//      DECLARE_REG_NAMED_STRUCT(si);\n\t//      DECLARE_REG_NAMED_STRUCT(di);\n\t//   } in;\n\t//   struct {\n\t//      DECLARE_REG_NAMED_STRUCT(ax);\n\t//      DECLARE_REG_NAMED_STRUCT(bx);\n\t//      DECLARE_REG_NAMED_STRUCT(cx);\n\t//      DECLARE_REG_NAMED_STRUCT(dx);\n\t//      DECLARE_REG_NAMED_STRUCT(si);\n\t//      DECLARE_REG_NAMED_STRUCT(di);\n\t//   } out;\n\t// } proto;\n\n\tAX, BX, CX, DX, SI, DI, BP UInt64\n\tsize                       uint32\n}\n\nfunc bdoor_inout(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nfunc bdoor_hbout(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nfunc bdoor_hbin(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nfunc bdoor_inout_test(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/bdoor_amd64.s",
    "content": "#include \"textflag.h\"\n\n// Doc of the golang plan9 assembler\n// http://p9.nyx.link/labs/sys/doc/asm.html\n//\n// A good primer of how to write golang with some plan9 flavored assembly\n// http://www.doxsey.net/blog/go-and-assembly\n//\n// Some x86 references\n// http://www.eecg.toronto.edu/~amza/www.mindsec.com/files/x86regs.html\n// https://cseweb.ucsd.edu/classes/sp10/cse141/pdf/02/S01_x86_64.key.pdf\n// https://en.wikibooks.org/wiki/X86_Assembly/Other_Instructions\n//\n// (This one is invaluable.  Has a working example of how a standard function\n// call looks on the stack with the associated assembly.)\n// https://www.recurse.com/blog/7-understanding-c-by-learning-assembly\n//\n// Reference with raw form of the Opcode\n// http://x86.renejeschke.de/html/file_module_x86_id_139.html\n//\n// Massive x86_64 reference\n// http://ref.x86asm.net/coder64.html#xED\n//\n// Adding instructions to the go assembler\n// https://blog.klauspost.com/adding-unsupported-instructions-in-golang-assembler/\n//\n// Backdoor commands\n// https://sites.google.com/site/chitchatvmback/backdoor\n\n// func bdoor_inout(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nTEXT ·bdoor_inout(SB), NOSPLIT|WRAPPER, $0\n\tMOVQ ax+0(FP), AX\n\tMOVQ bx+8(FP), BX\n\tMOVQ cx+16(FP), CX\n\tMOVQ dx+24(FP), DX\n\tMOVQ si+32(FP), SI\n\tMOVQ di+40(FP), DI\n\tMOVQ bp+48(FP), BP\n\n\t// IN to DX from EAX\n\tINL\n\n\tMOVQ AX, retax+56(FP)\n\tMOVQ BX, retbx+64(FP)\n\tMOVQ CX, retcx+72(FP)\n\tMOVQ DX, retdx+80(FP)\n\tMOVQ SI, retsi+88(FP)\n\tMOVQ DI, retdi+96(FP)\n\tMOVQ BP, retbp+104(FP)\n\tRET\n\n// func bdoor_hbout(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nTEXT ·bdoor_hbout(SB), NOSPLIT|WRAPPER, $0\n\tMOVQ ax+0(FP), AX\n\tMOVQ bx+8(FP), BX\n\tMOVQ cx+16(FP), CX\n\tMOVQ dx+24(FP), DX\n\tMOVQ si+32(FP), SI\n\tMOVQ di+40(FP), DI\n\tMOVQ bp+48(FP), BP\n\n\tCLD; REP; OUTSB\n\n\tMOVQ AX, retax+56(FP)\n\tMOVQ BX, retbx+64(FP)\n\tMOVQ CX, retcx+72(FP)\n\tMOVQ DX, retdx+80(FP)\n\tMOVQ SI, retsi+88(FP)\n\tMOVQ DI, retdi+96(FP)\n\tMOVQ BP, retbp+104(FP)\n\tRET\n\n// func bdoor_hbin(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nTEXT ·bdoor_hbin(SB), NOSPLIT|WRAPPER, $0\n\tMOVQ ax+0(FP), AX\n\tMOVQ bx+8(FP), BX\n\tMOVQ cx+16(FP), CX\n\tMOVQ dx+24(FP), DX\n\tMOVQ si+32(FP), SI\n\tMOVQ di+40(FP), DI\n\tMOVQ bp+48(FP), BP\n\n\tCLD; REP; INSB\n\n\tMOVQ AX, retax+56(FP)\n\tMOVQ BX, retbx+64(FP)\n\tMOVQ CX, retcx+72(FP)\n\tMOVQ DX, retdx+80(FP)\n\tMOVQ SI, retsi+88(FP)\n\tMOVQ DI, retdi+96(FP)\n\tMOVQ BP, retbp+104(FP)\n\tRET\n\n// func bdoor_inout_test(ax, bx, cx, dx, si, di, bp uint64) (retax, retbx, retcx, retdx, retsi, retdi, retbp uint64)\nTEXT ·bdoor_inout_test(SB), NOSPLIT|WRAPPER, $0\n\tMOVQ ax+0(FP), AX\n\tMOVQ bx+8(FP), BX\n\tMOVQ cx+16(FP), CX\n\tMOVQ dx+24(FP), DX\n\tMOVQ si+32(FP), SI\n\tMOVQ di+40(FP), DI\n\tMOVQ bp+48(FP), BP\n\n\tMOVQ AX, retax+56(FP)\n\tMOVQ BX, retbx+64(FP)\n\tMOVQ CX, retcx+72(FP)\n\tMOVQ DX, retdx+80(FP)\n\tMOVQ SI, retsi+88(FP)\n\tMOVQ DI, retdi+96(FP)\n\tMOVQ BP, retbp+104(FP)\n\tRET\n\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/bdoor/word.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage bdoor\n\nimport \"unsafe\"\n\ntype UInt32 struct {\n\tHigh uint16\n\tLow  uint16\n}\n\nfunc (u *UInt32) Word() uint32 {\n\treturn uint32(u.High)<<16 + uint32(u.Low)\n}\n\nfunc (u *UInt32) SetWord(w uint32) {\n\tu.High = uint16(w >> 16)\n\tu.Low = uint16(w)\n}\n\nfunc (u *UInt32) AsUInt32() *UInt32 {\n\treturn u\n}\n\nfunc (u *UInt32) Value() uint32 {\n\treturn u.Word()\n}\n\nfunc (u *UInt32) SetValue(val uint32) {\n\tu.SetWord(val)\n}\n\nfunc (u *UInt32) SetPointer(p unsafe.Pointer) {\n\tu.SetWord(uint32(uintptr(p)))\n}\n\ntype UInt64 struct {\n\tHigh UInt32\n\tLow  UInt32\n}\n\nfunc (u *UInt64) Quad() uint64 {\n\treturn uint64(u.High.Word())<<32 + uint64(u.Low.Word())\n}\n\nfunc (u *UInt64) SetQuad(w uint64) {\n\tu.High.SetWord(uint32(w >> 32))\n\tu.Low.SetWord(uint32(w))\n}\n\nfunc (u *UInt64) AsUInt32() *UInt32 {\n\treturn &u.Low\n}\n\nfunc (u *UInt64) Value() uint64 {\n\treturn u.Quad()\n}\n\nfunc (u *UInt64) SetValue(val uint64) {\n\tu.SetQuad(val)\n}\n\nfunc (u *UInt64) SetPointer(p unsafe.Pointer) {\n\tu.SetQuad(uint64(uintptr(p)))\n}\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/go.mod",
    "content": "module github.com/vmware/vmw-guestinfo\n\ngo 1.12\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/message/log.go",
    "content": "// Copyright 2016 VMware, Inc. 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\npackage message\n\nimport \"log\"\n\nvar DefaultLogger Logger\n\ntype Logger interface {\n\tErrorf(format string, args ...interface{})\n\tDebugf(format string, args ...interface{})\n\tInfof(format string, args ...interface{})\n}\n\nfunc init() {\n\tDefaultLogger = &logger{}\n}\n\ntype logger struct {\n\tDebugLevel bool\n}\n\nfunc (l *logger) Errorf(format string, args ...interface{}) {\n\tlog.Printf(format, args...)\n}\n\nfunc (l *logger) Debugf(format string, args ...interface{}) {\n\tif !l.DebugLevel {\n\t\treturn\n\t}\n\n\tlog.Printf(format, args...)\n}\n\nfunc (l *logger) Infof(format string, args ...interface{}) {\n\tlog.Printf(format, args...)\n}\n\nfunc Errorf(format string, args ...interface{}) {\n\tDefaultLogger.Errorf(format, args...)\n}\n\nfunc Debugf(format string, args ...interface{}) {\n\tDefaultLogger.Debugf(format, args...)\n}\n\nfunc Infof(format string, args ...interface{}) {\n\tDefaultLogger.Infof(format, args...)\n}\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/message/message.go",
    "content": "// Copyright 2016-2017 VMware, Inc. 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\npackage message\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"unsafe\"\n\n\t\"github.com/vmware/vmw-guestinfo/bdoor\"\n)\n\nconst (\n\tmessageTypeOpen = iota\n\tmessageTypeSendSize\n\tmessageTypeSendPayload\n\tmessageTypeReceiveSize\n\tmessageTypeReceivePayload\n\tmessageTypeReceiveStatus\n\tmessageTypeClose\n\n\tmessageStatusFail       = uint16(0x0000)\n\tmessageStatusSuccess    = uint16(0x0001)\n\tmessageStatusDoRecieve  = uint16(0x0002)\n\tmessageStatusCheckPoint = uint16(0x0010)\n\tmessageStatusHighBW     = uint16(0x0080)\n)\n\nvar (\n\t// ErrChannelOpen represents a failure to open a channel\n\tErrChannelOpen = errors.New(\"could not open channel\")\n\t// ErrChannelClose represents a failure to close a channel\n\tErrChannelClose = errors.New(\"could not close channel\")\n\t// ErrRpciSend represents a failure to send a message\n\tErrRpciSend = errors.New(\"unable to send RPCI command\")\n\t// ErrRpciReceive represents a failure to receive a message\n\tErrRpciReceive = errors.New(\"unable to receive RPCI command result\")\n)\n\ntype Channel struct {\n\tid uint16\n\n\tforceLowBW bool\n\tbuf        []byte\n\n\tcookie bdoor.UInt64\n}\n\n// NewChannel opens a new Channel\nfunc NewChannel(proto uint32) (*Channel, error) {\n\tflags := bdoor.CommandFlagCookie\n\nretry:\n\tbp := &bdoor.BackdoorProto{}\n\n\tbp.BX.AsUInt32().SetWord(proto | flags)\n\tbp.CX.AsUInt32().High = messageTypeOpen\n\tbp.CX.AsUInt32().Low = bdoor.CommandMessage\n\n\tout := bp.InOut()\n\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\tif flags != 0 {\n\t\t\tflags = 0\n\t\t\tgoto retry\n\t\t}\n\n\t\tErrorf(\"Message: Unable to open communication channel\")\n\t\treturn nil, ErrChannelOpen\n\t}\n\n\tch := &Channel{}\n\tch.id = out.DX.AsUInt32().High\n\tch.cookie.High.SetWord(out.SI.AsUInt32().Word())\n\tch.cookie.Low.SetWord(out.DI.AsUInt32().Word())\n\n\tDebugf(\"Opened channel %d\", ch.id)\n\treturn ch, nil\n}\n\nfunc (c *Channel) Close() error {\n\tbp := &bdoor.BackdoorProto{}\n\n\tbp.CX.AsUInt32().High = messageTypeClose\n\tbp.CX.AsUInt32().Low = bdoor.CommandMessage\n\n\tbp.DX.AsUInt32().High = c.id\n\tbp.SI.AsUInt32().SetWord(c.cookie.High.Word())\n\tbp.DI.AsUInt32().SetWord(c.cookie.Low.Word())\n\n\tout := bp.InOut()\n\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\tErrorf(\"Message: Unable to close communication channel %d\", c.id)\n\t\treturn ErrChannelClose\n\t}\n\n\tDebugf(\"Closed channel %d\", c.id)\n\treturn nil\n}\n\nfunc (c *Channel) Send(buf []byte) error {\nretry:\n\tbp := &bdoor.BackdoorProto{}\n\tbp.CX.AsUInt32().High = messageTypeSendSize\n\tbp.CX.AsUInt32().Low = bdoor.CommandMessage\n\n\tbp.DX.AsUInt32().High = c.id\n\tbp.SI.AsUInt32().SetWord(c.cookie.High.Word())\n\tbp.DI.AsUInt32().SetWord(c.cookie.Low.Word())\n\n\tbp.BX.AsUInt32().SetWord(uint32(len(buf)))\n\n\t// send the size\n\tout := bp.InOut()\n\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\tErrorf(\"Message: Unable to send a message over the communication channel %d\", c.id)\n\t\treturn ErrRpciSend\n\t}\n\n\t// size of buf 0 is fine, just return\n\tif len(buf) == 0 {\n\t\treturn nil\n\t}\n\n\tif !c.forceLowBW && (out.CX.AsUInt32().High&messageStatusHighBW) == messageStatusHighBW {\n\t\thbbp := &bdoor.BackdoorProto{}\n\n\t\thbbp.BX.AsUInt32().Low = bdoor.CommandHighBWMessage\n\t\thbbp.BX.AsUInt32().High = messageStatusSuccess\n\t\thbbp.DX.AsUInt32().High = c.id\n\t\thbbp.BP.AsUInt32().SetWord(c.cookie.High.Word())\n\t\thbbp.DI.AsUInt32().SetWord(c.cookie.Low.Word())\n\t\thbbp.CX.AsUInt32().SetWord(uint32(len(buf)))\n\t\thbbp.SI.SetPointer(unsafe.Pointer(&buf[0]))\n\n\t\tout := hbbp.HighBandwidthOut()\n\t\tif (out.BX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\t\tif (out.BX.AsUInt32().High & messageStatusCheckPoint) != 0 {\n\t\t\t\tDebugf(\"A checkpoint occurred. Retrying the operation\")\n\t\t\t\tgoto retry\n\t\t\t}\n\n\t\t\tErrorf(\"Message: Unable to send a message over the communication channel %d\", c.id)\n\t\t\treturn ErrRpciSend\n\t\t}\n\t} else {\n\t\tbp.CX.AsUInt32().High = messageTypeSendPayload\n\n\t\tbbuf := bytes.NewBuffer(buf)\n\t\tfor {\n\t\t\t// read 4 bytes at a time\n\t\t\twords := bbuf.Next(4)\n\t\t\tif len(words) == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tDebugf(\"sending %q over %d\", string(words), c.id)\n\t\t\tswitch len(words) {\n\t\t\tcase 3:\n\t\t\t\tbp.BX.AsUInt32().SetWord(binary.LittleEndian.Uint32([]byte{0x0, words[2], words[1], words[0]}))\n\t\t\tcase 2:\n\t\t\t\tbp.BX.AsUInt32().SetWord(uint32(binary.LittleEndian.Uint16(words)))\n\t\t\tcase 1:\n\t\t\t\tbp.BX.AsUInt32().SetWord(uint32(words[0]))\n\t\t\tdefault:\n\t\t\t\tbp.BX.AsUInt32().SetWord(binary.LittleEndian.Uint32(words))\n\t\t\t}\n\n\t\t\tout = bp.InOut()\n\t\t\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\t\t\tErrorf(\"Message: Unable to send a message over the communication channel %d\", c.id)\n\t\t\t\treturn ErrRpciSend\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (c *Channel) Receive() ([]byte, error) {\nretry:\n\tvar err error\n\tbp := &bdoor.BackdoorProto{}\n\tbp.CX.AsUInt32().High = messageTypeReceiveSize\n\tbp.CX.AsUInt32().Low = bdoor.CommandMessage\n\n\tbp.DX.AsUInt32().High = c.id\n\tbp.SI.AsUInt32().SetWord(c.cookie.High.Word())\n\tbp.DI.AsUInt32().SetWord(c.cookie.Low.Word())\n\n\tout := bp.InOut()\n\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\tErrorf(\"Message: Unable to poll for messages over the communication channel %d\", c.id)\n\t\treturn nil, ErrRpciReceive\n\t}\n\n\tif (out.CX.AsUInt32().High & messageStatusDoRecieve) == 0 {\n\t\tDebugf(\"No message to retrieve\")\n\t\treturn nil, nil\n\t}\n\n\t// Receive the size.\n\tif out.DX.AsUInt32().High != messageTypeSendSize {\n\t\tErrorf(\"Message: Protocol error. Expected a MESSAGE_TYPE_SENDSIZE request from vmware\")\n\t\treturn nil, ErrRpciReceive\n\t}\n\n\tsize := out.BX.Value()\n\n\tvar buf []byte\n\n\tif size != 0 {\n\t\tif !c.forceLowBW && (out.CX.AsUInt32().High&messageStatusHighBW == messageStatusHighBW) {\n\t\t\tbuf = make([]byte, size)\n\n\t\t\thbbp := &bdoor.BackdoorProto{}\n\n\t\t\thbbp.BX.AsUInt32().Low = bdoor.CommandHighBWMessage\n\t\t\thbbp.BX.AsUInt32().High = messageStatusSuccess\n\t\t\thbbp.DX.AsUInt32().High = c.id\n\t\t\thbbp.SI.AsUInt32().SetWord(c.cookie.High.Word())\n\t\t\thbbp.BP.AsUInt32().SetWord(c.cookie.Low.Word())\n\t\t\thbbp.CX.AsUInt32().SetWord(uint32(len(buf)))\n\t\t\thbbp.DI.SetPointer(unsafe.Pointer(&buf[0]))\n\n\t\t\tout := hbbp.HighBandwidthIn()\n\t\t\tif (out.BX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\t\t\tErrorf(\"Message: Unable to send a message over the communication channel %d\", c.id)\n\t\t\t\tc.reply(messageTypeReceivePayload, messageStatusFail)\n\t\t\t\treturn nil, ErrRpciReceive\n\t\t\t}\n\t\t} else {\n\t\t\tb := bytes.NewBuffer(make([]byte, 0, size))\n\n\t\t\tfor {\n\t\t\t\tif size == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tbp.CX.AsUInt32().High = messageTypeReceivePayload\n\t\t\t\tbp.BX.AsUInt32().Low = messageStatusSuccess\n\n\t\t\t\tout = bp.InOut()\n\t\t\t\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\t\t\t\tif (out.CX.AsUInt32().High & messageStatusCheckPoint) != 0 {\n\t\t\t\t\t\tDebugf(\"A checkpoint occurred. Retrying the operation\")\n\t\t\t\t\t\tgoto retry\n\t\t\t\t\t}\n\n\t\t\t\t\tErrorf(\"Message: Unable to receive a message over the communication channel %d\", c.id)\n\t\t\t\t\tc.reply(messageTypeReceivePayload, messageStatusFail)\n\t\t\t\t\treturn nil, ErrRpciReceive\n\t\t\t\t}\n\n\t\t\t\tif out.DX.AsUInt32().High != messageTypeSendPayload {\n\t\t\t\t\tErrorf(\"Message: Protocol error. Expected a MESSAGE_TYPE_SENDPAYLOAD from vmware\")\n\t\t\t\t\tc.reply(messageTypeReceivePayload, messageStatusFail)\n\t\t\t\t\treturn nil, ErrRpciReceive\n\t\t\t\t}\n\n\t\t\t\tDebugf(\"Received %#v\", out.BX.AsUInt32().Word())\n\n\t\t\t\tswitch size {\n\t\t\t\tcase 1:\n\t\t\t\t\terr = binary.Write(b, binary.LittleEndian, uint8(out.BX.AsUInt32().Low))\n\t\t\t\t\tsize = size - 1\n\n\t\t\t\tcase 2:\n\t\t\t\t\terr = binary.Write(b, binary.LittleEndian, uint16(out.BX.AsUInt32().Low))\n\t\t\t\t\tsize = size - 2\n\n\t\t\t\tcase 3:\n\t\t\t\t\terr = binary.Write(b, binary.LittleEndian, uint16(out.BX.AsUInt32().Low))\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tc.reply(messageTypeReceivePayload, messageStatusFail)\n\t\t\t\t\t\treturn nil, ErrRpciReceive\n\t\t\t\t\t}\n\t\t\t\t\terr = binary.Write(b, binary.LittleEndian, uint8(out.BX.AsUInt32().High))\n\t\t\t\t\tsize = size - 3\n\n\t\t\t\tdefault:\n\t\t\t\t\terr = binary.Write(b, binary.LittleEndian, out.BX.AsUInt32().Word())\n\t\t\t\t\tsize = size - 4\n\t\t\t\t}\n\n\t\t\t\tif err != nil {\n\t\t\t\t\tErrorf(err.Error())\n\t\t\t\t\tc.reply(messageTypeReceivePayload, messageStatusFail)\n\t\t\t\t\treturn nil, ErrRpciReceive\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbuf = b.Bytes()\n\t\t}\n\t}\n\n\tc.reply(messageTypeReceiveStatus, messageStatusSuccess)\n\n\treturn buf, nil\n}\n\nfunc (c *Channel) reply(messageType, messageStatus uint16) {\n\tbp := &bdoor.BackdoorProto{}\n\n\tbp.BX.AsUInt32().Low = messageStatus\n\tbp.CX.AsUInt32().High = messageType\n\tbp.CX.AsUInt32().Low = bdoor.CommandMessage\n\tbp.DX.AsUInt32().High = c.id\n\tbp.SI.AsUInt32().SetWord(c.cookie.High.Word())\n\tbp.DI.AsUInt32().SetWord(c.cookie.Low.Word())\n\n\tout := bp.InOut()\n\n\t/* OUT: Status */\n\tif (out.CX.AsUInt32().High & messageStatusSuccess) == 0 {\n\t\tif messageStatus == messageStatusSuccess {\n\t\t\tErrorf(\"reply Message: Unable to send a message over the communication channel %d\", c.id)\n\t\t} else {\n\t\t\tErrorf(\"reply Message: Unable to signal an error of reception over the communication channel %d\", c.id)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "vendor/github.com/vmware/vmw-guestinfo/rpcout/rpcout.go",
    "content": "// Copyright 2016 VMware, Inc. 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\npackage rpcout\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/vmware/vmw-guestinfo/message\"\n)\n\n// ErrRpciFormat represents an invalid result format\nvar ErrRpciFormat = errors.New(\"invalid format for RPCI command result\")\n\nconst rpciProtocolNum uint32 = 0x49435052\n\n// SendOne is a command-oriented wrapper for SendOneRaw\nfunc SendOne(format string, a ...interface{}) (reply []byte, ok bool, err error) {\n\trequest := fmt.Sprintf(format, a...)\n\treturn SendOneRaw([]byte(request))\n}\n\n// SendOneRaw uses a throw-away RPCOut to send a request\nfunc SendOneRaw(request []byte) (reply []byte, ok bool, err error) {\n\tout := &RPCOut{}\n\tif err = out.Start(); err != nil {\n\t\treturn\n\t}\n\tif reply, ok, err = out.Send(request); err != nil {\n\t\treturn\n\t}\n\tif err = out.Stop(); err != nil {\n\t\treturn\n\t}\n\treturn\n}\n\n// RPCOut is an ougoing connection from the VM to the hypervisor\ntype RPCOut struct {\n\tchannel *message.Channel\n}\n\n// Start opens the connection\nfunc (out *RPCOut) Start() error {\n\tchannel, err := message.NewChannel(rpciProtocolNum)\n\tif err != nil {\n\t\treturn err\n\t}\n\tout.channel = channel\n\treturn nil\n}\n\n// Stop closes the connection\nfunc (out *RPCOut) Stop() error {\n\terr := out.channel.Close()\n\tout.channel = nil\n\treturn err\n}\n\n// Send emits a request and receives a response\nfunc (out *RPCOut) Send(request []byte) (reply []byte, ok bool, err error) {\n\tif err = out.channel.Send(request); err != nil {\n\t\treturn\n\t}\n\n\tvar resp []byte\n\tif resp, err = out.channel.Receive(); err != nil {\n\t\treturn\n\t}\n\n\tswitch string(resp[:2]) {\n\tcase \"0 \":\n\t\treply = resp[2:]\n\tcase \"1 \":\n\t\treply = resp[2:]\n\t\tok = true\n\tdefault:\n\t\terr = ErrRpciFormat\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonpointer/LICENSE-APACHE-2.0.txt",
    "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 2015 xeipuuv\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/xeipuuv/gojsonpointer/README.md",
    "content": "# gojsonpointer\nAn implementation of JSON Pointer - Go language\n\n## References\nhttp://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-07\n\n### Note\nThe 4.Evaluation part of the previous reference, starting with 'If the currently referenced value is a JSON array, the reference token MUST contain either...' is not implemented.\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonpointer/pointer.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author  \t\t\txeipuuv\n// author-github \thttps://github.com/xeipuuv\n// author-mail\t\txeipuuv@gmail.com\n//\n// repository-name\tgojsonpointer\n// repository-desc\tAn implementation of JSON Pointer - Go language\n//\n// description\t\tMain and unique file.\n//\n// created      \t25-02-2013\n\npackage gojsonpointer\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tconst_empty_pointer     = ``\n\tconst_pointer_separator = `/`\n\n\tconst_invalid_start = `JSON pointer must be empty or start with a \"` + const_pointer_separator + `\"`\n)\n\ntype implStruct struct {\n\tmode string // \"SET\" or \"GET\"\n\n\tinDocument interface{}\n\n\tsetInValue interface{}\n\n\tgetOutNode interface{}\n\tgetOutKind reflect.Kind\n\toutError   error\n}\n\ntype JsonPointer struct {\n\treferenceTokens []string\n}\n\n// NewJsonPointer parses the given string JSON pointer and returns an object\nfunc NewJsonPointer(jsonPointerString string) (p JsonPointer, err error) {\n\n\t// Pointer to the root of the document\n\tif len(jsonPointerString) == 0 {\n\t\t// Keep referenceTokens nil\n\t\treturn\n\t}\n\tif jsonPointerString[0] != '/' {\n\t\treturn p, errors.New(const_invalid_start)\n\t}\n\n\tp.referenceTokens = strings.Split(jsonPointerString[1:], const_pointer_separator)\n\treturn\n}\n\n// Uses the pointer to retrieve a value from a JSON document\nfunc (p *JsonPointer) Get(document interface{}) (interface{}, reflect.Kind, error) {\n\n\tis := &implStruct{mode: \"GET\", inDocument: document}\n\tp.implementation(is)\n\treturn is.getOutNode, is.getOutKind, is.outError\n\n}\n\n// Uses the pointer to update a value from a JSON document\nfunc (p *JsonPointer) Set(document interface{}, value interface{}) (interface{}, error) {\n\n\tis := &implStruct{mode: \"SET\", inDocument: document, setInValue: value}\n\tp.implementation(is)\n\treturn document, is.outError\n\n}\n\n// Both Get and Set functions use the same implementation to avoid code duplication\nfunc (p *JsonPointer) implementation(i *implStruct) {\n\n\tkind := reflect.Invalid\n\n\t// Full document when empty\n\tif len(p.referenceTokens) == 0 {\n\t\ti.getOutNode = i.inDocument\n\t\ti.outError = nil\n\t\ti.getOutKind = kind\n\t\ti.outError = nil\n\t\treturn\n\t}\n\n\tnode := i.inDocument\n\n\tfor ti, token := range p.referenceTokens {\n\n\t\tisLastToken := ti == len(p.referenceTokens)-1\n\n\t\tswitch v := node.(type) {\n\n\t\tcase map[string]interface{}:\n\t\t\tdecodedToken := decodeReferenceToken(token)\n\t\t\tif _, ok := v[decodedToken]; ok {\n\t\t\t\tnode = v[decodedToken]\n\t\t\t\tif isLastToken && i.mode == \"SET\" {\n\t\t\t\t\tv[decodedToken] = i.setInValue\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ti.outError = fmt.Errorf(\"Object has no key '%s'\", decodedToken)\n\t\t\t\ti.getOutKind = reflect.Map\n\t\t\t\ti.getOutNode = nil\n\t\t\t\treturn\n\t\t\t}\n\n\t\tcase []interface{}:\n\t\t\ttokenIndex, err := strconv.Atoi(token)\n\t\t\tif err != nil {\n\t\t\t\ti.outError = fmt.Errorf(\"Invalid array index '%s'\", token)\n\t\t\t\ti.getOutKind = reflect.Slice\n\t\t\t\ti.getOutNode = nil\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif tokenIndex < 0 || tokenIndex >= len(v) {\n\t\t\t\ti.outError = fmt.Errorf(\"Out of bound array[0,%d] index '%d'\", len(v), tokenIndex)\n\t\t\t\ti.getOutKind = reflect.Slice\n\t\t\t\ti.getOutNode = nil\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tnode = v[tokenIndex]\n\t\t\tif isLastToken && i.mode == \"SET\" {\n\t\t\t\tv[tokenIndex] = i.setInValue\n\t\t\t}\n\n\t\tdefault:\n\t\t\ti.outError = fmt.Errorf(\"Invalid token reference '%s'\", token)\n\t\t\ti.getOutKind = reflect.ValueOf(node).Kind()\n\t\t\ti.getOutNode = nil\n\t\t\treturn\n\t\t}\n\n\t}\n\n\ti.getOutNode = node\n\ti.getOutKind = reflect.ValueOf(node).Kind()\n\ti.outError = nil\n}\n\n// Pointer to string representation function\nfunc (p *JsonPointer) String() string {\n\n\tif len(p.referenceTokens) == 0 {\n\t\treturn const_empty_pointer\n\t}\n\n\tpointerString := const_pointer_separator + strings.Join(p.referenceTokens, const_pointer_separator)\n\n\treturn pointerString\n}\n\n// Specific JSON pointer encoding here\n// ~0 => ~\n// ~1 => /\n// ... and vice versa\n\nfunc decodeReferenceToken(token string) string {\n\tstep1 := strings.Replace(token, `~1`, `/`, -1)\n\tstep2 := strings.Replace(step1, `~0`, `~`, -1)\n\treturn step2\n}\n\nfunc encodeReferenceToken(token string) string {\n\tstep1 := strings.Replace(token, `~`, `~0`, -1)\n\tstep2 := strings.Replace(step1, `/`, `~1`, -1)\n\treturn step2\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonreference/LICENSE-APACHE-2.0.txt",
    "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 2015 xeipuuv\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/xeipuuv/gojsonreference/README.md",
    "content": "# gojsonreference\nAn implementation of JSON Reference - Go language\n\n## Dependencies\nhttps://github.com/xeipuuv/gojsonpointer\n\n## References\nhttp://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-07\n\nhttp://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonreference/reference.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author  \t\t\txeipuuv\n// author-github \thttps://github.com/xeipuuv\n// author-mail\t\txeipuuv@gmail.com\n//\n// repository-name\tgojsonreference\n// repository-desc\tAn implementation of JSON Reference - Go language\n//\n// description\t\tMain and unique file.\n//\n// created      \t26-02-2013\n\npackage gojsonreference\n\nimport (\n\t\"errors\"\n\t\"github.com/xeipuuv/gojsonpointer\"\n\t\"net/url\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n)\n\nconst (\n\tconst_fragment_char = `#`\n)\n\nfunc NewJsonReference(jsonReferenceString string) (JsonReference, error) {\n\n\tvar r JsonReference\n\terr := r.parse(jsonReferenceString)\n\treturn r, err\n\n}\n\ntype JsonReference struct {\n\treferenceUrl     *url.URL\n\treferencePointer gojsonpointer.JsonPointer\n\n\tHasFullUrl      bool\n\tHasUrlPathOnly  bool\n\tHasFragmentOnly bool\n\tHasFileScheme   bool\n\tHasFullFilePath bool\n}\n\nfunc (r *JsonReference) GetUrl() *url.URL {\n\treturn r.referenceUrl\n}\n\nfunc (r *JsonReference) GetPointer() *gojsonpointer.JsonPointer {\n\treturn &r.referencePointer\n}\n\nfunc (r *JsonReference) String() string {\n\n\tif r.referenceUrl != nil {\n\t\treturn r.referenceUrl.String()\n\t}\n\n\tif r.HasFragmentOnly {\n\t\treturn const_fragment_char + r.referencePointer.String()\n\t}\n\n\treturn r.referencePointer.String()\n}\n\nfunc (r *JsonReference) IsCanonical() bool {\n\treturn (r.HasFileScheme && r.HasFullFilePath) || (!r.HasFileScheme && r.HasFullUrl)\n}\n\n// \"Constructor\", parses the given string JSON reference\nfunc (r *JsonReference) parse(jsonReferenceString string) (err error) {\n\n\tr.referenceUrl, err = url.Parse(jsonReferenceString)\n\tif err != nil {\n\t\treturn\n\t}\n\trefUrl := r.referenceUrl\n\n\tif refUrl.Scheme != \"\" && refUrl.Host != \"\" {\n\t\tr.HasFullUrl = true\n\t} else {\n\t\tif refUrl.Path != \"\" {\n\t\t\tr.HasUrlPathOnly = true\n\t\t} else if refUrl.RawQuery == \"\" && refUrl.Fragment != \"\" {\n\t\t\tr.HasFragmentOnly = true\n\t\t}\n\t}\n\n\tr.HasFileScheme = refUrl.Scheme == \"file\"\n\tif runtime.GOOS == \"windows\" {\n\t\t// on Windows, a file URL may have an extra leading slash, and if it\n\t\t// doesn't then its first component will be treated as the host by the\n\t\t// Go runtime\n\t\tif refUrl.Host == \"\" && strings.HasPrefix(refUrl.Path, \"/\") {\n\t\t\tr.HasFullFilePath = filepath.IsAbs(refUrl.Path[1:])\n\t\t} else {\n\t\t\tr.HasFullFilePath = filepath.IsAbs(refUrl.Host + refUrl.Path)\n\t\t}\n\t} else {\n\t\tr.HasFullFilePath = filepath.IsAbs(refUrl.Path)\n\t}\n\n\t// invalid json-pointer error means url has no json-pointer fragment. simply ignore error\n\tr.referencePointer, _ = gojsonpointer.NewJsonPointer(refUrl.Fragment)\n\n\treturn\n}\n\n// Creates a new reference from a parent and a child\n// If the child cannot inherit from the parent, an error is returned\nfunc (r *JsonReference) Inherits(child JsonReference) (*JsonReference, error) {\n\tchildUrl := child.GetUrl()\n\tparentUrl := r.GetUrl()\n\tif childUrl == nil {\n\t\treturn nil, errors.New(\"childUrl is nil!\")\n\t}\n\tif parentUrl == nil {\n\t\treturn nil, errors.New(\"parentUrl is nil!\")\n\t}\n\n\tref, err := NewJsonReference(parentUrl.ResolveReference(childUrl).String())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ref, err\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/.gitignore",
    "content": "*.sw[nop]\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/.travis.yml",
    "content": "language: go\ngo:\n  - 1.3\nbefore_install:\n  - go get github.com/sigu-399/gojsonreference\n  - go get github.com/sigu-399/gojsonpointer\n  - go get github.com/stretchr/testify/assert\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/LICENSE-APACHE-2.0.txt",
    "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 2015 xeipuuv\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/xeipuuv/gojsonschema/README.md",
    "content": "[![Build Status](https://travis-ci.org/xeipuuv/gojsonschema.svg)](https://travis-ci.org/xeipuuv/gojsonschema)\n\n# gojsonschema\n\n## Description\n\nAn implementation of JSON Schema, based on IETF's draft v4 - Go language\n\nReferences :\n\n* http://json-schema.org\n* http://json-schema.org/latest/json-schema-core.html\n* http://json-schema.org/latest/json-schema-validation.html\n\n## Installation\n\n```\ngo get github.com/xeipuuv/gojsonschema\n```\n\nDependencies :\n* [github.com/xeipuuv/gojsonpointer](https://github.com/xeipuuv/gojsonpointer)\n* [github.com/xeipuuv/gojsonreference](https://github.com/xeipuuv/gojsonreference)\n* [github.com/stretchr/testify/assert](https://github.com/stretchr/testify#assert-package)\n\n## Usage\n\n### Example\n\n```go\n\npackage main\n\nimport (\n    \"fmt\"\n    \"github.com/xeipuuv/gojsonschema\"\n)\n\nfunc main() {\n\n    schemaLoader := gojsonschema.NewReferenceLoader(\"file:///home/me/schema.json\")\n    documentLoader := gojsonschema.NewReferenceLoader(\"file:///home/me/document.json\")\n\n    result, err := gojsonschema.Validate(schemaLoader, documentLoader)\n    if err != nil {\n        panic(err.Error())\n    }\n\n    if result.Valid() {\n        fmt.Printf(\"The document is valid\\n\")\n    } else {\n        fmt.Printf(\"The document is not valid. see errors :\\n\")\n        for _, desc := range result.Errors() {\n            fmt.Printf(\"- %s\\n\", desc)\n        }\n    }\n\n}\n\n\n```\n\n#### Loaders\n\nThere are various ways to load your JSON data.\nIn order to load your schemas and documents,\nfirst declare an appropriate loader :\n\n* Web / HTTP, using a reference :\n\n```go\nloader := gojsonschema.NewReferenceLoader(\"http://www.some_host.com/schema.json\")\n```\n\n* Local file, using a reference :\n\n```go\nloader := gojsonschema.NewReferenceLoader(\"file:///home/me/schema.json\")\n```\n\nReferences use the URI scheme, the prefix (file://) and a full path to the file are required.\n\n* JSON strings :\n\n```go\nloader := gojsonschema.NewStringLoader(`{\"type\": \"string\"}`)\n```\n\n* Custom Go types :\n\n```go\nm := map[string]interface{}{\"type\": \"string\"}\nloader := gojsonschema.NewGoLoader(m)\n```\n\nAnd\n\n```go\ntype Root struct {\n\tUsers []User `json:\"users\"`\n}\n\ntype User struct {\n\tName string `json:\"name\"`\n}\n\n...\n\ndata := Root{}\ndata.Users = append(data.Users, User{\"John\"})\ndata.Users = append(data.Users, User{\"Sophia\"})\ndata.Users = append(data.Users, User{\"Bill\"})\n\nloader := gojsonschema.NewGoLoader(data)\n```\n\n#### Validation\n\nOnce the loaders are set, validation is easy :\n\n```go\nresult, err := gojsonschema.Validate(schemaLoader, documentLoader)\n```\n\nAlternatively, you might want to load a schema only once and process to multiple validations :\n\n```go\nschema, err := gojsonschema.NewSchema(schemaLoader)\n...\nresult1, err := schema.Validate(documentLoader1)\n...\nresult2, err := schema.Validate(documentLoader2)\n...\n// etc ...\n```\n\nTo check the result :\n\n```go\n    if result.Valid() {\n    \tfmt.Printf(\"The document is valid\\n\")\n    } else {\n        fmt.Printf(\"The document is not valid. see errors :\\n\")\n        for _, err := range result.Errors() {\n        \t// Err implements the ResultError interface\n            fmt.Printf(\"- %s\\n\", err)\n        }\n    }\n```\n\n## Working with Errors\n\nThe library handles string error codes which you can customize by creating your own gojsonschema.locale and setting it\n```go\ngojsonschema.Locale = YourCustomLocale{}\n```\n\nHowever, each error contains additional contextual information.\n\n**err.Type()**: *string* Returns the \"type\" of error that occurred. Note you can also type check. See below\n\nNote: An error of RequiredType has an err.Type() return value of \"required\"\n\n    \"required\": RequiredError\n    \"invalid_type\": InvalidTypeError\n    \"number_any_of\": NumberAnyOfError\n    \"number_one_of\": NumberOneOfError\n    \"number_all_of\": NumberAllOfError\n    \"number_not\": NumberNotError\n    \"missing_dependency\": MissingDependencyError\n    \"internal\": InternalError\n    \"enum\": EnumError\n    \"array_no_additional_items\": ArrayNoAdditionalItemsError\n    \"array_min_items\": ArrayMinItemsError\n    \"array_max_items\": ArrayMaxItemsError\n    \"unique\": ItemsMustBeUniqueError\n    \"array_min_properties\": ArrayMinPropertiesError\n    \"array_max_properties\": ArrayMaxPropertiesError\n    \"additional_property_not_allowed\": AdditionalPropertyNotAllowedError\n    \"invalid_property_pattern\": InvalidPropertyPatternError\n    \"string_gte\": StringLengthGTEError\n    \"string_lte\": StringLengthLTEError\n    \"pattern\": DoesNotMatchPatternError\n    \"multiple_of\": MultipleOfError\n    \"number_gte\": NumberGTEError\n    \"number_gt\": NumberGTError\n    \"number_lte\": NumberLTEError\n    \"number_lt\": NumberLTError\n\n**err.Value()**: *interface{}* Returns the value given\n\n**err.Context()**: *gojsonschema.jsonContext* Returns the context. This has a String() method that will print something like this: (root).firstName\n\n**err.Field()**: *string* Returns the fieldname in the format firstName, or for embedded properties, person.firstName. This returns the same as the String() method on *err.Context()* but removes the (root). prefix.\n\n**err.Description()**: *string* The error description. This is based on the locale you are using. See the beginning of this section for overwriting the locale with a custom implementation.\n\n**err.Details()**: *gojsonschema.ErrorDetails* Returns a map[string]interface{} of additional error details specific to the error. For example, GTE errors will have a \"min\" value, LTE will have a \"max\" value. See errors.go for a full description of all the error details. Every error always contains a \"field\" key that holds the value of *err.Field()*\n\nNote in most cases, the err.Details() will be used to generate replacement strings in your locales, and not used directly. These strings follow the text/template format i.e.\n```\n{{.field}} must be greater than or equal to {{.min}}\n```\n\nThe library allows you to specify custom template functions, should you require more complex error message handling.\n```go\ngojsonschema.ErrorTemplateFuncs = map[string]interface{}{\n\t\"allcaps\": func(s string) string {\n\t\treturn strings.ToUpper(s)\n\t},\n}\n```\n\nGiven the above definition, you can use the custom function `\"allcaps\"` in your localization templates:\n```\n{{allcaps .field}} must be greater than or equal to {{.min}}\n```\n\nThe above error message would then be rendered with the `field` value in capital letters. For example:\n```\n\"PASSWORD must be greater than or equal to 8\"\n```\n\nLearn more about what types of template functions you can use in `ErrorTemplateFuncs` by referring to Go's [text/template FuncMap](https://golang.org/pkg/text/template/#FuncMap) type.\n\n## Formats\nJSON Schema allows for optional \"format\" property to validate strings against well-known formats. gojsonschema ships with all of the formats defined in the spec that you can use like this:\n````json\n{\"type\": \"string\", \"format\": \"email\"}\n````\nAvailable formats: date-time, hostname, email, ipv4, ipv6, uri, uri-reference.\n\nFor repetitive or more complex formats, you can create custom format checkers and add them to gojsonschema like this:\n\n```go\n// Define the format checker\ntype RoleFormatChecker struct {}\n\n// Ensure it meets the gojsonschema.FormatChecker interface\nfunc (f RoleFormatChecker) IsFormat(input string) bool {\n    return strings.HasPrefix(\"ROLE_\", input)\n}\n\n// Add it to the library\ngojsonschema.FormatCheckers.Add(\"role\", RoleFormatChecker{})\n````\n\nNow to use in your json schema:\n````json\n{\"type\": \"string\", \"format\": \"role\"}\n````\n\n## Uses\n\ngojsonschema uses the following test suite :\n\nhttps://github.com/json-schema/JSON-Schema-Test-Suite\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/errors.go",
    "content": "package gojsonschema\n\nimport (\n\t\"bytes\"\n\t\"sync\"\n\t\"text/template\"\n)\n\nvar errorTemplates errorTemplate = errorTemplate{template.New(\"errors-new\"), sync.RWMutex{}}\n\n// template.Template is not thread-safe for writing, so some locking is done\n// sync.RWMutex is used for efficiently locking when new templates are created\ntype errorTemplate struct {\n\t*template.Template\n\tsync.RWMutex\n}\n\ntype (\n\t// RequiredError. ErrorDetails: property string\n\tRequiredError struct {\n\t\tResultErrorFields\n\t}\n\n\t// InvalidTypeError. ErrorDetails: expected, given\n\tInvalidTypeError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberAnyOfError. ErrorDetails: -\n\tNumberAnyOfError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberOneOfError. ErrorDetails: -\n\tNumberOneOfError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberAllOfError. ErrorDetails: -\n\tNumberAllOfError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberNotError. ErrorDetails: -\n\tNumberNotError struct {\n\t\tResultErrorFields\n\t}\n\n\t// MissingDependencyError. ErrorDetails: dependency\n\tMissingDependencyError struct {\n\t\tResultErrorFields\n\t}\n\n\t// InternalError. ErrorDetails: error\n\tInternalError struct {\n\t\tResultErrorFields\n\t}\n\n\t// EnumError. ErrorDetails: allowed\n\tEnumError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ArrayNoAdditionalItemsError. ErrorDetails: -\n\tArrayNoAdditionalItemsError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ArrayMinItemsError. ErrorDetails: min\n\tArrayMinItemsError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ArrayMaxItemsError. ErrorDetails: max\n\tArrayMaxItemsError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ItemsMustBeUniqueError. ErrorDetails: type\n\tItemsMustBeUniqueError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ArrayMinPropertiesError. ErrorDetails: min\n\tArrayMinPropertiesError struct {\n\t\tResultErrorFields\n\t}\n\n\t// ArrayMaxPropertiesError. ErrorDetails: max\n\tArrayMaxPropertiesError struct {\n\t\tResultErrorFields\n\t}\n\n\t// AdditionalPropertyNotAllowedError. ErrorDetails: property\n\tAdditionalPropertyNotAllowedError struct {\n\t\tResultErrorFields\n\t}\n\n\t// InvalidPropertyPatternError. ErrorDetails: property, pattern\n\tInvalidPropertyPatternError struct {\n\t\tResultErrorFields\n\t}\n\n\t// StringLengthGTEError. ErrorDetails: min\n\tStringLengthGTEError struct {\n\t\tResultErrorFields\n\t}\n\n\t// StringLengthLTEError. ErrorDetails: max\n\tStringLengthLTEError struct {\n\t\tResultErrorFields\n\t}\n\n\t// DoesNotMatchPatternError. ErrorDetails: pattern\n\tDoesNotMatchPatternError struct {\n\t\tResultErrorFields\n\t}\n\n\t// DoesNotMatchFormatError. ErrorDetails: format\n\tDoesNotMatchFormatError struct {\n\t\tResultErrorFields\n\t}\n\n\t// MultipleOfError. ErrorDetails: multiple\n\tMultipleOfError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberGTEError. ErrorDetails: min\n\tNumberGTEError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberGTError. ErrorDetails: min\n\tNumberGTError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberLTEError. ErrorDetails: max\n\tNumberLTEError struct {\n\t\tResultErrorFields\n\t}\n\n\t// NumberLTError. ErrorDetails: max\n\tNumberLTError struct {\n\t\tResultErrorFields\n\t}\n)\n\n// newError takes a ResultError type and sets the type, context, description, details, value, and field\nfunc newError(err ResultError, context *jsonContext, value interface{}, locale locale, details ErrorDetails) {\n\tvar t string\n\tvar d string\n\tswitch err.(type) {\n\tcase *RequiredError:\n\t\tt = \"required\"\n\t\td = locale.Required()\n\tcase *InvalidTypeError:\n\t\tt = \"invalid_type\"\n\t\td = locale.InvalidType()\n\tcase *NumberAnyOfError:\n\t\tt = \"number_any_of\"\n\t\td = locale.NumberAnyOf()\n\tcase *NumberOneOfError:\n\t\tt = \"number_one_of\"\n\t\td = locale.NumberOneOf()\n\tcase *NumberAllOfError:\n\t\tt = \"number_all_of\"\n\t\td = locale.NumberAllOf()\n\tcase *NumberNotError:\n\t\tt = \"number_not\"\n\t\td = locale.NumberNot()\n\tcase *MissingDependencyError:\n\t\tt = \"missing_dependency\"\n\t\td = locale.MissingDependency()\n\tcase *InternalError:\n\t\tt = \"internal\"\n\t\td = locale.Internal()\n\tcase *EnumError:\n\t\tt = \"enum\"\n\t\td = locale.Enum()\n\tcase *ArrayNoAdditionalItemsError:\n\t\tt = \"array_no_additional_items\"\n\t\td = locale.ArrayNoAdditionalItems()\n\tcase *ArrayMinItemsError:\n\t\tt = \"array_min_items\"\n\t\td = locale.ArrayMinItems()\n\tcase *ArrayMaxItemsError:\n\t\tt = \"array_max_items\"\n\t\td = locale.ArrayMaxItems()\n\tcase *ItemsMustBeUniqueError:\n\t\tt = \"unique\"\n\t\td = locale.Unique()\n\tcase *ArrayMinPropertiesError:\n\t\tt = \"array_min_properties\"\n\t\td = locale.ArrayMinProperties()\n\tcase *ArrayMaxPropertiesError:\n\t\tt = \"array_max_properties\"\n\t\td = locale.ArrayMaxProperties()\n\tcase *AdditionalPropertyNotAllowedError:\n\t\tt = \"additional_property_not_allowed\"\n\t\td = locale.AdditionalPropertyNotAllowed()\n\tcase *InvalidPropertyPatternError:\n\t\tt = \"invalid_property_pattern\"\n\t\td = locale.InvalidPropertyPattern()\n\tcase *StringLengthGTEError:\n\t\tt = \"string_gte\"\n\t\td = locale.StringGTE()\n\tcase *StringLengthLTEError:\n\t\tt = \"string_lte\"\n\t\td = locale.StringLTE()\n\tcase *DoesNotMatchPatternError:\n\t\tt = \"pattern\"\n\t\td = locale.DoesNotMatchPattern()\n\tcase *DoesNotMatchFormatError:\n\t\tt = \"format\"\n\t\td = locale.DoesNotMatchFormat()\n\tcase *MultipleOfError:\n\t\tt = \"multiple_of\"\n\t\td = locale.MultipleOf()\n\tcase *NumberGTEError:\n\t\tt = \"number_gte\"\n\t\td = locale.NumberGTE()\n\tcase *NumberGTError:\n\t\tt = \"number_gt\"\n\t\td = locale.NumberGT()\n\tcase *NumberLTEError:\n\t\tt = \"number_lte\"\n\t\td = locale.NumberLTE()\n\tcase *NumberLTError:\n\t\tt = \"number_lt\"\n\t\td = locale.NumberLT()\n\t}\n\n\terr.SetType(t)\n\terr.SetContext(context)\n\terr.SetValue(value)\n\terr.SetDetails(details)\n\tdetails[\"field\"] = err.Field()\n\n\tif _, exists := details[\"context\"]; !exists && context != nil {\n\t\tdetails[\"context\"] = context.String()\n\t}\n\n\terr.SetDescription(formatErrorDescription(d, details))\n}\n\n// formatErrorDescription takes a string in the default text/template\n// format and converts it to a string with replacements. The fields come\n// from the ErrorDetails struct and vary for each type of error.\nfunc formatErrorDescription(s string, details ErrorDetails) string {\n\n\tvar tpl *template.Template\n\tvar descrAsBuffer bytes.Buffer\n\tvar err error\n\n\terrorTemplates.RLock()\n\ttpl = errorTemplates.Lookup(s)\n\terrorTemplates.RUnlock()\n\n\tif tpl == nil {\n\t\terrorTemplates.Lock()\n\t\ttpl = errorTemplates.New(s)\n\n\t\tif ErrorTemplateFuncs != nil {\n\t\t\ttpl.Funcs(ErrorTemplateFuncs)\n\t\t}\n\n\t\ttpl, err = tpl.Parse(s)\n\t\terrorTemplates.Unlock()\n\n\t\tif err != nil {\n\t\t\treturn err.Error()\n\t\t}\n\t}\n\n\terr = tpl.Execute(&descrAsBuffer, details)\n\tif err != nil {\n\t\treturn err.Error()\n\t}\n\n\treturn descrAsBuffer.String()\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/format_checkers.go",
    "content": "package gojsonschema\n\nimport (\n\t\"net\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype (\n\t// FormatChecker is the interface all formatters added to FormatCheckerChain must implement\n\tFormatChecker interface {\n\t\tIsFormat(input string) bool\n\t}\n\n\t// FormatCheckerChain holds the formatters\n\tFormatCheckerChain struct {\n\t\tformatters map[string]FormatChecker\n\t}\n\n\t// EmailFormatter verifies email address formats\n\tEmailFormatChecker struct{}\n\n\t// IPV4FormatChecker verifies IP addresses in the ipv4 format\n\tIPV4FormatChecker struct{}\n\n\t// IPV6FormatChecker verifies IP addresses in the ipv6 format\n\tIPV6FormatChecker struct{}\n\n\t// DateTimeFormatChecker verifies date/time formats per RFC3339 5.6\n\t//\n\t// Valid formats:\n\t// \t\tPartial Time: HH:MM:SS\n\t//\t\tFull Date: YYYY-MM-DD\n\t// \t\tFull Time: HH:MM:SSZ-07:00\n\t//\t\tDate Time: YYYY-MM-DDTHH:MM:SSZ-0700\n\t//\n\t// \tWhere\n\t//\t\tYYYY = 4DIGIT year\n\t//\t\tMM = 2DIGIT month ; 01-12\n\t//\t\tDD = 2DIGIT day-month ; 01-28, 01-29, 01-30, 01-31 based on month/year\n\t//\t\tHH = 2DIGIT hour ; 00-23\n\t//\t\tMM = 2DIGIT ; 00-59\n\t//\t\tSS = 2DIGIT ; 00-58, 00-60 based on leap second rules\n\t//\t\tT = Literal\n\t//\t\tZ = Literal\n\t//\n\t//\tNote: Nanoseconds are also suported in all formats\n\t//\n\t// http://tools.ietf.org/html/rfc3339#section-5.6\n\tDateTimeFormatChecker struct{}\n\n\t// URIFormatChecker validates a URI with a valid Scheme per RFC3986\n\tURIFormatChecker struct{}\n\n\t// URIReferenceFormatChecker validates a URI or relative-reference per RFC3986\n\tURIReferenceFormatChecker struct{}\n\n\t// HostnameFormatChecker validates a hostname is in the correct format\n\tHostnameFormatChecker struct{}\n\n\t// UUIDFormatChecker validates a UUID is in the correct format\n\tUUIDFormatChecker struct{}\n\n\t// RegexFormatChecker validates a regex is in the correct format\n\tRegexFormatChecker struct{}\n)\n\nvar (\n\t// Formatters holds the valid formatters, and is a public variable\n\t// so library users can add custom formatters\n\tFormatCheckers = FormatCheckerChain{\n\t\tformatters: map[string]FormatChecker{\n\t\t\t\"date-time\": \t DateTimeFormatChecker{},\n\t\t\t\"hostname\":  \t HostnameFormatChecker{},\n\t\t\t\"email\":     \t EmailFormatChecker{},\n\t\t\t\"ipv4\":      \t IPV4FormatChecker{},\n\t\t\t\"ipv6\":      \t IPV6FormatChecker{},\n\t\t\t\"uri\":       \t URIFormatChecker{},\n\t\t\t\"uri-reference\": URIReferenceFormatChecker{},\n\t\t\t\"uuid\":      \t UUIDFormatChecker{},\n\t\t\t\"regex\":     \t RegexFormatChecker{},\n\t\t},\n\t}\n\n\t// Regex credit: https://github.com/asaskevich/govalidator\n\trxEmail = regexp.MustCompile(\"^(((([a-zA-Z]|\\\\d|[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])+(\\\\.([a-zA-Z]|\\\\d|[!#\\\\$%&'\\\\*\\\\+\\\\-\\\\/=\\\\?\\\\^_`{\\\\|}~]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])+)*)|((\\\\x22)((((\\\\x20|\\\\x09)*(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(([\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x7f]|\\\\x21|[\\\\x23-\\\\x5b]|[\\\\x5d-\\\\x7e]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])|(\\\\([\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0d-\\\\x7f]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}]))))*(((\\\\x20|\\\\x09)*(\\\\x0d\\\\x0a))?(\\\\x20|\\\\x09)+)?(\\\\x22)))@((([a-zA-Z]|\\\\d|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])|(([a-zA-Z]|\\\\d|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])([a-zA-Z]|\\\\d|-|\\\\.|_|~|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])*([a-zA-Z]|\\\\d|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])))\\\\.)+(([a-zA-Z]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])|(([a-zA-Z]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])([a-zA-Z]|\\\\d|-|\\\\.|_|~|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])*([a-zA-Z]|[\\\\x{00A0}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFEF}])))\\\\.?$\")\n\n\t// Regex credit: https://www.socketloop.com/tutorials/golang-validate-hostname\n\trxHostname = regexp.MustCompile(`^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))*$`)\n\n\trxUUID = regexp.MustCompile(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\")\n)\n\n// Add adds a FormatChecker to the FormatCheckerChain\n// The name used will be the value used for the format key in your json schema\nfunc (c *FormatCheckerChain) Add(name string, f FormatChecker) *FormatCheckerChain {\n\tc.formatters[name] = f\n\n\treturn c\n}\n\n// Remove deletes a FormatChecker from the FormatCheckerChain (if it exists)\nfunc (c *FormatCheckerChain) Remove(name string) *FormatCheckerChain {\n\tdelete(c.formatters, name)\n\n\treturn c\n}\n\n// Has checks to see if the FormatCheckerChain holds a FormatChecker with the given name\nfunc (c *FormatCheckerChain) Has(name string) bool {\n\t_, ok := c.formatters[name]\n\n\treturn ok\n}\n\n// IsFormat will check an input against a FormatChecker with the given name\n// to see if it is the correct format\nfunc (c *FormatCheckerChain) IsFormat(name string, input interface{}) bool {\n\tf, ok := c.formatters[name]\n\n\tif !ok {\n\t\treturn false\n\t}\n\n\tif !isKind(input, reflect.String) {\n\t\treturn false\n\t}\n\n\tinputString := input.(string)\n\n\treturn f.IsFormat(inputString)\n}\n\nfunc (f EmailFormatChecker) IsFormat(input string) bool {\n\treturn rxEmail.MatchString(input)\n}\n\n// Credit: https://github.com/asaskevich/govalidator\nfunc (f IPV4FormatChecker) IsFormat(input string) bool {\n\tip := net.ParseIP(input)\n\treturn ip != nil && strings.Contains(input, \".\")\n}\n\n// Credit: https://github.com/asaskevich/govalidator\nfunc (f IPV6FormatChecker) IsFormat(input string) bool {\n\tip := net.ParseIP(input)\n\treturn ip != nil && strings.Contains(input, \":\")\n}\n\nfunc (f DateTimeFormatChecker) IsFormat(input string) bool {\n\tformats := []string{\n\t\t\"15:04:05\",\n\t\t\"15:04:05Z07:00\",\n\t\t\"2006-01-02\",\n\t\ttime.RFC3339,\n\t\ttime.RFC3339Nano,\n\t}\n\n\tfor _, format := range formats {\n\t\tif _, err := time.Parse(format, input); err == nil {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (f URIFormatChecker) IsFormat(input string) bool {\n\tu, err := url.Parse(input)\n\tif err != nil || u.Scheme == \"\" {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc (f URIReferenceFormatChecker) IsFormat(input string) bool {\n\t_, err := url.Parse(input)\n\treturn err == nil\n}\n\nfunc (f HostnameFormatChecker) IsFormat(input string) bool {\n\treturn rxHostname.MatchString(input) && len(input) < 256\n}\n\nfunc (f UUIDFormatChecker) IsFormat(input string) bool {\n\treturn rxUUID.MatchString(input)\n}\n\n// IsFormat implements FormatChecker interface.\nfunc (f RegexFormatChecker) IsFormat(input string) bool {\n\tif input == \"\" {\n\t\treturn true\n\t}\n\t_, err := regexp.Compile(input)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/glide.yaml",
    "content": "package: github.com/xeipuuv/gojsonschema\nlicense: Apache 2.0\nimport:\n- package: github.com/xeipuuv/gojsonschema\n\n- package: github.com/xeipuuv/gojsonpointer\n\n- package: github.com/xeipuuv/gojsonreference\n\n- package: github.com/stretchr/testify/assert\n  version: ^1.1.3\n\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/internalLog.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Very simple log wrapper.\n//\t\t\t\t\tUsed for debugging/testing purposes.\n//\n// created          01-01-2015\n\npackage gojsonschema\n\nimport (\n\t\"log\"\n)\n\nconst internalLogEnabled = false\n\nfunc internalLog(format string, v ...interface{}) {\n\tlog.Printf(format, v...)\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/jsonContext.go",
    "content": "// Copyright 2013 MongoDB, Inc.\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// author           tolsen\n// author-github    https://github.com/tolsen\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Implements a persistent (immutable w/ shared structure) singly-linked list of strings for the purpose of storing a json context\n//\n// created          04-09-2013\n\npackage gojsonschema\n\nimport \"bytes\"\n\n// jsonContext implements a persistent linked-list of strings\ntype jsonContext struct {\n\thead string\n\ttail *jsonContext\n}\n\nfunc newJsonContext(head string, tail *jsonContext) *jsonContext {\n\treturn &jsonContext{head, tail}\n}\n\n// String displays the context in reverse.\n// This plays well with the data structure's persistent nature with\n// Cons and a json document's tree structure.\nfunc (c *jsonContext) String(del ...string) string {\n\tbyteArr := make([]byte, 0, c.stringLen())\n\tbuf := bytes.NewBuffer(byteArr)\n\tc.writeStringToBuffer(buf, del)\n\n\treturn buf.String()\n}\n\nfunc (c *jsonContext) stringLen() int {\n\tlength := 0\n\tif c.tail != nil {\n\t\tlength = c.tail.stringLen() + 1 // add 1 for \".\"\n\t}\n\n\tlength += len(c.head)\n\treturn length\n}\n\nfunc (c *jsonContext) writeStringToBuffer(buf *bytes.Buffer, del []string) {\n\tif c.tail != nil {\n\t\tc.tail.writeStringToBuffer(buf, del)\n\n\t\tif len(del) > 0 {\n\t\t\tbuf.WriteString(del[0])\n\t\t} else {\n\t\t\tbuf.WriteString(\".\")\n\t\t}\n\t}\n\n\tbuf.WriteString(c.head)\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/jsonLoader.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description\t\tDifferent strategies to load JSON files.\n// \t\t\t\t\tIncludes References (file and HTTP), JSON strings and Go types.\n//\n// created          01-02-2015\n\npackage gojsonschema\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\n\n\t\"github.com/xeipuuv/gojsonreference\"\n)\n\nvar osFS = osFileSystem(os.Open)\n\n// JSON loader interface\n\ntype JSONLoader interface {\n\tJsonSource() interface{}\n\tLoadJSON() (interface{}, error)\n\tJsonReference() (gojsonreference.JsonReference, error)\n\tLoaderFactory() JSONLoaderFactory\n}\n\ntype JSONLoaderFactory interface {\n\tNew(source string) JSONLoader\n}\n\ntype DefaultJSONLoaderFactory struct {\n}\n\ntype FileSystemJSONLoaderFactory struct {\n\tfs http.FileSystem\n}\n\nfunc (d DefaultJSONLoaderFactory) New(source string) JSONLoader {\n\treturn &jsonReferenceLoader{\n\t\tfs:     osFS,\n\t\tsource: source,\n\t}\n}\n\nfunc (f FileSystemJSONLoaderFactory) New(source string) JSONLoader {\n\treturn &jsonReferenceLoader{\n\t\tfs:     f.fs,\n\t\tsource: source,\n\t}\n}\n\n// osFileSystem is a functional wrapper for os.Open that implements http.FileSystem.\ntype osFileSystem func(string) (*os.File, error)\n\nfunc (o osFileSystem) Open(name string) (http.File, error) {\n\treturn o(name)\n}\n\n// JSON Reference loader\n// references are used to load JSONs from files and HTTP\n\ntype jsonReferenceLoader struct {\n\tfs     http.FileSystem\n\tsource string\n}\n\nfunc (l *jsonReferenceLoader) JsonSource() interface{} {\n\treturn l.source\n}\n\nfunc (l *jsonReferenceLoader) JsonReference() (gojsonreference.JsonReference, error) {\n\treturn gojsonreference.NewJsonReference(l.JsonSource().(string))\n}\n\nfunc (l *jsonReferenceLoader) LoaderFactory() JSONLoaderFactory {\n\treturn &FileSystemJSONLoaderFactory{\n\t\tfs: l.fs,\n\t}\n}\n\n// NewReferenceLoader returns a JSON reference loader using the given source and the local OS file system.\nfunc NewReferenceLoader(source string) *jsonReferenceLoader {\n\treturn &jsonReferenceLoader{\n\t\tfs:     osFS,\n\t\tsource: source,\n\t}\n}\n\n// NewReferenceLoaderFileSystem returns a JSON reference loader using the given source and file system.\nfunc NewReferenceLoaderFileSystem(source string, fs http.FileSystem) *jsonReferenceLoader {\n\treturn &jsonReferenceLoader{\n\t\tfs:     fs,\n\t\tsource: source,\n\t}\n}\n\nfunc (l *jsonReferenceLoader) LoadJSON() (interface{}, error) {\n\n\tvar err error\n\n\treference, err := gojsonreference.NewJsonReference(l.JsonSource().(string))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trefToUrl := reference\n\trefToUrl.GetUrl().Fragment = \"\"\n\n\tvar document interface{}\n\n\tif reference.HasFileScheme {\n\n\t\tfilename := strings.Replace(refToUrl.GetUrl().Path, \"file://\", \"\", -1)\n\t\tif runtime.GOOS == \"windows\" {\n\t\t\t// on Windows, a file URL may have an extra leading slash, use slashes\n\t\t\t// instead of backslashes, and have spaces escaped\n\t\t\tif strings.HasPrefix(filename, \"/\") {\n\t\t\t\tfilename = filename[1:]\n\t\t\t}\n\t\t\tfilename = filepath.FromSlash(filename)\n\t\t}\n\n\t\tdocument, err = l.loadFromFile(filename)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t} else {\n\n\t\tdocument, err = l.loadFromHTTP(refToUrl.String())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t}\n\n\treturn document, nil\n\n}\n\nfunc (l *jsonReferenceLoader) loadFromHTTP(address string) (interface{}, error) {\n\n\tresp, err := http.Get(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// must return HTTP Status 200 OK\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn nil, errors.New(formatErrorDescription(Locale.HttpBadStatus(), ErrorDetails{\"status\": resp.Status}))\n\t}\n\n\tbodyBuff, err := ioutil.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodeJsonUsingNumber(bytes.NewReader(bodyBuff))\n\n}\n\nfunc (l *jsonReferenceLoader) loadFromFile(path string) (interface{}, error) {\n\tf, err := l.fs.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\n\tbodyBuff, err := ioutil.ReadAll(f)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodeJsonUsingNumber(bytes.NewReader(bodyBuff))\n\n}\n\n// JSON string loader\n\ntype jsonStringLoader struct {\n\tsource string\n}\n\nfunc (l *jsonStringLoader) JsonSource() interface{} {\n\treturn l.source\n}\n\nfunc (l *jsonStringLoader) JsonReference() (gojsonreference.JsonReference, error) {\n\treturn gojsonreference.NewJsonReference(\"#\")\n}\n\nfunc (l *jsonStringLoader) LoaderFactory() JSONLoaderFactory {\n\treturn &DefaultJSONLoaderFactory{}\n}\n\nfunc NewStringLoader(source string) *jsonStringLoader {\n\treturn &jsonStringLoader{source: source}\n}\n\nfunc (l *jsonStringLoader) LoadJSON() (interface{}, error) {\n\n\treturn decodeJsonUsingNumber(strings.NewReader(l.JsonSource().(string)))\n\n}\n\n// JSON bytes loader\n\ntype jsonBytesLoader struct {\n\tsource []byte\n}\n\nfunc (l *jsonBytesLoader) JsonSource() interface{} {\n\treturn l.source\n}\n\nfunc (l *jsonBytesLoader) JsonReference() (gojsonreference.JsonReference, error) {\n\treturn gojsonreference.NewJsonReference(\"#\")\n}\n\nfunc (l *jsonBytesLoader) LoaderFactory() JSONLoaderFactory {\n\treturn &DefaultJSONLoaderFactory{}\n}\n\nfunc NewBytesLoader(source []byte) *jsonBytesLoader {\n\treturn &jsonBytesLoader{source: source}\n}\n\nfunc (l *jsonBytesLoader) LoadJSON() (interface{}, error) {\n\treturn decodeJsonUsingNumber(bytes.NewReader(l.JsonSource().([]byte)))\n}\n\n// JSON Go (types) loader\n// used to load JSONs from the code as maps, interface{}, structs ...\n\ntype jsonGoLoader struct {\n\tsource interface{}\n}\n\nfunc (l *jsonGoLoader) JsonSource() interface{} {\n\treturn l.source\n}\n\nfunc (l *jsonGoLoader) JsonReference() (gojsonreference.JsonReference, error) {\n\treturn gojsonreference.NewJsonReference(\"#\")\n}\n\nfunc (l *jsonGoLoader) LoaderFactory() JSONLoaderFactory {\n\treturn &DefaultJSONLoaderFactory{}\n}\n\nfunc NewGoLoader(source interface{}) *jsonGoLoader {\n\treturn &jsonGoLoader{source: source}\n}\n\nfunc (l *jsonGoLoader) LoadJSON() (interface{}, error) {\n\n\t// convert it to a compliant JSON first to avoid types \"mismatches\"\n\n\tjsonBytes, err := json.Marshal(l.JsonSource())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodeJsonUsingNumber(bytes.NewReader(jsonBytes))\n\n}\n\ntype jsonIOLoader struct {\n\tbuf *bytes.Buffer\n}\n\nfunc NewReaderLoader(source io.Reader) (*jsonIOLoader, io.Reader) {\n\tbuf := &bytes.Buffer{}\n\treturn &jsonIOLoader{buf: buf}, io.TeeReader(source, buf)\n}\n\nfunc NewWriterLoader(source io.Writer) (*jsonIOLoader, io.Writer) {\n\tbuf := &bytes.Buffer{}\n\treturn &jsonIOLoader{buf: buf}, io.MultiWriter(source, buf)\n}\n\nfunc (l *jsonIOLoader) JsonSource() interface{} {\n\treturn l.buf.String()\n}\n\nfunc (l *jsonIOLoader) LoadJSON() (interface{}, error) {\n\treturn decodeJsonUsingNumber(l.buf)\n}\n\nfunc (l *jsonIOLoader) JsonReference() (gojsonreference.JsonReference, error) {\n\treturn gojsonreference.NewJsonReference(\"#\")\n}\n\nfunc (l *jsonIOLoader) LoaderFactory() JSONLoaderFactory {\n\treturn &DefaultJSONLoaderFactory{}\n}\n\nfunc decodeJsonUsingNumber(r io.Reader) (interface{}, error) {\n\n\tvar document interface{}\n\n\tdecoder := json.NewDecoder(r)\n\tdecoder.UseNumber()\n\n\terr := decoder.Decode(&document)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t\n\treturn document, nil\n\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/locales.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Contains const string and messages.\n//\n// created          01-01-2015\n\npackage gojsonschema\n\ntype (\n\t// locale is an interface for defining custom error strings\n\tlocale interface {\n\t\tRequired() string\n\t\tInvalidType() string\n\t\tNumberAnyOf() string\n\t\tNumberOneOf() string\n\t\tNumberAllOf() string\n\t\tNumberNot() string\n\t\tMissingDependency() string\n\t\tInternal() string\n\t\tEnum() string\n\t\tArrayNotEnoughItems() string\n\t\tArrayNoAdditionalItems() string\n\t\tArrayMinItems() string\n\t\tArrayMaxItems() string\n\t\tUnique() string\n\t\tArrayMinProperties() string\n\t\tArrayMaxProperties() string\n\t\tAdditionalPropertyNotAllowed() string\n\t\tInvalidPropertyPattern() string\n\t\tStringGTE() string\n\t\tStringLTE() string\n\t\tDoesNotMatchPattern() string\n\t\tDoesNotMatchFormat() string\n\t\tMultipleOf() string\n\t\tNumberGTE() string\n\t\tNumberGT() string\n\t\tNumberLTE() string\n\t\tNumberLT() string\n\n\t\t// Schema validations\n\t\tRegexPattern() string\n\t\tGreaterThanZero() string\n\t\tMustBeOfA() string\n\t\tMustBeOfAn() string\n\t\tCannotBeUsedWithout() string\n\t\tCannotBeGT() string\n\t\tMustBeOfType() string\n\t\tMustBeValidRegex() string\n\t\tMustBeValidFormat() string\n\t\tMustBeGTEZero() string\n\t\tKeyCannotBeGreaterThan() string\n\t\tKeyItemsMustBeOfType() string\n\t\tKeyItemsMustBeUnique() string\n\t\tReferenceMustBeCanonical() string\n\t\tNotAValidType() string\n\t\tDuplicated() string\n\t\tHttpBadStatus() string\n\t\tParseError() string\n\n\t\t// ErrorFormat\n\t\tErrorFormat() string\n\t}\n\n\t// DefaultLocale is the default locale for this package\n\tDefaultLocale struct{}\n)\n\nfunc (l DefaultLocale) Required() string {\n\treturn `{{.property}} is required`\n}\n\nfunc (l DefaultLocale) InvalidType() string {\n\treturn `Invalid type. Expected: {{.expected}}, given: {{.given}}`\n}\n\nfunc (l DefaultLocale) NumberAnyOf() string {\n\treturn `Must validate at least one schema (anyOf)`\n}\n\nfunc (l DefaultLocale) NumberOneOf() string {\n\treturn `Must validate one and only one schema (oneOf)`\n}\n\nfunc (l DefaultLocale) NumberAllOf() string {\n\treturn `Must validate all the schemas (allOf)`\n}\n\nfunc (l DefaultLocale) NumberNot() string {\n\treturn `Must not validate the schema (not)`\n}\n\nfunc (l DefaultLocale) MissingDependency() string {\n\treturn `Has a dependency on {{.dependency}}`\n}\n\nfunc (l DefaultLocale) Internal() string {\n\treturn `Internal Error {{.error}}`\n}\n\nfunc (l DefaultLocale) Enum() string {\n\treturn `{{.field}} must be one of the following: {{.allowed}}`\n}\n\nfunc (l DefaultLocale) ArrayNoAdditionalItems() string {\n\treturn `No additional items allowed on array`\n}\n\nfunc (l DefaultLocale) ArrayNotEnoughItems() string {\n\treturn `Not enough items on array to match positional list of schema`\n}\n\nfunc (l DefaultLocale) ArrayMinItems() string {\n\treturn `Array must have at least {{.min}} items`\n}\n\nfunc (l DefaultLocale) ArrayMaxItems() string {\n\treturn `Array must have at most {{.max}} items`\n}\n\nfunc (l DefaultLocale) Unique() string {\n\treturn `{{.type}} items must be unique`\n}\n\nfunc (l DefaultLocale) ArrayMinProperties() string {\n\treturn `Must have at least {{.min}} properties`\n}\n\nfunc (l DefaultLocale) ArrayMaxProperties() string {\n\treturn `Must have at most {{.max}} properties`\n}\n\nfunc (l DefaultLocale) AdditionalPropertyNotAllowed() string {\n\treturn `Additional property {{.property}} is not allowed`\n}\n\nfunc (l DefaultLocale) InvalidPropertyPattern() string {\n\treturn `Property \"{{.property}}\" does not match pattern {{.pattern}}`\n}\n\nfunc (l DefaultLocale) StringGTE() string {\n\treturn `String length must be greater than or equal to {{.min}}`\n}\n\nfunc (l DefaultLocale) StringLTE() string {\n\treturn `String length must be less than or equal to {{.max}}`\n}\n\nfunc (l DefaultLocale) DoesNotMatchPattern() string {\n\treturn `Does not match pattern '{{.pattern}}'`\n}\n\nfunc (l DefaultLocale) DoesNotMatchFormat() string {\n\treturn `Does not match format '{{.format}}'`\n}\n\nfunc (l DefaultLocale) MultipleOf() string {\n\treturn `Must be a multiple of {{.multiple}}`\n}\n\nfunc (l DefaultLocale) NumberGTE() string {\n\treturn `Must be greater than or equal to {{.min}}`\n}\n\nfunc (l DefaultLocale) NumberGT() string {\n\treturn `Must be greater than {{.min}}`\n}\n\nfunc (l DefaultLocale) NumberLTE() string {\n\treturn `Must be less than or equal to {{.max}}`\n}\n\nfunc (l DefaultLocale) NumberLT() string {\n\treturn `Must be less than {{.max}}`\n}\n\n// Schema validators\nfunc (l DefaultLocale) RegexPattern() string {\n\treturn `Invalid regex pattern '{{.pattern}}'`\n}\n\nfunc (l DefaultLocale) GreaterThanZero() string {\n\treturn `{{.number}} must be strictly greater than 0`\n}\n\nfunc (l DefaultLocale) MustBeOfA() string {\n\treturn `{{.x}} must be of a {{.y}}`\n}\n\nfunc (l DefaultLocale) MustBeOfAn() string {\n\treturn `{{.x}} must be of an {{.y}}`\n}\n\nfunc (l DefaultLocale) CannotBeUsedWithout() string {\n\treturn `{{.x}} cannot be used without {{.y}}`\n}\n\nfunc (l DefaultLocale) CannotBeGT() string {\n\treturn `{{.x}} cannot be greater than {{.y}}`\n}\n\nfunc (l DefaultLocale) MustBeOfType() string {\n\treturn `{{.key}} must be of type {{.type}}`\n}\n\nfunc (l DefaultLocale) MustBeValidRegex() string {\n\treturn `{{.key}} must be a valid regex`\n}\n\nfunc (l DefaultLocale) MustBeValidFormat() string {\n\treturn `{{.key}} must be a valid format {{.given}}`\n}\n\nfunc (l DefaultLocale) MustBeGTEZero() string {\n\treturn `{{.key}} must be greater than or equal to 0`\n}\n\nfunc (l DefaultLocale) KeyCannotBeGreaterThan() string {\n\treturn `{{.key}} cannot be greater than {{.y}}`\n}\n\nfunc (l DefaultLocale) KeyItemsMustBeOfType() string {\n\treturn `{{.key}} items must be {{.type}}`\n}\n\nfunc (l DefaultLocale) KeyItemsMustBeUnique() string {\n\treturn `{{.key}} items must be unique`\n}\n\nfunc (l DefaultLocale) ReferenceMustBeCanonical() string {\n\treturn `Reference {{.reference}} must be canonical`\n}\n\nfunc (l DefaultLocale) NotAValidType() string {\n\treturn `has a primitive type that is NOT VALID -- given: {{.given}} Expected valid values are:{{.expected}}`\n}\n\nfunc (l DefaultLocale) Duplicated() string {\n\treturn `{{.type}} type is duplicated`\n}\n\nfunc (l DefaultLocale) HttpBadStatus() string {\n\treturn `Could not read schema from HTTP, response status is {{.status}}`\n}\n\n// Replacement options: field, description, context, value\nfunc (l DefaultLocale) ErrorFormat() string {\n\treturn `{{.field}}: {{.description}}`\n}\n\n//Parse error\nfunc (l DefaultLocale) ParseError() string {\n\treturn `Expected: %expected%, given: Invalid JSON`\n}\n\nconst (\n\tSTRING_NUMBER                     = \"number\"\n\tSTRING_ARRAY_OF_STRINGS           = \"array of strings\"\n\tSTRING_ARRAY_OF_SCHEMAS           = \"array of schemas\"\n\tSTRING_SCHEMA                     = \"schema\"\n\tSTRING_SCHEMA_OR_ARRAY_OF_STRINGS = \"schema or array of strings\"\n\tSTRING_PROPERTIES                 = \"properties\"\n\tSTRING_DEPENDENCY                 = \"dependency\"\n\tSTRING_PROPERTY                   = \"property\"\n\tSTRING_UNDEFINED                  = \"undefined\"\n\tSTRING_CONTEXT_ROOT               = \"(root)\"\n\tSTRING_ROOT_SCHEMA_PROPERTY       = \"(root)\"\n)\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/result.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Result and ResultError implementations.\n//\n// created          01-01-2015\n\npackage gojsonschema\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype (\n\t// ErrorDetails is a map of details specific to each error.\n\t// While the values will vary, every error will contain a \"field\" value\n\tErrorDetails map[string]interface{}\n\n\t// ResultError is the interface that library errors must implement\n\tResultError interface {\n\t\tField() string\n\t\tSetType(string)\n\t\tType() string\n\t\tSetContext(*jsonContext)\n\t\tContext() *jsonContext\n\t\tSetDescription(string)\n\t\tDescription() string\n\t\tSetValue(interface{})\n\t\tValue() interface{}\n\t\tSetDetails(ErrorDetails)\n\t\tDetails() ErrorDetails\n\t\tString() string\n\t}\n\n\t// ResultErrorFields holds the fields for each ResultError implementation.\n\t// ResultErrorFields implements the ResultError interface, so custom errors\n\t// can be defined by just embedding this type\n\tResultErrorFields struct {\n\t\terrorType   string       // A string with the type of error (i.e. invalid_type)\n\t\tcontext     *jsonContext // Tree like notation of the part that failed the validation. ex (root).a.b ...\n\t\tdescription string       // A human readable error message\n\t\tvalue       interface{}  // Value given by the JSON file that is the source of the error\n\t\tdetails     ErrorDetails\n\t}\n\n\tResult struct {\n\t\terrors []ResultError\n\t\t// Scores how well the validation matched. Useful in generating\n\t\t// better error messages for anyOf and oneOf.\n\t\tscore int\n\t}\n)\n\n// Field outputs the field name without the root context\n// i.e. firstName or person.firstName instead of (root).firstName or (root).person.firstName\nfunc (v *ResultErrorFields) Field() string {\n\tif p, ok := v.Details()[\"property\"]; ok {\n\t\tif str, isString := p.(string); isString {\n\t\t\treturn str\n\t\t}\n\t}\n\n\treturn strings.TrimPrefix(v.context.String(), STRING_ROOT_SCHEMA_PROPERTY+\".\")\n}\n\nfunc (v *ResultErrorFields) SetType(errorType string) {\n\tv.errorType = errorType\n}\n\nfunc (v *ResultErrorFields) Type() string {\n\treturn v.errorType\n}\n\nfunc (v *ResultErrorFields) SetContext(context *jsonContext) {\n\tv.context = context\n}\n\nfunc (v *ResultErrorFields) Context() *jsonContext {\n\treturn v.context\n}\n\nfunc (v *ResultErrorFields) SetDescription(description string) {\n\tv.description = description\n}\n\nfunc (v *ResultErrorFields) Description() string {\n\treturn v.description\n}\n\nfunc (v *ResultErrorFields) SetValue(value interface{}) {\n\tv.value = value\n}\n\nfunc (v *ResultErrorFields) Value() interface{} {\n\treturn v.value\n}\n\nfunc (v *ResultErrorFields) SetDetails(details ErrorDetails) {\n\tv.details = details\n}\n\nfunc (v *ResultErrorFields) Details() ErrorDetails {\n\treturn v.details\n}\n\nfunc (v ResultErrorFields) String() string {\n\t// as a fallback, the value is displayed go style\n\tvalueString := fmt.Sprintf(\"%v\", v.value)\n\n\t// marshal the go value value to json\n\tif v.value == nil {\n\t\tvalueString = TYPE_NULL\n\t} else {\n\t\tif vs, err := marshalToJsonString(v.value); err == nil {\n\t\t\tif vs == nil {\n\t\t\t\tvalueString = TYPE_NULL\n\t\t\t} else {\n\t\t\t\tvalueString = *vs\n\t\t\t}\n\t\t}\n\t}\n\n\treturn formatErrorDescription(Locale.ErrorFormat(), ErrorDetails{\n\t\t\"context\":     v.context.String(),\n\t\t\"description\": v.description,\n\t\t\"value\":       valueString,\n\t\t\"field\":       v.Field(),\n\t})\n}\n\nfunc (v *Result) Valid() bool {\n\treturn len(v.errors) == 0\n}\n\nfunc (v *Result) Errors() []ResultError {\n\treturn v.errors\n}\n\nfunc (v *Result) addError(err ResultError, context *jsonContext, value interface{}, details ErrorDetails) {\n\tnewError(err, context, value, Locale, details)\n\tv.errors = append(v.errors, err)\n\tv.score -= 2 // results in a net -1 when added to the +1 we get at the end of the validation function\n}\n\n// Used to copy errors from a sub-schema to the main one\nfunc (v *Result) mergeErrors(otherResult *Result) {\n\tv.errors = append(v.errors, otherResult.Errors()...)\n\tv.score += otherResult.score\n}\n\nfunc (v *Result) incrementScore() {\n\tv.score++\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/schema.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Defines Schema, the main entry to every subSchema.\n//                  Contains the parsing logic and error checking.\n//\n// created          26-02-2013\n\npackage gojsonschema\n\nimport (\n\t//\t\"encoding/json\"\n\t\"errors\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"text/template\"\n\n\t\"github.com/xeipuuv/gojsonreference\"\n)\n\nvar (\n\t// Locale is the default locale to use\n\t// Library users can overwrite with their own implementation\n\tLocale locale = DefaultLocale{}\n\n\t// ErrorTemplateFuncs allows you to define custom template funcs for use in localization.\n\tErrorTemplateFuncs template.FuncMap\n)\n\nfunc NewSchema(l JSONLoader) (*Schema, error) {\n\tref, err := l.JsonReference()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\td := Schema{}\n\td.pool = newSchemaPool(l.LoaderFactory())\n\td.documentReference = ref\n\td.referencePool = newSchemaReferencePool()\n\n\tvar doc interface{}\n\tif ref.String() != \"\" {\n\t\t// Get document from schema pool\n\t\tspd, err := d.pool.GetDocument(d.documentReference)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdoc = spd.Document\n\t} else {\n\t\t// Load JSON directly\n\t\tdoc, err = l.LoadJSON()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td.pool.SetStandaloneDocument(doc)\n\t}\n\n\terr = d.parse(doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &d, nil\n}\n\ntype Schema struct {\n\tdocumentReference gojsonreference.JsonReference\n\trootSchema        *subSchema\n\tpool              *schemaPool\n\treferencePool     *schemaReferencePool\n}\n\nfunc (d *Schema) parse(document interface{}) error {\n\td.rootSchema = &subSchema{property: STRING_ROOT_SCHEMA_PROPERTY}\n\treturn d.parseSchema(document, d.rootSchema)\n}\n\nfunc (d *Schema) SetRootSchemaName(name string) {\n\td.rootSchema.property = name\n}\n\n// Parses a subSchema\n//\n// Pretty long function ( sorry :) )... but pretty straight forward, repetitive and boring\n// Not much magic involved here, most of the job is to validate the key names and their values,\n// then the values are copied into subSchema struct\n//\nfunc (d *Schema) parseSchema(documentNode interface{}, currentSchema *subSchema) error {\n\n\tif !isKind(documentNode, reflect.Map) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.ParseError(),\n\t\t\tErrorDetails{\n\t\t\t\t\"expected\": STRING_SCHEMA,\n\t\t\t},\n\t\t))\n\t}\n\n\tm := documentNode.(map[string]interface{})\n\n\tif currentSchema == d.rootSchema {\n\t\tcurrentSchema.ref = &d.documentReference\n\t}\n\n\t// $subSchema\n\tif existsMapKey(m, KEY_SCHEMA) {\n\t\tif !isKind(m[KEY_SCHEMA], reflect.String) {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": TYPE_STRING,\n\t\t\t\t\t\"given\":    KEY_SCHEMA,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t\tschemaRef := m[KEY_SCHEMA].(string)\n\t\tschemaReference, err := gojsonreference.NewJsonReference(schemaRef)\n\t\tcurrentSchema.subSchema = &schemaReference\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// $ref\n\tif existsMapKey(m, KEY_REF) && !isKind(m[KEY_REF], reflect.String) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.InvalidType(),\n\t\t\tErrorDetails{\n\t\t\t\t\"expected\": TYPE_STRING,\n\t\t\t\t\"given\":    KEY_REF,\n\t\t\t},\n\t\t))\n\t}\n\tif k, ok := m[KEY_REF].(string); ok {\n\n\t\tjsonReference, err := gojsonreference.NewJsonReference(k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif jsonReference.HasFullUrl {\n\t\t\tcurrentSchema.ref = &jsonReference\n\t\t} else {\n\t\t\tinheritedReference, err := currentSchema.ref.Inherits(jsonReference)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tcurrentSchema.ref = inheritedReference\n\t\t}\n\n\t\tif sch, ok := d.referencePool.Get(currentSchema.ref.String() + k); ok {\n\t\t\tcurrentSchema.refSchema = sch\n\n\t\t} else {\n\t\t\terr := d.parseReference(documentNode, currentSchema, k)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// definitions\n\tif existsMapKey(m, KEY_DEFINITIONS) {\n\t\tif isKind(m[KEY_DEFINITIONS], reflect.Map) {\n\t\t\tcurrentSchema.definitions = make(map[string]*subSchema)\n\t\t\tfor dk, dv := range m[KEY_DEFINITIONS].(map[string]interface{}) {\n\t\t\t\tif isKind(dv, reflect.Map) {\n\t\t\t\t\tnewSchema := &subSchema{property: KEY_DEFINITIONS, parent: currentSchema, ref: currentSchema.ref}\n\t\t\t\t\tcurrentSchema.definitions[dk] = newSchema\n\t\t\t\t\terr := d.parseSchema(dv, newSchema)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn errors.New(err.Error())\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\tLocale.InvalidType(),\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": STRING_ARRAY_OF_SCHEMAS,\n\t\t\t\t\t\t\t\"given\":    KEY_DEFINITIONS,\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} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": STRING_ARRAY_OF_SCHEMAS,\n\t\t\t\t\t\"given\":    KEY_DEFINITIONS,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\n\t}\n\n\t// id\n\tif existsMapKey(m, KEY_ID) && !isKind(m[KEY_ID], reflect.String) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.InvalidType(),\n\t\t\tErrorDetails{\n\t\t\t\t\"expected\": TYPE_STRING,\n\t\t\t\t\"given\":    KEY_ID,\n\t\t\t},\n\t\t))\n\t}\n\tif k, ok := m[KEY_ID].(string); ok {\n\t\tcurrentSchema.id = &k\n\t}\n\n\t// title\n\tif existsMapKey(m, KEY_TITLE) && !isKind(m[KEY_TITLE], reflect.String) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.InvalidType(),\n\t\t\tErrorDetails{\n\t\t\t\t\"expected\": TYPE_STRING,\n\t\t\t\t\"given\":    KEY_TITLE,\n\t\t\t},\n\t\t))\n\t}\n\tif k, ok := m[KEY_TITLE].(string); ok {\n\t\tcurrentSchema.title = &k\n\t}\n\n\t// description\n\tif existsMapKey(m, KEY_DESCRIPTION) && !isKind(m[KEY_DESCRIPTION], reflect.String) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.InvalidType(),\n\t\t\tErrorDetails{\n\t\t\t\t\"expected\": TYPE_STRING,\n\t\t\t\t\"given\":    KEY_DESCRIPTION,\n\t\t\t},\n\t\t))\n\t}\n\tif k, ok := m[KEY_DESCRIPTION].(string); ok {\n\t\tcurrentSchema.description = &k\n\t}\n\n\t// type\n\tif existsMapKey(m, KEY_TYPE) {\n\t\tif isKind(m[KEY_TYPE], reflect.String) {\n\t\t\tif k, ok := m[KEY_TYPE].(string); ok {\n\t\t\t\terr := currentSchema.types.Add(k)\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} else {\n\t\t\tif isKind(m[KEY_TYPE], reflect.Slice) {\n\t\t\t\tarrayOfTypes := m[KEY_TYPE].([]interface{})\n\t\t\t\tfor _, typeInArray := range arrayOfTypes {\n\t\t\t\t\tif reflect.ValueOf(typeInArray).Kind() != reflect.String {\n\t\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\t\tLocale.InvalidType(),\n\t\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\t\"expected\": TYPE_STRING + \"/\" + STRING_ARRAY_OF_STRINGS,\n\t\t\t\t\t\t\t\t\"given\":    KEY_TYPE,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentSchema.types.Add(typeInArray.(string))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\tLocale.InvalidType(),\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"expected\": TYPE_STRING + \"/\" + STRING_ARRAY_OF_STRINGS,\n\t\t\t\t\t\t\"given\":    KEY_TYPE,\n\t\t\t\t\t},\n\t\t\t\t))\n\t\t\t}\n\t\t}\n\t}\n\n\t// properties\n\tif existsMapKey(m, KEY_PROPERTIES) {\n\t\terr := d.parseProperties(m[KEY_PROPERTIES], currentSchema)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// additionalProperties\n\tif existsMapKey(m, KEY_ADDITIONAL_PROPERTIES) {\n\t\tif isKind(m[KEY_ADDITIONAL_PROPERTIES], reflect.Bool) {\n\t\t\tcurrentSchema.additionalProperties = m[KEY_ADDITIONAL_PROPERTIES].(bool)\n\t\t} else if isKind(m[KEY_ADDITIONAL_PROPERTIES], reflect.Map) {\n\t\t\tnewSchema := &subSchema{property: KEY_ADDITIONAL_PROPERTIES, parent: currentSchema, ref: currentSchema.ref}\n\t\t\tcurrentSchema.additionalProperties = newSchema\n\t\t\terr := d.parseSchema(m[KEY_ADDITIONAL_PROPERTIES], newSchema)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(err.Error())\n\t\t\t}\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": TYPE_BOOLEAN + \"/\" + STRING_SCHEMA,\n\t\t\t\t\t\"given\":    KEY_ADDITIONAL_PROPERTIES,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t}\n\n\t// patternProperties\n\tif existsMapKey(m, KEY_PATTERN_PROPERTIES) {\n\t\tif isKind(m[KEY_PATTERN_PROPERTIES], reflect.Map) {\n\t\t\tpatternPropertiesMap := m[KEY_PATTERN_PROPERTIES].(map[string]interface{})\n\t\t\tif len(patternPropertiesMap) > 0 {\n\t\t\t\tcurrentSchema.patternProperties = make(map[string]*subSchema)\n\t\t\t\tfor k, v := range patternPropertiesMap {\n\t\t\t\t\t_, err := regexp.MatchString(k, \"\")\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\t\tLocale.RegexPattern(),\n\t\t\t\t\t\t\tErrorDetails{\"pattern\": k},\n\t\t\t\t\t\t))\n\t\t\t\t\t}\n\t\t\t\t\tnewSchema := &subSchema{property: k, parent: currentSchema, ref: currentSchema.ref}\n\t\t\t\t\terr = d.parseSchema(v, newSchema)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn errors.New(err.Error())\n\t\t\t\t\t}\n\t\t\t\t\tcurrentSchema.patternProperties[k] = newSchema\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": STRING_SCHEMA,\n\t\t\t\t\t\"given\":    KEY_PATTERN_PROPERTIES,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t}\n\n\t// dependencies\n\tif existsMapKey(m, KEY_DEPENDENCIES) {\n\t\terr := d.parseDependencies(m[KEY_DEPENDENCIES], currentSchema)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// items\n\tif existsMapKey(m, KEY_ITEMS) {\n\t\tif isKind(m[KEY_ITEMS], reflect.Slice) {\n\t\t\tfor _, itemElement := range m[KEY_ITEMS].([]interface{}) {\n\t\t\t\tif isKind(itemElement, reflect.Map) {\n\t\t\t\t\tnewSchema := &subSchema{parent: currentSchema, property: KEY_ITEMS}\n\t\t\t\t\tnewSchema.ref = currentSchema.ref\n\t\t\t\t\tcurrentSchema.AddItemsChild(newSchema)\n\t\t\t\t\terr := d.parseSchema(itemElement, newSchema)\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} else {\n\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\tLocale.InvalidType(),\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": STRING_SCHEMA + \"/\" + STRING_ARRAY_OF_SCHEMAS,\n\t\t\t\t\t\t\t\"given\":    KEY_ITEMS,\n\t\t\t\t\t\t},\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t\tcurrentSchema.itemsChildrenIsSingleSchema = false\n\t\t\t}\n\t\t} else if isKind(m[KEY_ITEMS], reflect.Map) {\n\t\t\tnewSchema := &subSchema{parent: currentSchema, property: KEY_ITEMS}\n\t\t\tnewSchema.ref = currentSchema.ref\n\t\t\tcurrentSchema.AddItemsChild(newSchema)\n\t\t\terr := d.parseSchema(m[KEY_ITEMS], newSchema)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcurrentSchema.itemsChildrenIsSingleSchema = true\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": STRING_SCHEMA + \"/\" + STRING_ARRAY_OF_SCHEMAS,\n\t\t\t\t\t\"given\":    KEY_ITEMS,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t}\n\n\t// additionalItems\n\tif existsMapKey(m, KEY_ADDITIONAL_ITEMS) {\n\t\tif isKind(m[KEY_ADDITIONAL_ITEMS], reflect.Bool) {\n\t\t\tcurrentSchema.additionalItems = m[KEY_ADDITIONAL_ITEMS].(bool)\n\t\t} else if isKind(m[KEY_ADDITIONAL_ITEMS], reflect.Map) {\n\t\t\tnewSchema := &subSchema{property: KEY_ADDITIONAL_ITEMS, parent: currentSchema, ref: currentSchema.ref}\n\t\t\tcurrentSchema.additionalItems = newSchema\n\t\t\terr := d.parseSchema(m[KEY_ADDITIONAL_ITEMS], newSchema)\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(err.Error())\n\t\t\t}\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": TYPE_BOOLEAN + \"/\" + STRING_SCHEMA,\n\t\t\t\t\t\"given\":    KEY_ADDITIONAL_ITEMS,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : number / integer\n\n\tif existsMapKey(m, KEY_MULTIPLE_OF) {\n\t\tmultipleOfValue := mustBeNumber(m[KEY_MULTIPLE_OF])\n\t\tif multipleOfValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.InvalidType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": STRING_NUMBER,\n\t\t\t\t\t\"given\":    KEY_MULTIPLE_OF,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\t\tif *multipleOfValue <= 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.GreaterThanZero(),\n\t\t\t\tErrorDetails{\"number\": KEY_MULTIPLE_OF},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.multipleOf = multipleOfValue\n\t}\n\n\tif existsMapKey(m, KEY_MINIMUM) {\n\t\tminimumValue := mustBeNumber(m[KEY_MINIMUM])\n\t\tif minimumValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_MINIMUM, \"y\": STRING_NUMBER},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.minimum = minimumValue\n\t}\n\n\tif existsMapKey(m, KEY_EXCLUSIVE_MINIMUM) {\n\t\tif isKind(m[KEY_EXCLUSIVE_MINIMUM], reflect.Bool) {\n\t\t\tif currentSchema.minimum == nil {\n\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\tLocale.CannotBeUsedWithout(),\n\t\t\t\t\tErrorDetails{\"x\": KEY_EXCLUSIVE_MINIMUM, \"y\": KEY_MINIMUM},\n\t\t\t\t))\n\t\t\t}\n\t\t\texclusiveMinimumValue := m[KEY_EXCLUSIVE_MINIMUM].(bool)\n\t\t\tcurrentSchema.exclusiveMinimum = exclusiveMinimumValue\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_EXCLUSIVE_MINIMUM, \"y\": TYPE_BOOLEAN},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_MAXIMUM) {\n\t\tmaximumValue := mustBeNumber(m[KEY_MAXIMUM])\n\t\tif maximumValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_MAXIMUM, \"y\": STRING_NUMBER},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.maximum = maximumValue\n\t}\n\n\tif existsMapKey(m, KEY_EXCLUSIVE_MAXIMUM) {\n\t\tif isKind(m[KEY_EXCLUSIVE_MAXIMUM], reflect.Bool) {\n\t\t\tif currentSchema.maximum == nil {\n\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\tLocale.CannotBeUsedWithout(),\n\t\t\t\t\tErrorDetails{\"x\": KEY_EXCLUSIVE_MAXIMUM, \"y\": KEY_MAXIMUM},\n\t\t\t\t))\n\t\t\t}\n\t\t\texclusiveMaximumValue := m[KEY_EXCLUSIVE_MAXIMUM].(bool)\n\t\t\tcurrentSchema.exclusiveMaximum = exclusiveMaximumValue\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_EXCLUSIVE_MAXIMUM, \"y\": STRING_NUMBER},\n\t\t\t))\n\t\t}\n\t}\n\n\tif currentSchema.minimum != nil && currentSchema.maximum != nil {\n\t\tif *currentSchema.minimum > *currentSchema.maximum {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.CannotBeGT(),\n\t\t\t\tErrorDetails{\"x\": KEY_MINIMUM, \"y\": KEY_MAXIMUM},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : string\n\n\tif existsMapKey(m, KEY_MIN_LENGTH) {\n\t\tminLengthIntegerValue := mustBeInteger(m[KEY_MIN_LENGTH])\n\t\tif minLengthIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MIN_LENGTH, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *minLengthIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MIN_LENGTH},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.minLength = minLengthIntegerValue\n\t}\n\n\tif existsMapKey(m, KEY_MAX_LENGTH) {\n\t\tmaxLengthIntegerValue := mustBeInteger(m[KEY_MAX_LENGTH])\n\t\tif maxLengthIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MAX_LENGTH, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *maxLengthIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MAX_LENGTH},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.maxLength = maxLengthIntegerValue\n\t}\n\n\tif currentSchema.minLength != nil && currentSchema.maxLength != nil {\n\t\tif *currentSchema.minLength > *currentSchema.maxLength {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.CannotBeGT(),\n\t\t\t\tErrorDetails{\"x\": KEY_MIN_LENGTH, \"y\": KEY_MAX_LENGTH},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_PATTERN) {\n\t\tif isKind(m[KEY_PATTERN], reflect.String) {\n\t\t\tregexpObject, err := regexp.Compile(m[KEY_PATTERN].(string))\n\t\t\tif err != nil {\n\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\tLocale.MustBeValidRegex(),\n\t\t\t\t\tErrorDetails{\"key\": KEY_PATTERN},\n\t\t\t\t))\n\t\t\t}\n\t\t\tcurrentSchema.pattern = regexpObject\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_PATTERN, \"y\": TYPE_STRING},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_FORMAT) {\n\t\tformatString, ok := m[KEY_FORMAT].(string)\n\t\tif ok && FormatCheckers.Has(formatString) {\n\t\t\tcurrentSchema.format = formatString\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeValidFormat(),\n\t\t\t\tErrorDetails{\"key\": KEY_FORMAT, \"given\": m[KEY_FORMAT]},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : object\n\n\tif existsMapKey(m, KEY_MIN_PROPERTIES) {\n\t\tminPropertiesIntegerValue := mustBeInteger(m[KEY_MIN_PROPERTIES])\n\t\tif minPropertiesIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MIN_PROPERTIES, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *minPropertiesIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MIN_PROPERTIES},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.minProperties = minPropertiesIntegerValue\n\t}\n\n\tif existsMapKey(m, KEY_MAX_PROPERTIES) {\n\t\tmaxPropertiesIntegerValue := mustBeInteger(m[KEY_MAX_PROPERTIES])\n\t\tif maxPropertiesIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MAX_PROPERTIES, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *maxPropertiesIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MAX_PROPERTIES},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.maxProperties = maxPropertiesIntegerValue\n\t}\n\n\tif currentSchema.minProperties != nil && currentSchema.maxProperties != nil {\n\t\tif *currentSchema.minProperties > *currentSchema.maxProperties {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.KeyCannotBeGreaterThan(),\n\t\t\t\tErrorDetails{\"key\": KEY_MIN_PROPERTIES, \"y\": KEY_MAX_PROPERTIES},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_REQUIRED) {\n\t\tif isKind(m[KEY_REQUIRED], reflect.Slice) {\n\t\t\trequiredValues := m[KEY_REQUIRED].([]interface{})\n\t\t\tfor _, requiredValue := range requiredValues {\n\t\t\t\tif isKind(requiredValue, reflect.String) {\n\t\t\t\t\terr := currentSchema.AddRequired(requiredValue.(string))\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} else {\n\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\tLocale.KeyItemsMustBeOfType(),\n\t\t\t\t\t\tErrorDetails{\"key\": KEY_REQUIRED, \"type\": TYPE_STRING},\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_REQUIRED, \"y\": TYPE_ARRAY},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : array\n\n\tif existsMapKey(m, KEY_MIN_ITEMS) {\n\t\tminItemsIntegerValue := mustBeInteger(m[KEY_MIN_ITEMS])\n\t\tif minItemsIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MIN_ITEMS, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *minItemsIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MIN_ITEMS},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.minItems = minItemsIntegerValue\n\t}\n\n\tif existsMapKey(m, KEY_MAX_ITEMS) {\n\t\tmaxItemsIntegerValue := mustBeInteger(m[KEY_MAX_ITEMS])\n\t\tif maxItemsIntegerValue == nil {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_MAX_ITEMS, \"y\": TYPE_INTEGER},\n\t\t\t))\n\t\t}\n\t\tif *maxItemsIntegerValue < 0 {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeGTEZero(),\n\t\t\t\tErrorDetails{\"key\": KEY_MAX_ITEMS},\n\t\t\t))\n\t\t}\n\t\tcurrentSchema.maxItems = maxItemsIntegerValue\n\t}\n\n\tif existsMapKey(m, KEY_UNIQUE_ITEMS) {\n\t\tif isKind(m[KEY_UNIQUE_ITEMS], reflect.Bool) {\n\t\t\tcurrentSchema.uniqueItems = m[KEY_UNIQUE_ITEMS].(bool)\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfA(),\n\t\t\t\tErrorDetails{\"x\": KEY_UNIQUE_ITEMS, \"y\": TYPE_BOOLEAN},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : all\n\n\tif existsMapKey(m, KEY_ENUM) {\n\t\tif isKind(m[KEY_ENUM], reflect.Slice) {\n\t\t\tfor _, v := range m[KEY_ENUM].([]interface{}) {\n\t\t\t\terr := currentSchema.AddEnum(v)\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} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_ENUM, \"y\": TYPE_ARRAY},\n\t\t\t))\n\t\t}\n\t}\n\n\t// validation : subSchema\n\n\tif existsMapKey(m, KEY_ONE_OF) {\n\t\tif isKind(m[KEY_ONE_OF], reflect.Slice) {\n\t\t\tfor _, v := range m[KEY_ONE_OF].([]interface{}) {\n\t\t\t\tnewSchema := &subSchema{property: KEY_ONE_OF, parent: currentSchema, ref: currentSchema.ref}\n\t\t\t\tcurrentSchema.AddOneOf(newSchema)\n\t\t\t\terr := d.parseSchema(v, newSchema)\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} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_ONE_OF, \"y\": TYPE_ARRAY},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_ANY_OF) {\n\t\tif isKind(m[KEY_ANY_OF], reflect.Slice) {\n\t\t\tfor _, v := range m[KEY_ANY_OF].([]interface{}) {\n\t\t\t\tnewSchema := &subSchema{property: KEY_ANY_OF, parent: currentSchema, ref: currentSchema.ref}\n\t\t\t\tcurrentSchema.AddAnyOf(newSchema)\n\t\t\t\terr := d.parseSchema(v, newSchema)\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} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_ANY_OF, \"y\": TYPE_ARRAY},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_ALL_OF) {\n\t\tif isKind(m[KEY_ALL_OF], reflect.Slice) {\n\t\t\tfor _, v := range m[KEY_ALL_OF].([]interface{}) {\n\t\t\t\tnewSchema := &subSchema{property: KEY_ALL_OF, parent: currentSchema, ref: currentSchema.ref}\n\t\t\t\tcurrentSchema.AddAllOf(newSchema)\n\t\t\t\terr := d.parseSchema(v, newSchema)\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} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_ANY_OF, \"y\": TYPE_ARRAY},\n\t\t\t))\n\t\t}\n\t}\n\n\tif existsMapKey(m, KEY_NOT) {\n\t\tif isKind(m[KEY_NOT], reflect.Map) {\n\t\t\tnewSchema := &subSchema{property: KEY_NOT, parent: currentSchema, ref: currentSchema.ref}\n\t\t\tcurrentSchema.SetNot(newSchema)\n\t\t\terr := d.parseSchema(m[KEY_NOT], newSchema)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfAn(),\n\t\t\t\tErrorDetails{\"x\": KEY_NOT, \"y\": TYPE_OBJECT},\n\t\t\t))\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Schema) parseReference(documentNode interface{}, currentSchema *subSchema, reference string) error {\n\tvar refdDocumentNode interface{}\n\tjsonPointer := currentSchema.ref.GetPointer()\n\tstandaloneDocument := d.pool.GetStandaloneDocument()\n\n\tif standaloneDocument != nil {\n\n\t\tvar err error\n\t\trefdDocumentNode, _, err = jsonPointer.Get(standaloneDocument)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t} else {\n\t\tdsp, err := d.pool.GetDocument(*currentSchema.ref)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trefdDocumentNode, _, err = jsonPointer.Get(dsp.Document)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\n\tif !isKind(refdDocumentNode, reflect.Map) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.MustBeOfType(),\n\t\t\tErrorDetails{\"key\": STRING_SCHEMA, \"type\": TYPE_OBJECT},\n\t\t))\n\t}\n\n\t// returns the loaded referenced subSchema for the caller to update its current subSchema\n\tnewSchemaDocument := refdDocumentNode.(map[string]interface{})\n\tnewSchema := &subSchema{property: KEY_REF, parent: currentSchema, ref: currentSchema.ref}\n\td.referencePool.Add(currentSchema.ref.String()+reference, newSchema)\n\n\terr := d.parseSchema(newSchemaDocument, newSchema)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcurrentSchema.refSchema = newSchema\n\n\treturn nil\n\n}\n\nfunc (d *Schema) parseProperties(documentNode interface{}, currentSchema *subSchema) error {\n\n\tif !isKind(documentNode, reflect.Map) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.MustBeOfType(),\n\t\t\tErrorDetails{\"key\": STRING_PROPERTIES, \"type\": TYPE_OBJECT},\n\t\t))\n\t}\n\n\tm := documentNode.(map[string]interface{})\n\tfor k := range m {\n\t\tschemaProperty := k\n\t\tnewSchema := &subSchema{property: schemaProperty, parent: currentSchema, ref: currentSchema.ref}\n\t\tcurrentSchema.AddPropertiesChild(newSchema)\n\t\terr := d.parseSchema(m[k], newSchema)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *Schema) parseDependencies(documentNode interface{}, currentSchema *subSchema) error {\n\n\tif !isKind(documentNode, reflect.Map) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.MustBeOfType(),\n\t\t\tErrorDetails{\"key\": KEY_DEPENDENCIES, \"type\": TYPE_OBJECT},\n\t\t))\n\t}\n\n\tm := documentNode.(map[string]interface{})\n\tcurrentSchema.dependencies = make(map[string]interface{})\n\n\tfor k := range m {\n\t\tswitch reflect.ValueOf(m[k]).Kind() {\n\n\t\tcase reflect.Slice:\n\t\t\tvalues := m[k].([]interface{})\n\t\t\tvar valuesToRegister []string\n\n\t\t\tfor _, value := range values {\n\t\t\t\tif !isKind(value, reflect.String) {\n\t\t\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\t\t\tLocale.MustBeOfType(),\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"key\":  STRING_DEPENDENCY,\n\t\t\t\t\t\t\t\"type\": STRING_SCHEMA_OR_ARRAY_OF_STRINGS,\n\t\t\t\t\t\t},\n\t\t\t\t\t))\n\t\t\t\t} else {\n\t\t\t\t\tvaluesToRegister = append(valuesToRegister, value.(string))\n\t\t\t\t}\n\t\t\t\tcurrentSchema.dependencies[k] = valuesToRegister\n\t\t\t}\n\n\t\tcase reflect.Map:\n\t\t\tdepSchema := &subSchema{property: k, parent: currentSchema, ref: currentSchema.ref}\n\t\t\terr := d.parseSchema(m[k], depSchema)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcurrentSchema.dependencies[k] = depSchema\n\n\t\tdefault:\n\t\t\treturn errors.New(formatErrorDescription(\n\t\t\t\tLocale.MustBeOfType(),\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"key\":  STRING_DEPENDENCY,\n\t\t\t\t\t\"type\": STRING_SCHEMA_OR_ARRAY_OF_STRINGS,\n\t\t\t\t},\n\t\t\t))\n\t\t}\n\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/schemaPool.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description\t\tDefines resources pooling.\n//                  Eases referencing and avoids downloading the same resource twice.\n//\n// created          26-02-2013\n\npackage gojsonschema\n\nimport (\n\t\"errors\"\n\n\t\"github.com/xeipuuv/gojsonreference\"\n)\n\ntype schemaPoolDocument struct {\n\tDocument interface{}\n}\n\ntype schemaPool struct {\n\tschemaPoolDocuments map[string]*schemaPoolDocument\n\tstandaloneDocument  interface{}\n\tjsonLoaderFactory   JSONLoaderFactory\n}\n\nfunc newSchemaPool(f JSONLoaderFactory) *schemaPool {\n\n\tp := &schemaPool{}\n\tp.schemaPoolDocuments = make(map[string]*schemaPoolDocument)\n\tp.standaloneDocument = nil\n\tp.jsonLoaderFactory = f\n\n\treturn p\n}\n\nfunc (p *schemaPool) SetStandaloneDocument(document interface{}) {\n\tp.standaloneDocument = document\n}\n\nfunc (p *schemaPool) GetStandaloneDocument() (document interface{}) {\n\treturn p.standaloneDocument\n}\n\nfunc (p *schemaPool) GetDocument(reference gojsonreference.JsonReference) (*schemaPoolDocument, error) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"Get Document ( %s )\", reference.String())\n\t}\n\n\tvar err error\n\n\t// It is not possible to load anything that is not canonical...\n\tif !reference.IsCanonical() {\n\t\treturn nil, errors.New(formatErrorDescription(\n\t\t\tLocale.ReferenceMustBeCanonical(),\n\t\t\tErrorDetails{\"reference\": reference},\n\t\t))\n\t}\n\n\trefToUrl := reference\n\trefToUrl.GetUrl().Fragment = \"\"\n\n\tvar spd *schemaPoolDocument\n\n\t// Try to find the requested document in the pool\n\tfor k := range p.schemaPoolDocuments {\n\t\tif k == refToUrl.String() {\n\t\t\tspd = p.schemaPoolDocuments[k]\n\t\t}\n\t}\n\n\tif spd != nil {\n\t\tif internalLogEnabled {\n\t\t\tinternalLog(\" From pool\")\n\t\t}\n\t\treturn spd, nil\n\t}\n\n\tjsonReferenceLoader := p.jsonLoaderFactory.New(reference.String())\n\tdocument, err := jsonReferenceLoader.LoadJSON()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tspd = &schemaPoolDocument{Document: document}\n\t// add the document to the pool for potential later use\n\tp.schemaPoolDocuments[refToUrl.String()] = spd\n\n\treturn spd, nil\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/schemaReferencePool.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Pool of referenced schemas.\n//\n// created          25-06-2013\n\npackage gojsonschema\n\nimport (\n\t\"fmt\"\n)\n\ntype schemaReferencePool struct {\n\tdocuments map[string]*subSchema\n}\n\nfunc newSchemaReferencePool() *schemaReferencePool {\n\n\tp := &schemaReferencePool{}\n\tp.documents = make(map[string]*subSchema)\n\n\treturn p\n}\n\nfunc (p *schemaReferencePool) Get(ref string) (r *subSchema, o bool) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(fmt.Sprintf(\"Schema Reference ( %s )\", ref))\n\t}\n\n\tif sch, ok := p.documents[ref]; ok {\n\t\tif internalLogEnabled {\n\t\t\tinternalLog(fmt.Sprintf(\" From pool\"))\n\t\t}\n\t\treturn sch, true\n\t}\n\n\treturn nil, false\n}\n\nfunc (p *schemaReferencePool) Add(ref string, sch *subSchema) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(fmt.Sprintf(\"Add Schema Reference %s to pool\", ref))\n\t}\n\n\tp.documents[ref] = sch\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/schemaType.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Helper structure to handle schema types, and the combination of them.\n//\n// created          28-02-2013\n\npackage gojsonschema\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype jsonSchemaType struct {\n\ttypes []string\n}\n\n// Is the schema typed ? that is containing at least one type\n// When not typed, the schema does not need any type validation\nfunc (t *jsonSchemaType) IsTyped() bool {\n\treturn len(t.types) > 0\n}\n\nfunc (t *jsonSchemaType) Add(etype string) error {\n\n\tif !isStringInSlice(JSON_TYPES, etype) {\n\t\treturn errors.New(formatErrorDescription(Locale.NotAValidType(), ErrorDetails{\"given\": \"/\" + etype + \"/\", \"expected\": JSON_TYPES}))\n\t}\n\n\tif t.Contains(etype) {\n\t\treturn errors.New(formatErrorDescription(Locale.Duplicated(), ErrorDetails{\"type\": etype}))\n\t}\n\n\tt.types = append(t.types, etype)\n\n\treturn nil\n}\n\nfunc (t *jsonSchemaType) Contains(etype string) bool {\n\n\tfor _, v := range t.types {\n\t\tif v == etype {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (t *jsonSchemaType) String() string {\n\n\tif len(t.types) == 0 {\n\t\treturn STRING_UNDEFINED // should never happen\n\t}\n\n\t// Displayed as a list [type1,type2,...]\n\tif len(t.types) > 1 {\n\t\treturn fmt.Sprintf(\"[%s]\", strings.Join(t.types, \",\"))\n\t}\n\n\t// Only one type: name only\n\treturn t.types[0]\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/subSchema.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Defines the structure of a sub-subSchema.\n//                  A sub-subSchema can contain other sub-schemas.\n//\n// created          27-02-2013\n\npackage gojsonschema\n\nimport (\n\t\"errors\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/xeipuuv/gojsonreference\"\n)\n\nconst (\n\tKEY_SCHEMA                = \"$subSchema\"\n\tKEY_ID                    = \"$id\"\n\tKEY_REF                   = \"$ref\"\n\tKEY_TITLE                 = \"title\"\n\tKEY_DESCRIPTION           = \"description\"\n\tKEY_TYPE                  = \"type\"\n\tKEY_ITEMS                 = \"items\"\n\tKEY_ADDITIONAL_ITEMS      = \"additionalItems\"\n\tKEY_PROPERTIES            = \"properties\"\n\tKEY_PATTERN_PROPERTIES    = \"patternProperties\"\n\tKEY_ADDITIONAL_PROPERTIES = \"additionalProperties\"\n\tKEY_DEFINITIONS           = \"definitions\"\n\tKEY_MULTIPLE_OF           = \"multipleOf\"\n\tKEY_MINIMUM               = \"minimum\"\n\tKEY_MAXIMUM               = \"maximum\"\n\tKEY_EXCLUSIVE_MINIMUM     = \"exclusiveMinimum\"\n\tKEY_EXCLUSIVE_MAXIMUM     = \"exclusiveMaximum\"\n\tKEY_MIN_LENGTH            = \"minLength\"\n\tKEY_MAX_LENGTH            = \"maxLength\"\n\tKEY_PATTERN               = \"pattern\"\n\tKEY_FORMAT                = \"format\"\n\tKEY_MIN_PROPERTIES        = \"minProperties\"\n\tKEY_MAX_PROPERTIES        = \"maxProperties\"\n\tKEY_DEPENDENCIES          = \"dependencies\"\n\tKEY_REQUIRED              = \"required\"\n\tKEY_MIN_ITEMS             = \"minItems\"\n\tKEY_MAX_ITEMS             = \"maxItems\"\n\tKEY_UNIQUE_ITEMS          = \"uniqueItems\"\n\tKEY_ENUM                  = \"enum\"\n\tKEY_ONE_OF                = \"oneOf\"\n\tKEY_ANY_OF                = \"anyOf\"\n\tKEY_ALL_OF                = \"allOf\"\n\tKEY_NOT                   = \"not\"\n)\n\ntype subSchema struct {\n\n\t// basic subSchema meta properties\n\tid          *string\n\ttitle       *string\n\tdescription *string\n\n\tproperty string\n\n\t// Types associated with the subSchema\n\ttypes jsonSchemaType\n\n\t// Reference url\n\tref *gojsonreference.JsonReference\n\t// Schema referenced\n\trefSchema *subSchema\n\t// Json reference\n\tsubSchema *gojsonreference.JsonReference\n\n\t// hierarchy\n\tparent                      *subSchema\n\tdefinitions                 map[string]*subSchema\n\tdefinitionsChildren         []*subSchema\n\titemsChildren               []*subSchema\n\titemsChildrenIsSingleSchema bool\n\tpropertiesChildren          []*subSchema\n\n\t// validation : number / integer\n\tmultipleOf       *float64\n\tmaximum          *float64\n\texclusiveMaximum bool\n\tminimum          *float64\n\texclusiveMinimum bool\n\n\t// validation : string\n\tminLength *int\n\tmaxLength *int\n\tpattern   *regexp.Regexp\n\tformat    string\n\n\t// validation : object\n\tminProperties *int\n\tmaxProperties *int\n\trequired      []string\n\n\tdependencies         map[string]interface{}\n\tadditionalProperties interface{}\n\tpatternProperties    map[string]*subSchema\n\n\t// validation : array\n\tminItems    *int\n\tmaxItems    *int\n\tuniqueItems bool\n\n\tadditionalItems interface{}\n\n\t// validation : all\n\tenum []string\n\n\t// validation : subSchema\n\toneOf []*subSchema\n\tanyOf []*subSchema\n\tallOf []*subSchema\n\tnot   *subSchema\n}\n\nfunc (s *subSchema) AddEnum(i interface{}) error {\n\n\tis, err := marshalToJsonString(i)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif isStringInSlice(s.enum, *is) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.KeyItemsMustBeUnique(),\n\t\t\tErrorDetails{\"key\": KEY_ENUM},\n\t\t))\n\t}\n\n\ts.enum = append(s.enum, *is)\n\n\treturn nil\n}\n\nfunc (s *subSchema) ContainsEnum(i interface{}) (bool, error) {\n\n\tis, err := marshalToJsonString(i)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn isStringInSlice(s.enum, *is), nil\n}\n\nfunc (s *subSchema) AddOneOf(subSchema *subSchema) {\n\ts.oneOf = append(s.oneOf, subSchema)\n}\n\nfunc (s *subSchema) AddAllOf(subSchema *subSchema) {\n\ts.allOf = append(s.allOf, subSchema)\n}\n\nfunc (s *subSchema) AddAnyOf(subSchema *subSchema) {\n\ts.anyOf = append(s.anyOf, subSchema)\n}\n\nfunc (s *subSchema) SetNot(subSchema *subSchema) {\n\ts.not = subSchema\n}\n\nfunc (s *subSchema) AddRequired(value string) error {\n\n\tif isStringInSlice(s.required, value) {\n\t\treturn errors.New(formatErrorDescription(\n\t\t\tLocale.KeyItemsMustBeUnique(),\n\t\t\tErrorDetails{\"key\": KEY_REQUIRED},\n\t\t))\n\t}\n\n\ts.required = append(s.required, value)\n\n\treturn nil\n}\n\nfunc (s *subSchema) AddDefinitionChild(child *subSchema) {\n\ts.definitionsChildren = append(s.definitionsChildren, child)\n}\n\nfunc (s *subSchema) AddItemsChild(child *subSchema) {\n\ts.itemsChildren = append(s.itemsChildren, child)\n}\n\nfunc (s *subSchema) AddPropertiesChild(child *subSchema) {\n\ts.propertiesChildren = append(s.propertiesChildren, child)\n}\n\nfunc (s *subSchema) PatternPropertiesString() string {\n\n\tif s.patternProperties == nil || len(s.patternProperties) == 0 {\n\t\treturn STRING_UNDEFINED // should never happen\n\t}\n\n\tpatternPropertiesKeySlice := []string{}\n\tfor pk := range s.patternProperties {\n\t\tpatternPropertiesKeySlice = append(patternPropertiesKeySlice, `\"`+pk+`\"`)\n\t}\n\n\tif len(patternPropertiesKeySlice) == 1 {\n\t\treturn patternPropertiesKeySlice[0]\n\t}\n\n\treturn \"[\" + strings.Join(patternPropertiesKeySlice, \",\") + \"]\"\n\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/types.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Contains const types for schema and JSON.\n//\n// created          28-02-2013\n\npackage gojsonschema\n\nconst (\n\tTYPE_ARRAY   = `array`\n\tTYPE_BOOLEAN = `boolean`\n\tTYPE_INTEGER = `integer`\n\tTYPE_NUMBER  = `number`\n\tTYPE_NULL    = `null`\n\tTYPE_OBJECT  = `object`\n\tTYPE_STRING  = `string`\n)\n\nvar JSON_TYPES []string\nvar SCHEMA_TYPES []string\n\nfunc init() {\n\tJSON_TYPES = []string{\n\t\tTYPE_ARRAY,\n\t\tTYPE_BOOLEAN,\n\t\tTYPE_INTEGER,\n\t\tTYPE_NUMBER,\n\t\tTYPE_NULL,\n\t\tTYPE_OBJECT,\n\t\tTYPE_STRING}\n\n\tSCHEMA_TYPES = []string{\n\t\tTYPE_ARRAY,\n\t\tTYPE_BOOLEAN,\n\t\tTYPE_INTEGER,\n\t\tTYPE_NUMBER,\n\t\tTYPE_OBJECT,\n\t\tTYPE_STRING}\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/utils.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Various utility functions.\n//\n// created          26-02-2013\n\npackage gojsonschema\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"math\"\n\t\"reflect\"\n\t\"strconv\"\n)\n\nfunc isKind(what interface{}, kind reflect.Kind) bool {\n\ttarget := what\n\tif isJsonNumber(what) {\n\t\t// JSON Numbers are strings!\n\t\ttarget = *mustBeNumber(what)\n\t}\n\treturn reflect.ValueOf(target).Kind() == kind\n}\n\nfunc existsMapKey(m map[string]interface{}, k string) bool {\n\t_, ok := m[k]\n\treturn ok\n}\n\nfunc isStringInSlice(s []string, what string) bool {\n\tfor i := range s {\n\t\tif s[i] == what {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc marshalToJsonString(value interface{}) (*string, error) {\n\n\tmBytes, err := json.Marshal(value)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsBytes := string(mBytes)\n\treturn &sBytes, nil\n}\n\nfunc isJsonNumber(what interface{}) bool {\n\n\tswitch what.(type) {\n\n\tcase json.Number:\n\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunc checkJsonNumber(what interface{}) (isValidFloat64 bool, isValidInt64 bool, isValidInt32 bool) {\n\n\tjsonNumber := what.(json.Number)\n\n\tf64, errFloat64 := jsonNumber.Float64()\n\ts64 := strconv.FormatFloat(f64, 'f', -1, 64)\n\t_, errInt64 := strconv.ParseInt(s64, 10, 64)\n\n\tisValidFloat64 = errFloat64 == nil\n\tisValidInt64 = errInt64 == nil\n\n\t_, errInt32 := strconv.ParseInt(s64, 10, 32)\n\tisValidInt32 = isValidInt64 && errInt32 == nil\n\n\treturn\n\n}\n\n// same as ECMA Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER\nconst (\n\tmax_json_float = float64(1<<53 - 1)  // 9007199254740991.0 \t 2^53 - 1\n\tmin_json_float = -float64(1<<53 - 1) //-9007199254740991.0\t-2^53 - 1\n)\n\nfunc isFloat64AnInteger(f float64) bool {\n\n\tif math.IsNaN(f) || math.IsInf(f, 0) || f < min_json_float || f > max_json_float {\n\t\treturn false\n\t}\n\n\treturn f == float64(int64(f)) || f == float64(uint64(f))\n}\n\nfunc mustBeInteger(what interface{}) *int {\n\n\tif isJsonNumber(what) {\n\n\t\tnumber := what.(json.Number)\n\n\t\t_, _, isValidInt32 := checkJsonNumber(number)\n\n\t\tif isValidInt32 {\n\n\t\t\tint64Value, err := number.Int64()\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tint32Value := int(int64Value)\n\t\t\treturn &int32Value\n\n\t\t} else {\n\t\t\treturn nil\n\t\t}\n\n\t}\n\n\treturn nil\n}\n\nfunc mustBeNumber(what interface{}) *float64 {\n\n\tif isJsonNumber(what) {\n\n\t\tnumber := what.(json.Number)\n\t\tfloat64Value, err := number.Float64()\n\n\t\tif err == nil {\n\t\t\treturn &float64Value\n\t\t} else {\n\t\t\treturn nil\n\t\t}\n\n\t}\n\n\treturn nil\n\n}\n\n// formats a number so that it is displayed as the smallest string possible\nfunc resultErrorFormatJsonNumber(n json.Number) string {\n\n\tif int64Value, err := n.Int64(); err == nil {\n\t\treturn fmt.Sprintf(\"%d\", int64Value)\n\t}\n\n\tfloat64Value, _ := n.Float64()\n\n\treturn fmt.Sprintf(\"%g\", float64Value)\n}\n\n// formats a number so that it is displayed as the smallest string possible\nfunc resultErrorFormatNumber(n float64) string {\n\n\tif isFloat64AnInteger(n) {\n\t\treturn fmt.Sprintf(\"%d\", int64(n))\n\t}\n\n\treturn fmt.Sprintf(\"%g\", n)\n}\n\nfunc convertDocumentNode(val interface{}) interface{} {\n\n\tif lval, ok := val.([]interface{}); ok {\n\n\t\tres := []interface{}{}\n\t\tfor _, v := range lval {\n\t\t\tres = append(res, convertDocumentNode(v))\n\t\t}\n\n\t\treturn res\n\n\t}\n\n\tif mval, ok := val.(map[interface{}]interface{}); ok {\n\n\t\tres := map[string]interface{}{}\n\n\t\tfor k, v := range mval {\n\t\t\tres[k.(string)] = convertDocumentNode(v)\n\t\t}\n\n\t\treturn res\n\n\t}\n\n\treturn val\n}\n"
  },
  {
    "path": "vendor/github.com/xeipuuv/gojsonschema/validation.go",
    "content": "// Copyright 2015 xeipuuv ( https://github.com/xeipuuv )\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// author           xeipuuv\n// author-github    https://github.com/xeipuuv\n// author-mail      xeipuuv@gmail.com\n//\n// repository-name  gojsonschema\n// repository-desc  An implementation of JSON Schema, based on IETF's draft v4 - Go language.\n//\n// description      Extends Schema and subSchema, implements the validation phase.\n//\n// created          28-02-2013\n\npackage gojsonschema\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\nfunc Validate(ls JSONLoader, ld JSONLoader) (*Result, error) {\n\n\tvar err error\n\n\t// load schema\n\n\tschema, err := NewSchema(ls)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// begine validation\n\n\treturn schema.Validate(ld)\n\n}\n\nfunc (v *Schema) Validate(l JSONLoader) (*Result, error) {\n\n\t// load document\n\n\troot, err := l.LoadJSON()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// begin validation\n\n\tresult := &Result{}\n\tcontext := newJsonContext(STRING_CONTEXT_ROOT, nil)\n\tv.rootSchema.validateRecursive(v.rootSchema, root, result, context)\n\n\treturn result, nil\n\n}\n\nfunc (v *subSchema) subValidateWithContext(document interface{}, context *jsonContext) *Result {\n\tresult := &Result{}\n\tv.validateRecursive(v, document, result, context)\n\treturn result\n}\n\n// Walker function to validate the json recursively against the subSchema\nfunc (v *subSchema) validateRecursive(currentSubSchema *subSchema, currentNode interface{}, result *Result, context *jsonContext) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateRecursive %s\", context.String())\n\t\tinternalLog(\" %v\", currentNode)\n\t}\n\n\t// Handle referenced schemas, returns directly when a $ref is found\n\tif currentSubSchema.refSchema != nil {\n\t\tv.validateRecursive(currentSubSchema.refSchema, currentNode, result, context)\n\t\treturn\n\t}\n\n\t// Check for null value\n\tif currentNode == nil {\n\t\tif currentSubSchema.types.IsTyped() && !currentSubSchema.types.Contains(TYPE_NULL) {\n\t\t\tresult.addError(\n\t\t\t\tnew(InvalidTypeError),\n\t\t\t\tcontext,\n\t\t\t\tcurrentNode,\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\"given\":    TYPE_NULL,\n\t\t\t\t},\n\t\t\t)\n\t\t\treturn\n\t\t}\n\n\t\tcurrentSubSchema.validateSchema(currentSubSchema, currentNode, result, context)\n\t\tv.validateCommon(currentSubSchema, currentNode, result, context)\n\n\t} else { // Not a null value\n\n\t\tif isJsonNumber(currentNode) {\n\n\t\t\tvalue := currentNode.(json.Number)\n\n\t\t\t_, isValidInt64, _ := checkJsonNumber(value)\n\n\t\t\tvalidType := currentSubSchema.types.Contains(TYPE_NUMBER) || (isValidInt64 && currentSubSchema.types.Contains(TYPE_INTEGER))\n\n\t\t\tif currentSubSchema.types.IsTyped() && !validType {\n\n\t\t\t\tgivenType := TYPE_INTEGER\n\t\t\t\tif !isValidInt64 {\n\t\t\t\t\tgivenType = TYPE_NUMBER\n\t\t\t\t}\n\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(InvalidTypeError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tcurrentNode,\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\t\"given\":    givenType,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tcurrentSubSchema.validateSchema(currentSubSchema, value, result, context)\n\t\t\tv.validateNumber(currentSubSchema, value, result, context)\n\t\t\tv.validateCommon(currentSubSchema, value, result, context)\n\t\t\tv.validateString(currentSubSchema, value, result, context)\n\n\t\t} else {\n\n\t\t\trValue := reflect.ValueOf(currentNode)\n\t\t\trKind := rValue.Kind()\n\n\t\t\tswitch rKind {\n\n\t\t\t// Slice => JSON array\n\n\t\t\tcase reflect.Slice:\n\n\t\t\t\tif currentSubSchema.types.IsTyped() && !currentSubSchema.types.Contains(TYPE_ARRAY) {\n\t\t\t\t\tresult.addError(\n\t\t\t\t\t\tnew(InvalidTypeError),\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\t\t\"given\":    TYPE_ARRAY,\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tcastCurrentNode := currentNode.([]interface{})\n\n\t\t\t\tcurrentSubSchema.validateSchema(currentSubSchema, castCurrentNode, result, context)\n\n\t\t\t\tv.validateArray(currentSubSchema, castCurrentNode, result, context)\n\t\t\t\tv.validateCommon(currentSubSchema, castCurrentNode, result, context)\n\n\t\t\t// Map => JSON object\n\n\t\t\tcase reflect.Map:\n\t\t\t\tif currentSubSchema.types.IsTyped() && !currentSubSchema.types.Contains(TYPE_OBJECT) {\n\t\t\t\t\tresult.addError(\n\t\t\t\t\t\tnew(InvalidTypeError),\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\t\t\"given\":    TYPE_OBJECT,\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tcastCurrentNode, ok := currentNode.(map[string]interface{})\n\t\t\t\tif !ok {\n\t\t\t\t\tcastCurrentNode = convertDocumentNode(currentNode).(map[string]interface{})\n\t\t\t\t}\n\n\t\t\t\tcurrentSubSchema.validateSchema(currentSubSchema, castCurrentNode, result, context)\n\n\t\t\t\tv.validateObject(currentSubSchema, castCurrentNode, result, context)\n\t\t\t\tv.validateCommon(currentSubSchema, castCurrentNode, result, context)\n\n\t\t\t\tfor _, pSchema := range currentSubSchema.propertiesChildren {\n\t\t\t\t\tnextNode, ok := castCurrentNode[pSchema.property]\n\t\t\t\t\tif ok {\n\t\t\t\t\t\tsubContext := newJsonContext(pSchema.property, context)\n\t\t\t\t\t\tv.validateRecursive(pSchema, nextNode, result, subContext)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Simple JSON values : string, number, boolean\n\n\t\t\tcase reflect.Bool:\n\n\t\t\t\tif currentSubSchema.types.IsTyped() && !currentSubSchema.types.Contains(TYPE_BOOLEAN) {\n\t\t\t\t\tresult.addError(\n\t\t\t\t\t\tnew(InvalidTypeError),\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\t\t\"given\":    TYPE_BOOLEAN,\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvalue := currentNode.(bool)\n\n\t\t\t\tcurrentSubSchema.validateSchema(currentSubSchema, value, result, context)\n\t\t\t\tv.validateNumber(currentSubSchema, value, result, context)\n\t\t\t\tv.validateCommon(currentSubSchema, value, result, context)\n\t\t\t\tv.validateString(currentSubSchema, value, result, context)\n\n\t\t\tcase reflect.String:\n\n\t\t\t\tif currentSubSchema.types.IsTyped() && !currentSubSchema.types.Contains(TYPE_STRING) {\n\t\t\t\t\tresult.addError(\n\t\t\t\t\t\tnew(InvalidTypeError),\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\t\"expected\": currentSubSchema.types.String(),\n\t\t\t\t\t\t\t\"given\":    TYPE_STRING,\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvalue := currentNode.(string)\n\n\t\t\t\tcurrentSubSchema.validateSchema(currentSubSchema, value, result, context)\n\t\t\t\tv.validateNumber(currentSubSchema, value, result, context)\n\t\t\t\tv.validateCommon(currentSubSchema, value, result, context)\n\t\t\t\tv.validateString(currentSubSchema, value, result, context)\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tresult.incrementScore()\n}\n\n// Different kinds of validation there, subSchema / common / array / object / string...\nfunc (v *subSchema) validateSchema(currentSubSchema *subSchema, currentNode interface{}, result *Result, context *jsonContext) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateSchema %s\", context.String())\n\t\tinternalLog(\" %v\", currentNode)\n\t}\n\n\tif len(currentSubSchema.anyOf) > 0 {\n\n\t\tvalidatedAnyOf := false\n\t\tvar bestValidationResult *Result\n\n\t\tfor _, anyOfSchema := range currentSubSchema.anyOf {\n\t\t\tif !validatedAnyOf {\n\t\t\t\tvalidationResult := anyOfSchema.subValidateWithContext(currentNode, context)\n\t\t\t\tvalidatedAnyOf = validationResult.Valid()\n\n\t\t\t\tif !validatedAnyOf && (bestValidationResult == nil || validationResult.score > bestValidationResult.score) {\n\t\t\t\t\tbestValidationResult = validationResult\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif !validatedAnyOf {\n\n\t\t\tresult.addError(new(NumberAnyOfError), context, currentNode, ErrorDetails{})\n\n\t\t\tif bestValidationResult != nil {\n\t\t\t\t// add error messages of closest matching subSchema as\n\t\t\t\t// that's probably the one the user was trying to match\n\t\t\t\tresult.mergeErrors(bestValidationResult)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(currentSubSchema.oneOf) > 0 {\n\n\t\tnbValidated := 0\n\t\tvar bestValidationResult *Result\n\n\t\tfor _, oneOfSchema := range currentSubSchema.oneOf {\n\t\t\tvalidationResult := oneOfSchema.subValidateWithContext(currentNode, context)\n\t\t\tif validationResult.Valid() {\n\t\t\t\tnbValidated++\n\t\t\t} else if nbValidated == 0 && (bestValidationResult == nil || validationResult.score > bestValidationResult.score) {\n\t\t\t\tbestValidationResult = validationResult\n\t\t\t}\n\t\t}\n\n\t\tif nbValidated != 1 {\n\n\t\t\tresult.addError(new(NumberOneOfError), context, currentNode, ErrorDetails{})\n\n\t\t\tif nbValidated == 0 {\n\t\t\t\t// add error messages of closest matching subSchema as\n\t\t\t\t// that's probably the one the user was trying to match\n\t\t\t\tresult.mergeErrors(bestValidationResult)\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif len(currentSubSchema.allOf) > 0 {\n\t\tnbValidated := 0\n\n\t\tfor _, allOfSchema := range currentSubSchema.allOf {\n\t\t\tvalidationResult := allOfSchema.subValidateWithContext(currentNode, context)\n\t\t\tif validationResult.Valid() {\n\t\t\t\tnbValidated++\n\t\t\t}\n\t\t\tresult.mergeErrors(validationResult)\n\t\t}\n\n\t\tif nbValidated != len(currentSubSchema.allOf) {\n\t\t\tresult.addError(new(NumberAllOfError), context, currentNode, ErrorDetails{})\n\t\t}\n\t}\n\n\tif currentSubSchema.not != nil {\n\t\tvalidationResult := currentSubSchema.not.subValidateWithContext(currentNode, context)\n\t\tif validationResult.Valid() {\n\t\t\tresult.addError(new(NumberNotError), context, currentNode, ErrorDetails{})\n\t\t}\n\t}\n\n\tif currentSubSchema.dependencies != nil && len(currentSubSchema.dependencies) > 0 {\n\t\tif isKind(currentNode, reflect.Map) {\n\t\t\tfor elementKey := range currentNode.(map[string]interface{}) {\n\t\t\t\tif dependency, ok := currentSubSchema.dependencies[elementKey]; ok {\n\t\t\t\t\tswitch dependency := dependency.(type) {\n\n\t\t\t\t\tcase []string:\n\t\t\t\t\t\tfor _, dependOnKey := range dependency {\n\t\t\t\t\t\t\tif _, dependencyResolved := currentNode.(map[string]interface{})[dependOnKey]; !dependencyResolved {\n\t\t\t\t\t\t\t\tresult.addError(\n\t\t\t\t\t\t\t\t\tnew(MissingDependencyError),\n\t\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\t\tcurrentNode,\n\t\t\t\t\t\t\t\t\tErrorDetails{\"dependency\": dependOnKey},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\tcase *subSchema:\n\t\t\t\t\t\tdependency.validateRecursive(dependency, currentNode, result, context)\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n\nfunc (v *subSchema) validateCommon(currentSubSchema *subSchema, value interface{}, result *Result, context *jsonContext) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateCommon %s\", context.String())\n\t\tinternalLog(\" %v\", value)\n\t}\n\n\t// enum:\n\tif len(currentSubSchema.enum) > 0 {\n\t\thas, err := currentSubSchema.ContainsEnum(value)\n\t\tif err != nil {\n\t\t\tresult.addError(new(InternalError), context, value, ErrorDetails{\"error\": err})\n\t\t}\n\t\tif !has {\n\t\t\tresult.addError(\n\t\t\t\tnew(EnumError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\n\t\t\t\t\t\"allowed\": strings.Join(currentSubSchema.enum, \", \"),\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n\nfunc (v *subSchema) validateArray(currentSubSchema *subSchema, value []interface{}, result *Result, context *jsonContext) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateArray %s\", context.String())\n\t\tinternalLog(\" %v\", value)\n\t}\n\n\tnbValues := len(value)\n\n\t// TODO explain\n\tif currentSubSchema.itemsChildrenIsSingleSchema {\n\t\tfor i := range value {\n\t\t\tsubContext := newJsonContext(strconv.Itoa(i), context)\n\t\t\tvalidationResult := currentSubSchema.itemsChildren[0].subValidateWithContext(value[i], subContext)\n\t\t\tresult.mergeErrors(validationResult)\n\t\t}\n\t} else {\n\t\tif currentSubSchema.itemsChildren != nil && len(currentSubSchema.itemsChildren) > 0 {\n\n\t\t\tnbItems := len(currentSubSchema.itemsChildren)\n\n\t\t\t// while we have both schemas and values, check them against each other\n\t\t\tfor i := 0; i != nbItems && i != nbValues; i++ {\n\t\t\t\tsubContext := newJsonContext(strconv.Itoa(i), context)\n\t\t\t\tvalidationResult := currentSubSchema.itemsChildren[i].subValidateWithContext(value[i], subContext)\n\t\t\t\tresult.mergeErrors(validationResult)\n\t\t\t}\n\n\t\t\tif nbItems < nbValues {\n\t\t\t\t// we have less schemas than elements in the instance array,\n\t\t\t\t// but that might be ok if \"additionalItems\" is specified.\n\n\t\t\t\tswitch currentSubSchema.additionalItems.(type) {\n\t\t\t\tcase bool:\n\t\t\t\t\tif !currentSubSchema.additionalItems.(bool) {\n\t\t\t\t\t\tresult.addError(new(ArrayNoAdditionalItemsError), context, value, ErrorDetails{})\n\t\t\t\t\t}\n\t\t\t\tcase *subSchema:\n\t\t\t\t\tadditionalItemSchema := currentSubSchema.additionalItems.(*subSchema)\n\t\t\t\t\tfor i := nbItems; i != nbValues; i++ {\n\t\t\t\t\t\tsubContext := newJsonContext(strconv.Itoa(i), context)\n\t\t\t\t\t\tvalidationResult := additionalItemSchema.subValidateWithContext(value[i], subContext)\n\t\t\t\t\t\tresult.mergeErrors(validationResult)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// minItems & maxItems\n\tif currentSubSchema.minItems != nil {\n\t\tif nbValues < int(*currentSubSchema.minItems) {\n\t\t\tresult.addError(\n\t\t\t\tnew(ArrayMinItemsError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"min\": *currentSubSchema.minItems},\n\t\t\t)\n\t\t}\n\t}\n\tif currentSubSchema.maxItems != nil {\n\t\tif nbValues > int(*currentSubSchema.maxItems) {\n\t\t\tresult.addError(\n\t\t\t\tnew(ArrayMaxItemsError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"max\": *currentSubSchema.maxItems},\n\t\t\t)\n\t\t}\n\t}\n\n\t// uniqueItems:\n\tif currentSubSchema.uniqueItems {\n\t\tvar stringifiedItems []string\n\t\tfor _, v := range value {\n\t\t\tvString, err := marshalToJsonString(v)\n\t\t\tif err != nil {\n\t\t\t\tresult.addError(new(InternalError), context, value, ErrorDetails{\"err\": err})\n\t\t\t}\n\t\t\tif isStringInSlice(stringifiedItems, *vString) {\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(ItemsMustBeUniqueError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tvalue,\n\t\t\t\t\tErrorDetails{\"type\": TYPE_ARRAY},\n\t\t\t\t)\n\t\t\t}\n\t\t\tstringifiedItems = append(stringifiedItems, *vString)\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n\nfunc (v *subSchema) validateObject(currentSubSchema *subSchema, value map[string]interface{}, result *Result, context *jsonContext) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateObject %s\", context.String())\n\t\tinternalLog(\" %v\", value)\n\t}\n\n\t// minProperties & maxProperties:\n\tif currentSubSchema.minProperties != nil {\n\t\tif len(value) < int(*currentSubSchema.minProperties) {\n\t\t\tresult.addError(\n\t\t\t\tnew(ArrayMinPropertiesError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"min\": *currentSubSchema.minProperties},\n\t\t\t)\n\t\t}\n\t}\n\tif currentSubSchema.maxProperties != nil {\n\t\tif len(value) > int(*currentSubSchema.maxProperties) {\n\t\t\tresult.addError(\n\t\t\t\tnew(ArrayMaxPropertiesError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"max\": *currentSubSchema.maxProperties},\n\t\t\t)\n\t\t}\n\t}\n\n\t// required:\n\tfor _, requiredProperty := range currentSubSchema.required {\n\t\t_, ok := value[requiredProperty]\n\t\tif ok {\n\t\t\tresult.incrementScore()\n\t\t} else {\n\t\t\tresult.addError(\n\t\t\t\tnew(RequiredError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"property\": requiredProperty},\n\t\t\t)\n\t\t}\n\t}\n\n\t// additionalProperty & patternProperty:\n\tif currentSubSchema.additionalProperties != nil {\n\n\t\tswitch currentSubSchema.additionalProperties.(type) {\n\t\tcase bool:\n\n\t\t\tif !currentSubSchema.additionalProperties.(bool) {\n\n\t\t\t\tfor pk := range value {\n\n\t\t\t\t\tfound := false\n\t\t\t\t\tfor _, spValue := range currentSubSchema.propertiesChildren {\n\t\t\t\t\t\tif pk == spValue.property {\n\t\t\t\t\t\t\tfound = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpp_has, pp_match := v.validatePatternProperty(currentSubSchema, pk, value[pk], result, context)\n\n\t\t\t\t\tif found {\n\n\t\t\t\t\t\tif pp_has && !pp_match {\n\t\t\t\t\t\t\tresult.addError(\n\t\t\t\t\t\t\t\tnew(AdditionalPropertyNotAllowedError),\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tvalue[pk],\n\t\t\t\t\t\t\t\tErrorDetails{\"property\": pk},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif !pp_has || !pp_match {\n\t\t\t\t\t\t\tresult.addError(\n\t\t\t\t\t\t\t\tnew(AdditionalPropertyNotAllowedError),\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tvalue[pk],\n\t\t\t\t\t\t\t\tErrorDetails{\"property\": pk},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tcase *subSchema:\n\n\t\t\tadditionalPropertiesSchema := currentSubSchema.additionalProperties.(*subSchema)\n\t\t\tfor pk := range value {\n\n\t\t\t\tfound := false\n\t\t\t\tfor _, spValue := range currentSubSchema.propertiesChildren {\n\t\t\t\t\tif pk == spValue.property {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpp_has, pp_match := v.validatePatternProperty(currentSubSchema, pk, value[pk], result, context)\n\n\t\t\t\tif found {\n\n\t\t\t\t\tif pp_has && !pp_match {\n\t\t\t\t\t\tvalidationResult := additionalPropertiesSchema.subValidateWithContext(value[pk], context)\n\t\t\t\t\t\tresult.mergeErrors(validationResult)\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif !pp_has || !pp_match {\n\t\t\t\t\t\tvalidationResult := additionalPropertiesSchema.subValidateWithContext(value[pk], context)\n\t\t\t\t\t\tresult.mergeErrors(validationResult)\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t} else {\n\n\t\tfor pk := range value {\n\n\t\t\tpp_has, pp_match := v.validatePatternProperty(currentSubSchema, pk, value[pk], result, context)\n\n\t\t\tif pp_has && !pp_match {\n\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(InvalidPropertyPatternError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tvalue[pk],\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"property\": pk,\n\t\t\t\t\t\t\"pattern\":  currentSubSchema.PatternPropertiesString(),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n\nfunc (v *subSchema) validatePatternProperty(currentSubSchema *subSchema, key string, value interface{}, result *Result, context *jsonContext) (has bool, matched bool) {\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validatePatternProperty %s\", context.String())\n\t\tinternalLog(\" %s %v\", key, value)\n\t}\n\n\thas = false\n\n\tvalidatedkey := false\n\n\tfor pk, pv := range currentSubSchema.patternProperties {\n\t\tif matches, _ := regexp.MatchString(pk, key); matches {\n\t\t\thas = true\n\t\t\tsubContext := newJsonContext(key, context)\n\t\t\tvalidationResult := pv.subValidateWithContext(value, subContext)\n\t\t\tresult.mergeErrors(validationResult)\n\t\t\tif validationResult.Valid() {\n\t\t\t\tvalidatedkey = true\n\t\t\t}\n\t\t}\n\t}\n\n\tif !validatedkey {\n\t\treturn has, false\n\t}\n\n\tresult.incrementScore()\n\n\treturn has, true\n}\n\nfunc (v *subSchema) validateString(currentSubSchema *subSchema, value interface{}, result *Result, context *jsonContext) {\n\n\t// Ignore JSON numbers\n\tif isJsonNumber(value) {\n\t\treturn\n\t}\n\n\t// Ignore non strings\n\tif !isKind(value, reflect.String) {\n\t\treturn\n\t}\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateString %s\", context.String())\n\t\tinternalLog(\" %v\", value)\n\t}\n\n\tstringValue := value.(string)\n\n\t// minLength & maxLength:\n\tif currentSubSchema.minLength != nil {\n\t\tif utf8.RuneCount([]byte(stringValue)) < int(*currentSubSchema.minLength) {\n\t\t\tresult.addError(\n\t\t\t\tnew(StringLengthGTEError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"min\": *currentSubSchema.minLength},\n\t\t\t)\n\t\t}\n\t}\n\tif currentSubSchema.maxLength != nil {\n\t\tif utf8.RuneCount([]byte(stringValue)) > int(*currentSubSchema.maxLength) {\n\t\t\tresult.addError(\n\t\t\t\tnew(StringLengthLTEError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"max\": *currentSubSchema.maxLength},\n\t\t\t)\n\t\t}\n\t}\n\n\t// pattern:\n\tif currentSubSchema.pattern != nil {\n\t\tif !currentSubSchema.pattern.MatchString(stringValue) {\n\t\t\tresult.addError(\n\t\t\t\tnew(DoesNotMatchPatternError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"pattern\": currentSubSchema.pattern},\n\t\t\t)\n\n\t\t}\n\t}\n\n\t// format\n\tif currentSubSchema.format != \"\" {\n\t\tif !FormatCheckers.IsFormat(currentSubSchema.format, stringValue) {\n\t\t\tresult.addError(\n\t\t\t\tnew(DoesNotMatchFormatError),\n\t\t\t\tcontext,\n\t\t\t\tvalue,\n\t\t\t\tErrorDetails{\"format\": currentSubSchema.format},\n\t\t\t)\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n\nfunc (v *subSchema) validateNumber(currentSubSchema *subSchema, value interface{}, result *Result, context *jsonContext) {\n\n\t// Ignore non numbers\n\tif !isJsonNumber(value) {\n\t\treturn\n\t}\n\n\tif internalLogEnabled {\n\t\tinternalLog(\"validateNumber %s\", context.String())\n\t\tinternalLog(\" %v\", value)\n\t}\n\n\tnumber := value.(json.Number)\n\tfloat64Value, _ := number.Float64()\n\n\t// multipleOf:\n\tif currentSubSchema.multipleOf != nil {\n\n\t\tif !isFloat64AnInteger(float64Value / *currentSubSchema.multipleOf) {\n\t\t\tresult.addError(\n\t\t\t\tnew(MultipleOfError),\n\t\t\t\tcontext,\n\t\t\t\tresultErrorFormatJsonNumber(number),\n\t\t\t\tErrorDetails{\"multiple\": *currentSubSchema.multipleOf},\n\t\t\t)\n\t\t}\n\t}\n\n\t//maximum & exclusiveMaximum:\n\tif currentSubSchema.maximum != nil {\n\t\tif currentSubSchema.exclusiveMaximum {\n\t\t\tif float64Value >= *currentSubSchema.maximum {\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(NumberLTError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tresultErrorFormatJsonNumber(number),\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"max\": resultErrorFormatNumber(*currentSubSchema.maximum),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tif float64Value > *currentSubSchema.maximum {\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(NumberLTEError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tresultErrorFormatJsonNumber(number),\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"max\": resultErrorFormatNumber(*currentSubSchema.maximum),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t//minimum & exclusiveMinimum:\n\tif currentSubSchema.minimum != nil {\n\t\tif currentSubSchema.exclusiveMinimum {\n\t\t\tif float64Value <= *currentSubSchema.minimum {\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(NumberGTError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tresultErrorFormatJsonNumber(number),\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"min\": resultErrorFormatNumber(*currentSubSchema.minimum),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tif float64Value < *currentSubSchema.minimum {\n\t\t\t\tresult.addError(\n\t\t\t\t\tnew(NumberGTEError),\n\t\t\t\t\tcontext,\n\t\t\t\t\tresultErrorFormatJsonNumber(number),\n\t\t\t\t\tErrorDetails{\n\t\t\t\t\t\t\"min\": resultErrorFormatNumber(*currentSubSchema.minimum),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\tresult.incrementScore()\n}\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/.gitattributes",
    "content": "# Treat all files in this repo as binary, with no git magic updating\n# line endings. Windows users contributing to Go will need to use a\n# modern version of git and editors capable of LF line endings.\n#\n# We'll prevent accidental CRLF line endings from entering the repo\n# via the git-review gofmt checks.\n#\n# See golang.org/issue/9281\n\n* -text\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/.gitignore",
    "content": "# Add no patterns to .hgignore except for files generated by the build.\nlast-change\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/CONTRIBUTING.md",
    "content": "# Contributing to Go\n\nGo is an open source project.\n\nIt is the work of hundreds of contributors. We appreciate your help!\n\n\n## Filing issues\n\nWhen [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:\n\n1. What version of Go are you using (`go version`)?\n2. What operating system and processor architecture are you using?\n3. What did you do?\n4. What did you expect to see?\n5. What did you see instead?\n\nGeneral questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.\nThe gophers there will answer or ask you to file an issue if you've tripped over a bug.\n\n## Contributing code\n\nPlease read the [Contribution Guidelines](https://golang.org/doc/contribute.html)\nbefore sending patches.\n\n**We do not accept GitHub pull requests**\n(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).\n\nUnless otherwise noted, the Go source files are distributed under\nthe BSD-style license found in the LICENSE file.\n\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/LICENSE",
    "content": "Copyright (c) 2009 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/golang.org/x/crypto/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/crypto/README",
    "content": "This repository holds supplementary Go cryptography libraries.\n\nTo submit changes to this repository, see http://golang.org/doc/contribute.html.\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/codereview.cfg",
    "content": "issuerepo: golang/go\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/ssh/terminal/terminal.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 terminal\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"sync\"\n\t\"unicode/utf8\"\n)\n\n// EscapeCodes contains escape sequences that can be written to the terminal in\n// order to achieve different styles of text.\ntype EscapeCodes struct {\n\t// Foreground colors\n\tBlack, Red, Green, Yellow, Blue, Magenta, Cyan, White []byte\n\n\t// Reset all attributes\n\tReset []byte\n}\n\nvar vt100EscapeCodes = EscapeCodes{\n\tBlack:   []byte{keyEscape, '[', '3', '0', 'm'},\n\tRed:     []byte{keyEscape, '[', '3', '1', 'm'},\n\tGreen:   []byte{keyEscape, '[', '3', '2', 'm'},\n\tYellow:  []byte{keyEscape, '[', '3', '3', 'm'},\n\tBlue:    []byte{keyEscape, '[', '3', '4', 'm'},\n\tMagenta: []byte{keyEscape, '[', '3', '5', 'm'},\n\tCyan:    []byte{keyEscape, '[', '3', '6', 'm'},\n\tWhite:   []byte{keyEscape, '[', '3', '7', 'm'},\n\n\tReset: []byte{keyEscape, '[', '0', 'm'},\n}\n\n// Terminal contains the state for running a VT100 terminal that is capable of\n// reading lines of input.\ntype Terminal struct {\n\t// AutoCompleteCallback, if non-null, is called for each keypress with\n\t// the full input line and the current position of the cursor (in\n\t// bytes, as an index into |line|). If it returns ok=false, the key\n\t// press is processed normally. Otherwise it returns a replacement line\n\t// and the new cursor position.\n\tAutoCompleteCallback func(line string, pos int, key rune) (newLine string, newPos int, ok bool)\n\n\t// Escape contains a pointer to the escape codes for this terminal.\n\t// It's always a valid pointer, although the escape codes themselves\n\t// may be empty if the terminal doesn't support them.\n\tEscape *EscapeCodes\n\n\t// lock protects the terminal and the state in this object from\n\t// concurrent processing of a key press and a Write() call.\n\tlock sync.Mutex\n\n\tc      io.ReadWriter\n\tprompt []rune\n\n\t// line is the current line being entered.\n\tline []rune\n\t// pos is the logical position of the cursor in line\n\tpos int\n\t// echo is true if local echo is enabled\n\techo bool\n\t// pasteActive is true iff there is a bracketed paste operation in\n\t// progress.\n\tpasteActive bool\n\n\t// cursorX contains the current X value of the cursor where the left\n\t// edge is 0. cursorY contains the row number where the first row of\n\t// the current line is 0.\n\tcursorX, cursorY int\n\t// maxLine is the greatest value of cursorY so far.\n\tmaxLine int\n\n\ttermWidth, termHeight int\n\n\t// outBuf contains the terminal data to be sent.\n\toutBuf []byte\n\t// remainder contains the remainder of any partial key sequences after\n\t// a read. It aliases into inBuf.\n\tremainder []byte\n\tinBuf     [256]byte\n\n\t// history contains previously entered commands so that they can be\n\t// accessed with the up and down keys.\n\thistory stRingBuffer\n\t// historyIndex stores the currently accessed history entry, where zero\n\t// means the immediately previous entry.\n\thistoryIndex int\n\t// When navigating up and down the history it's possible to return to\n\t// the incomplete, initial line. That value is stored in\n\t// historyPending.\n\thistoryPending string\n}\n\n// NewTerminal runs a VT100 terminal on the given ReadWriter. If the ReadWriter is\n// a local terminal, that terminal must first have been put into raw mode.\n// prompt is a string that is written at the start of each input line (i.e.\n// \"> \").\nfunc NewTerminal(c io.ReadWriter, prompt string) *Terminal {\n\treturn &Terminal{\n\t\tEscape:       &vt100EscapeCodes,\n\t\tc:            c,\n\t\tprompt:       []rune(prompt),\n\t\ttermWidth:    80,\n\t\ttermHeight:   24,\n\t\techo:         true,\n\t\thistoryIndex: -1,\n\t}\n}\n\nconst (\n\tkeyCtrlD     = 4\n\tkeyCtrlU     = 21\n\tkeyEnter     = '\\r'\n\tkeyEscape    = 27\n\tkeyBackspace = 127\n\tkeyUnknown   = 0xd800 /* UTF-16 surrogate area */ + iota\n\tkeyUp\n\tkeyDown\n\tkeyLeft\n\tkeyRight\n\tkeyAltLeft\n\tkeyAltRight\n\tkeyHome\n\tkeyEnd\n\tkeyDeleteWord\n\tkeyDeleteLine\n\tkeyClearScreen\n\tkeyPasteStart\n\tkeyPasteEnd\n)\n\nvar pasteStart = []byte{keyEscape, '[', '2', '0', '0', '~'}\nvar pasteEnd = []byte{keyEscape, '[', '2', '0', '1', '~'}\n\n// bytesToKey tries to parse a key sequence from b. If successful, it returns\n// the key and the remainder of the input. Otherwise it returns utf8.RuneError.\nfunc bytesToKey(b []byte, pasteActive bool) (rune, []byte) {\n\tif len(b) == 0 {\n\t\treturn utf8.RuneError, nil\n\t}\n\n\tif !pasteActive {\n\t\tswitch b[0] {\n\t\tcase 1: // ^A\n\t\t\treturn keyHome, b[1:]\n\t\tcase 5: // ^E\n\t\t\treturn keyEnd, b[1:]\n\t\tcase 8: // ^H\n\t\t\treturn keyBackspace, b[1:]\n\t\tcase 11: // ^K\n\t\t\treturn keyDeleteLine, b[1:]\n\t\tcase 12: // ^L\n\t\t\treturn keyClearScreen, b[1:]\n\t\tcase 23: // ^W\n\t\t\treturn keyDeleteWord, b[1:]\n\t\t}\n\t}\n\n\tif b[0] != keyEscape {\n\t\tif !utf8.FullRune(b) {\n\t\t\treturn utf8.RuneError, b\n\t\t}\n\t\tr, l := utf8.DecodeRune(b)\n\t\treturn r, b[l:]\n\t}\n\n\tif !pasteActive && len(b) >= 3 && b[0] == keyEscape && b[1] == '[' {\n\t\tswitch b[2] {\n\t\tcase 'A':\n\t\t\treturn keyUp, b[3:]\n\t\tcase 'B':\n\t\t\treturn keyDown, b[3:]\n\t\tcase 'C':\n\t\t\treturn keyRight, b[3:]\n\t\tcase 'D':\n\t\t\treturn keyLeft, b[3:]\n\t\tcase 'H':\n\t\t\treturn keyHome, b[3:]\n\t\tcase 'F':\n\t\t\treturn keyEnd, b[3:]\n\t\t}\n\t}\n\n\tif !pasteActive && len(b) >= 6 && b[0] == keyEscape && b[1] == '[' && b[2] == '1' && b[3] == ';' && b[4] == '3' {\n\t\tswitch b[5] {\n\t\tcase 'C':\n\t\t\treturn keyAltRight, b[6:]\n\t\tcase 'D':\n\t\t\treturn keyAltLeft, b[6:]\n\t\t}\n\t}\n\n\tif !pasteActive && len(b) >= 6 && bytes.Equal(b[:6], pasteStart) {\n\t\treturn keyPasteStart, b[6:]\n\t}\n\n\tif pasteActive && len(b) >= 6 && bytes.Equal(b[:6], pasteEnd) {\n\t\treturn keyPasteEnd, b[6:]\n\t}\n\n\t// If we get here then we have a key that we don't recognise, or a\n\t// partial sequence. It's not clear how one should find the end of a\n\t// sequence without knowing them all, but it seems that [a-zA-Z~] only\n\t// appears at the end of a sequence.\n\tfor i, c := range b[0:] {\n\t\tif c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '~' {\n\t\t\treturn keyUnknown, b[i+1:]\n\t\t}\n\t}\n\n\treturn utf8.RuneError, b\n}\n\n// queue appends data to the end of t.outBuf\nfunc (t *Terminal) queue(data []rune) {\n\tt.outBuf = append(t.outBuf, []byte(string(data))...)\n}\n\nvar eraseUnderCursor = []rune{' ', keyEscape, '[', 'D'}\nvar space = []rune{' '}\n\nfunc isPrintable(key rune) bool {\n\tisInSurrogateArea := key >= 0xd800 && key <= 0xdbff\n\treturn key >= 32 && !isInSurrogateArea\n}\n\n// moveCursorToPos appends data to t.outBuf which will move the cursor to the\n// given, logical position in the text.\nfunc (t *Terminal) moveCursorToPos(pos int) {\n\tif !t.echo {\n\t\treturn\n\t}\n\n\tx := visualLength(t.prompt) + pos\n\ty := x / t.termWidth\n\tx = x % t.termWidth\n\n\tup := 0\n\tif y < t.cursorY {\n\t\tup = t.cursorY - y\n\t}\n\n\tdown := 0\n\tif y > t.cursorY {\n\t\tdown = y - t.cursorY\n\t}\n\n\tleft := 0\n\tif x < t.cursorX {\n\t\tleft = t.cursorX - x\n\t}\n\n\tright := 0\n\tif x > t.cursorX {\n\t\tright = x - t.cursorX\n\t}\n\n\tt.cursorX = x\n\tt.cursorY = y\n\tt.move(up, down, left, right)\n}\n\nfunc (t *Terminal) move(up, down, left, right int) {\n\tmovement := make([]rune, 3*(up+down+left+right))\n\tm := movement\n\tfor i := 0; i < up; i++ {\n\t\tm[0] = keyEscape\n\t\tm[1] = '['\n\t\tm[2] = 'A'\n\t\tm = m[3:]\n\t}\n\tfor i := 0; i < down; i++ {\n\t\tm[0] = keyEscape\n\t\tm[1] = '['\n\t\tm[2] = 'B'\n\t\tm = m[3:]\n\t}\n\tfor i := 0; i < left; i++ {\n\t\tm[0] = keyEscape\n\t\tm[1] = '['\n\t\tm[2] = 'D'\n\t\tm = m[3:]\n\t}\n\tfor i := 0; i < right; i++ {\n\t\tm[0] = keyEscape\n\t\tm[1] = '['\n\t\tm[2] = 'C'\n\t\tm = m[3:]\n\t}\n\n\tt.queue(movement)\n}\n\nfunc (t *Terminal) clearLineToRight() {\n\top := []rune{keyEscape, '[', 'K'}\n\tt.queue(op)\n}\n\nconst maxLineLength = 4096\n\nfunc (t *Terminal) setLine(newLine []rune, newPos int) {\n\tif t.echo {\n\t\tt.moveCursorToPos(0)\n\t\tt.writeLine(newLine)\n\t\tfor i := len(newLine); i < len(t.line); i++ {\n\t\t\tt.writeLine(space)\n\t\t}\n\t\tt.moveCursorToPos(newPos)\n\t}\n\tt.line = newLine\n\tt.pos = newPos\n}\n\nfunc (t *Terminal) advanceCursor(places int) {\n\tt.cursorX += places\n\tt.cursorY += t.cursorX / t.termWidth\n\tif t.cursorY > t.maxLine {\n\t\tt.maxLine = t.cursorY\n\t}\n\tt.cursorX = t.cursorX % t.termWidth\n\n\tif places > 0 && t.cursorX == 0 {\n\t\t// Normally terminals will advance the current position\n\t\t// when writing a character. But that doesn't happen\n\t\t// for the last character in a line. However, when\n\t\t// writing a character (except a new line) that causes\n\t\t// a line wrap, the position will be advanced two\n\t\t// places.\n\t\t//\n\t\t// So, if we are stopping at the end of a line, we\n\t\t// need to write a newline so that our cursor can be\n\t\t// advanced to the next line.\n\t\tt.outBuf = append(t.outBuf, '\\n')\n\t}\n}\n\nfunc (t *Terminal) eraseNPreviousChars(n int) {\n\tif n == 0 {\n\t\treturn\n\t}\n\n\tif t.pos < n {\n\t\tn = t.pos\n\t}\n\tt.pos -= n\n\tt.moveCursorToPos(t.pos)\n\n\tcopy(t.line[t.pos:], t.line[n+t.pos:])\n\tt.line = t.line[:len(t.line)-n]\n\tif t.echo {\n\t\tt.writeLine(t.line[t.pos:])\n\t\tfor i := 0; i < n; i++ {\n\t\t\tt.queue(space)\n\t\t}\n\t\tt.advanceCursor(n)\n\t\tt.moveCursorToPos(t.pos)\n\t}\n}\n\n// countToLeftWord returns then number of characters from the cursor to the\n// start of the previous word.\nfunc (t *Terminal) countToLeftWord() int {\n\tif t.pos == 0 {\n\t\treturn 0\n\t}\n\n\tpos := t.pos - 1\n\tfor pos > 0 {\n\t\tif t.line[pos] != ' ' {\n\t\t\tbreak\n\t\t}\n\t\tpos--\n\t}\n\tfor pos > 0 {\n\t\tif t.line[pos] == ' ' {\n\t\t\tpos++\n\t\t\tbreak\n\t\t}\n\t\tpos--\n\t}\n\n\treturn t.pos - pos\n}\n\n// countToRightWord returns then number of characters from the cursor to the\n// start of the next word.\nfunc (t *Terminal) countToRightWord() int {\n\tpos := t.pos\n\tfor pos < len(t.line) {\n\t\tif t.line[pos] == ' ' {\n\t\t\tbreak\n\t\t}\n\t\tpos++\n\t}\n\tfor pos < len(t.line) {\n\t\tif t.line[pos] != ' ' {\n\t\t\tbreak\n\t\t}\n\t\tpos++\n\t}\n\treturn pos - t.pos\n}\n\n// visualLength returns the number of visible glyphs in s.\nfunc visualLength(runes []rune) int {\n\tinEscapeSeq := false\n\tlength := 0\n\n\tfor _, r := range runes {\n\t\tswitch {\n\t\tcase inEscapeSeq:\n\t\t\tif (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') {\n\t\t\t\tinEscapeSeq = false\n\t\t\t}\n\t\tcase r == '\\x1b':\n\t\t\tinEscapeSeq = true\n\t\tdefault:\n\t\t\tlength++\n\t\t}\n\t}\n\n\treturn length\n}\n\n// handleKey processes the given key and, optionally, returns a line of text\n// that the user has entered.\nfunc (t *Terminal) handleKey(key rune) (line string, ok bool) {\n\tif t.pasteActive && key != keyEnter {\n\t\tt.addKeyToLine(key)\n\t\treturn\n\t}\n\n\tswitch key {\n\tcase keyBackspace:\n\t\tif t.pos == 0 {\n\t\t\treturn\n\t\t}\n\t\tt.eraseNPreviousChars(1)\n\tcase keyAltLeft:\n\t\t// move left by a word.\n\t\tt.pos -= t.countToLeftWord()\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyAltRight:\n\t\t// move right by a word.\n\t\tt.pos += t.countToRightWord()\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyLeft:\n\t\tif t.pos == 0 {\n\t\t\treturn\n\t\t}\n\t\tt.pos--\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyRight:\n\t\tif t.pos == len(t.line) {\n\t\t\treturn\n\t\t}\n\t\tt.pos++\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyHome:\n\t\tif t.pos == 0 {\n\t\t\treturn\n\t\t}\n\t\tt.pos = 0\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyEnd:\n\t\tif t.pos == len(t.line) {\n\t\t\treturn\n\t\t}\n\t\tt.pos = len(t.line)\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyUp:\n\t\tentry, ok := t.history.NthPreviousEntry(t.historyIndex + 1)\n\t\tif !ok {\n\t\t\treturn \"\", false\n\t\t}\n\t\tif t.historyIndex == -1 {\n\t\t\tt.historyPending = string(t.line)\n\t\t}\n\t\tt.historyIndex++\n\t\trunes := []rune(entry)\n\t\tt.setLine(runes, len(runes))\n\tcase keyDown:\n\t\tswitch t.historyIndex {\n\t\tcase -1:\n\t\t\treturn\n\t\tcase 0:\n\t\t\trunes := []rune(t.historyPending)\n\t\t\tt.setLine(runes, len(runes))\n\t\t\tt.historyIndex--\n\t\tdefault:\n\t\t\tentry, ok := t.history.NthPreviousEntry(t.historyIndex - 1)\n\t\t\tif ok {\n\t\t\t\tt.historyIndex--\n\t\t\t\trunes := []rune(entry)\n\t\t\t\tt.setLine(runes, len(runes))\n\t\t\t}\n\t\t}\n\tcase keyEnter:\n\t\tt.moveCursorToPos(len(t.line))\n\t\tt.queue([]rune(\"\\r\\n\"))\n\t\tline = string(t.line)\n\t\tok = true\n\t\tt.line = t.line[:0]\n\t\tt.pos = 0\n\t\tt.cursorX = 0\n\t\tt.cursorY = 0\n\t\tt.maxLine = 0\n\tcase keyDeleteWord:\n\t\t// Delete zero or more spaces and then one or more characters.\n\t\tt.eraseNPreviousChars(t.countToLeftWord())\n\tcase keyDeleteLine:\n\t\t// Delete everything from the current cursor position to the\n\t\t// end of line.\n\t\tfor i := t.pos; i < len(t.line); i++ {\n\t\t\tt.queue(space)\n\t\t\tt.advanceCursor(1)\n\t\t}\n\t\tt.line = t.line[:t.pos]\n\t\tt.moveCursorToPos(t.pos)\n\tcase keyCtrlD:\n\t\t// Erase the character under the current position.\n\t\t// The EOF case when the line is empty is handled in\n\t\t// readLine().\n\t\tif t.pos < len(t.line) {\n\t\t\tt.pos++\n\t\t\tt.eraseNPreviousChars(1)\n\t\t}\n\tcase keyCtrlU:\n\t\tt.eraseNPreviousChars(t.pos)\n\tcase keyClearScreen:\n\t\t// Erases the screen and moves the cursor to the home position.\n\t\tt.queue([]rune(\"\\x1b[2J\\x1b[H\"))\n\t\tt.queue(t.prompt)\n\t\tt.cursorX, t.cursorY = 0, 0\n\t\tt.advanceCursor(visualLength(t.prompt))\n\t\tt.setLine(t.line, t.pos)\n\tdefault:\n\t\tif t.AutoCompleteCallback != nil {\n\t\t\tprefix := string(t.line[:t.pos])\n\t\t\tsuffix := string(t.line[t.pos:])\n\n\t\t\tt.lock.Unlock()\n\t\t\tnewLine, newPos, completeOk := t.AutoCompleteCallback(prefix+suffix, len(prefix), key)\n\t\t\tt.lock.Lock()\n\n\t\t\tif completeOk {\n\t\t\t\tt.setLine([]rune(newLine), utf8.RuneCount([]byte(newLine)[:newPos]))\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif !isPrintable(key) {\n\t\t\treturn\n\t\t}\n\t\tif len(t.line) == maxLineLength {\n\t\t\treturn\n\t\t}\n\t\tt.addKeyToLine(key)\n\t}\n\treturn\n}\n\n// addKeyToLine inserts the given key at the current position in the current\n// line.\nfunc (t *Terminal) addKeyToLine(key rune) {\n\tif len(t.line) == cap(t.line) {\n\t\tnewLine := make([]rune, len(t.line), 2*(1+len(t.line)))\n\t\tcopy(newLine, t.line)\n\t\tt.line = newLine\n\t}\n\tt.line = t.line[:len(t.line)+1]\n\tcopy(t.line[t.pos+1:], t.line[t.pos:])\n\tt.line[t.pos] = key\n\tif t.echo {\n\t\tt.writeLine(t.line[t.pos:])\n\t}\n\tt.pos++\n\tt.moveCursorToPos(t.pos)\n}\n\nfunc (t *Terminal) writeLine(line []rune) {\n\tfor len(line) != 0 {\n\t\tremainingOnLine := t.termWidth - t.cursorX\n\t\ttodo := len(line)\n\t\tif todo > remainingOnLine {\n\t\t\ttodo = remainingOnLine\n\t\t}\n\t\tt.queue(line[:todo])\n\t\tt.advanceCursor(visualLength(line[:todo]))\n\t\tline = line[todo:]\n\t}\n}\n\nfunc (t *Terminal) Write(buf []byte) (n int, err error) {\n\tt.lock.Lock()\n\tdefer t.lock.Unlock()\n\n\tif t.cursorX == 0 && t.cursorY == 0 {\n\t\t// This is the easy case: there's nothing on the screen that we\n\t\t// have to move out of the way.\n\t\treturn t.c.Write(buf)\n\t}\n\n\t// We have a prompt and possibly user input on the screen. We\n\t// have to clear it first.\n\tt.move(0 /* up */, 0 /* down */, t.cursorX /* left */, 0 /* right */)\n\tt.cursorX = 0\n\tt.clearLineToRight()\n\n\tfor t.cursorY > 0 {\n\t\tt.move(1 /* up */, 0, 0, 0)\n\t\tt.cursorY--\n\t\tt.clearLineToRight()\n\t}\n\n\tif _, err = t.c.Write(t.outBuf); err != nil {\n\t\treturn\n\t}\n\tt.outBuf = t.outBuf[:0]\n\n\tif n, err = t.c.Write(buf); err != nil {\n\t\treturn\n\t}\n\n\tt.writeLine(t.prompt)\n\tif t.echo {\n\t\tt.writeLine(t.line)\n\t}\n\n\tt.moveCursorToPos(t.pos)\n\n\tif _, err = t.c.Write(t.outBuf); err != nil {\n\t\treturn\n\t}\n\tt.outBuf = t.outBuf[:0]\n\treturn\n}\n\n// ReadPassword temporarily changes the prompt and reads a password, without\n// echo, from the terminal.\nfunc (t *Terminal) ReadPassword(prompt string) (line string, err error) {\n\tt.lock.Lock()\n\tdefer t.lock.Unlock()\n\n\toldPrompt := t.prompt\n\tt.prompt = []rune(prompt)\n\tt.echo = false\n\n\tline, err = t.readLine()\n\n\tt.prompt = oldPrompt\n\tt.echo = true\n\n\treturn\n}\n\n// ReadLine returns a line of input from the terminal.\nfunc (t *Terminal) ReadLine() (line string, err error) {\n\tt.lock.Lock()\n\tdefer t.lock.Unlock()\n\n\treturn t.readLine()\n}\n\nfunc (t *Terminal) readLine() (line string, err error) {\n\t// t.lock must be held at this point\n\n\tif t.cursorX == 0 && t.cursorY == 0 {\n\t\tt.writeLine(t.prompt)\n\t\tt.c.Write(t.outBuf)\n\t\tt.outBuf = t.outBuf[:0]\n\t}\n\n\tlineIsPasted := t.pasteActive\n\n\tfor {\n\t\trest := t.remainder\n\t\tlineOk := false\n\t\tfor !lineOk {\n\t\t\tvar key rune\n\t\t\tkey, rest = bytesToKey(rest, t.pasteActive)\n\t\t\tif key == utf8.RuneError {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif !t.pasteActive {\n\t\t\t\tif key == keyCtrlD {\n\t\t\t\t\tif len(t.line) == 0 {\n\t\t\t\t\t\treturn \"\", io.EOF\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif key == keyPasteStart {\n\t\t\t\t\tt.pasteActive = true\n\t\t\t\t\tif len(t.line) == 0 {\n\t\t\t\t\t\tlineIsPasted = true\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if key == keyPasteEnd {\n\t\t\t\tt.pasteActive = false\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !t.pasteActive {\n\t\t\t\tlineIsPasted = false\n\t\t\t}\n\t\t\tline, lineOk = t.handleKey(key)\n\t\t}\n\t\tif len(rest) > 0 {\n\t\t\tn := copy(t.inBuf[:], rest)\n\t\t\tt.remainder = t.inBuf[:n]\n\t\t} else {\n\t\t\tt.remainder = nil\n\t\t}\n\t\tt.c.Write(t.outBuf)\n\t\tt.outBuf = t.outBuf[:0]\n\t\tif lineOk {\n\t\t\tif t.echo {\n\t\t\t\tt.historyIndex = -1\n\t\t\t\tt.history.Add(line)\n\t\t\t}\n\t\t\tif lineIsPasted {\n\t\t\t\terr = ErrPasteIndicator\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// t.remainder is a slice at the beginning of t.inBuf\n\t\t// containing a partial key sequence\n\t\treadBuf := t.inBuf[len(t.remainder):]\n\t\tvar n int\n\n\t\tt.lock.Unlock()\n\t\tn, err = t.c.Read(readBuf)\n\t\tt.lock.Lock()\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tt.remainder = t.inBuf[:n+len(t.remainder)]\n\t}\n\n\tpanic(\"unreachable\") // for Go 1.0.\n}\n\n// SetPrompt sets the prompt to be used when reading subsequent lines.\nfunc (t *Terminal) SetPrompt(prompt string) {\n\tt.lock.Lock()\n\tdefer t.lock.Unlock()\n\n\tt.prompt = []rune(prompt)\n}\n\nfunc (t *Terminal) clearAndRepaintLinePlusNPrevious(numPrevLines int) {\n\t// Move cursor to column zero at the start of the line.\n\tt.move(t.cursorY, 0, t.cursorX, 0)\n\tt.cursorX, t.cursorY = 0, 0\n\tt.clearLineToRight()\n\tfor t.cursorY < numPrevLines {\n\t\t// Move down a line\n\t\tt.move(0, 1, 0, 0)\n\t\tt.cursorY++\n\t\tt.clearLineToRight()\n\t}\n\t// Move back to beginning.\n\tt.move(t.cursorY, 0, 0, 0)\n\tt.cursorX, t.cursorY = 0, 0\n\n\tt.queue(t.prompt)\n\tt.advanceCursor(visualLength(t.prompt))\n\tt.writeLine(t.line)\n\tt.moveCursorToPos(t.pos)\n}\n\nfunc (t *Terminal) SetSize(width, height int) error {\n\tt.lock.Lock()\n\tdefer t.lock.Unlock()\n\n\tif width == 0 {\n\t\twidth = 1\n\t}\n\n\toldWidth := t.termWidth\n\tt.termWidth, t.termHeight = width, height\n\n\tswitch {\n\tcase width == oldWidth:\n\t\t// If the width didn't change then nothing else needs to be\n\t\t// done.\n\t\treturn nil\n\tcase len(t.line) == 0 && t.cursorX == 0 && t.cursorY == 0:\n\t\t// If there is nothing on current line and no prompt printed,\n\t\t// just do nothing\n\t\treturn nil\n\tcase width < oldWidth:\n\t\t// Some terminals (e.g. xterm) will truncate lines that were\n\t\t// too long when shinking. Others, (e.g. gnome-terminal) will\n\t\t// attempt to wrap them. For the former, repainting t.maxLine\n\t\t// works great, but that behaviour goes badly wrong in the case\n\t\t// of the latter because they have doubled every full line.\n\n\t\t// We assume that we are working on a terminal that wraps lines\n\t\t// and adjust the cursor position based on every previous line\n\t\t// wrapping and turning into two. This causes the prompt on\n\t\t// xterms to move upwards, which isn't great, but it avoids a\n\t\t// huge mess with gnome-terminal.\n\t\tif t.cursorX >= t.termWidth {\n\t\t\tt.cursorX = t.termWidth - 1\n\t\t}\n\t\tt.cursorY *= 2\n\t\tt.clearAndRepaintLinePlusNPrevious(t.maxLine * 2)\n\tcase width > oldWidth:\n\t\t// If the terminal expands then our position calculations will\n\t\t// be wrong in the future because we think the cursor is\n\t\t// |t.pos| chars into the string, but there will be a gap at\n\t\t// the end of any wrapped line.\n\t\t//\n\t\t// But the position will actually be correct until we move, so\n\t\t// we can move back to the beginning and repaint everything.\n\t\tt.clearAndRepaintLinePlusNPrevious(t.maxLine)\n\t}\n\n\t_, err := t.c.Write(t.outBuf)\n\tt.outBuf = t.outBuf[:0]\n\treturn err\n}\n\ntype pasteIndicatorError struct{}\n\nfunc (pasteIndicatorError) Error() string {\n\treturn \"terminal: ErrPasteIndicator not correctly handled\"\n}\n\n// ErrPasteIndicator may be returned from ReadLine as the error, in addition\n// to valid line data. It indicates that bracketed paste mode is enabled and\n// that the returned line consists only of pasted data. Programs may wish to\n// interpret pasted data more literally than typed data.\nvar ErrPasteIndicator = pasteIndicatorError{}\n\n// SetBracketedPasteMode requests that the terminal bracket paste operations\n// with markers. Not all terminals support this but, if it is supported, then\n// enabling this mode will stop any autocomplete callback from running due to\n// pastes. Additionally, any lines that are completely pasted will be returned\n// from ReadLine with the error set to ErrPasteIndicator.\nfunc (t *Terminal) SetBracketedPasteMode(on bool) {\n\tif on {\n\t\tio.WriteString(t.c, \"\\x1b[?2004h\")\n\t} else {\n\t\tio.WriteString(t.c, \"\\x1b[?2004l\")\n\t}\n}\n\n// stRingBuffer is a ring buffer of strings.\ntype stRingBuffer struct {\n\t// entries contains max elements.\n\tentries []string\n\tmax     int\n\t// head contains the index of the element most recently added to the ring.\n\thead int\n\t// size contains the number of elements in the ring.\n\tsize int\n}\n\nfunc (s *stRingBuffer) Add(a string) {\n\tif s.entries == nil {\n\t\tconst defaultNumEntries = 100\n\t\ts.entries = make([]string, defaultNumEntries)\n\t\ts.max = defaultNumEntries\n\t}\n\n\ts.head = (s.head + 1) % s.max\n\ts.entries[s.head] = a\n\tif s.size < s.max {\n\t\ts.size++\n\t}\n}\n\n// NthPreviousEntry returns the value passed to the nth previous call to Add.\n// If n is zero then the immediately prior value is returned, if one, then the\n// next most recent, and so on. If such an element doesn't exist then ok is\n// false.\nfunc (s *stRingBuffer) NthPreviousEntry(n int) (value string, ok bool) {\n\tif n >= s.size {\n\t\treturn \"\", false\n\t}\n\tindex := s.head - n\n\tif index < 0 {\n\t\tindex += s.max\n\t}\n\treturn s.entries[index], true\n}\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/ssh/terminal/util.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// +build darwin dragonfly freebsd linux,!appengine netbsd openbsd\n\n// Package terminal provides support functions for dealing with terminals, as\n// commonly found on UNIX systems.\n//\n// Putting a terminal into raw mode is the most common requirement:\n//\n// \toldState, err := terminal.MakeRaw(0)\n// \tif err != nil {\n// \t        panic(err)\n// \t}\n// \tdefer terminal.Restore(0, oldState)\npackage terminal // import \"golang.org/x/crypto/ssh/terminal\"\n\nimport (\n\t\"io\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// State contains the state of a terminal.\ntype State struct {\n\ttermios syscall.Termios\n}\n\n// IsTerminal returns true if the given file descriptor is a terminal.\nfunc IsTerminal(fd int) bool {\n\tvar termios syscall.Termios\n\t_, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)\n\treturn err == 0\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd int) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState.termios\n\tnewState.Iflag &^= syscall.ISTRIP | syscall.INLCR | syscall.ICRNL | syscall.IGNCR | syscall.IXON | syscall.IXOFF\n\tnewState.Lflag &^= syscall.ECHO | syscall.ICANON | syscall.ISIG\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlWriteTermios, uintptr(unsafe.Pointer(&newState)), 0, 0, 0); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n\n// GetState returns the current state of a terminal which may be useful to\n// restore the terminal after a signal.\nfunc GetState(fd int) (*State, error) {\n\tvar oldState State\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); err != 0 {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n\n// Restore restores the terminal connected to the given file descriptor to a\n// previous state.\nfunc Restore(fd int, state *State) error {\n\t_, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlWriteTermios, uintptr(unsafe.Pointer(&state.termios)), 0, 0, 0)\n\treturn err\n}\n\n// GetSize returns the dimensions of the given terminal.\nfunc GetSize(fd int) (width, height int, err error) {\n\tvar dimensions [4]uint16\n\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(&dimensions)), 0, 0, 0); err != 0 {\n\t\treturn -1, -1, err\n\t}\n\treturn int(dimensions[1]), int(dimensions[0]), nil\n}\n\n// ReadPassword reads a line of input from a terminal without local echo.  This\n// is commonly used for inputting passwords and other sensitive data. The slice\n// returned does not include the \\n.\nfunc ReadPassword(fd int) ([]byte, error) {\n\tvar oldState syscall.Termios\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&oldState)), 0, 0, 0); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tnewState := oldState\n\tnewState.Lflag &^= syscall.ECHO\n\tnewState.Lflag |= syscall.ICANON | syscall.ISIG\n\tnewState.Iflag |= syscall.ICRNL\n\tif _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlWriteTermios, uintptr(unsafe.Pointer(&newState)), 0, 0, 0); err != 0 {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\tsyscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlWriteTermios, uintptr(unsafe.Pointer(&oldState)), 0, 0, 0)\n\t}()\n\n\tvar buf [16]byte\n\tvar ret []byte\n\tfor {\n\t\tn, err := syscall.Read(fd, buf[:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\tif len(ret) == 0 {\n\t\t\t\treturn nil, io.EOF\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif buf[n-1] == '\\n' {\n\t\t\tn--\n\t\t}\n\t\tret = append(ret, buf[:n]...)\n\t\tif n < len(buf) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn ret, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/ssh/terminal/util_bsd.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// +build darwin dragonfly freebsd netbsd openbsd\n\npackage terminal\n\nimport \"syscall\"\n\nconst ioctlReadTermios = syscall.TIOCGETA\nconst ioctlWriteTermios = syscall.TIOCSETA\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/ssh/terminal/util_linux.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 terminal\n\n// These constants are declared here, rather than importing\n// them from the syscall package as some syscall packages, even\n// on linux, for example gccgo, do not declare them.\nconst ioctlReadTermios = 0x5401  // syscall.TCGETS\nconst ioctlWriteTermios = 0x5402 // syscall.TCSETS\n"
  },
  {
    "path": "vendor/golang.org/x/crypto/ssh/terminal/util_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\n// +build windows\n\n// Package terminal provides support functions for dealing with terminals, as\n// commonly found on UNIX systems.\n//\n// Putting a terminal into raw mode is the most common requirement:\n//\n// \toldState, err := terminal.MakeRaw(0)\n// \tif err != nil {\n// \t        panic(err)\n// \t}\n// \tdefer terminal.Restore(0, oldState)\npackage terminal\n\nimport (\n\t\"io\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tenableLineInput       = 2\n\tenableEchoInput       = 4\n\tenableProcessedInput  = 1\n\tenableWindowInput     = 8\n\tenableMouseInput      = 16\n\tenableInsertMode      = 32\n\tenableQuickEditMode   = 64\n\tenableExtendedFlags   = 128\n\tenableAutoPosition    = 256\n\tenableProcessedOutput = 1\n\tenableWrapAtEolOutput = 2\n)\n\nvar kernel32 = syscall.NewLazyDLL(\"kernel32.dll\")\n\nvar (\n\tprocGetConsoleMode             = kernel32.NewProc(\"GetConsoleMode\")\n\tprocSetConsoleMode             = kernel32.NewProc(\"SetConsoleMode\")\n\tprocGetConsoleScreenBufferInfo = kernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n)\n\ntype (\n\tshort int16\n\tword  uint16\n\n\tcoord struct {\n\t\tx short\n\t\ty short\n\t}\n\tsmallRect struct {\n\t\tleft   short\n\t\ttop    short\n\t\tright  short\n\t\tbottom short\n\t}\n\tconsoleScreenBufferInfo struct {\n\t\tsize              coord\n\t\tcursorPosition    coord\n\t\tattributes        word\n\t\twindow            smallRect\n\t\tmaximumWindowSize coord\n\t}\n)\n\ntype State struct {\n\tmode uint32\n}\n\n// IsTerminal returns true if the given file descriptor is a terminal.\nfunc IsTerminal(fd int) bool {\n\tvar st uint32\n\tr, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)\n\treturn r != 0 && e == 0\n}\n\n// MakeRaw put the terminal connected to the given file descriptor into raw\n// mode and returns the previous state of the terminal so that it can be\n// restored.\nfunc MakeRaw(fd int) (*State, error) {\n\tvar st uint32\n\t_, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)\n\tif e != 0 {\n\t\treturn nil, error(e)\n\t}\n\tst &^= (enableEchoInput | enableProcessedInput | enableLineInput | enableProcessedOutput)\n\t_, _, e = syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(fd), uintptr(st), 0)\n\tif e != 0 {\n\t\treturn nil, error(e)\n\t}\n\treturn &State{st}, nil\n}\n\n// GetState returns the current state of a terminal which may be useful to\n// restore the terminal after a signal.\nfunc GetState(fd int) (*State, error) {\n\tvar st uint32\n\t_, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)\n\tif e != 0 {\n\t\treturn nil, error(e)\n\t}\n\treturn &State{st}, nil\n}\n\n// Restore restores the terminal connected to the given file descriptor to a\n// previous state.\nfunc Restore(fd int, state *State) error {\n\t_, _, err := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(fd), uintptr(state.mode), 0)\n\treturn err\n}\n\n// GetSize returns the dimensions of the given terminal.\nfunc GetSize(fd int) (width, height int, err error) {\n\tvar info consoleScreenBufferInfo\n\t_, _, e := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&info)), 0)\n\tif e != 0 {\n\t\treturn 0, 0, error(e)\n\t}\n\treturn int(info.size.x), int(info.size.y), nil\n}\n\n// ReadPassword reads a line of input from a terminal without local echo.  This\n// is commonly used for inputting passwords and other sensitive data. The slice\n// returned does not include the \\n.\nfunc ReadPassword(fd int) ([]byte, error) {\n\tvar st uint32\n\t_, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)\n\tif e != 0 {\n\t\treturn nil, error(e)\n\t}\n\told := st\n\n\tst &^= (enableEchoInput)\n\tst |= (enableProcessedInput | enableLineInput | enableProcessedOutput)\n\t_, _, e = syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(fd), uintptr(st), 0)\n\tif e != 0 {\n\t\treturn nil, error(e)\n\t}\n\n\tdefer func() {\n\t\tsyscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(fd), uintptr(old), 0)\n\t}()\n\n\tvar buf [16]byte\n\tvar ret []byte\n\tfor {\n\t\tn, err := syscall.Read(syscall.Handle(fd), buf[:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\tif len(ret) == 0 {\n\t\t\t\treturn nil, io.EOF\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif buf[n-1] == '\\n' {\n\t\t\tn--\n\t\t}\n\t\tif n > 0 && buf[n-1] == '\\r' {\n\t\t\tn--\n\t\t}\n\t\tret = append(ret, buf[:n]...)\n\t\tif n < len(buf) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn ret, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/.gitattributes",
    "content": "# Treat all files in this repo as binary, with no git magic updating\n# line endings. Windows users contributing to Go will need to use a\n# modern version of git and editors capable of LF line endings.\n#\n# We'll prevent accidental CRLF line endings from entering the repo\n# via the git-review gofmt checks.\n#\n# See golang.org/issue/9281\n\n* -text\n"
  },
  {
    "path": "vendor/golang.org/x/net/.gitignore",
    "content": "# Add no patterns to .gitignore except for files generated by the build.\nlast-change\n"
  },
  {
    "path": "vendor/golang.org/x/net/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "vendor/golang.org/x/net/CONTRIBUTING.md",
    "content": "# Contributing to Go\n\nGo is an open source project.\n\nIt is the work of hundreds of contributors. We appreciate your help!\n\n## Filing issues\n\nWhen [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:\n\n1.  What version of Go are you using (`go version`)?\n2.  What operating system and processor architecture are you using?\n3.  What did you do?\n4.  What did you expect to see?\n5.  What did you see instead?\n\nGeneral questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.\nThe gophers there will answer or ask you to file an issue if you've tripped over a bug.\n\n## Contributing code\n\nPlease read the [Contribution Guidelines](https://golang.org/doc/contribute.html)\nbefore sending patches.\n\nUnless otherwise noted, the Go source files are distributed under\nthe BSD-style license found in the LICENSE file.\n"
  },
  {
    "path": "vendor/golang.org/x/net/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "vendor/golang.org/x/net/LICENSE",
    "content": "Copyright (c) 2009 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/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/README.md",
    "content": "# Go Networking\n\nThis repository holds supplementary Go networking libraries.\n\n## Download/Install\n\nThe easiest way to install is to run `go get -u golang.org/x/net`. You can\nalso manually git clone the repository to `$GOPATH/src/golang.org/x/net`.\n\n## Report Issues / Send Patches\n\nThis repository uses Gerrit for code changes. To learn how to submit\nchanges to this repository, see https://golang.org/doc/contribute.html.\nThe main issue tracker for the net repository is located at\nhttps://github.com/golang/go/issues. Prefix your issue with \"x/net:\" in the\nsubject line, so it is easy to find.\n"
  },
  {
    "path": "vendor/golang.org/x/net/codereview.cfg",
    "content": "issuerepo: golang/go\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 defines the Context type, which carries deadlines,\n// cancelation signals, and other request-scoped values across API boundaries\n// and between processes.\n// As of Go 1.7 this package is available in the standard library under the\n// name context.  https://golang.org/pkg/context.\n//\n// Incoming requests to a server should create a Context, and outgoing calls to\n// servers should accept a Context. The chain of function calls between must\n// propagate the Context, optionally replacing it with a modified copy created\n// using WithDeadline, WithTimeout, WithCancel, or WithValue.\n//\n// Programs that use Contexts should follow these rules to keep interfaces\n// consistent across packages and enable static analysis tools to check context\n// propagation:\n//\n// Do not store Contexts inside a struct type; instead, pass a Context\n// explicitly to each function that needs it. The Context should be the first\n// parameter, typically named ctx:\n//\n// \tfunc DoSomething(ctx context.Context, arg Arg) error {\n// \t\t// ... use ctx ...\n// \t}\n//\n// Do not pass a nil Context, even if a function permits it. Pass context.TODO\n// if you are unsure about which Context to use.\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 same Context may be passed to functions running in different goroutines;\n// Contexts are safe for simultaneous use by multiple goroutines.\n//\n// See http://blog.golang.org/context for example code for a server that uses\n// Contexts.\npackage context // import \"golang.org/x/net/context\"\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.\nfunc Background() Context {\n\treturn background\n}\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).  TODO is recognized by static analysis tools that determine\n// whether Contexts are propagated correctly in a program.\nfunc TODO() Context {\n\treturn todo\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/context/go17.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// +build go1.7\n\npackage context\n\nimport (\n\t\"context\" // standard library's context, as of Go 1.7\n\t\"time\"\n)\n\nvar (\n\ttodo       = context.TODO()\n\tbackground = context.Background()\n)\n\n// Canceled is the error returned by Context.Err when the context is canceled.\nvar Canceled = context.Canceled\n\n// DeadlineExceeded is the error returned by Context.Err when the context's\n// deadline passes.\nvar DeadlineExceeded = context.DeadlineExceeded\n\n// WithCancel returns a copy of parent with a new Done channel. The returned\n// context's Done channel is closed 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.\nfunc WithCancel(parent Context) (ctx Context, cancel CancelFunc) {\n\tctx, f := context.WithCancel(parent)\n\treturn ctx, CancelFunc(f)\n}\n\n// WithDeadline returns a copy of the parent context with the deadline adjusted\n// to be no later than d. If the parent's deadline is already earlier than d,\n// WithDeadline(parent, d) is semantically equivalent to parent. The returned\n// context's Done channel is closed when the deadline expires, when the returned\n// cancel function is called, or when the parent context's Done channel is\n// 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.\nfunc WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {\n\tctx, f := context.WithDeadline(parent, deadline)\n\treturn ctx, CancelFunc(f)\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}\nfunc WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {\n\treturn WithDeadline(parent, time.Now().Add(timeout))\n}\n\n// WithValue returns a copy of parent in which the value associated with key is\n// val.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\nfunc WithValue(parent Context, key interface{}, val interface{}) Context {\n\treturn context.WithValue(parent, key, val)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/context/go19.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// +build go1.9\n\npackage context\n\nimport \"context\" // standard library's context, as of Go 1.7\n\n// A Context carries a deadline, a cancelation signal, and other values across\n// API boundaries.\n//\n// Context's methods may be called by multiple goroutines simultaneously.\ntype Context = context.Context\n\n// A CancelFunc tells an operation to abandon its work.\n// A CancelFunc does not wait for the work to stop.\n// After the first call, subsequent calls to a CancelFunc do nothing.\ntype CancelFunc = context.CancelFunc\n"
  },
  {
    "path": "vendor/golang.org/x/net/context/pre_go17.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// +build !go1.7\n\npackage context\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n)\n\n// An emptyCtx is never canceled, has no values, and has no deadline. It is not\n// struct{}, since vars of this type must have distinct addresses.\ntype emptyCtx int\n\nfunc (*emptyCtx) Deadline() (deadline time.Time, ok bool) {\n\treturn\n}\n\nfunc (*emptyCtx) Done() <-chan struct{} {\n\treturn nil\n}\n\nfunc (*emptyCtx) Err() error {\n\treturn nil\n}\n\nfunc (*emptyCtx) Value(key interface{}) interface{} {\n\treturn nil\n}\n\nfunc (e *emptyCtx) String() string {\n\tswitch e {\n\tcase background:\n\t\treturn \"context.Background\"\n\tcase todo:\n\t\treturn \"context.TODO\"\n\t}\n\treturn \"unknown empty Context\"\n}\n\nvar (\n\tbackground = new(emptyCtx)\n\ttodo       = new(emptyCtx)\n)\n\n// Canceled is the error returned by Context.Err when the context is canceled.\nvar Canceled = errors.New(\"context canceled\")\n\n// DeadlineExceeded is the error returned by Context.Err when the context's\n// deadline passes.\nvar DeadlineExceeded = errors.New(\"context deadline exceeded\")\n\n// WithCancel returns a copy of parent with a new Done channel. The returned\n// context's Done channel is closed 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.\nfunc WithCancel(parent Context) (ctx Context, cancel CancelFunc) {\n\tc := newCancelCtx(parent)\n\tpropagateCancel(parent, c)\n\treturn c, func() { c.cancel(true, Canceled) }\n}\n\n// newCancelCtx returns an initialized cancelCtx.\nfunc newCancelCtx(parent Context) *cancelCtx {\n\treturn &cancelCtx{\n\t\tContext: parent,\n\t\tdone:    make(chan struct{}),\n\t}\n}\n\n// propagateCancel arranges for child to be canceled when parent is.\nfunc propagateCancel(parent Context, child canceler) {\n\tif parent.Done() == nil {\n\t\treturn // parent is never canceled\n\t}\n\tif p, ok := parentCancelCtx(parent); ok {\n\t\tp.mu.Lock()\n\t\tif p.err != nil {\n\t\t\t// parent has already been canceled\n\t\t\tchild.cancel(false, p.err)\n\t\t} else {\n\t\t\tif p.children == nil {\n\t\t\t\tp.children = make(map[canceler]bool)\n\t\t\t}\n\t\t\tp.children[child] = true\n\t\t}\n\t\tp.mu.Unlock()\n\t} else {\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-parent.Done():\n\t\t\t\tchild.cancel(false, parent.Err())\n\t\t\tcase <-child.Done():\n\t\t\t}\n\t\t}()\n\t}\n}\n\n// parentCancelCtx follows a chain of parent references until it finds a\n// *cancelCtx. This function understands how each of the concrete types in this\n// package represents its parent.\nfunc parentCancelCtx(parent Context) (*cancelCtx, bool) {\n\tfor {\n\t\tswitch c := parent.(type) {\n\t\tcase *cancelCtx:\n\t\t\treturn c, true\n\t\tcase *timerCtx:\n\t\t\treturn c.cancelCtx, true\n\t\tcase *valueCtx:\n\t\t\tparent = c.Context\n\t\tdefault:\n\t\t\treturn nil, false\n\t\t}\n\t}\n}\n\n// removeChild removes a context from its parent.\nfunc removeChild(parent Context, child canceler) {\n\tp, ok := parentCancelCtx(parent)\n\tif !ok {\n\t\treturn\n\t}\n\tp.mu.Lock()\n\tif p.children != nil {\n\t\tdelete(p.children, child)\n\t}\n\tp.mu.Unlock()\n}\n\n// A canceler is a context type that can be canceled directly. The\n// implementations are *cancelCtx and *timerCtx.\ntype canceler interface {\n\tcancel(removeFromParent bool, err error)\n\tDone() <-chan struct{}\n}\n\n// A cancelCtx can be canceled. When canceled, it also cancels any children\n// that implement canceler.\ntype cancelCtx struct {\n\tContext\n\n\tdone chan struct{} // closed by the first cancel call.\n\n\tmu       sync.Mutex\n\tchildren map[canceler]bool // set to nil by the first cancel call\n\terr      error             // set to non-nil by the first cancel call\n}\n\nfunc (c *cancelCtx) Done() <-chan struct{} {\n\treturn c.done\n}\n\nfunc (c *cancelCtx) Err() error {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\treturn c.err\n}\n\nfunc (c *cancelCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithCancel\", c.Context)\n}\n\n// cancel closes c.done, cancels each of c's children, and, if\n// removeFromParent is true, removes c from its parent's children.\nfunc (c *cancelCtx) cancel(removeFromParent bool, err error) {\n\tif err == nil {\n\t\tpanic(\"context: internal error: missing cancel error\")\n\t}\n\tc.mu.Lock()\n\tif c.err != nil {\n\t\tc.mu.Unlock()\n\t\treturn // already canceled\n\t}\n\tc.err = err\n\tclose(c.done)\n\tfor child := range c.children {\n\t\t// NOTE: acquiring the child's lock while holding parent's lock.\n\t\tchild.cancel(false, err)\n\t}\n\tc.children = nil\n\tc.mu.Unlock()\n\n\tif removeFromParent {\n\t\tremoveChild(c.Context, c)\n\t}\n}\n\n// WithDeadline returns a copy of the parent context with the deadline adjusted\n// to be no later than d. If the parent's deadline is already earlier than d,\n// WithDeadline(parent, d) is semantically equivalent to parent. The returned\n// context's Done channel is closed when the deadline expires, when the returned\n// cancel function is called, or when the parent context's Done channel is\n// 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.\nfunc WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {\n\tif cur, ok := parent.Deadline(); ok && cur.Before(deadline) {\n\t\t// The current deadline is already sooner than the new one.\n\t\treturn WithCancel(parent)\n\t}\n\tc := &timerCtx{\n\t\tcancelCtx: newCancelCtx(parent),\n\t\tdeadline:  deadline,\n\t}\n\tpropagateCancel(parent, c)\n\td := deadline.Sub(time.Now())\n\tif d <= 0 {\n\t\tc.cancel(true, DeadlineExceeded) // deadline has already passed\n\t\treturn c, func() { c.cancel(true, Canceled) }\n\t}\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.err == nil {\n\t\tc.timer = time.AfterFunc(d, func() {\n\t\t\tc.cancel(true, DeadlineExceeded)\n\t\t})\n\t}\n\treturn c, func() { c.cancel(true, Canceled) }\n}\n\n// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to\n// implement Done and Err. It implements cancel by stopping its timer then\n// delegating to cancelCtx.cancel.\ntype timerCtx struct {\n\t*cancelCtx\n\ttimer *time.Timer // Under cancelCtx.mu.\n\n\tdeadline time.Time\n}\n\nfunc (c *timerCtx) Deadline() (deadline time.Time, ok bool) {\n\treturn c.deadline, true\n}\n\nfunc (c *timerCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithDeadline(%s [%s])\", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))\n}\n\nfunc (c *timerCtx) cancel(removeFromParent bool, err error) {\n\tc.cancelCtx.cancel(false, err)\n\tif removeFromParent {\n\t\t// Remove this timerCtx from its parent cancelCtx's children.\n\t\tremoveChild(c.cancelCtx.Context, c)\n\t}\n\tc.mu.Lock()\n\tif c.timer != nil {\n\t\tc.timer.Stop()\n\t\tc.timer = nil\n\t}\n\tc.mu.Unlock()\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}\nfunc WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {\n\treturn WithDeadline(parent, time.Now().Add(timeout))\n}\n\n// WithValue returns a copy of parent in which the value associated with key is\n// val.\n//\n// Use context Values only for request-scoped data that transits processes and\n// APIs, not for passing optional parameters to functions.\nfunc WithValue(parent Context, key interface{}, val interface{}) Context {\n\treturn &valueCtx{parent, key, val}\n}\n\n// A valueCtx carries a key-value pair. It implements Value for that key and\n// delegates all other calls to the embedded Context.\ntype valueCtx struct {\n\tContext\n\tkey, val interface{}\n}\n\nfunc (c *valueCtx) String() string {\n\treturn fmt.Sprintf(\"%v.WithValue(%#v, %#v)\", c.Context, c.key, c.val)\n}\n\nfunc (c *valueCtx) Value(key interface{}) interface{} {\n\tif c.key == key {\n\t\treturn c.val\n\t}\n\treturn c.Context.Value(key)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/context/pre_go19.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// +build !go1.9\n\npackage context\n\nimport \"time\"\n\n// A Context carries a deadline, a cancelation signal, and other values across\n// API boundaries.\n//\n// Context's methods may be called by multiple goroutines simultaneously.\ntype Context interface {\n\t// Deadline returns the time when work done on behalf of this context\n\t// should be canceled. Deadline returns ok==false when no deadline is\n\t// set. Successive calls to Deadline return the same results.\n\tDeadline() (deadline time.Time, ok bool)\n\n\t// Done returns a channel that's closed when work done on behalf of this\n\t// context should be canceled. Done may return nil if this context can\n\t// never be canceled. Successive calls to Done return the same value.\n\t//\n\t// WithCancel arranges for Done to be closed when cancel is called;\n\t// WithDeadline arranges for Done to be closed when the deadline\n\t// expires; WithTimeout arranges for Done to be closed when the timeout\n\t// elapses.\n\t//\n\t// Done is provided for use in select statements:\n\t//\n\t//  // Stream generates values with DoSomething and sends them to out\n\t//  // until DoSomething returns an error or ctx.Done is closed.\n\t//  func Stream(ctx context.Context, out chan<- Value) error {\n\t//  \tfor {\n\t//  \t\tv, err := DoSomething(ctx)\n\t//  \t\tif err != nil {\n\t//  \t\t\treturn err\n\t//  \t\t}\n\t//  \t\tselect {\n\t//  \t\tcase <-ctx.Done():\n\t//  \t\t\treturn ctx.Err()\n\t//  \t\tcase out <- v:\n\t//  \t\t}\n\t//  \t}\n\t//  }\n\t//\n\t// See http://blog.golang.org/pipelines for more examples of how to use\n\t// a Done channel for cancelation.\n\tDone() <-chan struct{}\n\n\t// Err returns a non-nil error value after Done is closed. Err returns\n\t// Canceled if the context was canceled or DeadlineExceeded if the\n\t// context's deadline passed. No other values for Err are defined.\n\t// After Done is closed, successive calls to Err return the same value.\n\tErr() error\n\n\t// Value returns the value associated with this context for key, or nil\n\t// if no value is associated with key. Successive calls to Value with\n\t// the same key returns the same result.\n\t//\n\t// Use context values only for request-scoped data that transits\n\t// processes and API boundaries, not for passing optional parameters to\n\t// functions.\n\t//\n\t// A key identifies a specific value in a Context. Functions that wish\n\t// to store values in Context typically allocate a key in a global\n\t// variable then use that key as the argument to context.WithValue and\n\t// Context.Value. A key can be any type that supports equality;\n\t// packages should define keys as an unexported type to avoid\n\t// collisions.\n\t//\n\t// Packages that define a Context key should provide type-safe accessors\n\t// for the values stores using that key:\n\t//\n\t// \t// Package user defines a User type that's stored in Contexts.\n\t// \tpackage user\n\t//\n\t// \timport \"golang.org/x/net/context\"\n\t//\n\t// \t// User is the type of value stored in the Contexts.\n\t// \ttype User struct {...}\n\t//\n\t// \t// key is an unexported type for keys defined in this package.\n\t// \t// This prevents collisions with keys defined in other packages.\n\t// \ttype key int\n\t//\n\t// \t// userKey is the key for user.User values in Contexts. It is\n\t// \t// unexported; clients use user.NewContext and user.FromContext\n\t// \t// instead of using this key directly.\n\t// \tvar userKey key = 0\n\t//\n\t// \t// NewContext returns a new Context that carries value u.\n\t// \tfunc NewContext(ctx context.Context, u *User) context.Context {\n\t// \t\treturn context.WithValue(ctx, userKey, u)\n\t// \t}\n\t//\n\t// \t// FromContext returns the User value stored in ctx, if any.\n\t// \tfunc FromContext(ctx context.Context) (*User, bool) {\n\t// \t\tu, ok := ctx.Value(userKey).(*User)\n\t// \t\treturn u, ok\n\t// \t}\n\tValue(key interface{}) interface{}\n}\n\n// A CancelFunc tells an operation to abandon its work.\n// A CancelFunc does not wait for the work to stop.\n// After the first call, subsequent calls to a CancelFunc do nothing.\ntype CancelFunc func()\n"
  },
  {
    "path": "vendor/golang.org/x/net/go.mod",
    "content": "module golang.org/x/net\n\ngo 1.11\n\nrequire (\n\tgolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9\n\tgolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd\n\tgolang.org/x/text v0.3.0\n)\n"
  },
  {
    "path": "vendor/golang.org/x/net/go.sum",
    "content": "golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/socks/client.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 socks\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"time\"\n)\n\nvar (\n\tnoDeadline   = time.Time{}\n\taLongTimeAgo = time.Unix(1, 0)\n)\n\nfunc (d *Dialer) connect(ctx context.Context, c net.Conn, address string) (_ net.Addr, ctxErr error) {\n\thost, port, err := splitHostPort(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif deadline, ok := ctx.Deadline(); ok && !deadline.IsZero() {\n\t\tc.SetDeadline(deadline)\n\t\tdefer c.SetDeadline(noDeadline)\n\t}\n\tif ctx != context.Background() {\n\t\terrCh := make(chan error, 1)\n\t\tdone := make(chan struct{})\n\t\tdefer func() {\n\t\t\tclose(done)\n\t\t\tif ctxErr == nil {\n\t\t\t\tctxErr = <-errCh\n\t\t\t}\n\t\t}()\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tc.SetDeadline(aLongTimeAgo)\n\t\t\t\terrCh <- ctx.Err()\n\t\t\tcase <-done:\n\t\t\t\terrCh <- nil\n\t\t\t}\n\t\t}()\n\t}\n\n\tb := make([]byte, 0, 6+len(host)) // the size here is just an estimate\n\tb = append(b, Version5)\n\tif len(d.AuthMethods) == 0 || d.Authenticate == nil {\n\t\tb = append(b, 1, byte(AuthMethodNotRequired))\n\t} else {\n\t\tams := d.AuthMethods\n\t\tif len(ams) > 255 {\n\t\t\treturn nil, errors.New(\"too many authentication methods\")\n\t\t}\n\t\tb = append(b, byte(len(ams)))\n\t\tfor _, am := range ams {\n\t\t\tb = append(b, byte(am))\n\t\t}\n\t}\n\tif _, ctxErr = c.Write(b); ctxErr != nil {\n\t\treturn\n\t}\n\n\tif _, ctxErr = io.ReadFull(c, b[:2]); ctxErr != nil {\n\t\treturn\n\t}\n\tif b[0] != Version5 {\n\t\treturn nil, errors.New(\"unexpected protocol version \" + strconv.Itoa(int(b[0])))\n\t}\n\tam := AuthMethod(b[1])\n\tif am == AuthMethodNoAcceptableMethods {\n\t\treturn nil, errors.New(\"no acceptable authentication methods\")\n\t}\n\tif d.Authenticate != nil {\n\t\tif ctxErr = d.Authenticate(ctx, c, am); ctxErr != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tb = b[:0]\n\tb = append(b, Version5, byte(d.cmd), 0)\n\tif ip := net.ParseIP(host); ip != nil {\n\t\tif ip4 := ip.To4(); ip4 != nil {\n\t\t\tb = append(b, AddrTypeIPv4)\n\t\t\tb = append(b, ip4...)\n\t\t} else if ip6 := ip.To16(); ip6 != nil {\n\t\t\tb = append(b, AddrTypeIPv6)\n\t\t\tb = append(b, ip6...)\n\t\t} else {\n\t\t\treturn nil, errors.New(\"unknown address type\")\n\t\t}\n\t} else {\n\t\tif len(host) > 255 {\n\t\t\treturn nil, errors.New(\"FQDN too long\")\n\t\t}\n\t\tb = append(b, AddrTypeFQDN)\n\t\tb = append(b, byte(len(host)))\n\t\tb = append(b, host...)\n\t}\n\tb = append(b, byte(port>>8), byte(port))\n\tif _, ctxErr = c.Write(b); ctxErr != nil {\n\t\treturn\n\t}\n\n\tif _, ctxErr = io.ReadFull(c, b[:4]); ctxErr != nil {\n\t\treturn\n\t}\n\tif b[0] != Version5 {\n\t\treturn nil, errors.New(\"unexpected protocol version \" + strconv.Itoa(int(b[0])))\n\t}\n\tif cmdErr := Reply(b[1]); cmdErr != StatusSucceeded {\n\t\treturn nil, errors.New(\"unknown error \" + cmdErr.String())\n\t}\n\tif b[2] != 0 {\n\t\treturn nil, errors.New(\"non-zero reserved field\")\n\t}\n\tl := 2\n\tvar a Addr\n\tswitch b[3] {\n\tcase AddrTypeIPv4:\n\t\tl += net.IPv4len\n\t\ta.IP = make(net.IP, net.IPv4len)\n\tcase AddrTypeIPv6:\n\t\tl += net.IPv6len\n\t\ta.IP = make(net.IP, net.IPv6len)\n\tcase AddrTypeFQDN:\n\t\tif _, err := io.ReadFull(c, b[:1]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tl += int(b[0])\n\tdefault:\n\t\treturn nil, errors.New(\"unknown address type \" + strconv.Itoa(int(b[3])))\n\t}\n\tif cap(b) < l {\n\t\tb = make([]byte, l)\n\t} else {\n\t\tb = b[:l]\n\t}\n\tif _, ctxErr = io.ReadFull(c, b); ctxErr != nil {\n\t\treturn\n\t}\n\tif a.IP != nil {\n\t\tcopy(a.IP, b)\n\t} else {\n\t\ta.Name = string(b[:len(b)-2])\n\t}\n\ta.Port = int(b[len(b)-2])<<8 | int(b[len(b)-1])\n\treturn &a, nil\n}\n\nfunc splitHostPort(address string) (string, int, error) {\n\thost, port, err := net.SplitHostPort(address)\n\tif err != nil {\n\t\treturn \"\", 0, err\n\t}\n\tportnum, err := strconv.Atoi(port)\n\tif err != nil {\n\t\treturn \"\", 0, err\n\t}\n\tif 1 > portnum || portnum > 0xffff {\n\t\treturn \"\", 0, errors.New(\"port number out of range \" + port)\n\t}\n\treturn host, portnum, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/internal/socks/socks.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 socks provides a SOCKS version 5 client implementation.\n//\n// SOCKS protocol version 5 is defined in RFC 1928.\n// Username/Password authentication for SOCKS version 5 is defined in\n// RFC 1929.\npackage socks\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n)\n\n// A Command represents a SOCKS command.\ntype Command int\n\nfunc (cmd Command) String() string {\n\tswitch cmd {\n\tcase CmdConnect:\n\t\treturn \"socks connect\"\n\tcase cmdBind:\n\t\treturn \"socks bind\"\n\tdefault:\n\t\treturn \"socks \" + strconv.Itoa(int(cmd))\n\t}\n}\n\n// An AuthMethod represents a SOCKS authentication method.\ntype AuthMethod int\n\n// A Reply represents a SOCKS command reply code.\ntype Reply int\n\nfunc (code Reply) String() string {\n\tswitch code {\n\tcase StatusSucceeded:\n\t\treturn \"succeeded\"\n\tcase 0x01:\n\t\treturn \"general SOCKS server failure\"\n\tcase 0x02:\n\t\treturn \"connection not allowed by ruleset\"\n\tcase 0x03:\n\t\treturn \"network unreachable\"\n\tcase 0x04:\n\t\treturn \"host unreachable\"\n\tcase 0x05:\n\t\treturn \"connection refused\"\n\tcase 0x06:\n\t\treturn \"TTL expired\"\n\tcase 0x07:\n\t\treturn \"command not supported\"\n\tcase 0x08:\n\t\treturn \"address type not supported\"\n\tdefault:\n\t\treturn \"unknown code: \" + strconv.Itoa(int(code))\n\t}\n}\n\n// Wire protocol constants.\nconst (\n\tVersion5 = 0x05\n\n\tAddrTypeIPv4 = 0x01\n\tAddrTypeFQDN = 0x03\n\tAddrTypeIPv6 = 0x04\n\n\tCmdConnect Command = 0x01 // establishes an active-open forward proxy connection\n\tcmdBind    Command = 0x02 // establishes a passive-open forward proxy connection\n\n\tAuthMethodNotRequired         AuthMethod = 0x00 // no authentication required\n\tAuthMethodUsernamePassword    AuthMethod = 0x02 // use username/password\n\tAuthMethodNoAcceptableMethods AuthMethod = 0xff // no acceptable authentication methods\n\n\tStatusSucceeded Reply = 0x00\n)\n\n// An Addr represents a SOCKS-specific address.\n// Either Name or IP is used exclusively.\ntype Addr struct {\n\tName string // fully-qualified domain name\n\tIP   net.IP\n\tPort int\n}\n\nfunc (a *Addr) Network() string { return \"socks\" }\n\nfunc (a *Addr) String() string {\n\tif a == nil {\n\t\treturn \"<nil>\"\n\t}\n\tport := strconv.Itoa(a.Port)\n\tif a.IP == nil {\n\t\treturn net.JoinHostPort(a.Name, port)\n\t}\n\treturn net.JoinHostPort(a.IP.String(), port)\n}\n\n// A Conn represents a forward proxy connection.\ntype Conn struct {\n\tnet.Conn\n\n\tboundAddr net.Addr\n}\n\n// BoundAddr returns the address assigned by the proxy server for\n// connecting to the command target address from the proxy server.\nfunc (c *Conn) BoundAddr() net.Addr {\n\tif c == nil {\n\t\treturn nil\n\t}\n\treturn c.boundAddr\n}\n\n// A Dialer holds SOCKS-specific options.\ntype Dialer struct {\n\tcmd          Command // either CmdConnect or cmdBind\n\tproxyNetwork string  // network between a proxy server and a client\n\tproxyAddress string  // proxy server address\n\n\t// ProxyDial specifies the optional dial function for\n\t// establishing the transport connection.\n\tProxyDial func(context.Context, string, string) (net.Conn, error)\n\n\t// AuthMethods specifies the list of request authentication\n\t// methods.\n\t// If empty, SOCKS client requests only AuthMethodNotRequired.\n\tAuthMethods []AuthMethod\n\n\t// Authenticate specifies the optional authentication\n\t// function. It must be non-nil when AuthMethods is not empty.\n\t// It must return an error when the authentication is failed.\n\tAuthenticate func(context.Context, io.ReadWriter, AuthMethod) error\n}\n\n// DialContext connects to the provided address on the provided\n// network.\n//\n// The returned error value may be a net.OpError. When the Op field of\n// net.OpError contains \"socks\", the Source field contains a proxy\n// server address and the Addr field contains a command target\n// address.\n//\n// See func Dial of the net package of standard library for a\n// description of the network and address parameters.\nfunc (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {\n\tif err := d.validateTarget(network, address); err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\tif ctx == nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New(\"nil context\")}\n\t}\n\tvar err error\n\tvar c net.Conn\n\tif d.ProxyDial != nil {\n\t\tc, err = d.ProxyDial(ctx, d.proxyNetwork, d.proxyAddress)\n\t} else {\n\t\tvar dd net.Dialer\n\t\tc, err = dd.DialContext(ctx, d.proxyNetwork, d.proxyAddress)\n\t}\n\tif err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\ta, err := d.connect(ctx, c, address)\n\tif err != nil {\n\t\tc.Close()\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\treturn &Conn{Conn: c, boundAddr: a}, nil\n}\n\n// DialWithConn initiates a connection from SOCKS server to the target\n// network and address using the connection c that is already\n// connected to the SOCKS server.\n//\n// It returns the connection's local address assigned by the SOCKS\n// server.\nfunc (d *Dialer) DialWithConn(ctx context.Context, c net.Conn, network, address string) (net.Addr, error) {\n\tif err := d.validateTarget(network, address); err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\tif ctx == nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New(\"nil context\")}\n\t}\n\ta, err := d.connect(ctx, c, address)\n\tif err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\treturn a, nil\n}\n\n// Dial connects to the provided address on the provided network.\n//\n// Unlike DialContext, it returns a raw transport connection instead\n// of a forward proxy connection.\n//\n// Deprecated: Use DialContext or DialWithConn instead.\nfunc (d *Dialer) Dial(network, address string) (net.Conn, error) {\n\tif err := d.validateTarget(network, address); err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\tvar err error\n\tvar c net.Conn\n\tif d.ProxyDial != nil {\n\t\tc, err = d.ProxyDial(context.Background(), d.proxyNetwork, d.proxyAddress)\n\t} else {\n\t\tc, err = net.Dial(d.proxyNetwork, d.proxyAddress)\n\t}\n\tif err != nil {\n\t\tproxy, dst, _ := d.pathAddrs(address)\n\t\treturn nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err}\n\t}\n\tif _, err := d.DialWithConn(context.Background(), c, network, address); err != nil {\n\t\tc.Close()\n\t\treturn nil, err\n\t}\n\treturn c, nil\n}\n\nfunc (d *Dialer) validateTarget(network, address string) error {\n\tswitch network {\n\tcase \"tcp\", \"tcp6\", \"tcp4\":\n\tdefault:\n\t\treturn errors.New(\"network not implemented\")\n\t}\n\tswitch d.cmd {\n\tcase CmdConnect, cmdBind:\n\tdefault:\n\t\treturn errors.New(\"command not implemented\")\n\t}\n\treturn nil\n}\n\nfunc (d *Dialer) pathAddrs(address string) (proxy, dst net.Addr, err error) {\n\tfor i, s := range []string{d.proxyAddress, address} {\n\t\thost, port, err := splitHostPort(s)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\ta := &Addr{Port: port}\n\t\ta.IP = net.ParseIP(host)\n\t\tif a.IP == nil {\n\t\t\ta.Name = host\n\t\t}\n\t\tif i == 0 {\n\t\t\tproxy = a\n\t\t} else {\n\t\t\tdst = a\n\t\t}\n\t}\n\treturn\n}\n\n// NewDialer returns a new Dialer that dials through the provided\n// proxy server's network and address.\nfunc NewDialer(network, address string) *Dialer {\n\treturn &Dialer{proxyNetwork: network, proxyAddress: address, cmd: CmdConnect}\n}\n\nconst (\n\tauthUsernamePasswordVersion = 0x01\n\tauthStatusSucceeded         = 0x00\n)\n\n// UsernamePassword are the credentials for the username/password\n// authentication method.\ntype UsernamePassword struct {\n\tUsername string\n\tPassword string\n}\n\n// Authenticate authenticates a pair of username and password with the\n// proxy server.\nfunc (up *UsernamePassword) Authenticate(ctx context.Context, rw io.ReadWriter, auth AuthMethod) error {\n\tswitch auth {\n\tcase AuthMethodNotRequired:\n\t\treturn nil\n\tcase AuthMethodUsernamePassword:\n\t\tif len(up.Username) == 0 || len(up.Username) > 255 || len(up.Password) == 0 || len(up.Password) > 255 {\n\t\t\treturn errors.New(\"invalid username/password\")\n\t\t}\n\t\tb := []byte{authUsernamePasswordVersion}\n\t\tb = append(b, byte(len(up.Username)))\n\t\tb = append(b, up.Username...)\n\t\tb = append(b, byte(len(up.Password)))\n\t\tb = append(b, up.Password...)\n\t\t// TODO(mikio): handle IO deadlines and cancelation if\n\t\t// necessary\n\t\tif _, err := rw.Write(b); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := io.ReadFull(rw, b[:2]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif b[0] != authUsernamePasswordVersion {\n\t\t\treturn errors.New(\"invalid username/password version\")\n\t\t}\n\t\tif b[1] != authStatusSucceeded {\n\t\t\treturn errors.New(\"username/password authentication failed\")\n\t\t}\n\t\treturn nil\n\t}\n\treturn errors.New(\"unsupported authentication method \" + strconv.Itoa(int(auth)))\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/proxy/dial.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 proxy\n\nimport (\n\t\"context\"\n\t\"net\"\n)\n\n// A ContextDialer dials using a context.\ntype ContextDialer interface {\n\tDialContext(ctx context.Context, network, address string) (net.Conn, error)\n}\n\n// Dial works like DialContext on net.Dialer but using a dialer returned by FromEnvironment.\n//\n// The passed ctx is only used for returning the Conn, not the lifetime of the Conn.\n//\n// Custom dialers (registered via RegisterDialerType) that do not implement ContextDialer\n// can leak a goroutine for as long as it takes the underlying Dialer implementation to timeout.\n//\n// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed.\nfunc Dial(ctx context.Context, network, address string) (net.Conn, error) {\n\td := FromEnvironment()\n\tif xd, ok := d.(ContextDialer); ok {\n\t\treturn xd.DialContext(ctx, network, address)\n\t}\n\treturn dialContext(ctx, d, network, address)\n}\n\n// WARNING: this can leak a goroutine for as long as the underlying Dialer implementation takes to timeout\n// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed.\nfunc dialContext(ctx context.Context, d Dialer, network, address string) (net.Conn, error) {\n\tvar (\n\t\tconn net.Conn\n\t\tdone = make(chan struct{}, 1)\n\t\terr  error\n\t)\n\tgo func() {\n\t\tconn, err = d.Dial(network, address)\n\t\tclose(done)\n\t\tif conn != nil && ctx.Err() != nil {\n\t\t\tconn.Close()\n\t\t}\n\t}()\n\tselect {\n\tcase <-ctx.Done():\n\t\terr = ctx.Err()\n\tcase <-done:\n\t}\n\treturn conn, err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/proxy/direct.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 proxy\n\nimport (\n\t\"context\"\n\t\"net\"\n)\n\ntype direct struct{}\n\n// Direct implements Dialer by making network connections directly using net.Dial or net.DialContext.\nvar Direct = direct{}\n\nvar (\n\t_ Dialer        = Direct\n\t_ ContextDialer = Direct\n)\n\n// Dial directly invokes net.Dial with the supplied parameters.\nfunc (direct) Dial(network, addr string) (net.Conn, error) {\n\treturn net.Dial(network, addr)\n}\n\n// DialContext instantiates a net.Dialer and invokes its DialContext receiver with the supplied parameters.\nfunc (direct) DialContext(ctx context.Context, network, addr string) (net.Conn, error) {\n\tvar d net.Dialer\n\treturn d.DialContext(ctx, network, addr)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/proxy/per_host.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 proxy\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"strings\"\n)\n\n// A PerHost directs connections to a default Dialer unless the host name\n// requested matches one of a number of exceptions.\ntype PerHost struct {\n\tdef, bypass Dialer\n\n\tbypassNetworks []*net.IPNet\n\tbypassIPs      []net.IP\n\tbypassZones    []string\n\tbypassHosts    []string\n}\n\n// NewPerHost returns a PerHost Dialer that directs connections to either\n// defaultDialer or bypass, depending on whether the connection matches one of\n// the configured rules.\nfunc NewPerHost(defaultDialer, bypass Dialer) *PerHost {\n\treturn &PerHost{\n\t\tdef:    defaultDialer,\n\t\tbypass: bypass,\n\t}\n}\n\n// Dial connects to the address addr on the given network through either\n// defaultDialer or bypass.\nfunc (p *PerHost) Dial(network, addr string) (c net.Conn, err error) {\n\thost, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn p.dialerForRequest(host).Dial(network, addr)\n}\n\n// DialContext connects to the address addr on the given network through either\n// defaultDialer or bypass.\nfunc (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.Conn, err error) {\n\thost, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\td := p.dialerForRequest(host)\n\tif x, ok := d.(ContextDialer); ok {\n\t\treturn x.DialContext(ctx, network, addr)\n\t}\n\treturn dialContext(ctx, d, network, addr)\n}\n\nfunc (p *PerHost) dialerForRequest(host string) Dialer {\n\tif ip := net.ParseIP(host); ip != nil {\n\t\tfor _, net := range p.bypassNetworks {\n\t\t\tif net.Contains(ip) {\n\t\t\t\treturn p.bypass\n\t\t\t}\n\t\t}\n\t\tfor _, bypassIP := range p.bypassIPs {\n\t\t\tif bypassIP.Equal(ip) {\n\t\t\t\treturn p.bypass\n\t\t\t}\n\t\t}\n\t\treturn p.def\n\t}\n\n\tfor _, zone := range p.bypassZones {\n\t\tif strings.HasSuffix(host, zone) {\n\t\t\treturn p.bypass\n\t\t}\n\t\tif host == zone[1:] {\n\t\t\t// For a zone \".example.com\", we match \"example.com\"\n\t\t\t// too.\n\t\t\treturn p.bypass\n\t\t}\n\t}\n\tfor _, bypassHost := range p.bypassHosts {\n\t\tif bypassHost == host {\n\t\t\treturn p.bypass\n\t\t}\n\t}\n\treturn p.def\n}\n\n// AddFromString parses a string that contains comma-separated values\n// specifying hosts that should use the bypass proxy. Each value is either an\n// IP address, a CIDR range, a zone (*.example.com) or a host name\n// (localhost). A best effort is made to parse the string and errors are\n// ignored.\nfunc (p *PerHost) AddFromString(s string) {\n\thosts := strings.Split(s, \",\")\n\tfor _, host := range hosts {\n\t\thost = strings.TrimSpace(host)\n\t\tif len(host) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.Contains(host, \"/\") {\n\t\t\t// We assume that it's a CIDR address like 127.0.0.0/8\n\t\t\tif _, net, err := net.ParseCIDR(host); err == nil {\n\t\t\t\tp.AddNetwork(net)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif ip := net.ParseIP(host); ip != nil {\n\t\t\tp.AddIP(ip)\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(host, \"*.\") {\n\t\t\tp.AddZone(host[1:])\n\t\t\tcontinue\n\t\t}\n\t\tp.AddHost(host)\n\t}\n}\n\n// AddIP specifies an IP address that will use the bypass proxy. Note that\n// this will only take effect if a literal IP address is dialed. A connection\n// to a named host will never match an IP.\nfunc (p *PerHost) AddIP(ip net.IP) {\n\tp.bypassIPs = append(p.bypassIPs, ip)\n}\n\n// AddNetwork specifies an IP range that will use the bypass proxy. Note that\n// this will only take effect if a literal IP address is dialed. A connection\n// to a named host will never match.\nfunc (p *PerHost) AddNetwork(net *net.IPNet) {\n\tp.bypassNetworks = append(p.bypassNetworks, net)\n}\n\n// AddZone specifies a DNS suffix that will use the bypass proxy. A zone of\n// \"example.com\" matches \"example.com\" and all of its subdomains.\nfunc (p *PerHost) AddZone(zone string) {\n\tif strings.HasSuffix(zone, \".\") {\n\t\tzone = zone[:len(zone)-1]\n\t}\n\tif !strings.HasPrefix(zone, \".\") {\n\t\tzone = \".\" + zone\n\t}\n\tp.bypassZones = append(p.bypassZones, zone)\n}\n\n// AddHost specifies a host name that will use the bypass proxy.\nfunc (p *PerHost) AddHost(host string) {\n\tif strings.HasSuffix(host, \".\") {\n\t\thost = host[:len(host)-1]\n\t}\n\tp.bypassHosts = append(p.bypassHosts, host)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/proxy/proxy.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// Package proxy provides support for a variety of protocols to proxy network\n// data.\npackage proxy // import \"golang.org/x/net/proxy\"\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\t\"sync\"\n)\n\n// A Dialer is a means to establish a connection.\n// Custom dialers should also implement ContextDialer.\ntype Dialer interface {\n\t// Dial connects to the given address via the proxy.\n\tDial(network, addr string) (c net.Conn, err error)\n}\n\n// Auth contains authentication parameters that specific Dialers may require.\ntype Auth struct {\n\tUser, Password string\n}\n\n// FromEnvironment returns the dialer specified by the proxy-related\n// variables in the environment and makes underlying connections\n// directly.\nfunc FromEnvironment() Dialer {\n\treturn FromEnvironmentUsing(Direct)\n}\n\n// FromEnvironmentUsing returns the dialer specify by the proxy-related\n// variables in the environment and makes underlying connections\n// using the provided forwarding Dialer (for instance, a *net.Dialer\n// with desired configuration).\nfunc FromEnvironmentUsing(forward Dialer) Dialer {\n\tallProxy := allProxyEnv.Get()\n\tif len(allProxy) == 0 {\n\t\treturn forward\n\t}\n\n\tproxyURL, err := url.Parse(allProxy)\n\tif err != nil {\n\t\treturn forward\n\t}\n\tproxy, err := FromURL(proxyURL, forward)\n\tif err != nil {\n\t\treturn forward\n\t}\n\n\tnoProxy := noProxyEnv.Get()\n\tif len(noProxy) == 0 {\n\t\treturn proxy\n\t}\n\n\tperHost := NewPerHost(proxy, forward)\n\tperHost.AddFromString(noProxy)\n\treturn perHost\n}\n\n// proxySchemes is a map from URL schemes to a function that creates a Dialer\n// from a URL with such a scheme.\nvar proxySchemes map[string]func(*url.URL, Dialer) (Dialer, error)\n\n// RegisterDialerType takes a URL scheme and a function to generate Dialers from\n// a URL with that scheme and a forwarding Dialer. Registered schemes are used\n// by FromURL.\nfunc RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error)) {\n\tif proxySchemes == nil {\n\t\tproxySchemes = make(map[string]func(*url.URL, Dialer) (Dialer, error))\n\t}\n\tproxySchemes[scheme] = f\n}\n\n// FromURL returns a Dialer given a URL specification and an underlying\n// Dialer for it to make network requests.\nfunc FromURL(u *url.URL, forward Dialer) (Dialer, error) {\n\tvar auth *Auth\n\tif u.User != nil {\n\t\tauth = new(Auth)\n\t\tauth.User = u.User.Username()\n\t\tif p, ok := u.User.Password(); ok {\n\t\t\tauth.Password = p\n\t\t}\n\t}\n\n\tswitch u.Scheme {\n\tcase \"socks5\", \"socks5h\":\n\t\taddr := u.Hostname()\n\t\tport := u.Port()\n\t\tif port == \"\" {\n\t\t\tport = \"1080\"\n\t\t}\n\t\treturn SOCKS5(\"tcp\", net.JoinHostPort(addr, port), auth, forward)\n\t}\n\n\t// If the scheme doesn't match any of the built-in schemes, see if it\n\t// was registered by another package.\n\tif proxySchemes != nil {\n\t\tif f, ok := proxySchemes[u.Scheme]; ok {\n\t\t\treturn f(u, forward)\n\t\t}\n\t}\n\n\treturn nil, errors.New(\"proxy: unknown scheme: \" + u.Scheme)\n}\n\nvar (\n\tallProxyEnv = &envOnce{\n\t\tnames: []string{\"ALL_PROXY\", \"all_proxy\"},\n\t}\n\tnoProxyEnv = &envOnce{\n\t\tnames: []string{\"NO_PROXY\", \"no_proxy\"},\n\t}\n)\n\n// envOnce looks up an environment variable (optionally by multiple\n// names) once. It mitigates expensive lookups on some platforms\n// (e.g. Windows).\n// (Borrowed from net/http/transport.go)\ntype envOnce struct {\n\tnames []string\n\tonce  sync.Once\n\tval   string\n}\n\nfunc (e *envOnce) Get() string {\n\te.once.Do(e.init)\n\treturn e.val\n}\n\nfunc (e *envOnce) init() {\n\tfor _, n := range e.names {\n\t\te.val = os.Getenv(n)\n\t\tif e.val != \"\" {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// reset is used by tests\nfunc (e *envOnce) reset() {\n\te.once = sync.Once{}\n\te.val = \"\"\n}\n"
  },
  {
    "path": "vendor/golang.org/x/net/proxy/socks5.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 proxy\n\nimport (\n\t\"context\"\n\t\"net\"\n\n\t\"golang.org/x/net/internal/socks\"\n)\n\n// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given\n// address with an optional username and password.\n// See RFC 1928 and RFC 1929.\nfunc SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) {\n\td := socks.NewDialer(network, address)\n\tif forward != nil {\n\t\tif f, ok := forward.(ContextDialer); ok {\n\t\t\td.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {\n\t\t\t\treturn f.DialContext(ctx, network, address)\n\t\t\t}\n\t\t} else {\n\t\t\td.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {\n\t\t\t\treturn dialContext(ctx, forward, network, address)\n\t\t\t}\n\t\t}\n\t}\n\tif auth != nil {\n\t\tup := socks.UsernamePassword{\n\t\t\tUsername: auth.User,\n\t\t\tPassword: auth.Password,\n\t\t}\n\t\td.AuthMethods = []socks.AuthMethod{\n\t\t\tsocks.AuthMethodNotRequired,\n\t\t\tsocks.AuthMethodUsernamePassword,\n\t\t}\n\t\td.Authenticate = up.Authenticate\n\t}\n\treturn d, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/.gitattributes",
    "content": "# Treat all files in this repo as binary, with no git magic updating\n# line endings. Windows users contributing to Go will need to use a\n# modern version of git and editors capable of LF line endings.\n#\n# We'll prevent accidental CRLF line endings from entering the repo\n# via the git-review gofmt checks.\n#\n# See golang.org/issue/9281\n\n* -text\n"
  },
  {
    "path": "vendor/golang.org/x/sys/.gitignore",
    "content": "# Add no patterns to .gitignore except for files generated by the build.\nlast-change\n"
  },
  {
    "path": "vendor/golang.org/x/sys/AUTHORS",
    "content": "# This source code refers to The Go Authors for copyright purposes.\n# The master list of authors is in the main Go distribution,\n# visible at http://tip.golang.org/AUTHORS.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/CONTRIBUTING.md",
    "content": "# Contributing to Go\n\nGo is an open source project.\n\nIt is the work of hundreds of contributors. We appreciate your help!\n\n## Filing issues\n\nWhen [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:\n\n1.  What version of Go are you using (`go version`)?\n2.  What operating system and processor architecture are you using?\n3.  What did you do?\n4.  What did you expect to see?\n5.  What did you see instead?\n\nGeneral questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.\nThe gophers there will answer or ask you to file an issue if you've tripped over a bug.\n\n## Contributing code\n\nPlease read the [Contribution Guidelines](https://golang.org/doc/contribute.html)\nbefore sending patches.\n\nUnless otherwise noted, the Go source files are distributed under\nthe BSD-style license found in the LICENSE file.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/CONTRIBUTORS",
    "content": "# This source code was written by the Go contributors.\n# The master list of contributors is in the main Go distribution,\n# visible at http://tip.golang.org/CONTRIBUTORS.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/LICENSE",
    "content": "Copyright (c) 2009 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/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/README.md",
    "content": "# sys\n\nThis repository holds supplemental Go packages for low-level interactions with\nthe operating system.\n\n## Download/Install\n\nThe easiest way to install is to run `go get -u golang.org/x/sys`. You can\nalso manually git clone the repository to `$GOPATH/src/golang.org/x/sys`.\n\n## Report Issues / Send Patches\n\nThis repository uses Gerrit for code changes. To learn how to submit changes to\nthis repository, see https://golang.org/doc/contribute.html.\n\nThe main issue tracker for the sys repository is located at\nhttps://github.com/golang/go/issues. Prefix your issue with \"x/sys:\" in the\nsubject line, so it is easy to find.\n"
  },
  {
    "path": "vendor/golang.org/x/sys/codereview.cfg",
    "content": "issuerepo: golang/go\n"
  },
  {
    "path": "vendor/golang.org/x/sys/go.mod",
    "content": "module golang.org/x/sys\n\ngo 1.12\n"
  },
  {
    "path": "vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.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 unsafeheader contains header declarations for the Go runtime's\n// slice and string implementations.\n//\n// This package allows x/sys to use types equivalent to\n// reflect.SliceHeader and reflect.StringHeader without introducing\n// a dependency on the (relatively heavy) \"reflect\" package.\npackage unsafeheader\n\nimport (\n\t\"unsafe\"\n)\n\n// Slice is the runtime representation of a slice.\n// It cannot be used safely or portably and its representation may change in a later release.\ntype Slice struct {\n\tData unsafe.Pointer\n\tLen  int\n\tCap  int\n}\n\n// String is the runtime representation of a string.\n// It cannot be used safely or portably and its representation may change in a later release.\ntype String struct {\n\tData unsafe.Pointer\n\tLen  int\n}\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 an 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, an 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\nan 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### mkmerge.go\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 idential 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 CPU affinity mask.\ntype CPUSet [cpuSetSize]cpuMask\n\nfunc schedAffinity(trap uintptr, pid int, set *CPUSet) error {\n\t_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))\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, 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, set)\n}\n\n// Zero clears the set s, so that it contains no CPUs.\nfunc (s *CPUSet) Zero() {\n\tfor i := range s {\n\t\ts[i] = 0\n\t}\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\n// Set adds cpu to the set s.\nfunc (s *CPUSet) Set(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] |= cpuBitsMask(cpu)\n\t}\n}\n\n// Clear removes cpu from the set s.\nfunc (s *CPUSet) Clear(cpu int) {\n\ti := cpuBitsIndex(cpu)\n\tif i < len(s) {\n\t\ts[i] &^= cpuBitsMask(cpu)\n\t}\n}\n\n// IsSet reports whether cpu is in the set s.\nfunc (s *CPUSet) IsSet(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\n// Count returns the number of CPUs in the set s.\nfunc (s *CPUSet) Count() int {\n\tc := 0\n\tfor _, b := range s {\n\t\tc += bits.OnesCount64(uint64(b))\n\t}\n\treturn c\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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n// +build go1.9\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// +build !gccgo\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_darwin_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, Darwin\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-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 ·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_darwin_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, Darwin\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_darwin_arm.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// +build !gccgo\n// +build arm,darwin\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, Darwin\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-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_darwin_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// +build !gccgo\n// +build arm64,darwin\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, Darwin\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\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_dragonfly_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, DragonFly\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 ·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_freebsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, FreeBSD\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-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 ·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_freebsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, FreeBSD\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 ·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_freebsd_arm.s",
    "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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, FreeBSD\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-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_freebsd_arm64.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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM64, FreeBSD\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 ·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// +build !gccgo\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// +build !gccgo\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// +build !gccgo\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// +build linux\n// +build arm64\n// +build !gccgo\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_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// +build linux\n// +build mips64 mips64le\n// +build !gccgo\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// +build linux\n// +build mips mipsle\n// +build !gccgo\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// +build linux\n// +build ppc64 ppc64le\n// +build !gccgo\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// +build riscv64,!gccgo\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// +build s390x\n// +build linux\n// +build !gccgo\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_netbsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, NetBSD\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-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 ·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_netbsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, NetBSD\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_netbsd_arm.s",
    "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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, NetBSD\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-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_netbsd_arm64.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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM64, NetBSD\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\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/asm_openbsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for 386, 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-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 ·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_openbsd_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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for AMD64, 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_openbsd_arm.s",
    "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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for ARM, 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-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_openbsd_arm64.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// +build !gccgo\n\n#include \"textflag.h\"\n\n//\n// System call support for arm64, 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// +build !gccgo\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/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/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// +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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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// +build aix\n// +build 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// +build aix\n// +build 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/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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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// +build ppc64 s390x mips mips64\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// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64\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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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/errors_freebsd_386.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// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep\n// them here for backwards compatibility.\n\npackage unix\n\nconst (\n\tDLT_HHDLC                         = 0x79\n\tIFF_SMART                         = 0x20\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_BSC                           = 0x53\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_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_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_IPXIP                         = 0xf9\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_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                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\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_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                           = 0xd7\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\tIPPROTO_MAXID                     = 0x34\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIP_FAITH                          = 0x16\n\tIP_MAX_SOURCE_FILTER              = 0x400\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tMAP_NORESERVE                     = 0x40\n\tMAP_RENAME                        = 0x20\n\tNET_RT_MAXID                      = 0x6\n\tRTF_PRCLONING                     = 0x10000\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRT_CACHING_CONTEXT                = 0x1\n\tRT_NORTREF                        = 0x2\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/errors_freebsd_amd64.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// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep\n// them here for backwards compatibility.\n\npackage unix\n\nconst (\n\tDLT_HHDLC                         = 0x79\n\tIFF_SMART                         = 0x20\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_BSC                           = 0x53\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_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_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_IPXIP                         = 0xf9\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_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                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\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_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                           = 0xd7\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\tIPPROTO_MAXID                     = 0x34\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_MIN_MEMBERSHIPS              = 0x1f\n\tIP_FAITH                          = 0x16\n\tIP_MAX_SOURCE_FILTER              = 0x400\n\tIP_MIN_MEMBERSHIPS                = 0x1f\n\tMAP_NORESERVE                     = 0x40\n\tMAP_RENAME                        = 0x20\n\tNET_RT_MAXID                      = 0x6\n\tRTF_PRCLONING                     = 0x10000\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRT_CACHING_CONTEXT                = 0x1\n\tRT_NORTREF                        = 0x2\n\tSIOCADDRT                         = 0x8040720a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCDELRT                         = 0x8040720b\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/errors_freebsd_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\npackage unix\n\nconst (\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_BSC                           = 0x53\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_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_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                         = 0xf6\n\tIFT_PFSYNC                        = 0xf7\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\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_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                           = 0xd7\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\n\t// missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go\n\tIFF_SMART       = 0x20\n\tIFT_FAITH       = 0xf2\n\tIFT_IPXIP       = 0xf9\n\tIPPROTO_MAXID   = 0x34\n\tIPV6_FAITH      = 0x1d\n\tIP_FAITH        = 0x16\n\tMAP_NORESERVE   = 0x40\n\tMAP_RENAME      = 0x20\n\tNET_RT_MAXID    = 0x6\n\tRTF_PRCLONING   = 0x10000\n\tRTM_OLDADD      = 0x9\n\tRTM_OLDDEL      = 0xa\n\tSIOCADDRT       = 0x8030720a\n\tSIOCALIFADDR    = 0x8118691b\n\tSIOCDELRT       = 0x8030720b\n\tSIOCDLIFADDR    = 0x8118691d\n\tSIOCGLIFADDR    = 0xc118691c\n\tSIOCGLIFPHYADDR = 0xc118694b\n\tSIOCSLIFPHYADDR = 0x8118694a\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/errors_freebsd_arm64.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// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep\n// them here for backwards compatibility.\n\npackage unix\n\nconst (\n\tDLT_HHDLC            = 0x79\n\tIPV6_MIN_MEMBERSHIPS = 0x1f\n\tIP_MAX_SOURCE_FILTER = 0x400\n\tIP_MIN_MEMBERSHIPS   = 0x1f\n\tRT_CACHING_CONTEXT   = 0x1\n\tRT_NORTREF           = 0x2\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// +build dragonfly freebsd linux netbsd openbsd\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go",
    "content": "// +build linux,386 linux,arm linux,mips linux,mipsle\n\n// 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 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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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\tfor i := range fds.Bits {\n\t\tfds.Bits[i] = 0\n\t}\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// +build gccgo\n// +build !aix\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\n//extern gccgoRealSyscallNoError\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\n//extern gccgoRealSyscall\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// +build gccgo\n// +build !aix\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\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\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// +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/ioctl.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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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 uint, 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 uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n\truntime.KeepAlive(value)\n\treturn err\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\terr := ioctl(fd, req, uintptr(unsafe.Pointer(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 uint) (int, error) {\n\tvar value int\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&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\t$cmd docker build --tag generate:$GOOS $GOOS\n\t$cmd docker run --interactive --tty --volume $(cd -- \"$(dirname -- \"$0\")\" && /bin/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_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm_darwin.go\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm_darwin.go\"\n\t;;\ndarwin_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm_darwin.go\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm_darwin.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://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'\"\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://svn.freebsd.org/base/stable/11/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;;\nfreebsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'\"\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\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmksysnum=\"go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmksysnum=\"go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -arm\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmksysnum=\"go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~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;;\nopenbsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmksysnum=\"go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~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;;\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=\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\" == \"darwin\" ]; then\n\t\t\t        # pre-1.12, direct syscalls\n\t\t\t        echo \"$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos syscall_darwin_${GOARCH}.1_11.go $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go\";\n\t\t\t        # 1.12 and later, syscalls via libSystem\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\t\t# 1.13 and later, syscalls via libSystem (including syscallPtr)\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH,go1.13 syscall_darwin.1_13.go |gofmt >zsyscall_$GOOSARCH.1_13.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 $GOARCH\"; fi\n) | $run\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkasm_darwin.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// +build ignore\n\n// mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.\n//This program must be run after mksyscall.go.\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc writeASMFile(in string, fileName string, buildTags string) {\n\ttrampolines := map[string]bool{}\n\n\tvar out bytes.Buffer\n\n\tfmt.Fprintf(&out, \"// go run mkasm_darwin.go %s\\n\", strings.Join(os.Args[1:], \" \"))\n\tfmt.Fprintf(&out, \"// Code generated by the command above; DO NOT EDIT.\\n\")\n\tfmt.Fprintf(&out, \"\\n\")\n\tfmt.Fprintf(&out, \"// +build %s\\n\", buildTags)\n\tfmt.Fprintf(&out, \"\\n\")\n\tfmt.Fprintf(&out, \"#include \\\"textflag.h\\\"\\n\")\n\tfor _, line := range strings.Split(in, \"\\n\") {\n\t\tif !strings.HasPrefix(line, \"func \") || !strings.HasSuffix(line, \"_trampoline()\") {\n\t\t\tcontinue\n\t\t}\n\t\tfn := line[5 : len(line)-13]\n\t\tif !trampolines[fn] {\n\t\t\ttrampolines[fn] = true\n\t\t\tfmt.Fprintf(&out, \"TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\\n\", fn)\n\t\t\tfmt.Fprintf(&out, \"\\tJMP\\t%s(SB)\\n\", fn)\n\t\t}\n\t}\n\terr := ioutil.WriteFile(fileName, out.Bytes(), 0644)\n\tif err != nil {\n\t\tlog.Fatalf(\"can't write %s: %s\", fileName, err)\n\t}\n}\n\nfunc main() {\n\tin1, err := ioutil.ReadFile(\"syscall_darwin.go\")\n\tif err != nil {\n\t\tlog.Fatalf(\"can't open syscall_darwin.go: %s\", err)\n\t}\n\tarch := os.Args[1]\n\tin2, err := ioutil.ReadFile(fmt.Sprintf(\"syscall_darwin_%s.go\", arch))\n\tif err != nil {\n\t\tlog.Fatalf(\"can't open syscall_darwin_%s.go: %s\", arch, err)\n\t}\n\tin3, err := ioutil.ReadFile(fmt.Sprintf(\"zsyscall_darwin_%s.go\", arch))\n\tif err != nil {\n\t\tlog.Fatalf(\"can't open zsyscall_darwin_%s.go: %s\", arch, err)\n\t}\n\tin := string(in1) + string(in2) + string(in3)\n\n\twriteASMFile(in, fmt.Sprintf(\"zsyscall_darwin_%s.s\", arch), \"go1.12\")\n\n\tin1, err = ioutil.ReadFile(\"syscall_darwin.1_13.go\")\n\tif err != nil {\n\t\tlog.Fatalf(\"can't open syscall_darwin.1_13.go: %s\", err)\n\t}\n\tin2, err = ioutil.ReadFile(fmt.Sprintf(\"zsyscall_darwin_%s.1_13.go\", arch))\n\tif err != nil {\n\t\tlog.Fatalf(\"can't open zsyscall_darwin_%s.1_13.go: %s\", arch, err)\n\t}\n\n\tin = string(in1) + string(in2)\n\n\twriteASMFile(in, fmt.Sprintf(\"zsyscall_darwin_%s.1_13.s\", arch), \"go1.13\")\n}\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\n#define _DARWIN_USE_64_BIT_INODE\n#include <stdint.h>\n#include <sys/attr.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/sockio.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 <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\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_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/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_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// <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 <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/capability.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/errqueue.h>\n#include <linux/falloc.h>\n#include <linux/fanotify.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/icmpv6.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/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/loop.h>\n#include <linux/magic.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/nsfs.h>\n#include <linux/perf_event.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/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\n#include <mtd/ubi-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 MSG_FASTOPEN\n#define MSG_FASTOPEN    0x20000000\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#ifndef SOL_NETLINK\n#define SOL_NETLINK\t270\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/l2tp.h\n// Including linux/l2tp.h here causes conflicts between linux/in.h\n// and netinet/in.h included via net/route.h above.\n#define IPPROTO_L2TP\t\t115\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/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/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/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/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.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 ~ /^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 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\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 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 == \"ICMPV6_FILTER\" ||\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|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|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 ~ /^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]+)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^(CLOCK|TIMER)_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||\n\t\t$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|GETFLAGS)/ ||\n\t\t$2 ~ /^FS_VERITY_/ ||\n\t\t$2 ~ /^FSCRYPT_/ ||\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_EVENT_IOC_/ ||\n\t\t$2 ~ /^SECCOMP_MODE_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /^AUDIT_RECORD_MAGIC/ &&\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_/ ||\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 ~ /^WDIOC_/ ||\n\t\t$2 ~ /^NFN/ ||\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_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^FAN_|FANOTIFY_/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {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\tegrep -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\tegrep -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 \"// +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\tstrcpy(buf, strerror(e));\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\tstrcpy(buf, strsignal(e));\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/mkmerge.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// +build ignore\n\n// mkmerge.go parses generated source files and merges common\n// consts, funcs, and types into a common source file, per GOOS.\n//\n// Usage:\n//     $ go run mkmerge.go -out MERGED FILE [FILE ...]\n//\n// Example:\n//     # Remove all common consts, funcs, and types from zerrors_linux_*.go\n//     # and write the common code into zerrors_linux.go\n//     $ go run mkmerge.go -out zerrors_linux.go zerrors_linux_*.go\n//\n// mkmerge.go performs the merge in the following steps:\n// 1. Construct the set of common code that is idential in all\n//    architecture-specific files.\n// 2. Write this common code to the merged file.\n// 3. Remove the common code from all architecture-specific files.\npackage main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/format\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst validGOOS = \"aix|darwin|dragonfly|freebsd|linux|netbsd|openbsd|solaris\"\n\n// getValidGOOS returns GOOS, true if filename ends with a valid \"_GOOS.go\"\nfunc getValidGOOS(filename string) (string, bool) {\n\tmatches := regexp.MustCompile(`_(` + validGOOS + `)\\.go$`).FindStringSubmatch(filename)\n\tif len(matches) != 2 {\n\t\treturn \"\", false\n\t}\n\treturn matches[1], true\n}\n\n// codeElem represents an ast.Decl in a comparable way.\ntype codeElem struct {\n\ttok token.Token // e.g. token.CONST, token.TYPE, or token.FUNC\n\tsrc string      // the declaration formatted as source code\n}\n\n// newCodeElem returns a codeElem based on tok and node, or an error is returned.\nfunc newCodeElem(tok token.Token, node ast.Node) (codeElem, error) {\n\tvar b strings.Builder\n\terr := format.Node(&b, token.NewFileSet(), node)\n\tif err != nil {\n\t\treturn codeElem{}, err\n\t}\n\treturn codeElem{tok, b.String()}, nil\n}\n\n// codeSet is a set of codeElems\ntype codeSet struct {\n\tset map[codeElem]bool // true for all codeElems in the set\n}\n\n// newCodeSet returns a new codeSet\nfunc newCodeSet() *codeSet { return &codeSet{make(map[codeElem]bool)} }\n\n// add adds elem to c\nfunc (c *codeSet) add(elem codeElem) { c.set[elem] = true }\n\n// has returns true if elem is in c\nfunc (c *codeSet) has(elem codeElem) bool { return c.set[elem] }\n\n// isEmpty returns true if the set is empty\nfunc (c *codeSet) isEmpty() bool { return len(c.set) == 0 }\n\n// intersection returns a new set which is the intersection of c and a\nfunc (c *codeSet) intersection(a *codeSet) *codeSet {\n\tres := newCodeSet()\n\n\tfor elem := range c.set {\n\t\tif a.has(elem) {\n\t\t\tres.add(elem)\n\t\t}\n\t}\n\treturn res\n}\n\n// keepCommon is a filterFn for filtering the merged file with common declarations.\nfunc (c *codeSet) keepCommon(elem codeElem) bool {\n\tswitch elem.tok {\n\tcase token.VAR:\n\t\t// Remove all vars from the merged file\n\t\treturn false\n\tcase token.CONST, token.TYPE, token.FUNC, token.COMMENT:\n\t\t// Remove arch-specific consts, types, functions, and file-level comments from the merged file\n\t\treturn c.has(elem)\n\tcase token.IMPORT:\n\t\t// Keep imports, they are handled by filterImports\n\t\treturn true\n\t}\n\n\tlog.Fatalf(\"keepCommon: invalid elem %v\", elem)\n\treturn true\n}\n\n// keepArchSpecific is a filterFn for filtering the GOARC-specific files.\nfunc (c *codeSet) keepArchSpecific(elem codeElem) bool {\n\tswitch elem.tok {\n\tcase token.CONST, token.TYPE, token.FUNC:\n\t\t// Remove common consts, types, or functions from the arch-specific file\n\t\treturn !c.has(elem)\n\t}\n\treturn true\n}\n\n// srcFile represents a source file\ntype srcFile struct {\n\tname string\n\tsrc  []byte\n}\n\n// filterFn is a helper for filter\ntype filterFn func(codeElem) bool\n\n// filter parses and filters Go source code from src, removing top\n// level declarations using keep as predicate.\n// For src parameter, please see docs for parser.ParseFile.\nfunc filter(src interface{}, keep filterFn) ([]byte, error) {\n\t// Parse the src into an ast\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, \"\", src, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcmap := ast.NewCommentMap(fset, f, f.Comments)\n\n\t// Group const/type specs on adjacent lines\n\tvar groups specGroups = make(map[string]int)\n\tvar groupID int\n\n\tdecls := f.Decls\n\tf.Decls = f.Decls[:0]\n\tfor _, decl := range decls {\n\t\tswitch decl := decl.(type) {\n\t\tcase *ast.GenDecl:\n\t\t\t// Filter imports, consts, types, vars\n\t\t\tspecs := decl.Specs\n\t\t\tdecl.Specs = decl.Specs[:0]\n\t\t\tfor i, spec := range specs {\n\t\t\t\telem, err := newCodeElem(decl.Tok, spec)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\t// Create new group if there are empty lines between this and the previous spec\n\t\t\t\tif i > 0 && fset.Position(specs[i-1].End()).Line < fset.Position(spec.Pos()).Line-1 {\n\t\t\t\t\tgroupID++\n\t\t\t\t}\n\n\t\t\t\t// Check if we should keep this spec\n\t\t\t\tif keep(elem) {\n\t\t\t\t\tdecl.Specs = append(decl.Specs, spec)\n\t\t\t\t\tgroups.add(elem.src, groupID)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check if we should keep this decl\n\t\t\tif len(decl.Specs) > 0 {\n\t\t\t\tf.Decls = append(f.Decls, decl)\n\t\t\t}\n\t\tcase *ast.FuncDecl:\n\t\t\t// Filter funcs\n\t\t\telem, err := newCodeElem(token.FUNC, decl)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif keep(elem) {\n\t\t\t\tf.Decls = append(f.Decls, decl)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Filter file level comments\n\tif cmap[f] != nil {\n\t\tcommentGroups := cmap[f]\n\t\tcmap[f] = cmap[f][:0]\n\t\tfor _, cGrp := range commentGroups {\n\t\t\tif keep(codeElem{token.COMMENT, cGrp.Text()}) {\n\t\t\t\tcmap[f] = append(cmap[f], cGrp)\n\t\t\t}\n\t\t}\n\t}\n\tf.Comments = cmap.Filter(f).Comments()\n\n\t// Generate code for the filtered ast\n\tvar buf bytes.Buffer\n\tif err = format.Node(&buf, fset, f); err != nil {\n\t\treturn nil, err\n\t}\n\n\tgroupedSrc, err := groups.filterEmptyLines(&buf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn filterImports(groupedSrc)\n}\n\n// getCommonSet returns the set of consts, types, and funcs that are present in every file.\nfunc getCommonSet(files []srcFile) (*codeSet, error) {\n\tif len(files) == 0 {\n\t\treturn nil, fmt.Errorf(\"no files provided\")\n\t}\n\t// Use the first architecture file as the baseline\n\tbaseSet, err := getCodeSet(files[0].src)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Compare baseline set with other architecture files: discard any element,\n\t// that doesn't exist in other architecture files.\n\tfor _, f := range files[1:] {\n\t\tset, err := getCodeSet(f.src)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tbaseSet = baseSet.intersection(set)\n\t}\n\treturn baseSet, nil\n}\n\n// getCodeSet returns the set of all top-level consts, types, and funcs from src.\n// src must be string, []byte, or io.Reader (see go/parser.ParseFile docs)\nfunc getCodeSet(src interface{}) (*codeSet, error) {\n\tset := newCodeSet()\n\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, \"\", src, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, decl := range f.Decls {\n\t\tswitch decl := decl.(type) {\n\t\tcase *ast.GenDecl:\n\t\t\t// Add const, and type declarations\n\t\t\tif !(decl.Tok == token.CONST || decl.Tok == token.TYPE) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tfor _, spec := range decl.Specs {\n\t\t\t\telem, err := newCodeElem(decl.Tok, spec)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tset.add(elem)\n\t\t\t}\n\t\tcase *ast.FuncDecl:\n\t\t\t// Add func declarations\n\t\t\telem, err := newCodeElem(token.FUNC, decl)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tset.add(elem)\n\t\t}\n\t}\n\n\t// Add file level comments\n\tcmap := ast.NewCommentMap(fset, f, f.Comments)\n\tfor _, cGrp := range cmap[f] {\n\t\tset.add(codeElem{token.COMMENT, cGrp.Text()})\n\t}\n\n\treturn set, nil\n}\n\n// importName returns the identifier (PackageName) for an imported package\nfunc importName(iSpec *ast.ImportSpec) (string, error) {\n\tif iSpec.Name == nil {\n\t\tname, err := strconv.Unquote(iSpec.Path.Value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn path.Base(name), nil\n\t}\n\treturn iSpec.Name.Name, nil\n}\n\n// specGroups tracks grouped const/type specs with a map of line: groupID pairs\ntype specGroups map[string]int\n\n// add spec source to group\nfunc (s specGroups) add(src string, groupID int) error {\n\tsrcBytes, err := format.Source(bytes.TrimSpace([]byte(src)))\n\tif err != nil {\n\t\treturn err\n\t}\n\ts[string(srcBytes)] = groupID\n\treturn nil\n}\n\n// filterEmptyLines removes empty lines within groups of const/type specs.\n// Returns the filtered source.\nfunc (s specGroups) filterEmptyLines(src io.Reader) ([]byte, error) {\n\tscanner := bufio.NewScanner(src)\n\tvar out bytes.Buffer\n\n\tvar emptyLines bytes.Buffer\n\tprevGroupID := -1 // Initialize to invalid group\n\tfor scanner.Scan() {\n\t\tline := bytes.TrimSpace(scanner.Bytes())\n\n\t\tif len(line) == 0 {\n\t\t\tfmt.Fprintf(&emptyLines, \"%s\\n\", scanner.Bytes())\n\t\t\tcontinue\n\t\t}\n\n\t\t// Discard emptyLines if previous non-empty line belonged to the same\n\t\t// group as this line\n\t\tif src, err := format.Source(line); err == nil {\n\t\t\tgroupID, ok := s[string(src)]\n\t\t\tif ok && groupID == prevGroupID {\n\t\t\t\temptyLines.Reset()\n\t\t\t}\n\t\t\tprevGroupID = groupID\n\t\t}\n\n\t\temptyLines.WriteTo(&out)\n\t\tfmt.Fprintf(&out, \"%s\\n\", scanner.Bytes())\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn out.Bytes(), nil\n}\n\n// filterImports removes unused imports from fileSrc, and returns a formatted src.\nfunc filterImports(fileSrc []byte) ([]byte, error) {\n\tfset := token.NewFileSet()\n\tfile, err := parser.ParseFile(fset, \"\", fileSrc, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcmap := ast.NewCommentMap(fset, file, file.Comments)\n\n\t// create set of references to imported identifiers\n\tkeepImport := make(map[string]bool)\n\tfor _, u := range file.Unresolved {\n\t\tkeepImport[u.Name] = true\n\t}\n\n\t// filter import declarations\n\tdecls := file.Decls\n\tfile.Decls = file.Decls[:0]\n\tfor _, decl := range decls {\n\t\timportDecl, ok := decl.(*ast.GenDecl)\n\n\t\t// Keep non-import declarations\n\t\tif !ok || importDecl.Tok != token.IMPORT {\n\t\t\tfile.Decls = append(file.Decls, decl)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Filter the import specs\n\t\tspecs := importDecl.Specs\n\t\timportDecl.Specs = importDecl.Specs[:0]\n\t\tfor _, spec := range specs {\n\t\t\tiSpec := spec.(*ast.ImportSpec)\n\t\t\tname, err := importName(iSpec)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tif keepImport[name] {\n\t\t\t\timportDecl.Specs = append(importDecl.Specs, iSpec)\n\t\t\t}\n\t\t}\n\t\tif len(importDecl.Specs) > 0 {\n\t\t\tfile.Decls = append(file.Decls, importDecl)\n\t\t}\n\t}\n\n\t// filter file.Imports\n\timports := file.Imports\n\tfile.Imports = file.Imports[:0]\n\tfor _, spec := range imports {\n\t\tname, err := importName(spec)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif keepImport[name] {\n\t\t\tfile.Imports = append(file.Imports, spec)\n\t\t}\n\t}\n\tfile.Comments = cmap.Filter(file).Comments()\n\n\tvar buf bytes.Buffer\n\terr = format.Node(&buf, fset, file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn buf.Bytes(), nil\n}\n\n// merge extracts duplicate code from archFiles and merges it to mergeFile.\n// 1. Construct commonSet: the set of code that is idential in all archFiles.\n// 2. Write the code in commonSet to mergedFile.\n// 3. Remove the commonSet code from all archFiles.\nfunc merge(mergedFile string, archFiles ...string) error {\n\t// extract and validate the GOOS part of the merged filename\n\tgoos, ok := getValidGOOS(mergedFile)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid GOOS in merged file name %s\", mergedFile)\n\t}\n\n\t// Read architecture files\n\tvar inSrc []srcFile\n\tfor _, file := range archFiles {\n\t\tsrc, err := ioutil.ReadFile(file)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"cannot read archfile %s: %w\", file, err)\n\t\t}\n\n\t\tinSrc = append(inSrc, srcFile{file, src})\n\t}\n\n\t// 1. Construct the set of top-level declarations common for all files\n\tcommonSet, err := getCommonSet(inSrc)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif commonSet.isEmpty() {\n\t\t// No common code => do not modify any files\n\t\treturn nil\n\t}\n\n\t// 2. Write the merged file\n\tmergedSrc, err := filter(inSrc[0].src, commonSet.keepCommon)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tf, err := os.Create(mergedFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbuf := bufio.NewWriter(f)\n\tfmt.Fprintln(buf, \"// Code generated by mkmerge.go; DO NOT EDIT.\")\n\tfmt.Fprintln(buf)\n\tfmt.Fprintf(buf, \"// +build %s\\n\", goos)\n\tfmt.Fprintln(buf)\n\tbuf.Write(mergedSrc)\n\n\terr = buf.Flush()\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = f.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// 3. Remove duplicate declarations from the architecture files\n\tfor _, inFile := range inSrc {\n\t\tsrc, err := filter(inFile.src, commonSet.keepArchSpecific)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = ioutil.WriteFile(inFile.name, src, 0644)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc main() {\n\tvar mergedFile string\n\tflag.StringVar(&mergedFile, \"out\", \"\", \"Write merged code to `FILE`\")\n\tflag.Parse()\n\n\t// Expand wildcards\n\tvar filenames []string\n\tfor _, arg := range flag.Args() {\n\t\tmatches, err := filepath.Glob(arg)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"Invalid command line argument %q: %v\\n\", arg, err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfilenames = append(filenames, matches...)\n\t}\n\n\tif len(filenames) < 2 {\n\t\t// No need to merge\n\t\treturn\n\t}\n\n\terr := merge(mergedFile, filenames...)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Merge failed with error: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mkpost.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// +build ignore\n\n// mkpost processes the output of cgo -godefs to\n// modify the generated types. It is used to clean up\n// the sys API in an architecture specific manner.\n//\n// mkpost is run after cgo -godefs; see README.md.\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/format\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"os\"\n\t\"regexp\"\n)\n\nfunc main() {\n\t// Get the OS and architecture (using GOARCH_TARGET if it exists)\n\tgoos := os.Getenv(\"GOOS\")\n\tgoarch := os.Getenv(\"GOARCH_TARGET\")\n\tif goarch == \"\" {\n\t\tgoarch = os.Getenv(\"GOARCH\")\n\t}\n\t// Check that we are using the Docker-based build system if we should be.\n\tif goos == \"linux\" {\n\t\tif os.Getenv(\"GOLANG_SYS_BUILD\") != \"docker\" {\n\t\t\tos.Stderr.WriteString(\"In the Docker-based build system, mkpost should not be called directly.\\n\")\n\t\t\tos.Stderr.WriteString(\"See README.md\\n\")\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n\n\tb, err := ioutil.ReadAll(os.Stdin)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif goos == \"aix\" {\n\t\t// Replace type of Atim, Mtim and Ctim by Timespec in Stat_t\n\t\t// to avoid having both StTimespec and Timespec.\n\t\tsttimespec := regexp.MustCompile(`_Ctype_struct_st_timespec`)\n\t\tb = sttimespec.ReplaceAll(b, []byte(\"Timespec\"))\n\t}\n\n\t// Intentionally export __val fields in Fsid and Sigset_t\n\tvalRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\\s+)X__(bits|val)(\\s+\\S+\\s+)}`)\n\tb = valRegex.ReplaceAll(b, []byte(\"type $1 struct {${2}Val$4}\"))\n\n\t// Intentionally export __fds_bits field in FdSet\n\tfdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\\s+)X__fds_bits(\\s+\\S+\\s+)}`)\n\tb = fdSetRegex.ReplaceAll(b, []byte(\"type $1 struct {${2}Bits$3}\"))\n\n\t// If we have empty Ptrace structs, we should delete them. Only s390x emits\n\t// nonempty Ptrace structs.\n\tptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\\s*})`)\n\tb = ptraceRexexp.ReplaceAll(b, nil)\n\n\t// Replace the control_regs union with a blank identifier for now.\n\tcontrolRegsRegex := regexp.MustCompile(`(Control_regs)\\s+\\[0\\]uint64`)\n\tb = controlRegsRegex.ReplaceAll(b, []byte(\"_ [0]uint64\"))\n\n\t// Remove fields that are added by glibc\n\t// Note that this is unstable as the identifers are private.\n\tremoveFieldsRegex := regexp.MustCompile(`X__glibc\\S*`)\n\tb = removeFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Convert [65]int8 to [65]byte in Utsname members to simplify\n\t// conversion to string; see golang.org/issue/20753\n\tconvertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\\s+)\\[(\\d+)\\]u?int8`)\n\tb = convertUtsnameRegex.ReplaceAll(b, []byte(\"$1$3[$4]byte\"))\n\n\t// Convert [n]int8 to [n]byte in Statvfs_t members to simplify\n\t// conversion to string.\n\tconvertStatvfsRegex := regexp.MustCompile(`((Fstype|Mnton|Mntfrom)name)(\\s+)\\[(\\d+)\\]int8`)\n\tb = convertStatvfsRegex.ReplaceAll(b, []byte(\"$1$3[$4]byte\"))\n\n\t// Convert [1024]int8 to [1024]byte in Ptmget members\n\tconvertPtmget := regexp.MustCompile(`([SC]n)(\\s+)\\[(\\d+)\\]u?int8`)\n\tb = convertPtmget.ReplaceAll(b, []byte(\"$1[$3]byte\"))\n\n\t// Remove spare fields (e.g. in Statx_t)\n\tspareFieldsRegex := regexp.MustCompile(`X__spare\\S*`)\n\tb = spareFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove cgo padding fields\n\tremovePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\\d+`)\n\tb = removePaddingFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove padding, hidden, or unused fields\n\tremoveFieldsRegex = regexp.MustCompile(`\\b(X_\\S+|Padding)`)\n\tb = removeFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\n\t// Remove the first line of warning from cgo\n\tb = b[bytes.IndexByte(b, '\\n')+1:]\n\t// Modify the command in the header to include:\n\t//  mkpost, our own warning, and a build tag.\n\treplacement := fmt.Sprintf(`$1 | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s,%s`, goarch, goos)\n\tcgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)\n\tb = cgoCommandRegex.ReplaceAll(b, []byte(replacement))\n\n\t// Rename Stat_t time fields\n\tif goos == \"freebsd\" && goarch == \"386\" {\n\t\t// Hide Stat_t.[AMCB]tim_ext fields\n\t\trenameStatTimeExtFieldsRegex := regexp.MustCompile(`[AMCB]tim_ext`)\n\t\tb = renameStatTimeExtFieldsRegex.ReplaceAll(b, []byte(\"_\"))\n\t}\n\trenameStatTimeFieldsRegex := regexp.MustCompile(`([AMCB])(?:irth)?time?(?:spec)?\\s+(Timespec|StTimespec)`)\n\tb = renameStatTimeFieldsRegex.ReplaceAll(b, []byte(\"${1}tim ${2}\"))\n\n\t// gofmt\n\tb, err = format.Source(b)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tos.Stdout.Write(b)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksyscall.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// +build ignore\n\n/*\nThis program reads a file containing function prototypes\n(like syscall_darwin.go) and generates system call bodies.\nThe prototypes are marked by lines beginning with \"//sys\"\nand read like func declarations if //sys is replaced by func, but:\n\t* The parameter lists must give a name for each argument.\n\t  This includes return parameters.\n\t* The parameter lists must give a type for each argument:\n\t  the (x, y, z int) shorthand is not allowed.\n\t* If the return parameter is an error number, it must be named errno.\n\nA line beginning with //sysnb is like //sys, except that the\ngoroutine will not be suspended during the execution of the system\ncall.  This must only be used for system calls which can never\nblock, as otherwise the system call could cause all goroutines to\nhang.\n*/\npackage main\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tb32       = flag.Bool(\"b32\", false, \"32bit big-endian\")\n\tl32       = flag.Bool(\"l32\", false, \"32bit little-endian\")\n\tplan9     = flag.Bool(\"plan9\", false, \"plan9\")\n\topenbsd   = flag.Bool(\"openbsd\", false, \"openbsd\")\n\tnetbsd    = flag.Bool(\"netbsd\", false, \"netbsd\")\n\tdragonfly = flag.Bool(\"dragonfly\", false, \"dragonfly\")\n\tarm       = flag.Bool(\"arm\", false, \"arm\") // 64-bit value should use (even, odd)-pair\n\ttags      = flag.String(\"tags\", \"\", \"build tags\")\n\tfilename  = flag.String(\"output\", \"\", \"output file name (standard output if omitted)\")\n)\n\n// cmdLine returns this programs's commandline arguments\nfunc cmdLine() string {\n\treturn \"go run mksyscall.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags\nfunc buildTags() string {\n\treturn *tags\n}\n\n// Param is function parameter\ntype Param struct {\n\tName string\n\tType string\n}\n\n// usage prints the program usage\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\\n\")\n\tos.Exit(1)\n}\n\n// parseParamList parses parameter list and returns a slice of parameters\nfunc parseParamList(list string) []string {\n\tlist = strings.TrimSpace(list)\n\tif list == \"\" {\n\t\treturn []string{}\n\t}\n\treturn regexp.MustCompile(`\\s*,\\s*`).Split(list, -1)\n}\n\n// parseParam splits a parameter into name and type\nfunc parseParam(p string) Param {\n\tps := regexp.MustCompile(`^(\\S*) (\\S*)$`).FindStringSubmatch(p)\n\tif ps == nil {\n\t\tfmt.Fprintf(os.Stderr, \"malformed parameter: %s\\n\", p)\n\t\tos.Exit(1)\n\t}\n\treturn Param{ps[1], ps[2]}\n}\n\nfunc main() {\n\t// Get the OS and architecture (using GOARCH_TARGET if it exists)\n\tgoos := os.Getenv(\"GOOS\")\n\tif goos == \"\" {\n\t\tfmt.Fprintln(os.Stderr, \"GOOS not defined in environment\")\n\t\tos.Exit(1)\n\t}\n\tgoarch := os.Getenv(\"GOARCH_TARGET\")\n\tif goarch == \"\" {\n\t\tgoarch = os.Getenv(\"GOARCH\")\n\t}\n\n\t// Check that we are using the Docker-based build system if we should\n\tif goos == \"linux\" {\n\t\tif os.Getenv(\"GOLANG_SYS_BUILD\") != \"docker\" {\n\t\t\tfmt.Fprintf(os.Stderr, \"In the Docker-based build system, mksyscall should not be called directly.\\n\")\n\t\t\tfmt.Fprintf(os.Stderr, \"See README.md\\n\")\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n\n\tflag.Usage = usage\n\tflag.Parse()\n\tif len(flag.Args()) <= 0 {\n\t\tfmt.Fprintf(os.Stderr, \"no files to parse provided\\n\")\n\t\tusage()\n\t}\n\n\tendianness := \"\"\n\tif *b32 {\n\t\tendianness = \"big-endian\"\n\t} else if *l32 {\n\t\tendianness = \"little-endian\"\n\t}\n\n\tlibc := false\n\tif goos == \"darwin\" && (strings.Contains(buildTags(), \",go1.12\") || strings.Contains(buildTags(), \",go1.13\")) {\n\t\tlibc = true\n\t}\n\ttrampolines := map[string]bool{}\n\n\ttext := \"\"\n\tfor _, path := range flag.Args() {\n\t\tfile, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\ts := bufio.NewScanner(file)\n\t\tfor s.Scan() {\n\t\t\tt := s.Text()\n\t\t\tt = strings.TrimSpace(t)\n\t\t\tt = regexp.MustCompile(`\\s+`).ReplaceAllString(t, ` `)\n\t\t\tnonblock := regexp.MustCompile(`^\\/\\/sysnb `).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Line must be of the form\n\t\t\t//\tfunc Open(path string, mode int, perm int) (fd int, errno error)\n\t\t\t// Split into name, in params, out params.\n\t\t\tf := regexp.MustCompile(`^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t)\n\t\t\tif f == nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s\\nmalformed //sys declaration\\n\", path, t)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tfunct, inps, outps, sysname := f[2], f[3], f[4], f[5]\n\n\t\t\t// ClockGettime doesn't have a syscall number on Darwin, only generate libc wrappers.\n\t\t\tif goos == \"darwin\" && !libc && funct == \"ClockGettime\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Split argument lists on comma.\n\t\t\tin := parseParamList(inps)\n\t\t\tout := parseParamList(outps)\n\n\t\t\t// Try in vain to keep people from editing this file.\n\t\t\t// The theory is that they jump into the middle of the file\n\t\t\t// without reading the header.\n\t\t\ttext += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\n\t\t\t// Go function header.\n\t\t\toutDecl := \"\"\n\t\t\tif len(out) > 0 {\n\t\t\t\toutDecl = fmt.Sprintf(\" (%s)\", strings.Join(out, \", \"))\n\t\t\t}\n\t\t\ttext += fmt.Sprintf(\"func %s(%s)%s {\\n\", funct, strings.Join(in, \", \"), outDecl)\n\n\t\t\t// Check if err return available\n\t\t\terrvar := \"\"\n\t\t\tfor _, param := range out {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif p.Type == \"error\" {\n\t\t\t\t\terrvar = p.Name\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare arguments to Syscall.\n\t\t\tvar args []string\n\t\t\tn := 0\n\t\t\tfor _, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\targs = append(args, \"uintptr(unsafe.Pointer(\"+p.Name+\"))\")\n\t\t\t\t} else if p.Type == \"string\" && errvar != \"\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d *byte\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d, %s = BytePtrFromString(%s)\\n\", n, errvar, p.Name)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif %s != nil {\\n\\t\\treturn\\n\\t}\\n\", errvar)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses string arguments, but has no error return\\n\")\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d *byte\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d, _ = BytePtrFromString(%s)\\n\", n, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\t// Convert slice into pointer, length.\n\t\t\t\t\t// Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t\t\t// pass dummy pointer in that case.\n\t\t\t\t\t// Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d unsafe.Pointer\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif len(%s) > 0 {\\n\\t\\t_p%d = unsafe.Pointer(&%s[0])\\n\\t}\", p.Name, n, p.Name)\n\t\t\t\t\ttext += fmt.Sprintf(\" else {\\n\\t\\t_p%d = unsafe.Pointer(&_zero)\\n\\t}\\n\", n)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(_p%d)\", n), fmt.Sprintf(\"uintptr(len(%s))\", p.Name))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"int64\" && (*openbsd || *netbsd) {\n\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s>>32)\", p.Name), fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t} else if endianness == \"little-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name), fmt.Sprintf(\"uintptr(%s>>32)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else if p.Type == \"int64\" && *dragonfly {\n\t\t\t\t\tif regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil {\n\t\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t\t}\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s>>32)\", p.Name), fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t} else if endianness == \"little-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name), fmt.Sprintf(\"uintptr(%s>>32)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else if (p.Type == \"int64\" || p.Type == \"uint64\") && endianness != \"\" {\n\t\t\t\t\tif len(args)%2 == 1 && *arm {\n\t\t\t\t\t\t// arm abi specifies 64-bit argument uses\n\t\t\t\t\t\t// (even, odd) pair\n\t\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t\t}\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s>>32)\", p.Name), fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name), fmt.Sprintf(\"uintptr(%s>>32)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Determine which form to use; pad args with zeros.\n\t\t\tasm := \"Syscall\"\n\t\t\tif nonblock != nil {\n\t\t\t\tif errvar == \"\" && goos == \"linux\" {\n\t\t\t\t\tasm = \"RawSyscallNoError\"\n\t\t\t\t} else {\n\t\t\t\t\tasm = \"RawSyscall\"\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif errvar == \"\" && goos == \"linux\" {\n\t\t\t\t\tasm = \"SyscallNoError\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tif len(args) <= 3 {\n\t\t\t\tfor len(args) < 3 {\n\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t}\n\t\t\t} else if len(args) <= 6 {\n\t\t\t\tasm += \"6\"\n\t\t\t\tfor len(args) < 6 {\n\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t}\n\t\t\t} else if len(args) <= 9 {\n\t\t\t\tasm += \"9\"\n\t\t\t\tfor len(args) < 9 {\n\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s too many arguments to system call\\n\", path, funct)\n\t\t\t}\n\n\t\t\t// System call number.\n\t\t\tif sysname == \"\" {\n\t\t\t\tsysname = \"SYS_\" + funct\n\t\t\t\tsysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)\n\t\t\t\tsysname = strings.ToUpper(sysname)\n\t\t\t}\n\n\t\t\tvar libcFn string\n\t\t\tif libc {\n\t\t\t\tasm = \"syscall_\" + strings.ToLower(asm[:1]) + asm[1:] // internal syscall call\n\t\t\t\tsysname = strings.TrimPrefix(sysname, \"SYS_\")         // remove SYS_\n\t\t\t\tsysname = strings.ToLower(sysname)                    // lowercase\n\t\t\t\tlibcFn = sysname\n\t\t\t\tsysname = \"funcPC(libc_\" + sysname + \"_trampoline)\"\n\t\t\t}\n\n\t\t\t// Actual call.\n\t\t\targlist := strings.Join(args, \", \")\n\t\t\tcall := fmt.Sprintf(\"%s(%s, %s)\", asm, sysname, arglist)\n\n\t\t\t// Assign return values.\n\t\t\tbody := \"\"\n\t\t\tret := []string{\"_\", \"_\", \"_\"}\n\t\t\tdoErrno := false\n\t\t\tfor i := 0; i < len(out); i++ {\n\t\t\t\tp := parseParam(out[i])\n\t\t\t\treg := \"\"\n\t\t\t\tif p.Name == \"err\" && !*plan9 {\n\t\t\t\t\treg = \"e1\"\n\t\t\t\t\tret[2] = reg\n\t\t\t\t\tdoErrno = true\n\t\t\t\t} else if p.Name == \"err\" && *plan9 {\n\t\t\t\t\tret[0] = \"r0\"\n\t\t\t\t\tret[2] = \"e1\"\n\t\t\t\t\tbreak\n\t\t\t\t} else {\n\t\t\t\t\treg = fmt.Sprintf(\"r%d\", i)\n\t\t\t\t\tret[i] = reg\n\t\t\t\t}\n\t\t\t\tif p.Type == \"bool\" {\n\t\t\t\t\treg = fmt.Sprintf(\"%s != 0\", reg)\n\t\t\t\t}\n\t\t\t\tif p.Type == \"int64\" && endianness != \"\" {\n\t\t\t\t\t// 64-bit number in r1:r0 or r0:r1.\n\t\t\t\t\tif i+2 > len(out) {\n\t\t\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s not enough registers for int64 return\\n\", path, funct)\n\t\t\t\t\t}\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\treg = fmt.Sprintf(\"int64(r%d)<<32 | int64(r%d)\", i, i+1)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = fmt.Sprintf(\"int64(r%d)<<32 | int64(r%d)\", i+1, i)\n\t\t\t\t\t}\n\t\t\t\t\tret[i] = fmt.Sprintf(\"r%d\", i)\n\t\t\t\t\tret[i+1] = fmt.Sprintf(\"r%d\", i+1)\n\t\t\t\t}\n\t\t\t\tif reg != \"e1\" || *plan9 {\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t%s = %s(%s)\\n\", p.Name, p.Type, reg)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ret[0] == \"_\" && ret[1] == \"_\" && ret[2] == \"_\" {\n\t\t\t\ttext += fmt.Sprintf(\"\\t%s\\n\", call)\n\t\t\t} else {\n\t\t\t\tif errvar == \"\" && goos == \"linux\" {\n\t\t\t\t\t// raw syscall without error on Linux, see golang.org/issue/22924\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t%s, %s := %s\\n\", ret[0], ret[1], call)\n\t\t\t\t} else {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t%s, %s, %s := %s\\n\", ret[0], ret[1], ret[2], call)\n\t\t\t\t}\n\t\t\t}\n\t\t\ttext += body\n\n\t\t\tif *plan9 && ret[2] == \"e1\" {\n\t\t\t\ttext += \"\\tif int32(r0) == -1 {\\n\"\n\t\t\t\ttext += \"\\t\\terr = e1\\n\"\n\t\t\t\ttext += \"\\t}\\n\"\n\t\t\t} else if doErrno {\n\t\t\t\ttext += \"\\tif e1 != 0 {\\n\"\n\t\t\t\ttext += \"\\t\\terr = errnoErr(e1)\\n\"\n\t\t\t\ttext += \"\\t}\\n\"\n\t\t\t}\n\t\t\ttext += \"\\treturn\\n\"\n\t\t\ttext += \"}\\n\\n\"\n\n\t\t\tif libc && !trampolines[libcFn] {\n\t\t\t\t// some system calls share a trampoline, like read and readlen.\n\t\t\t\ttrampolines[libcFn] = true\n\t\t\t\t// Declare assembly trampoline.\n\t\t\t\ttext += fmt.Sprintf(\"func libc_%s_trampoline()\\n\", libcFn)\n\t\t\t\t// Assembly trampoline calls the libc_* function, which this magic\n\t\t\t\t// redirects to use the function from libSystem.\n\t\t\t\ttext += fmt.Sprintf(\"//go:linkname libc_%s libc_%s\\n\", libcFn, libcFn)\n\t\t\t\ttext += fmt.Sprintf(\"//go:cgo_import_dynamic libc_%s %s \\\"/usr/lib/libSystem.B.dylib\\\"\\n\", libcFn, libcFn)\n\t\t\t\ttext += \"\\n\"\n\t\t\t}\n\t\t}\n\t\tif err := s.Err(); err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfile.Close()\n\t}\n\tfmt.Printf(srcTemplate, cmdLine(), buildTags(), text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n%s\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.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// +build ignore\n\n/*\nThis program reads a file containing function prototypes\n(like syscall_aix.go) and generates system call bodies.\nThe prototypes are marked by lines beginning with \"//sys\"\nand read like func declarations if //sys is replaced by func, but:\n\t* The parameter lists must give a name for each argument.\n\t  This includes return parameters.\n\t* The parameter lists must give a type for each argument:\n\t  the (x, y, z int) shorthand is not allowed.\n\t* If the return parameter is an error number, it must be named err.\n\t* If go func name needs to be different than its libc name,\n\t* or the function is not in libc, name could be specified\n\t* at the end, after \"=\" sign, like\n\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n*/\npackage main\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tb32  = flag.Bool(\"b32\", false, \"32bit big-endian\")\n\tl32  = flag.Bool(\"l32\", false, \"32bit little-endian\")\n\taix  = flag.Bool(\"aix\", false, \"aix\")\n\ttags = flag.String(\"tags\", \"\", \"build tags\")\n)\n\n// cmdLine returns this programs's commandline arguments\nfunc cmdLine() string {\n\treturn \"go run mksyscall_aix_ppc.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags\nfunc buildTags() string {\n\treturn *tags\n}\n\n// Param is function parameter\ntype Param struct {\n\tName string\n\tType string\n}\n\n// usage prints the program usage\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"usage: go run mksyscall_aix_ppc.go [-b32 | -l32] [-tags x,y] [file ...]\\n\")\n\tos.Exit(1)\n}\n\n// parseParamList parses parameter list and returns a slice of parameters\nfunc parseParamList(list string) []string {\n\tlist = strings.TrimSpace(list)\n\tif list == \"\" {\n\t\treturn []string{}\n\t}\n\treturn regexp.MustCompile(`\\s*,\\s*`).Split(list, -1)\n}\n\n// parseParam splits a parameter into name and type\nfunc parseParam(p string) Param {\n\tps := regexp.MustCompile(`^(\\S*) (\\S*)$`).FindStringSubmatch(p)\n\tif ps == nil {\n\t\tfmt.Fprintf(os.Stderr, \"malformed parameter: %s\\n\", p)\n\t\tos.Exit(1)\n\t}\n\treturn Param{ps[1], ps[2]}\n}\n\nfunc main() {\n\tflag.Usage = usage\n\tflag.Parse()\n\tif len(flag.Args()) <= 0 {\n\t\tfmt.Fprintf(os.Stderr, \"no files to parse provided\\n\")\n\t\tusage()\n\t}\n\n\tendianness := \"\"\n\tif *b32 {\n\t\tendianness = \"big-endian\"\n\t} else if *l32 {\n\t\tendianness = \"little-endian\"\n\t}\n\n\tpack := \"\"\n\ttext := \"\"\n\tcExtern := \"/*\\n#include <stdint.h>\\n#include <stddef.h>\\n\"\n\tfor _, path := range flag.Args() {\n\t\tfile, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\ts := bufio.NewScanner(file)\n\t\tfor s.Scan() {\n\t\t\tt := s.Text()\n\t\t\tt = strings.TrimSpace(t)\n\t\t\tt = regexp.MustCompile(`\\s+`).ReplaceAllString(t, ` `)\n\t\t\tif p := regexp.MustCompile(`^package (\\S+)$`).FindStringSubmatch(t); p != nil && pack == \"\" {\n\t\t\t\tpack = p[1]\n\t\t\t}\n\t\t\tnonblock := regexp.MustCompile(`^\\/\\/sysnb `).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Line must be of the form\n\t\t\t//\tfunc Open(path string, mode int, perm int) (fd int, err error)\n\t\t\t// Split into name, in params, out params.\n\t\t\tf := regexp.MustCompile(`^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$`).FindStringSubmatch(t)\n\t\t\tif f == nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s\\nmalformed //sys declaration\\n\", path, t)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tfunct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]\n\n\t\t\t// Split argument lists on comma.\n\t\t\tin := parseParamList(inps)\n\t\t\tout := parseParamList(outps)\n\n\t\t\tinps = strings.Join(in, \", \")\n\t\t\toutps = strings.Join(out, \", \")\n\n\t\t\t// Try in vain to keep people from editing this file.\n\t\t\t// The theory is that they jump into the middle of the file\n\t\t\t// without reading the header.\n\t\t\ttext += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\n\t\t\t// Check if value return, err return available\n\t\t\terrvar := \"\"\n\t\t\tretvar := \"\"\n\t\t\trettype := \"\"\n\t\t\tfor _, param := range out {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif p.Type == \"error\" {\n\t\t\t\t\terrvar = p.Name\n\t\t\t\t} else {\n\t\t\t\t\tretvar = p.Name\n\t\t\t\t\trettype = p.Type\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// System call name.\n\t\t\tif sysname == \"\" {\n\t\t\t\tsysname = funct\n\t\t\t}\n\t\t\tsysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)\n\t\t\tsysname = strings.ToLower(sysname) // All libc functions are lowercase.\n\n\t\t\tcRettype := \"\"\n\t\t\tif rettype == \"unsafe.Pointer\" {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if rettype == \"uintptr\" {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if rettype == \"int\" {\n\t\t\t\tcRettype = \"int\"\n\t\t\t} else if rettype == \"int32\" {\n\t\t\t\tcRettype = \"int\"\n\t\t\t} else if rettype == \"int64\" {\n\t\t\t\tcRettype = \"long long\"\n\t\t\t} else if rettype == \"uint32\" {\n\t\t\t\tcRettype = \"unsigned int\"\n\t\t\t} else if rettype == \"uint64\" {\n\t\t\t\tcRettype = \"unsigned long long\"\n\t\t\t} else {\n\t\t\t\tcRettype = \"int\"\n\t\t\t}\n\t\t\tif sysname == \"exit\" {\n\t\t\t\tcRettype = \"void\"\n\t\t\t}\n\n\t\t\t// Change p.Types to c\n\t\t\tvar cIn []string\n\t\t\tfor _, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\", \"size_t\")\n\t\t\t\t} else if p.Type == \"unsafe.Pointer\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"uintptr\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"int\" {\n\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t} else if p.Type == \"int32\" {\n\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t} else if p.Type == \"int64\" {\n\t\t\t\t\tcIn = append(cIn, \"long long\")\n\t\t\t\t} else if p.Type == \"uint32\" {\n\t\t\t\t\tcIn = append(cIn, \"unsigned int\")\n\t\t\t\t} else if p.Type == \"uint64\" {\n\t\t\t\t\tcIn = append(cIn, \"unsigned long long\")\n\t\t\t\t} else {\n\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif funct != \"fcntl\" && funct != \"FcntlInt\" && funct != \"readlen\" && funct != \"writelen\" {\n\t\t\t\tif sysname == \"select\" {\n\t\t\t\t\t// select is a keyword of Go. Its name is\n\t\t\t\t\t// changed to c_select.\n\t\t\t\t\tcExtern += \"#define c_select select\\n\"\n\t\t\t\t}\n\t\t\t\t// Imports of system calls from libc\n\t\t\t\tcExtern += fmt.Sprintf(\"%s %s\", cRettype, sysname)\n\t\t\t\tcIn := strings.Join(cIn, \", \")\n\t\t\t\tcExtern += fmt.Sprintf(\"(%s);\\n\", cIn)\n\t\t\t}\n\n\t\t\t// So file name.\n\t\t\tif *aix {\n\t\t\t\tif modname == \"\" {\n\t\t\t\t\tmodname = \"libc.a/shr_64.o\"\n\t\t\t\t} else {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, \"%s: only syscall using libc are available\\n\", funct)\n\t\t\t\t\tos.Exit(1)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstrconvfunc := \"C.CString\"\n\n\t\t\t// Go function header.\n\t\t\tif outps != \"\" {\n\t\t\t\toutps = fmt.Sprintf(\" (%s)\", outps)\n\t\t\t}\n\t\t\tif text != \"\" {\n\t\t\t\ttext += \"\\n\"\n\t\t\t}\n\n\t\t\ttext += fmt.Sprintf(\"func %s(%s)%s {\\n\", funct, strings.Join(in, \", \"), outps)\n\n\t\t\t// Prepare arguments to Syscall.\n\t\t\tvar args []string\n\t\t\tn := 0\n\t\t\targN := 0\n\t\t\tfor _, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\targs = append(args, \"C.uintptr_t(uintptr(unsafe.Pointer(\"+p.Name+\")))\")\n\t\t\t\t} else if p.Type == \"string\" && errvar != \"\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\\n\", n, strconvfunc, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses string arguments, but has no error return\\n\")\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\\n\", n, strconvfunc, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if m := regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type); m != nil {\n\t\t\t\t\t// Convert slice into pointer, length.\n\t\t\t\t\t// Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t\t\t// pass nil in that case.\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d *%s\\n\", n, m[1])\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif len(%s) > 0 {\\n\\t\\t_p%d = &%s[0]\\n\\t}\\n\", p.Name, n, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(uintptr(unsafe.Pointer(_p%d)))\", n))\n\t\t\t\t\tn++\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d int\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d = len(%s)\\n\", n, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.size_t(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"int64\" && endianness != \"\" {\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s>>32)\", p.Name), fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name), fmt.Sprintf(\"uintptr(%s>>32)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"bool\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d uint32\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif %s {\\n\\t\\t_p%d = 1\\n\\t} else {\\n\\t\\t_p%d = 0\\n\\t}\\n\", p.Name, n, n)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"_p%d\", n))\n\t\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(uintptr(%s))\", p.Name))\n\t\t\t\t} else if p.Type == \"unsafe.Pointer\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(uintptr(%s))\", p.Name))\n\t\t\t\t} else if p.Type == \"int\" {\n\t\t\t\t\tif (argN == 2) && ((funct == \"readlen\") || (funct == \"writelen\")) {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.size_t(%s)\", p.Name))\n\t\t\t\t\t} else if argN == 0 && funct == \"fcntl\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t\t} else if (argN == 2) && ((funct == \"fcntl\") || (funct == \"FcntlInt\")) {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else if p.Type == \"int32\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"int64\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.longlong(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uint32\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uint(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uint64\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.ulonglong(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uintptr\" {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t} else {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t}\n\t\t\t\targN++\n\t\t\t}\n\n\t\t\t// Actual call.\n\t\t\targlist := strings.Join(args, \", \")\n\t\t\tcall := \"\"\n\t\t\tif sysname == \"exit\" {\n\t\t\t\tif errvar != \"\" {\n\t\t\t\t\tcall += \"er :=\"\n\t\t\t\t} else {\n\t\t\t\t\tcall += \"\"\n\t\t\t\t}\n\t\t\t} else if errvar != \"\" {\n\t\t\t\tcall += \"r0,er :=\"\n\t\t\t} else if retvar != \"\" {\n\t\t\t\tcall += \"r0,_ :=\"\n\t\t\t} else {\n\t\t\t\tcall += \"\"\n\t\t\t}\n\t\t\tif sysname == \"select\" {\n\t\t\t\t// select is a keyword of Go. Its name is\n\t\t\t\t// changed to c_select.\n\t\t\t\tcall += fmt.Sprintf(\"C.c_%s(%s)\", sysname, arglist)\n\t\t\t} else {\n\t\t\t\tcall += fmt.Sprintf(\"C.%s(%s)\", sysname, arglist)\n\t\t\t}\n\n\t\t\t// Assign return values.\n\t\t\tbody := \"\"\n\t\t\tfor i := 0; i < len(out); i++ {\n\t\t\t\tp := parseParam(out[i])\n\t\t\t\treg := \"\"\n\t\t\t\tif p.Name == \"err\" {\n\t\t\t\t\treg = \"e1\"\n\t\t\t\t} else {\n\t\t\t\t\treg = \"r0\"\n\t\t\t\t}\n\t\t\t\tif reg != \"e1\" {\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t%s = %s(%s)\\n\", p.Name, p.Type, reg)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// verify return\n\t\t\tif sysname != \"exit\" && errvar != \"\" {\n\t\t\t\tif regexp.MustCompile(`^uintptr`).FindStringSubmatch(cRettype) != nil {\n\t\t\t\t\tbody += \"\\tif (uintptr(r0) ==^uintptr(0) && er != nil) {\\n\"\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t\\t%s = er\\n\", errvar)\n\t\t\t\t\tbody += \"\\t}\\n\"\n\t\t\t\t} else {\n\t\t\t\t\tbody += \"\\tif (r0 ==-1 && er != nil) {\\n\"\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t\\t%s = er\\n\", errvar)\n\t\t\t\t\tbody += \"\\t}\\n\"\n\t\t\t\t}\n\t\t\t} else if errvar != \"\" {\n\t\t\t\tbody += \"\\tif (er != nil) {\\n\"\n\t\t\t\tbody += fmt.Sprintf(\"\\t\\t%s = er\\n\", errvar)\n\t\t\t\tbody += \"\\t}\\n\"\n\t\t\t}\n\n\t\t\ttext += fmt.Sprintf(\"\\t%s\\n\", call)\n\t\t\ttext += body\n\n\t\t\ttext += \"\\treturn\\n\"\n\t\t\ttext += \"}\\n\"\n\t\t}\n\t\tif err := s.Err(); err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfile.Close()\n\t}\n\timp := \"\"\n\tif pack != \"unix\" {\n\t\timp = \"import \\\"golang.org/x/sys/unix\\\"\\n\"\n\n\t}\n\tfmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, cExtern, imp, text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n\npackage %s\n\n\n%s\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n\n%s\n\n%s\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksyscall_aix_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// +build ignore\n\n/*\nThis program reads a file containing function prototypes\n(like syscall_aix.go) and generates system call bodies.\nThe prototypes are marked by lines beginning with \"//sys\"\nand read like func declarations if //sys is replaced by func, but:\n\t* The parameter lists must give a name for each argument.\n\t  This includes return parameters.\n\t* The parameter lists must give a type for each argument:\n\t  the (x, y, z int) shorthand is not allowed.\n\t* If the return parameter is an error number, it must be named err.\n\t* If go func name needs to be different than its libc name,\n\t* or the function is not in libc, name could be specified\n\t* at the end, after \"=\" sign, like\n\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n\n\nThis program will generate three files and handle both gc and gccgo implementation:\n  - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)\n  - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6\n  - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.\n\n The generated code looks like this\n\nzsyscall_aix_ppc64.go\nfunc asyscall(...) (n int, err error) {\n\t // Pointer Creation\n\t r1, e1 := callasyscall(...)\n\t // Type Conversion\n\t // Error Handler\n\t return\n}\n\nzsyscall_aix_ppc64_gc.go\n//go:cgo_import_dynamic libc_asyscall asyscall \"libc.a/shr_64.o\"\n//go:linkname libc_asyscall libc_asyscall\nvar asyscall syscallFunc\n\nfunc callasyscall(...) (r1 uintptr, e1 Errno) {\n\t r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), \"nb_args\", ... )\n\t return\n}\n\nzsyscall_aix_ppc64_ggcgo.go\n\n// int asyscall(...)\n\nimport \"C\"\n\nfunc callasyscall(...) (r1 uintptr, e1 Errno) {\n\t r1 = uintptr(C.asyscall(...))\n\t e1 = syscall.GetErrno()\n\t return\n}\n*/\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tb32  = flag.Bool(\"b32\", false, \"32bit big-endian\")\n\tl32  = flag.Bool(\"l32\", false, \"32bit little-endian\")\n\taix  = flag.Bool(\"aix\", false, \"aix\")\n\ttags = flag.String(\"tags\", \"\", \"build tags\")\n)\n\n// cmdLine returns this programs's commandline arguments\nfunc cmdLine() string {\n\treturn \"go run mksyscall_aix_ppc64.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags\nfunc buildTags() string {\n\treturn *tags\n}\n\n// Param is function parameter\ntype Param struct {\n\tName string\n\tType string\n}\n\n// usage prints the program usage\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"usage: go run mksyscall_aix_ppc64.go [-b32 | -l32] [-tags x,y] [file ...]\\n\")\n\tos.Exit(1)\n}\n\n// parseParamList parses parameter list and returns a slice of parameters\nfunc parseParamList(list string) []string {\n\tlist = strings.TrimSpace(list)\n\tif list == \"\" {\n\t\treturn []string{}\n\t}\n\treturn regexp.MustCompile(`\\s*,\\s*`).Split(list, -1)\n}\n\n// parseParam splits a parameter into name and type\nfunc parseParam(p string) Param {\n\tps := regexp.MustCompile(`^(\\S*) (\\S*)$`).FindStringSubmatch(p)\n\tif ps == nil {\n\t\tfmt.Fprintf(os.Stderr, \"malformed parameter: %s\\n\", p)\n\t\tos.Exit(1)\n\t}\n\treturn Param{ps[1], ps[2]}\n}\n\nfunc main() {\n\tflag.Usage = usage\n\tflag.Parse()\n\tif len(flag.Args()) <= 0 {\n\t\tfmt.Fprintf(os.Stderr, \"no files to parse provided\\n\")\n\t\tusage()\n\t}\n\n\tendianness := \"\"\n\tif *b32 {\n\t\tendianness = \"big-endian\"\n\t} else if *l32 {\n\t\tendianness = \"little-endian\"\n\t}\n\n\tpack := \"\"\n\t// GCCGO\n\ttextgccgo := \"\"\n\tcExtern := \"/*\\n#include <stdint.h>\\n\"\n\t// GC\n\ttextgc := \"\"\n\tdynimports := \"\"\n\tlinknames := \"\"\n\tvar vars []string\n\t// COMMON\n\ttextcommon := \"\"\n\tfor _, path := range flag.Args() {\n\t\tfile, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\ts := bufio.NewScanner(file)\n\t\tfor s.Scan() {\n\t\t\tt := s.Text()\n\t\t\tt = strings.TrimSpace(t)\n\t\t\tt = regexp.MustCompile(`\\s+`).ReplaceAllString(t, ` `)\n\t\t\tif p := regexp.MustCompile(`^package (\\S+)$`).FindStringSubmatch(t); p != nil && pack == \"\" {\n\t\t\t\tpack = p[1]\n\t\t\t}\n\t\t\tnonblock := regexp.MustCompile(`^\\/\\/sysnb `).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Line must be of the form\n\t\t\t//\tfunc Open(path string, mode int, perm int) (fd int, err error)\n\t\t\t// Split into name, in params, out params.\n\t\t\tf := regexp.MustCompile(`^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$`).FindStringSubmatch(t)\n\t\t\tif f == nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s\\nmalformed //sys declaration\\n\", path, t)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tfunct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]\n\n\t\t\t// Split argument lists on comma.\n\t\t\tin := parseParamList(inps)\n\t\t\tout := parseParamList(outps)\n\n\t\t\tinps = strings.Join(in, \", \")\n\t\t\toutps = strings.Join(out, \", \")\n\n\t\t\tif sysname == \"\" {\n\t\t\t\tsysname = funct\n\t\t\t}\n\n\t\t\tonlyCommon := false\n\t\t\tif funct == \"readlen\" || funct == \"writelen\" || funct == \"FcntlInt\" || funct == \"FcntlFlock\" {\n\t\t\t\t// This function call another syscall which is already implemented.\n\t\t\t\t// Therefore, the gc and gccgo part must not be generated.\n\t\t\t\tonlyCommon = true\n\t\t\t}\n\n\t\t\t// Try in vain to keep people from editing this file.\n\t\t\t// The theory is that they jump into the middle of the file\n\t\t\t// without reading the header.\n\n\t\t\ttextcommon += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\t\t\tif !onlyCommon {\n\t\t\t\ttextgccgo += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\t\t\t\ttextgc += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\t\t\t}\n\n\t\t\t// Check if value return, err return available\n\t\t\terrvar := \"\"\n\t\t\trettype := \"\"\n\t\t\tfor _, param := range out {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif p.Type == \"error\" {\n\t\t\t\t\terrvar = p.Name\n\t\t\t\t} else {\n\t\t\t\t\trettype = p.Type\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)\n\t\t\tsysname = strings.ToLower(sysname) // All libc functions are lowercase.\n\n\t\t\t// GCCGO Prototype return type\n\t\t\tcRettype := \"\"\n\t\t\tif rettype == \"unsafe.Pointer\" {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if rettype == \"uintptr\" {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {\n\t\t\t\tcRettype = \"uintptr_t\"\n\t\t\t} else if rettype == \"int\" {\n\t\t\t\tcRettype = \"int\"\n\t\t\t} else if rettype == \"int32\" {\n\t\t\t\tcRettype = \"int\"\n\t\t\t} else if rettype == \"int64\" {\n\t\t\t\tcRettype = \"long long\"\n\t\t\t} else if rettype == \"uint32\" {\n\t\t\t\tcRettype = \"unsigned int\"\n\t\t\t} else if rettype == \"uint64\" {\n\t\t\t\tcRettype = \"unsigned long long\"\n\t\t\t} else {\n\t\t\t\tcRettype = \"int\"\n\t\t\t}\n\t\t\tif sysname == \"exit\" {\n\t\t\t\tcRettype = \"void\"\n\t\t\t}\n\n\t\t\t// GCCGO Prototype arguments type\n\t\t\tvar cIn []string\n\t\t\tfor i, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\", \"size_t\")\n\t\t\t\t} else if p.Type == \"unsafe.Pointer\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"uintptr\" {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t} else if p.Type == \"int\" {\n\t\t\t\t\tif (i == 0 || i == 2) && funct == \"fcntl\" {\n\t\t\t\t\t\t// These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock\n\t\t\t\t\t\tcIn = append(cIn, \"uintptr_t\")\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t\t}\n\n\t\t\t\t} else if p.Type == \"int32\" {\n\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t} else if p.Type == \"int64\" {\n\t\t\t\t\tcIn = append(cIn, \"long long\")\n\t\t\t\t} else if p.Type == \"uint32\" {\n\t\t\t\t\tcIn = append(cIn, \"unsigned int\")\n\t\t\t\t} else if p.Type == \"uint64\" {\n\t\t\t\t\tcIn = append(cIn, \"unsigned long long\")\n\t\t\t\t} else {\n\t\t\t\t\tcIn = append(cIn, \"int\")\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !onlyCommon {\n\t\t\t\t// GCCGO Prototype Generation\n\t\t\t\t// Imports of system calls from libc\n\t\t\t\tif sysname == \"select\" {\n\t\t\t\t\t// select is a keyword of Go. Its name is\n\t\t\t\t\t// changed to c_select.\n\t\t\t\t\tcExtern += \"#define c_select select\\n\"\n\t\t\t\t}\n\t\t\t\tcExtern += fmt.Sprintf(\"%s %s\", cRettype, sysname)\n\t\t\t\tcIn := strings.Join(cIn, \", \")\n\t\t\t\tcExtern += fmt.Sprintf(\"(%s);\\n\", cIn)\n\t\t\t}\n\t\t\t// GC Library name\n\t\t\tif modname == \"\" {\n\t\t\t\tmodname = \"libc.a/shr_64.o\"\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s: only syscall using libc are available\\n\", funct)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tsysvarname := fmt.Sprintf(\"libc_%s\", sysname)\n\n\t\t\tif !onlyCommon {\n\t\t\t\t// GC Runtime import of function to allow cross-platform builds.\n\t\t\t\tdynimports += fmt.Sprintf(\"//go:cgo_import_dynamic %s %s \\\"%s\\\"\\n\", sysvarname, sysname, modname)\n\t\t\t\t// GC Link symbol to proc address variable.\n\t\t\t\tlinknames += fmt.Sprintf(\"//go:linkname %s %s\\n\", sysvarname, sysvarname)\n\t\t\t\t// GC Library proc address variable.\n\t\t\t\tvars = append(vars, sysvarname)\n\t\t\t}\n\n\t\t\tstrconvfunc := \"BytePtrFromString\"\n\t\t\tstrconvtype := \"*byte\"\n\n\t\t\t// Go function header.\n\t\t\tif outps != \"\" {\n\t\t\t\toutps = fmt.Sprintf(\" (%s)\", outps)\n\t\t\t}\n\t\t\tif textcommon != \"\" {\n\t\t\t\ttextcommon += \"\\n\"\n\t\t\t}\n\n\t\t\ttextcommon += fmt.Sprintf(\"func %s(%s)%s {\\n\", funct, strings.Join(in, \", \"), outps)\n\n\t\t\t// Prepare arguments tocall.\n\t\t\tvar argscommon []string // Arguments in the common part\n\t\t\tvar argscall []string   // Arguments for call prototype\n\t\t\tvar argsgc []string     // Arguments for gc call (with syscall6)\n\t\t\tvar argsgccgo []string  // Arguments for gccgo call (with C.name_of_syscall)\n\t\t\tn := 0\n\t\t\targN := 0\n\t\t\tfor _, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(unsafe.Pointer(%s))\", p.Name))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uintptr\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, p.Name)\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"string\" && errvar != \"\" {\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tvar _p%d %s\\n\", n, strconvtype)\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\t_p%d, %s = %s(%s)\\n\", n, errvar, strconvfunc, p.Name)\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tif %s != nil {\\n\\t\\treturn\\n\\t}\\n\", errvar)\n\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"_p%d uintptr \", n))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"_p%d\", n))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses string arguments, but has no error return\\n\")\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tvar _p%d %s\\n\", n, strconvtype)\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\t_p%d, %s = %s(%s)\\n\", n, errvar, strconvfunc, p.Name)\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tif %s != nil {\\n\\t\\treturn\\n\\t}\\n\", errvar)\n\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"_p%d uintptr\", n))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"_p%d\", n))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if m := regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type); m != nil {\n\t\t\t\t\t// Convert slice into pointer, length.\n\t\t\t\t\t// Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t\t\t// pass nil in that case.\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tvar _p%d *%s\\n\", n, m[1])\n\t\t\t\t\ttextcommon += fmt.Sprintf(\"\\tif len(%s) > 0 {\\n\\t\\t_p%d = &%s[0]\\n\\t}\\n\", p.Name, n, p.Name)\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n), fmt.Sprintf(\"len(%s)\", p.Name))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"_p%d uintptr\", n), fmt.Sprintf(\"_lenp%d int\", n))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"_p%d\", n), fmt.Sprintf(\"uintptr(_lenp%d)\", n))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(_p%d)\", n), fmt.Sprintf(\"C.size_t(_lenp%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"int64\" && endianness != \"\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses int64 with 32 bits mode. Case not yet implemented\\n\")\n\t\t\t\t} else if p.Type == \"bool\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses bool. Case not yet implemented\\n\")\n\t\t\t\t} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil || p.Type == \"unsafe.Pointer\" {\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uintptr\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, p.Name)\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"int\" {\n\t\t\t\t\tif (argN == 0 || argN == 2) && ((funct == \"fcntl\") || (funct == \"FcntlInt\") || (funct == \"FcntlFlock\")) {\n\t\t\t\t\t\t// These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock\n\t\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uintptr\", p.Name))\n\t\t\t\t\t\targsgc = append(argsgc, p.Name)\n\t\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s int\", p.Name))\n\t\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else if p.Type == \"int32\" {\n\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s int32\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"int64\" {\n\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s int64\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.longlong(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uint32\" {\n\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uint32\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uint(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uint64\" {\n\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uint64\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.ulonglong(%s)\", p.Name))\n\t\t\t\t} else if p.Type == \"uintptr\" {\n\t\t\t\t\targscommon = append(argscommon, p.Name)\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s uintptr\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, p.Name)\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.uintptr_t(%s)\", p.Name))\n\t\t\t\t} else {\n\t\t\t\t\targscommon = append(argscommon, fmt.Sprintf(\"int(%s)\", p.Name))\n\t\t\t\t\targscall = append(argscall, fmt.Sprintf(\"%s int\", p.Name))\n\t\t\t\t\targsgc = append(argsgc, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\targsgccgo = append(argsgccgo, fmt.Sprintf(\"C.int(%s)\", p.Name))\n\t\t\t\t}\n\t\t\t\targN++\n\t\t\t}\n\t\t\tnargs := len(argsgc)\n\n\t\t\t// COMMON function generation\n\t\t\targscommonlist := strings.Join(argscommon, \", \")\n\t\t\tcallcommon := fmt.Sprintf(\"call%s(%s)\", sysname, argscommonlist)\n\t\t\tret := []string{\"_\", \"_\"}\n\t\t\tbody := \"\"\n\t\t\tdoErrno := false\n\t\t\tfor i := 0; i < len(out); i++ {\n\t\t\t\tp := parseParam(out[i])\n\t\t\t\treg := \"\"\n\t\t\t\tif p.Name == \"err\" {\n\t\t\t\t\treg = \"e1\"\n\t\t\t\t\tret[1] = reg\n\t\t\t\t\tdoErrno = true\n\t\t\t\t} else {\n\t\t\t\t\treg = \"r0\"\n\t\t\t\t\tret[0] = reg\n\t\t\t\t}\n\t\t\t\tif p.Type == \"bool\" {\n\t\t\t\t\treg = fmt.Sprintf(\"%s != 0\", reg)\n\t\t\t\t}\n\t\t\t\tif reg != \"e1\" {\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t%s = %s(%s)\\n\", p.Name, p.Type, reg)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ret[0] == \"_\" && ret[1] == \"_\" {\n\t\t\t\ttextcommon += fmt.Sprintf(\"\\t%s\\n\", callcommon)\n\t\t\t} else {\n\t\t\t\ttextcommon += fmt.Sprintf(\"\\t%s, %s := %s\\n\", ret[0], ret[1], callcommon)\n\t\t\t}\n\t\t\ttextcommon += body\n\n\t\t\tif doErrno {\n\t\t\t\ttextcommon += \"\\tif e1 != 0 {\\n\"\n\t\t\t\ttextcommon += \"\\t\\terr = errnoErr(e1)\\n\"\n\t\t\t\ttextcommon += \"\\t}\\n\"\n\t\t\t}\n\t\t\ttextcommon += \"\\treturn\\n\"\n\t\t\ttextcommon += \"}\\n\"\n\n\t\t\tif onlyCommon {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// CALL Prototype\n\t\t\tcallProto := fmt.Sprintf(\"func call%s(%s) (r1 uintptr, e1 Errno) {\\n\", sysname, strings.Join(argscall, \", \"))\n\n\t\t\t// GC function generation\n\t\t\tasm := \"syscall6\"\n\t\t\tif nonblock != nil {\n\t\t\t\tasm = \"rawSyscall6\"\n\t\t\t}\n\n\t\t\tif len(argsgc) <= 6 {\n\t\t\t\tfor len(argsgc) < 6 {\n\t\t\t\t\targsgc = append(argsgc, \"0\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s: too many arguments to system call\", funct)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\targsgclist := strings.Join(argsgc, \", \")\n\t\t\tcallgc := fmt.Sprintf(\"%s(uintptr(unsafe.Pointer(&%s)), %d, %s)\", asm, sysvarname, nargs, argsgclist)\n\n\t\t\ttextgc += callProto\n\t\t\ttextgc += fmt.Sprintf(\"\\tr1, _, e1 = %s\\n\", callgc)\n\t\t\ttextgc += \"\\treturn\\n}\\n\"\n\n\t\t\t// GCCGO function generation\n\t\t\targsgccgolist := strings.Join(argsgccgo, \", \")\n\t\t\tvar callgccgo string\n\t\t\tif sysname == \"select\" {\n\t\t\t\t// select is a keyword of Go. Its name is\n\t\t\t\t// changed to c_select.\n\t\t\t\tcallgccgo = fmt.Sprintf(\"C.c_%s(%s)\", sysname, argsgccgolist)\n\t\t\t} else {\n\t\t\t\tcallgccgo = fmt.Sprintf(\"C.%s(%s)\", sysname, argsgccgolist)\n\t\t\t}\n\t\t\ttextgccgo += callProto\n\t\t\ttextgccgo += fmt.Sprintf(\"\\tr1 = uintptr(%s)\\n\", callgccgo)\n\t\t\ttextgccgo += \"\\te1 = syscall.GetErrno()\\n\"\n\t\t\ttextgccgo += \"\\treturn\\n}\\n\"\n\t\t}\n\t\tif err := s.Err(); err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfile.Close()\n\t}\n\timp := \"\"\n\tif pack != \"unix\" {\n\t\timp = \"import \\\"golang.org/x/sys/unix\\\"\\n\"\n\n\t}\n\n\t// Print zsyscall_aix_ppc64.go\n\terr := ioutil.WriteFile(\"zsyscall_aix_ppc64.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate1, cmdLine(), buildTags(), pack, imp, textcommon)),\n\t\t0644)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\tos.Exit(1)\n\t}\n\n\t// Print zsyscall_aix_ppc64_gc.go\n\tvardecls := \"\\t\" + strings.Join(vars, \",\\n\\t\")\n\tvardecls += \" syscallFunc\"\n\terr = ioutil.WriteFile(\"zsyscall_aix_ppc64_gc.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate2, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, textgc)),\n\t\t0644)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\tos.Exit(1)\n\t}\n\n\t// Print zsyscall_aix_ppc64_gccgo.go\n\terr = ioutil.WriteFile(\"zsyscall_aix_ppc64_gccgo.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate3, cmdLine(), buildTags(), pack, cExtern, imp, textgccgo)),\n\t\t0644)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\tos.Exit(1)\n\t}\n}\n\nconst srcTemplate1 = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n\npackage %s\n\nimport (\n\t\"unsafe\"\n)\n\n\n%s\n\n%s\n`\nconst srcTemplate2 = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n// +build !gccgo\n\npackage %s\n\nimport (\n\t\"unsafe\"\n)\n%s\n%s\n%s\ntype syscallFunc uintptr\n\nvar (\n%s\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%s\n`\nconst srcTemplate3 = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n// +build gccgo\n\npackage %s\n\n%s\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n)\n\n\n%s\n\n%s\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksyscall_solaris.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// +build ignore\n\n/*\n This program reads a file containing function prototypes\n (like syscall_solaris.go) and generates system call bodies.\n The prototypes are marked by lines beginning with \"//sys\"\n and read like func declarations if //sys is replaced by func, but:\n\t* The parameter lists must give a name for each argument.\n\t  This includes return parameters.\n\t* The parameter lists must give a type for each argument:\n\t  the (x, y, z int) shorthand is not allowed.\n\t* If the return parameter is an error number, it must be named err.\n\t* If go func name needs to be different than its libc name,\n\t* or the function is not in libc, name could be specified\n\t* at the end, after \"=\" sign, like\n\t  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt\n*/\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"flag\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tb32     = flag.Bool(\"b32\", false, \"32bit big-endian\")\n\tl32     = flag.Bool(\"l32\", false, \"32bit little-endian\")\n\ttags    = flag.String(\"tags\", \"\", \"build tags\")\n\tillumos = flag.Bool(\"illumos\", false, \"illumos specific code generation\")\n)\n\n// cmdLine returns this programs's commandline arguments\nfunc cmdLine() string {\n\treturn \"go run mksyscall_solaris.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags\nfunc buildTags() string {\n\treturn *tags\n}\n\n// Param is function parameter\ntype Param struct {\n\tName string\n\tType string\n}\n\n// usage prints the program usage\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"usage: go run mksyscall_solaris.go [-b32 | -l32] [-tags x,y] [file ...]\\n\")\n\tos.Exit(1)\n}\n\n// parseParamList parses parameter list and returns a slice of parameters\nfunc parseParamList(list string) []string {\n\tlist = strings.TrimSpace(list)\n\tif list == \"\" {\n\t\treturn []string{}\n\t}\n\treturn regexp.MustCompile(`\\s*,\\s*`).Split(list, -1)\n}\n\n// parseParam splits a parameter into name and type\nfunc parseParam(p string) Param {\n\tps := regexp.MustCompile(`^(\\S*) (\\S*)$`).FindStringSubmatch(p)\n\tif ps == nil {\n\t\tfmt.Fprintf(os.Stderr, \"malformed parameter: %s\\n\", p)\n\t\tos.Exit(1)\n\t}\n\treturn Param{ps[1], ps[2]}\n}\n\nfunc main() {\n\tflag.Usage = usage\n\tflag.Parse()\n\tif len(flag.Args()) <= 0 {\n\t\tfmt.Fprintf(os.Stderr, \"no files to parse provided\\n\")\n\t\tusage()\n\t}\n\n\tendianness := \"\"\n\tif *b32 {\n\t\tendianness = \"big-endian\"\n\t} else if *l32 {\n\t\tendianness = \"little-endian\"\n\t}\n\n\tpack := \"\"\n\ttext := \"\"\n\tdynimports := \"\"\n\tlinknames := \"\"\n\tvar vars []string\n\tfor _, path := range flag.Args() {\n\t\tfile, err := os.Open(path)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\ts := bufio.NewScanner(file)\n\t\tfor s.Scan() {\n\t\t\tt := s.Text()\n\t\t\tt = strings.TrimSpace(t)\n\t\t\tt = regexp.MustCompile(`\\s+`).ReplaceAllString(t, ` `)\n\t\t\tif p := regexp.MustCompile(`^package (\\S+)$`).FindStringSubmatch(t); p != nil && pack == \"\" {\n\t\t\t\tpack = p[1]\n\t\t\t}\n\t\t\tnonblock := regexp.MustCompile(`^\\/\\/sysnb `).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Line must be of the form\n\t\t\t//\tfunc Open(path string, mode int, perm int) (fd int, err error)\n\t\t\t// Split into name, in params, out params.\n\t\t\tf := regexp.MustCompile(`^\\/\\/sys(nb)? (\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*(?:(\\w*)\\.)?(\\w*))?$`).FindStringSubmatch(t)\n\t\t\tif f == nil {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s:%s\\nmalformed //sys declaration\\n\", path, t)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tfunct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]\n\n\t\t\t// Split argument lists on comma.\n\t\t\tin := parseParamList(inps)\n\t\t\tout := parseParamList(outps)\n\n\t\t\tinps = strings.Join(in, \", \")\n\t\t\toutps = strings.Join(out, \", \")\n\n\t\t\t// Try in vain to keep people from editing this file.\n\t\t\t// The theory is that they jump into the middle of the file\n\t\t\t// without reading the header.\n\t\t\ttext += \"// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\\n\\n\"\n\n\t\t\t// So file name.\n\t\t\tif modname == \"\" {\n\t\t\t\tmodname = \"libc\"\n\t\t\t}\n\n\t\t\t// System call name.\n\t\t\tif sysname == \"\" {\n\t\t\t\tsysname = funct\n\t\t\t}\n\n\t\t\t// System call pointer variable name.\n\t\t\tsysvarname := fmt.Sprintf(\"proc%s\", sysname)\n\n\t\t\tstrconvfunc := \"BytePtrFromString\"\n\t\t\tstrconvtype := \"*byte\"\n\n\t\t\tsysname = strings.ToLower(sysname) // All libc functions are lowercase.\n\n\t\t\t// Runtime import of function to allow cross-platform builds.\n\t\t\tdynimports += fmt.Sprintf(\"//go:cgo_import_dynamic libc_%s %s \\\"%s.so\\\"\\n\", sysname, sysname, modname)\n\t\t\t// Link symbol to proc address variable.\n\t\t\tlinknames += fmt.Sprintf(\"//go:linkname %s libc_%s\\n\", sysvarname, sysname)\n\t\t\t// Library proc address variable.\n\t\t\tvars = append(vars, sysvarname)\n\n\t\t\t// Go function header.\n\t\t\toutlist := strings.Join(out, \", \")\n\t\t\tif outlist != \"\" {\n\t\t\t\toutlist = fmt.Sprintf(\" (%s)\", outlist)\n\t\t\t}\n\t\t\tif text != \"\" {\n\t\t\t\ttext += \"\\n\"\n\t\t\t}\n\t\t\ttext += fmt.Sprintf(\"func %s(%s)%s {\\n\", funct, strings.Join(in, \", \"), outlist)\n\n\t\t\t// Check if err return available\n\t\t\terrvar := \"\"\n\t\t\tfor _, param := range out {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif p.Type == \"error\" {\n\t\t\t\t\terrvar = p.Name\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare arguments to Syscall.\n\t\t\tvar args []string\n\t\t\tn := 0\n\t\t\tfor _, param := range in {\n\t\t\t\tp := parseParam(param)\n\t\t\t\tif regexp.MustCompile(`^\\*`).FindStringSubmatch(p.Type) != nil {\n\t\t\t\t\targs = append(args, \"uintptr(unsafe.Pointer(\"+p.Name+\"))\")\n\t\t\t\t} else if p.Type == \"string\" && errvar != \"\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d %s\\n\", n, strconvtype)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d, %s = %s(%s)\\n\", n, errvar, strconvfunc, p.Name)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif %s != nil {\\n\\t\\treturn\\n\\t}\\n\", errvar)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"string\" {\n\t\t\t\t\tfmt.Fprintf(os.Stderr, path+\":\"+funct+\" uses string arguments, but has no error return\\n\")\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d %s\\n\", n, strconvtype)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\t_p%d, _ = %s(%s)\\n\", n, strconvfunc, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else if s := regexp.MustCompile(`^\\[\\](.*)`).FindStringSubmatch(p.Type); s != nil {\n\t\t\t\t\t// Convert slice into pointer, length.\n\t\t\t\t\t// Have to be careful not to take address of &a[0] if len == 0:\n\t\t\t\t\t// pass nil in that case.\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d *%s\\n\", n, s[1])\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif len(%s) > 0 {\\n\\t\\t_p%d = &%s[0]\\n\\t}\\n\", p.Name, n, p.Name)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(unsafe.Pointer(_p%d))\", n), fmt.Sprintf(\"uintptr(len(%s))\", p.Name))\n\t\t\t\t\tn++\n\t\t\t\t} else if p.Type == \"int64\" && endianness != \"\" {\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s>>32)\", p.Name), fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name), fmt.Sprintf(\"uintptr(%s>>32)\", p.Name))\n\t\t\t\t\t}\n\t\t\t\t} else if p.Type == \"bool\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tvar _p%d uint32\\n\", n)\n\t\t\t\t\ttext += fmt.Sprintf(\"\\tif %s {\\n\\t\\t_p%d = 1\\n\\t} else {\\n\\t\\t_p%d = 0\\n\\t}\\n\", p.Name, n, n)\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(_p%d)\", n))\n\t\t\t\t\tn++\n\t\t\t\t} else {\n\t\t\t\t\targs = append(args, fmt.Sprintf(\"uintptr(%s)\", p.Name))\n\t\t\t\t}\n\t\t\t}\n\t\t\tnargs := len(args)\n\n\t\t\t// Determine which form to use; pad args with zeros.\n\t\t\tasm := \"sysvicall6\"\n\t\t\tif nonblock != nil {\n\t\t\t\tasm = \"rawSysvicall6\"\n\t\t\t}\n\t\t\tif len(args) <= 6 {\n\t\t\t\tfor len(args) < 6 {\n\t\t\t\t\targs = append(args, \"0\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(os.Stderr, \"%s: too many arguments to system call\\n\", path)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\n\t\t\t// Actual call.\n\t\t\targlist := strings.Join(args, \", \")\n\t\t\tcall := fmt.Sprintf(\"%s(uintptr(unsafe.Pointer(&%s)), %d, %s)\", asm, sysvarname, nargs, arglist)\n\n\t\t\t// Assign return values.\n\t\t\tbody := \"\"\n\t\t\tret := []string{\"_\", \"_\", \"_\"}\n\t\t\tdoErrno := false\n\t\t\tfor i := 0; i < len(out); i++ {\n\t\t\t\tp := parseParam(out[i])\n\t\t\t\treg := \"\"\n\t\t\t\tif p.Name == \"err\" {\n\t\t\t\t\treg = \"e1\"\n\t\t\t\t\tret[2] = reg\n\t\t\t\t\tdoErrno = true\n\t\t\t\t} else {\n\t\t\t\t\treg = fmt.Sprintf(\"r%d\", i)\n\t\t\t\t\tret[i] = reg\n\t\t\t\t}\n\t\t\t\tif p.Type == \"bool\" {\n\t\t\t\t\treg = fmt.Sprintf(\"%d != 0\", reg)\n\t\t\t\t}\n\t\t\t\tif p.Type == \"int64\" && endianness != \"\" {\n\t\t\t\t\t// 64-bit number in r1:r0 or r0:r1.\n\t\t\t\t\tif i+2 > len(out) {\n\t\t\t\t\t\tfmt.Fprintf(os.Stderr, \"%s: not enough registers for int64 return\\n\", path)\n\t\t\t\t\t\tos.Exit(1)\n\t\t\t\t\t}\n\t\t\t\t\tif endianness == \"big-endian\" {\n\t\t\t\t\t\treg = fmt.Sprintf(\"int64(r%d)<<32 | int64(r%d)\", i, i+1)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = fmt.Sprintf(\"int64(r%d)<<32 | int64(r%d)\", i+1, i)\n\t\t\t\t\t}\n\t\t\t\t\tret[i] = fmt.Sprintf(\"r%d\", i)\n\t\t\t\t\tret[i+1] = fmt.Sprintf(\"r%d\", i+1)\n\t\t\t\t}\n\t\t\t\tif reg != \"e1\" {\n\t\t\t\t\tbody += fmt.Sprintf(\"\\t%s = %s(%s)\\n\", p.Name, p.Type, reg)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ret[0] == \"_\" && ret[1] == \"_\" && ret[2] == \"_\" {\n\t\t\t\ttext += fmt.Sprintf(\"\\t%s\\n\", call)\n\t\t\t} else {\n\t\t\t\ttext += fmt.Sprintf(\"\\t%s, %s, %s := %s\\n\", ret[0], ret[1], ret[2], call)\n\t\t\t}\n\t\t\ttext += body\n\n\t\t\tif doErrno {\n\t\t\t\ttext += \"\\tif e1 != 0 {\\n\"\n\t\t\t\ttext += \"\\t\\terr = e1\\n\"\n\t\t\t\ttext += \"\\t}\\n\"\n\t\t\t}\n\t\t\ttext += \"\\treturn\\n\"\n\t\t\ttext += \"}\\n\"\n\t\t}\n\t\tif err := s.Err(); err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfile.Close()\n\t}\n\timp := \"\"\n\tif pack != \"unix\" {\n\t\timp = \"import \\\"golang.org/x/sys/unix\\\"\\n\"\n\t}\n\n\tsyscallimp := \"\"\n\tif !*illumos {\n\t\tsyscallimp = \"\\\"syscall\\\"\"\n\t}\n\n\tvardecls := \"\\t\" + strings.Join(vars, \",\\n\\t\")\n\tvardecls += \" syscallFunc\"\n\tfmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, syscallimp, imp, dynimports, linknames, vardecls, text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n\npackage %s\n\nimport (\n        \"unsafe\"\n        %s\n)\n%s\n%s\n%s\nvar (\n%s\t\n)\n\n%s\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksysctl_openbsd.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// +build ignore\n\n// Parse the header files for OpenBSD and generate a Go usable sysctl MIB.\n//\n// Build a MIB with each entry being an array containing the level, type and\n// a hash that will contain additional entries if the current entry is a node.\n// We then walk this MIB and create a flattened sysctl name to OID hash.\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n)\n\nvar (\n\tgoos, goarch string\n)\n\n// cmdLine returns this programs's commandline arguments.\nfunc cmdLine() string {\n\treturn \"go run mksysctl_openbsd.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags.\nfunc buildTags() string {\n\treturn fmt.Sprintf(\"%s,%s\", goarch, goos)\n}\n\n// reMatch performs regular expression match and stores the substring slice to value pointed by m.\nfunc reMatch(re *regexp.Regexp, str string, m *[]string) bool {\n\t*m = re.FindStringSubmatch(str)\n\tif *m != nil {\n\t\treturn true\n\t}\n\treturn false\n}\n\ntype nodeElement struct {\n\tn  int\n\tt  string\n\tpE *map[string]nodeElement\n}\n\nvar (\n\tdebugEnabled bool\n\tmib          map[string]nodeElement\n\tnode         *map[string]nodeElement\n\tnodeMap      map[string]string\n\tsysCtl       []string\n)\n\nvar (\n\tctlNames1RE = regexp.MustCompile(`^#define\\s+(CTL_NAMES)\\s+{`)\n\tctlNames2RE = regexp.MustCompile(`^#define\\s+(CTL_(.*)_NAMES)\\s+{`)\n\tctlNames3RE = regexp.MustCompile(`^#define\\s+((.*)CTL_NAMES)\\s+{`)\n\tnetInetRE   = regexp.MustCompile(`^netinet/`)\n\tnetInet6RE  = regexp.MustCompile(`^netinet6/`)\n\tnetRE       = regexp.MustCompile(`^net/`)\n\tbracesRE    = regexp.MustCompile(`{.*}`)\n\tctlTypeRE   = regexp.MustCompile(`{\\s+\"(\\w+)\",\\s+(CTLTYPE_[A-Z]+)\\s+}`)\n\tfsNetKernRE = regexp.MustCompile(`^(fs|net|kern)_`)\n)\n\nfunc debug(s string) {\n\tif debugEnabled {\n\t\tfmt.Fprintln(os.Stderr, s)\n\t}\n}\n\n// Walk the MIB and build a sysctl name to OID mapping.\nfunc buildSysctl(pNode *map[string]nodeElement, name string, oid []int) {\n\tlNode := pNode // local copy of pointer to node\n\tvar keys []string\n\tfor k := range *lNode {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\n\tfor _, key := range keys {\n\t\tnodename := name\n\t\tif name != \"\" {\n\t\t\tnodename += \".\"\n\t\t}\n\t\tnodename += key\n\n\t\tnodeoid := append(oid, (*pNode)[key].n)\n\n\t\tif (*pNode)[key].t == `CTLTYPE_NODE` {\n\t\t\tif _, ok := nodeMap[nodename]; ok {\n\t\t\t\tlNode = &mib\n\t\t\t\tctlName := nodeMap[nodename]\n\t\t\t\tfor _, part := range strings.Split(ctlName, \".\") {\n\t\t\t\t\tlNode = ((*lNode)[part]).pE\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlNode = (*pNode)[key].pE\n\t\t\t}\n\t\t\tbuildSysctl(lNode, nodename, nodeoid)\n\t\t} else if (*pNode)[key].t != \"\" {\n\t\t\toidStr := []string{}\n\t\t\tfor j := range nodeoid {\n\t\t\t\toidStr = append(oidStr, fmt.Sprintf(\"%d\", nodeoid[j]))\n\t\t\t}\n\t\t\ttext := \"\\t{ \\\"\" + nodename + \"\\\", []_C_int{ \" + strings.Join(oidStr, \", \") + \" } }, \\n\"\n\t\t\tsysCtl = append(sysCtl, text)\n\t\t}\n\t}\n}\n\nfunc main() {\n\t// Get the OS (using GOOS_TARGET if it exist)\n\tgoos = os.Getenv(\"GOOS_TARGET\")\n\tif goos == \"\" {\n\t\tgoos = os.Getenv(\"GOOS\")\n\t}\n\t// Get the architecture (using GOARCH_TARGET if it exists)\n\tgoarch = os.Getenv(\"GOARCH_TARGET\")\n\tif goarch == \"\" {\n\t\tgoarch = os.Getenv(\"GOARCH\")\n\t}\n\t// Check if GOOS and GOARCH environment variables are defined\n\tif goarch == \"\" || goos == \"\" {\n\t\tfmt.Fprintf(os.Stderr, \"GOARCH or GOOS not defined in environment\\n\")\n\t\tos.Exit(1)\n\t}\n\n\tmib = make(map[string]nodeElement)\n\theaders := [...]string{\n\t\t`sys/sysctl.h`,\n\t\t`sys/socket.h`,\n\t\t`sys/tty.h`,\n\t\t`sys/malloc.h`,\n\t\t`sys/mount.h`,\n\t\t`sys/namei.h`,\n\t\t`sys/sem.h`,\n\t\t`sys/shm.h`,\n\t\t`sys/vmmeter.h`,\n\t\t`uvm/uvmexp.h`,\n\t\t`uvm/uvm_param.h`,\n\t\t`uvm/uvm_swap_encrypt.h`,\n\t\t`ddb/db_var.h`,\n\t\t`net/if.h`,\n\t\t`net/if_pfsync.h`,\n\t\t`net/pipex.h`,\n\t\t`netinet/in.h`,\n\t\t`netinet/icmp_var.h`,\n\t\t`netinet/igmp_var.h`,\n\t\t`netinet/ip_ah.h`,\n\t\t`netinet/ip_carp.h`,\n\t\t`netinet/ip_divert.h`,\n\t\t`netinet/ip_esp.h`,\n\t\t`netinet/ip_ether.h`,\n\t\t`netinet/ip_gre.h`,\n\t\t`netinet/ip_ipcomp.h`,\n\t\t`netinet/ip_ipip.h`,\n\t\t`netinet/pim_var.h`,\n\t\t`netinet/tcp_var.h`,\n\t\t`netinet/udp_var.h`,\n\t\t`netinet6/in6.h`,\n\t\t`netinet6/ip6_divert.h`,\n\t\t`netinet6/pim6_var.h`,\n\t\t`netinet/icmp6.h`,\n\t\t`netmpls/mpls.h`,\n\t}\n\n\tctls := [...]string{\n\t\t`kern`,\n\t\t`vm`,\n\t\t`fs`,\n\t\t`net`,\n\t\t//debug\t\t\t/* Special handling required */\n\t\t`hw`,\n\t\t//machdep\t\t/* Arch specific */\n\t\t`user`,\n\t\t`ddb`,\n\t\t//vfs\t\t\t/* Special handling required */\n\t\t`fs.posix`,\n\t\t`kern.forkstat`,\n\t\t`kern.intrcnt`,\n\t\t`kern.malloc`,\n\t\t`kern.nchstats`,\n\t\t`kern.seminfo`,\n\t\t`kern.shminfo`,\n\t\t`kern.timecounter`,\n\t\t`kern.tty`,\n\t\t`kern.watchdog`,\n\t\t`net.bpf`,\n\t\t`net.ifq`,\n\t\t`net.inet`,\n\t\t`net.inet.ah`,\n\t\t`net.inet.carp`,\n\t\t`net.inet.divert`,\n\t\t`net.inet.esp`,\n\t\t`net.inet.etherip`,\n\t\t`net.inet.gre`,\n\t\t`net.inet.icmp`,\n\t\t`net.inet.igmp`,\n\t\t`net.inet.ip`,\n\t\t`net.inet.ip.ifq`,\n\t\t`net.inet.ipcomp`,\n\t\t`net.inet.ipip`,\n\t\t`net.inet.mobileip`,\n\t\t`net.inet.pfsync`,\n\t\t`net.inet.pim`,\n\t\t`net.inet.tcp`,\n\t\t`net.inet.udp`,\n\t\t`net.inet6`,\n\t\t`net.inet6.divert`,\n\t\t`net.inet6.ip6`,\n\t\t`net.inet6.icmp6`,\n\t\t`net.inet6.pim6`,\n\t\t`net.inet6.tcp6`,\n\t\t`net.inet6.udp6`,\n\t\t`net.mpls`,\n\t\t`net.mpls.ifq`,\n\t\t`net.key`,\n\t\t`net.pflow`,\n\t\t`net.pfsync`,\n\t\t`net.pipex`,\n\t\t`net.rt`,\n\t\t`vm.swapencrypt`,\n\t\t//vfsgenctl\t\t/* Special handling required */\n\t}\n\n\t// Node name \"fixups\"\n\tctlMap := map[string]string{\n\t\t\"ipproto\":             \"net.inet\",\n\t\t\"net.inet.ipproto\":    \"net.inet\",\n\t\t\"net.inet6.ipv6proto\": \"net.inet6\",\n\t\t\"net.inet6.ipv6\":      \"net.inet6.ip6\",\n\t\t\"net.inet.icmpv6\":     \"net.inet6.icmp6\",\n\t\t\"net.inet6.divert6\":   \"net.inet6.divert\",\n\t\t\"net.inet6.tcp6\":      \"net.inet.tcp\",\n\t\t\"net.inet6.udp6\":      \"net.inet.udp\",\n\t\t\"mpls\":                \"net.mpls\",\n\t\t\"swpenc\":              \"vm.swapencrypt\",\n\t}\n\n\t// Node mappings\n\tnodeMap = map[string]string{\n\t\t\"net.inet.ip.ifq\": \"net.ifq\",\n\t\t\"net.inet.pfsync\": \"net.pfsync\",\n\t\t\"net.mpls.ifq\":    \"net.ifq\",\n\t}\n\n\tmCtls := make(map[string]bool)\n\tfor _, ctl := range ctls {\n\t\tmCtls[ctl] = true\n\t}\n\n\tfor _, header := range headers {\n\t\tdebug(\"Processing \" + header)\n\t\tfile, err := os.Open(filepath.Join(\"/usr/include\", header))\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\ts := bufio.NewScanner(file)\n\t\tfor s.Scan() {\n\t\t\tvar sub []string\n\t\t\tif reMatch(ctlNames1RE, s.Text(), &sub) ||\n\t\t\t\treMatch(ctlNames2RE, s.Text(), &sub) ||\n\t\t\t\treMatch(ctlNames3RE, s.Text(), &sub) {\n\t\t\t\tif sub[1] == `CTL_NAMES` {\n\t\t\t\t\t// Top level.\n\t\t\t\t\tnode = &mib\n\t\t\t\t} else {\n\t\t\t\t\t// Node.\n\t\t\t\t\tnodename := strings.ToLower(sub[2])\n\t\t\t\t\tctlName := \"\"\n\t\t\t\t\tif reMatch(netInetRE, header, &sub) {\n\t\t\t\t\t\tctlName = \"net.inet.\" + nodename\n\t\t\t\t\t} else if reMatch(netInet6RE, header, &sub) {\n\t\t\t\t\t\tctlName = \"net.inet6.\" + nodename\n\t\t\t\t\t} else if reMatch(netRE, header, &sub) {\n\t\t\t\t\t\tctlName = \"net.\" + nodename\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctlName = nodename\n\t\t\t\t\t\tctlName = fsNetKernRE.ReplaceAllString(ctlName, `$1.`)\n\t\t\t\t\t}\n\n\t\t\t\t\tif val, ok := ctlMap[ctlName]; ok {\n\t\t\t\t\t\tctlName = val\n\t\t\t\t\t}\n\t\t\t\t\tif _, ok := mCtls[ctlName]; !ok {\n\t\t\t\t\t\tdebug(\"Ignoring \" + ctlName + \"...\")\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\t// Walk down from the top of the MIB.\n\t\t\t\t\tnode = &mib\n\t\t\t\t\tfor _, part := range strings.Split(ctlName, \".\") {\n\t\t\t\t\t\tif _, ok := (*node)[part]; !ok {\n\t\t\t\t\t\t\tdebug(\"Missing node \" + part)\n\t\t\t\t\t\t\t(*node)[part] = nodeElement{n: 0, t: \"\", pE: &map[string]nodeElement{}}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode = (*node)[part].pE\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Populate current node with entries.\n\t\t\t\ti := -1\n\t\t\t\tfor !strings.HasPrefix(s.Text(), \"}\") {\n\t\t\t\t\ts.Scan()\n\t\t\t\t\tif reMatch(bracesRE, s.Text(), &sub) {\n\t\t\t\t\t\ti++\n\t\t\t\t\t}\n\t\t\t\t\tif !reMatch(ctlTypeRE, s.Text(), &sub) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\t(*node)[sub[1]] = nodeElement{n: i, t: sub[2], pE: &map[string]nodeElement{}}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\terr = s.Err()\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfile.Close()\n\t}\n\tbuildSysctl(&mib, \"\", []int{})\n\n\tsort.Strings(sysCtl)\n\ttext := strings.Join(sysCtl, \"\")\n\n\tfmt.Printf(srcTemplate, cmdLine(), buildTags(), text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; DO NOT EDIT.\n\n// +build %s\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid []_C_int\n}\n\nvar sysctlMib = []mibentry {\n%s\n}\n`\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/mksysnum.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// +build ignore\n\n// Generate system call table for DragonFly, NetBSD,\n// FreeBSD, OpenBSD or Darwin from master list\n// (for example, /usr/src/sys/kern/syscalls.master or\n// sys/syscall.h).\npackage main\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"os\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tgoos, goarch string\n)\n\n// cmdLine returns this programs's commandline arguments\nfunc cmdLine() string {\n\treturn \"go run mksysnum.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// buildTags returns build tags\nfunc buildTags() string {\n\treturn fmt.Sprintf(\"%s,%s\", goarch, goos)\n}\n\nfunc checkErr(err error) {\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n\n// source string and substring slice for regexp\ntype re struct {\n\tstr string   // source string\n\tsub []string // matched sub-string\n}\n\n// Match performs regular expression match\nfunc (r *re) Match(exp string) bool {\n\tr.sub = regexp.MustCompile(exp).FindStringSubmatch(r.str)\n\tif r.sub != nil {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// fetchFile fetches a text file from URL\nfunc fetchFile(URL string) io.Reader {\n\tresp, err := http.Get(URL)\n\tcheckErr(err)\n\tdefer resp.Body.Close()\n\tbody, err := ioutil.ReadAll(resp.Body)\n\tcheckErr(err)\n\treturn strings.NewReader(string(body))\n}\n\n// readFile reads a text file from path\nfunc readFile(path string) io.Reader {\n\tfile, err := os.Open(os.Args[1])\n\tcheckErr(err)\n\treturn file\n}\n\nfunc format(name, num, proto string) string {\n\tname = strings.ToUpper(name)\n\t// There are multiple entries for enosys and nosys, so comment them out.\n\tnm := re{str: name}\n\tif nm.Match(`^SYS_E?NOSYS$`) {\n\t\tname = fmt.Sprintf(\"// %s\", name)\n\t}\n\tif name == `SYS_SYS_EXIT` {\n\t\tname = `SYS_EXIT`\n\t}\n\treturn fmt.Sprintf(\"\t%s = %s;  // %s\\n\", name, num, proto)\n}\n\nfunc main() {\n\t// Get the OS (using GOOS_TARGET if it exist)\n\tgoos = os.Getenv(\"GOOS_TARGET\")\n\tif goos == \"\" {\n\t\tgoos = os.Getenv(\"GOOS\")\n\t}\n\t// Get the architecture (using GOARCH_TARGET if it exists)\n\tgoarch = os.Getenv(\"GOARCH_TARGET\")\n\tif goarch == \"\" {\n\t\tgoarch = os.Getenv(\"GOARCH\")\n\t}\n\t// Check if GOOS and GOARCH environment variables are defined\n\tif goarch == \"\" || goos == \"\" {\n\t\tfmt.Fprintf(os.Stderr, \"GOARCH or GOOS not defined in environment\\n\")\n\t\tos.Exit(1)\n\t}\n\n\tfile := strings.TrimSpace(os.Args[1])\n\tvar syscalls io.Reader\n\tif strings.HasPrefix(file, \"https://\") || strings.HasPrefix(file, \"http://\") {\n\t\t// Download syscalls.master file\n\t\tsyscalls = fetchFile(file)\n\t} else {\n\t\tsyscalls = readFile(file)\n\t}\n\n\tvar text, line string\n\ts := bufio.NewScanner(syscalls)\n\tfor s.Scan() {\n\t\tt := re{str: line}\n\t\tif t.Match(`^(.*)\\\\$`) {\n\t\t\t// Handle continuation\n\t\t\tline = t.sub[1]\n\t\t\tline += strings.TrimLeft(s.Text(), \" \\t\")\n\t\t} else {\n\t\t\t// New line\n\t\t\tline = s.Text()\n\t\t}\n\t\tt = re{str: line}\n\t\tif t.Match(`\\\\$`) {\n\t\t\tcontinue\n\t\t}\n\t\tt = re{str: line}\n\n\t\tswitch goos {\n\t\tcase \"dragonfly\":\n\t\t\tif t.Match(`^([0-9]+)\\s+STD\\s+({ \\S+\\s+(\\w+).*)$`) {\n\t\t\t\tnum, proto := t.sub[1], t.sub[2]\n\t\t\t\tname := fmt.Sprintf(\"SYS_%s\", t.sub[3])\n\t\t\t\ttext += format(name, num, proto)\n\t\t\t}\n\t\tcase \"freebsd\":\n\t\t\tif t.Match(`^([0-9]+)\\s+\\S+\\s+(?:(?:NO)?STD|COMPAT10)\\s+({ \\S+\\s+(\\w+).*)$`) {\n\t\t\t\tnum, proto := t.sub[1], t.sub[2]\n\t\t\t\tname := fmt.Sprintf(\"SYS_%s\", t.sub[3])\n\t\t\t\ttext += format(name, num, proto)\n\t\t\t}\n\t\tcase \"openbsd\":\n\t\t\tif t.Match(`^([0-9]+)\\s+STD\\s+(NOLOCK\\s+)?({ \\S+\\s+\\*?(\\w+).*)$`) {\n\t\t\t\tnum, proto, name := t.sub[1], t.sub[3], t.sub[4]\n\t\t\t\ttext += format(name, num, proto)\n\t\t\t}\n\t\tcase \"netbsd\":\n\t\t\tif t.Match(`^([0-9]+)\\s+((STD)|(NOERR))\\s+(RUMP\\s+)?({\\s+\\S+\\s*\\*?\\s*\\|(\\S+)\\|(\\S*)\\|(\\w+).*\\s+})(\\s+(\\S+))?$`) {\n\t\t\t\tnum, proto, compat := t.sub[1], t.sub[6], t.sub[8]\n\t\t\t\tname := t.sub[7] + \"_\" + t.sub[9]\n\t\t\t\tif t.sub[11] != \"\" {\n\t\t\t\t\tname = t.sub[7] + \"_\" + t.sub[11]\n\t\t\t\t}\n\t\t\t\tname = strings.ToUpper(name)\n\t\t\t\tif compat == \"\" || compat == \"13\" || compat == \"30\" || compat == \"50\" {\n\t\t\t\t\ttext += fmt.Sprintf(\"\t%s = %s;  // %s\\n\", name, num, proto)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"darwin\":\n\t\t\tif t.Match(`^#define\\s+SYS_(\\w+)\\s+([0-9]+)`) {\n\t\t\t\tname, num := t.sub[1], t.sub[2]\n\t\t\t\tname = strings.ToUpper(name)\n\t\t\t\ttext += fmt.Sprintf(\"\tSYS_%s = %s;\\n\", name, num)\n\t\t\t}\n\t\tdefault:\n\t\t\tfmt.Fprintf(os.Stderr, \"unrecognized GOOS=%s\\n\", goos)\n\t\t\tos.Exit(1)\n\n\t\t}\n\t}\n\terr := s.Err()\n\tcheckErr(err)\n\n\tfmt.Printf(template, cmdLine(), buildTags(), text)\n}\n\nconst template = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build %s\n\npackage unix\n\nconst(\n%s)`\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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// The pledge syscall does not accept execpromises on OpenBSD releases\n// before 6.3.\n//\n// execpromises must be empty when Pledge is called on OpenBSD\n// releases predating 6.3, otherwise an error will be returned.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := syscall.BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable will hold either a nil unsafe.Pointer or\n\t// an unsafe.Pointer to a string (execpromises).\n\tvar expr unsafe.Pointer\n\n\t// If we're running on OpenBSD > 6.2, pass execpromises to the syscall.\n\tif maj > 6 || (maj == 6 && min > 2) {\n\t\texptr, err := syscall.BytePtrFromString(execpromises)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texpr = unsafe.Pointer(exptr)\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn nil\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\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, \"\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable holds the execpromises and is always nil.\n\tvar expr unsafe.Pointer\n\n\tpptr, err := syscall.BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn 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\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pledgeAvailable(maj, min, execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// This variable holds the promises and is always nil.\n\tvar pptr unsafe.Pointer\n\n\texptr, err := syscall.BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\n\treturn nil\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(maj, min int, execpromises string) error {\n\t// If OpenBSD <= 5.9, pledge is not available.\n\tif (maj == 5 && min != 9) || maj < 5 {\n\t\treturn fmt.Errorf(\"pledge syscall is not available on OpenBSD %d.%d\", maj, min)\n\t}\n\n\t// If OpenBSD <= 6.2 and execpromises is not empty,\n\t// return an error - execpromises is not available before 6.3\n\tif (maj < 6 || (maj == 6 && min <= 2)) && execpromises != \"\" {\n\t\treturn fmt.Errorf(\"cannot use execpromises on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\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// +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// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly\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// +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// +build darwin\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"
  },
  {
    "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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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\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// +build aix darwin freebsd linux netbsd openbsd solaris\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\", \"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}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + uitoa(uint(-val))\n\t}\n\treturn uitoa(uint(val))\n}\n\nfunc uitoa(val uint) string {\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/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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\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 \"strings\"\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// 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// +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\n//sys\tutimes(path string, times *[2]Timeval) (err error)\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)\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\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), 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\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), 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] == '@' {\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 Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\t// Recvmsg not implemented on AIX\n\tsa := new(SockaddrUnix)\n\treturn -1, -1, -1, sa, ENOSYS\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\t// SendmsgN not implemented on AIX\n\treturn -1, ENOSYS\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\n\t\tbytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\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 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)\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)\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 processus 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 uint, arg uintptr) (err error)\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/*\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//sys\tFsync(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   Open(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys   Openat(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   Unlink(path string) (err error)\n//sys   Unlinkat(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//sys\treadlen(fd int, p *byte, np int) (n int, err error) = read\n//sys\twritelen(fd int, p *byte, np int) (n int, err error) = write\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\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\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\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 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\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)\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// +build aix\n// +build ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sysnb\tSetrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64\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// +build aix\n// +build ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetrlimit(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// +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\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\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 (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\tfor i := 0; i < len(sa.raw.Data); i++ {\n\t\tsa.raw.Data[i] = sa.Data[i]\n\t}\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\tfor i := 0; i < len(sa.Data); i++ {\n\t\t\tsa.Data[i] = pp.Data[i]\n\t\t}\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\tbytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\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\tif runtime.GOOS == \"darwin\" && 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 socketpair(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 string(buf[:vallen-1]), nil\n}\n\n//sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys   sendto(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 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 = uint32(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\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\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\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 = uint32(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\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\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\t// Darwin setattrlist can set nanosecond timestamps\n\terr := setattrlistTimes(path, ts, 0)\n\tif err != ENOSYS {\n\t\treturn err\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\terr := setattrlistTimes(path, ts, flags)\n\tif err != ENOSYS {\n\t\treturn err\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   poll(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\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\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\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.1_12.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// +build darwin,go1.12,!go1.13\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// To implement this using libSystem we'd need syscall_syscallPtr for\n\t// fdopendir. However, syscallPtr was only added in Go 1.13, so we fall\n\t// back to raw syscalls for this func on Go 1.12.\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\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\treturn n, errnoErr(e1)\n\t}\n\treturn n, nil\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin.1_13.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// +build darwin,go1.13\n\npackage unix\n\nimport (\n\t\"unsafe\"\n\n\t\"golang.org/x/sys/internal/unsafeheader\"\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(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fdopendir_trampoline()\n\n//go:linkname libc_fdopendir libc_fdopendir\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\tvar s []byte\n\t\thdr := (*unsafeheader.Slice)(unsafe.Pointer(&s))\n\t\thdr.Data = unsafe.Pointer(&entry)\n\t\thdr.Cap = reclen\n\t\thdr.Len = 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"
  },
  {
    "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\"errors\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tbuf := make([]byte, 2048)\n\tattrs, err := getAttrList(\".\", attrList{CommonAttr: attrCmnFullpath}, buf, 0)\n\tif err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {\n\t\twd := string(attrs[0])\n\t\t// Sanity check that it's an absolute path and ends\n\t\t// in a null byte, which we then strip.\n\t\tif wd[0] == '/' && wd[len(wd)-1] == 0 {\n\t\t\treturn wd[:len(wd)-1], nil\n\t\t}\n\t}\n\t// If pkg/os/getwd.go gets ENOTSUP, it will fall back to the\n\t// slow algorithm.\n\treturn \"\", ENOTSUP\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// 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) }\n\nconst (\n\tattrBitMapCount = 5\n\tattrCmnFullpath = 0x08000000\n)\n\ntype attrList struct {\n\tbitmapCount uint16\n\t_           uint16\n\tCommonAttr  uint32\n\tVolAttr     uint32\n\tDirAttr     uint32\n\tFileAttr    uint32\n\tForkattr    uint32\n}\n\nfunc getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {\n\tif len(attrBuf) < 4 {\n\t\treturn nil, errors.New(\"attrBuf too small\")\n\t}\n\tattrList.bitmapCount = attrBitMapCount\n\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil {\n\t\treturn nil, err\n\t}\n\tsize := *(*uint32)(unsafe.Pointer(&attrBuf[0]))\n\n\t// dat is the section of attrBuf that contains valid data,\n\t// without the 4 byte length header. All attribute offsets\n\t// are relative to dat.\n\tdat := attrBuf\n\tif int(size) < len(attrBuf) {\n\t\tdat = dat[:size]\n\t}\n\tdat = dat[4:] // remove length prefix\n\n\tfor i := uint32(0); int(i) < len(dat); {\n\t\theader := dat[i:]\n\t\tif len(header) < 8 {\n\t\t\treturn attrs, errors.New(\"truncated attribute header\")\n\t\t}\n\t\tdatOff := *(*int32)(unsafe.Pointer(&header[0]))\n\t\tattrLen := *(*uint32)(unsafe.Pointer(&header[4]))\n\t\tif datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {\n\t\t\treturn attrs, errors.New(\"truncated results; attrBuf too small\")\n\t\t}\n\t\tend := uint32(datOff) + attrLen\n\t\tattrs = append(attrs, dat[datOff:end])\n\t\ti = end\n\t\tif r := i % 4; r != 0 {\n\t\t\ti += (4 - r)\n\t\t}\n\t}\n\treturn\n}\n\n//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)\n\n//sysnb pipe() (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\tp[0], p[1], err = pipe()\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\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t_p0, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar attrList attrList\n\tattrList.bitmapCount = ATTR_BIT_MAP_COUNT\n\tattrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME\n\n\t// order is mtime, atime: the opposite of Chtimes\n\tattributes := [2]Timespec{times[1], times[0]}\n\toptions := 0\n\tif flags&AT_SYMLINK_NOFOLLOW != 0 {\n\t\toptions |= FSOPT_NOFOLLOW\n\t}\n\treturn setattrlist(\n\t\t_p0,\n\t\tunsafe.Pointer(&attrList),\n\t\tunsafe.Pointer(&attributes),\n\t\tunsafe.Sizeof(attributes),\n\t\toptions)\n}\n\n//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {\n\t// Darwin doesn't support SYS_UTIMENSAT\n\treturn ENOSYS\n}\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\n//sys   sysctl(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\n//sys\tsendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags 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\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\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\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\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\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\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\tSetrlimit(which int, lim *Rlimit) (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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n\n/*\n * Unimplemented\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Ioctl\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// sendfile\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Poll_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.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// +build darwin,386,!go1.12\n\npackage unix\n\n//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_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// +build 386,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n)\n\n//sys   ptrace(request int, pid int, addr uintptr, data 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\n//sysnb\tgettimeofday(tp *Timeval) (sec int32, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = int32(sec)\n\ttv.Usec = int32(usec)\n\treturn err\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 Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\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\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_amd64.1_11.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// +build darwin,amd64,!go1.12\n\npackage unix\n\n//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64\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// +build amd64,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n)\n\n//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (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\n//sysnb\tgettimeofday(tp *Timeval) (sec int64, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = sec\n\ttv.Usec = usec\n\treturn err\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___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\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\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_arm.1_11.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// +build darwin,arm,!go1.12\n\npackage unix\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\treturn 0, ENOSYS\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_darwin_arm.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 unix\n\nimport (\n\t\"syscall\"\n)\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ENOTSUP\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//sysnb\tgettimeofday(tp *Timeval) (sec int32, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = int32(sec)\n\ttv.Usec = int32(usec)\n\treturn err\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 Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\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\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_arm64.1_11.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// +build darwin,arm64,!go1.12\n\npackage unix\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\treturn 0, ENOSYS\n}\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// +build arm64,darwin\n\npackage unix\n\nimport (\n\t\"syscall\"\n)\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ENOTSUP\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: int32(usec)}\n}\n\n//sysnb\tgettimeofday(tp *Timeval) (sec int64, usec int32, err error)\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t// The tv passed to gettimeofday must be non-nil\n\t// but is otherwise unused. The answers come back\n\t// in the two registers.\n\tsec, usec, err := gettimeofday(tv)\n\ttv.Sec = sec\n\ttv.Usec = usec\n\treturn err\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___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of darwin/arm64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\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\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// +build darwin,go1.12\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\n// Find the entry point for f. See comments in runtime/proc.go for the\n// function of the same name.\n//go:nosplit\nfunc funcPC(f func()) uintptr {\n\treturn **(**uintptr)(unsafe.Pointer(&f))\n}\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\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 pipe() (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\tp[0], p[1], err = pipe()\n\treturn\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\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)\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\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\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\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\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n//sys   sysctl(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\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\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\tSetrlimit(which int, lim *Rlimit) (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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\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\n/*\n * Unimplemented\n * TODO(jsing): Update this list for DragonFly.\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Getxattr\n// Fgetxattr\n// Setxattr\n// Fsetxattr\n// Removexattr\n// Fremovexattr\n// Listxattr\n// Flistxattr\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\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// +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\"sync\"\n\t\"unsafe\"\n)\n\nconst (\n\tSYS_FSTAT_FREEBSD12         = 551 // { int fstat(int fd, _Out_ struct stat *sb); }\n\tSYS_FSTATAT_FREEBSD12       = 552 // { int fstatat(int fd, _In_z_ char *path, \\\n\tSYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \\\n\tSYS_STATFS_FREEBSD12        = 555 // { int statfs(_In_z_ char *path, \\\n\tSYS_FSTATFS_FREEBSD12       = 556 // { int fstatfs(int fd, \\\n\tSYS_GETFSSTAT_FREEBSD12     = 557 // { int getfsstat( \\\n\tSYS_MKNODAT_FREEBSD12       = 559 // { int mknodat(int fd, _In_z_ char *path, \\\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\n// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h\nconst _ino64First = 1200031\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\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\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\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\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\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\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\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\toldBuf       []statfs_freebsd11_t\n\t\tneedsConvert bool\n\t)\n\n\tif len(buf) > 0 {\n\t\tif supportsABI(_ino64First) {\n\t\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t\t} else {\n\t\t\tn := len(buf)\n\t\t\toldBuf = make([]statfs_freebsd11_t, n)\n\t\t\t_p0 = unsafe.Pointer(&oldBuf[0])\n\t\t\tbufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n)\n\t\t\tneedsConvert = true\n\t\t}\n\t}\n\tvar sysno uintptr = SYS_GETFSSTAT\n\tif supportsABI(_ino64First) {\n\t\tsysno = SYS_GETFSSTAT_FREEBSD12\n\t}\n\tr0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\tif e1 == 0 && needsConvert {\n\t\tfor i := range oldBuf {\n\t\t\tbuf[i].convertFrom(&oldBuf[i])\n\t\t}\n\t}\n\treturn\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys   ioctl(fd int, req uint, arg uintptr) (err error)\n\n//sys   sysctl(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 Stat(path string, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(AT_FDCWD, path, st, 0)\n\t}\n\terr = stat(path, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n\t}\n\terr = lstat(path, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Fstat(fd int, st *Stat_t) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstat_freebsd12(fd, st)\n\t}\n\terr = fstat(fd, &oldStat)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Fstatat(fd int, path string, st *Stat_t, flags int) (err error) {\n\tvar oldStat stat_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatat_freebsd12(fd, path, st, flags)\n\t}\n\terr = fstatat(fd, path, &oldStat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStat)\n\treturn nil\n}\n\nfunc Statfs(path string, st *Statfs_t) (err error) {\n\tvar oldStatfs statfs_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn statfs_freebsd12(path, st)\n\t}\n\terr = statfs(path, &oldStatfs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStatfs)\n\treturn nil\n}\n\nfunc Fstatfs(fd int, st *Statfs_t) (err error) {\n\tvar oldStatfs statfs_freebsd11_t\n\tif supportsABI(_ino64First) {\n\t\treturn fstatfs_freebsd12(fd, st)\n\t}\n\terr = fstatfs(fd, &oldStatfs)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tst.convertFrom(&oldStatfs)\n\treturn nil\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 supportsABI(_ino64First) {\n\t\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\t\treturn getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t\t}\n\t\t// The freebsd12 syscall needs a 64-bit base. On 32-bit machines\n\t\t// we can't just use the basep passed in. See #32498.\n\t\tvar base uint64 = uint64(*basep)\n\t\tn, err = getdirentries_freebsd12(fd, buf, &base)\n\t\t*basep = uintptr(base)\n\t\tif base>>32 != 0 {\n\t\t\t// We can't stuff the base back into a uintptr, so any\n\t\t\t// future calls would be suspect. Generate an error.\n\t\t\t// EIO is allowed by getdirentries.\n\t\t\terr = EIO\n\t\t}\n\t\treturn\n\t}\n\n\t// The old syscall entries are smaller than the new. Use 1/4 of the original\n\t// buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c).\n\toldBufLen := roundup(len(buf)/4, _dirblksiz)\n\toldBuf := make([]byte, oldBufLen)\n\tn, err = getdirentries(fd, oldBuf, basep)\n\tif err == nil && n > 0 {\n\t\tn = convertFromDirents11(buf, oldBuf[:n])\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\tvar oldDev int\n\tif supportsABI(_ino64First) {\n\t\treturn mknodat_freebsd12(AT_FDCWD, path, mode, dev)\n\t}\n\toldDev = int(dev)\n\treturn mknod(path, mode, oldDev)\n}\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar oldDev int\n\tif supportsABI(_ino64First) {\n\t\treturn mknodat_freebsd12(fd, path, mode, dev)\n\t}\n\toldDev = int(dev)\n\treturn mknodat(fd, path, mode, oldDev)\n}\n\n// round x to the nearest multiple of y, larger or equal to x.\n//\n// from /usr/include/sys/param.h Macros for counting and rounding.\n// #define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))\nfunc roundup(x, y int) int {\n\treturn ((x + y - 1) / y) * y\n}\n\nfunc (s *Stat_t) convertFrom(old *stat_freebsd11_t) {\n\t*s = Stat_t{\n\t\tDev:     uint64(old.Dev),\n\t\tIno:     uint64(old.Ino),\n\t\tNlink:   uint64(old.Nlink),\n\t\tMode:    old.Mode,\n\t\tUid:     old.Uid,\n\t\tGid:     old.Gid,\n\t\tRdev:    uint64(old.Rdev),\n\t\tAtim:    old.Atim,\n\t\tMtim:    old.Mtim,\n\t\tCtim:    old.Ctim,\n\t\tBtim:    old.Btim,\n\t\tSize:    old.Size,\n\t\tBlocks:  old.Blocks,\n\t\tBlksize: old.Blksize,\n\t\tFlags:   old.Flags,\n\t\tGen:     uint64(old.Gen),\n\t}\n}\n\nfunc (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) {\n\t*s = Statfs_t{\n\t\tVersion:     _statfsVersion,\n\t\tType:        old.Type,\n\t\tFlags:       old.Flags,\n\t\tBsize:       old.Bsize,\n\t\tIosize:      old.Iosize,\n\t\tBlocks:      old.Blocks,\n\t\tBfree:       old.Bfree,\n\t\tBavail:      old.Bavail,\n\t\tFiles:       old.Files,\n\t\tFfree:       old.Ffree,\n\t\tSyncwrites:  old.Syncwrites,\n\t\tAsyncwrites: old.Asyncwrites,\n\t\tSyncreads:   old.Syncreads,\n\t\tAsyncreads:  old.Asyncreads,\n\t\t// Spare\n\t\tNamemax: old.Namemax,\n\t\tOwner:   old.Owner,\n\t\tFsid:    old.Fsid,\n\t\t// Charspare\n\t\t// Fstypename\n\t\t// Mntfromname\n\t\t// Mntonname\n\t}\n\n\tsl := old.Fstypename[:]\n\tn := clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Fstypename[:], old.Fstypename[:n])\n\n\tsl = old.Mntfromname[:]\n\tn = clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Mntfromname[:], old.Mntfromname[:n])\n\n\tsl = old.Mntonname[:]\n\tn = clen(*(*[]byte)(unsafe.Pointer(&sl)))\n\tcopy(s.Mntonname[:], old.Mntonname[:n])\n}\n\nfunc convertFromDirents11(buf []byte, old []byte) int {\n\tconst (\n\t\tfixedSize    = int(unsafe.Offsetof(Dirent{}.Name))\n\t\toldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name))\n\t)\n\n\tdstPos := 0\n\tsrcPos := 0\n\tfor dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {\n\t\tvar dstDirent Dirent\n\t\tvar srcDirent dirent_freebsd11\n\n\t\t// If multiple direntries are written, sometimes when we reach the final one,\n\t\t// we may have cap of old less than size of dirent_freebsd11.\n\t\tcopy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:])\n\n\t\treclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)\n\t\tif dstPos+reclen > len(buf) {\n\t\t\tbreak\n\t\t}\n\n\t\tdstDirent.Fileno = uint64(srcDirent.Fileno)\n\t\tdstDirent.Off = 0\n\t\tdstDirent.Reclen = uint16(reclen)\n\t\tdstDirent.Type = srcDirent.Type\n\t\tdstDirent.Pad0 = 0\n\t\tdstDirent.Namlen = uint16(srcDirent.Namlen)\n\t\tdstDirent.Pad1 = 0\n\n\t\tcopy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])\n\t\tcopy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:])\n\t\tpadding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]\n\t\tfor i := range padding {\n\t\t\tpadding[i] = 0\n\t\t}\n\n\t\tdstPos += int(dstDirent.Reclen)\n\t\tsrcPos += int(srcDirent.Reclen)\n\t}\n\n\treturn dstPos\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\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PTRACE_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PTRACE_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0)\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PTRACE_LWPEVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info uintptr) (err error) {\n\treturn ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{})))\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 ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PTRACE_SINGLESTEP, pid, 1, 0)\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\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_freebsd11_t) (err error)\n//sys\tfstat_freebsd12(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error)\n//sys\tfstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tfstatfs(fd int, stat *statfs_freebsd11_t) (err error)\n//sys\tfstatfs_freebsd12(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 *uintptr) (n int, err error)\n//sys\tgetdirentries_freebsd12(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\tlstat(path string, stat *stat_freebsd11_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\tmknodat_freebsd12(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\tSetrlimit(which int, lim *Rlimit) (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_freebsd11_t) (err error)\n//sys\tstatfs(path string, stat *statfs_freebsd11_t) (err error)\n//sys\tstatfs_freebsd12(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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys   munmap(addr uintptr, length uintptr) (err error)\n//sys\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\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\n/*\n * Unimplemented\n */\n// Profil\n// Sigaction\n// Sigprocmask\n// Getlogin\n// Sigpending\n// Sigaltstack\n// Ioctl\n// Reboot\n// Execve\n// Vfork\n// Sbrk\n// Sstk\n// Ovadvise\n// Mincore\n// Setitimer\n// Swapon\n// Select\n// Sigsuspend\n// Readv\n// Writev\n// Nfssvc\n// Getfh\n// Quotactl\n// Mount\n// Csops\n// Waitid\n// Add_profil\n// Kdebug_trace\n// Sigreturn\n// Atsocket\n// Kqueue_from_portset_np\n// Kqueue_portset\n// Getattrlist\n// Setattrlist\n// Getdents\n// Getdirentriesattr\n// Searchfs\n// Delete\n// Copyfile\n// Watchevent\n// Waitevent\n// Modwatch\n// Fsctl\n// Initgroups\n// Posix_spawn\n// Nfsclnt\n// Fhopen\n// Minherit\n// Semsys\n// Msgsys\n// Shmsys\n// Semctl\n// Semget\n// Semop\n// Msgctl\n// Msgget\n// Msgsnd\n// Msgrcv\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Shm_open\n// Shm_unlink\n// Sem_open\n// Sem_close\n// Sem_unlink\n// Sem_wait\n// Sem_trywait\n// Sem_post\n// Sem_getvalue\n// Sem_init\n// Sem_destroy\n// Open_extended\n// Umask_extended\n// Stat_extended\n// Lstat_extended\n// Fstat_extended\n// Chmod_extended\n// Fchmod_extended\n// Access_extended\n// Settid\n// Gettid\n// Setsgroups\n// Getsgroups\n// Setwgroups\n// Getwgroups\n// Mkfifo_extended\n// Mkdir_extended\n// Identitysvc\n// Shared_region_check_np\n// Shared_region_map_np\n// __pthread_mutex_destroy\n// __pthread_mutex_init\n// __pthread_mutex_lock\n// __pthread_mutex_trylock\n// __pthread_mutex_unlock\n// __pthread_cond_init\n// __pthread_cond_destroy\n// __pthread_cond_broadcast\n// __pthread_cond_signal\n// Setsid_with_pid\n// __pthread_cond_timedwait\n// Aio_fsync\n// Aio_return\n// Aio_suspend\n// Aio_cancel\n// Aio_error\n// Aio_read\n// Aio_write\n// Lio_listio\n// __pthread_cond_wait\n// Iopolicysys\n// __pthread_kill\n// __pthread_sigmask\n// __sigwait\n// __disable_threadsignal\n// __pthread_markcancel\n// __pthread_canceled\n// __semwait_signal\n// Proc_info\n// Stat64_extended\n// Lstat64_extended\n// Fstat64_extended\n// __pthread_chdir\n// __pthread_fchdir\n// Audit\n// Auditon\n// Getauid\n// Setauid\n// Getaudit\n// Setaudit\n// Getaudit_addr\n// Setaudit_addr\n// Auditctl\n// Bsdthread_create\n// Bsdthread_terminate\n// Stack_snapshot\n// Bsdthread_register\n// Workq_open\n// Workq_ops\n// __mac_execve\n// __mac_syscall\n// __mac_get_file\n// __mac_set_file\n// __mac_get_link\n// __mac_set_link\n// __mac_get_proc\n// __mac_set_proc\n// __mac_get_fd\n// __mac_set_fd\n// __mac_get_pid\n// __mac_get_lcid\n// __mac_get_lctx\n// __mac_set_lctx\n// Setlcid\n// Read_nocancel\n// Write_nocancel\n// Open_nocancel\n// Close_nocancel\n// Wait4_nocancel\n// Recvmsg_nocancel\n// Sendmsg_nocancel\n// Recvfrom_nocancel\n// Accept_nocancel\n// Fcntl_nocancel\n// Select_nocancel\n// Fsync_nocancel\n// Connect_nocancel\n// Sigsuspend_nocancel\n// Readv_nocancel\n// Writev_nocancel\n// Sendto_nocancel\n// Pread_nocancel\n// Pwrite_nocancel\n// Waitid_nocancel\n// Poll_nocancel\n// Msgsnd_nocancel\n// Msgrcv_nocancel\n// Sem_wait_nocancel\n// Aio_suspend_nocancel\n// __sigwait_nocancel\n// __semwait_signal_nocancel\n// __mac_mount\n// __mac_get_mount\n// __mac_getfsstat\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// +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 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 ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)\n}\n\nfunc PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}\n\terr = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)\n\treturn int(ioDesc.Len), err\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// +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 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 ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)\n}\n\nfunc PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}\n\terr = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)\n\treturn int(ioDesc.Len), err\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// +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 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 PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}\n\terr = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)\n\treturn int(ioDesc.Len), err\n}\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// +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 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 PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}\n\terr = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)\n\treturn int(ioDesc.Len), err\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/syscall_illumos.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// illumos system calls not present on Solaris.\n\n// +build amd64,illumos\n\npackage unix\n\nimport \"unsafe\"\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\t// somehow Iovec.Base on illumos is (*int8), not (*byte)\n\t\t\tiovecs[i].Base = (*int8)(unsafe.Pointer(&b[0]))\n\t\t} else {\n\t\t\tiovecs[i].Base = (*int8)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys   readv(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   preadv(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   writev(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   pwritev(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"
  },
  {
    "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\"runtime\"\n\t\"syscall\"\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\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\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t// Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior\n\t// and check the flags. Otherwise the mode would be applied to the symlink\n\t// destination which is not what the user expects.\n\tif flags&^AT_SYMLINK_NOFOLLOW != 0 {\n\t\treturn EINVAL\n\t} else if flags&AT_SYMLINK_NOFOLLOW != 0 {\n\t\treturn EOPNOTSUPP\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\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\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 ioctl(fd, req, uintptr(unsafe.Pointer(&v)))\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\terr := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))\n\truntime.KeepAlive(value)\n\treturn err\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\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\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\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\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// If the utimensat syscall isn't available (utimensat was added to Linux\n\t// in 2.6.22, Released, 8 July 2007) then fall back to utimes\n\tvar tv [2]Timeval\n\tfor i := 0; i < 2; i++ {\n\t\ttv[i] = NsecToTimeval(TimespecToNsec(ts[i]))\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\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/\"+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\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\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\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), 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\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), 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] == '@' {\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\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), 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 := 0; i < len(sa.Addr); i++ {\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//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//      _ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//      \tChannel: 1,\n//      \tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//      })\n//      _ = Listen(fd, 1)\n//      nfd, sa, _ := Accept(fd)\n//      fmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//      Read(nfd, buf)\n//\n// Client example:\n//\n//      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//      _ = Connect(fd, &SockaddrRFCOMM{\n//      \tChannel: 1,\n//      \tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//      })\n//      Write(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//      // Read one raw CAN frame\n//      fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//      addr := &SockaddrCAN{Ifindex: index}\n//      Bind(fd, addr)\n//      frame := make([]byte, 16)\n//      Read(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 := 0; i < 4; i++ {\n\t\tsa.raw.Addr[i] = rx[i]\n\t}\n\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\tfor i := 0; i < 4; i++ {\n\t\tsa.raw.Addr[i+4] = tx[i]\n\t}\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//      // Open a socket to perform SHA1 hashing.\n//      fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//      addr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//      unix.Bind(fd, addr)\n//      // Note: unix.Accept does not work at this time; must invoke accept()\n//      // manually using unix.Syscall.\n//      hashfd, _, _ := 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//      // Assume hashfd is already configured using the setup process.\n//      hash := os.NewFile(hashfd, \"sha1\")\n//      // Hash an input string and read the results. Each Write discards\n//      // previous hash state. Read always reads the current state.\n//      b := make([]byte, 20)\n//      for i := 0; i < 2; i++ {\n//          io.WriteString(hash, \"Hello, world.\")\n//          hash.Read(b)\n//          fmt.Println(hex.EncodeToString(b))\n//      }\n//      // Output:\n//      // 2ae01472317d1935a84797ec1983ae243fc6aa28\n//      // 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//      // Assume hashfd and addr are already configured using the setup process.\n//      hash := os.NewFile(hashfd, \"sha1\")\n//      // Hash the contents of a file.\n//      f, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//      b := make([]byte, 4096)\n//      for {\n//          n, err := f.Read(b)\n//          if err == io.EOF {\n//              break\n//          }\n//          unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//      }\n//      hash.Read(b)\n//      fmt.Println(hex.EncodeToString(b))\n//      // 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) > 13 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > 63 {\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\ttyp, err := ByteSliceFromString(sa.Type)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\tname, err := ByteSliceFromString(sa.Name)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\n\tcopy(sa.raw.Type[:], typ)\n\tcopy(sa.raw.Name[:], 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_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.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\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\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\tsa.raw[i] = 0\n\t}\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\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\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\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), 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\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), SizeofSockaddrL2TPIP6, nil\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\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_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\tbytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tproto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\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\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t\t}\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\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_INET6:\n\t\tproto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\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\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t\t}\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\tfor i := 0; i < len(sa.Addr); i++ {\n\t\t\t\tsa.Addr[i] = pp.Addr[i]\n\t\t\t}\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}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\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\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\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// 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 string(buf[:vallen-1]), 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\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 keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL\n//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL\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 = uint32(SizeofSockaddrAny)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = &p[0]\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif len(p) == 0 {\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\tiov.Base = &dummy\n\t\t\t\tiov.SetLen(1)\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &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\tfrom, err = anyToSockaddr(fd, &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)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = &p[0]\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif len(p) == 0 {\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\tiov.Base = &dummy\n\t\t\t\tiov.SetLen(1)\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &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\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\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 = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(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 = ptrace(req, pid, addr+uintptr(n), uintptr(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 = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(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 = ptrace(peekReq, pid, addr+uintptr(n), uintptr(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\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\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 = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(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\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\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(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\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\t// Android O and newer blocks dup2; riscv and arm64 don't implement dup2.\n\tif runtime.GOOS == \"android\" || runtime.GOARCH == \"riscv64\" || runtime.GOARCH == \"arm64\" {\n\t\treturn Dup3(oldfd, newfd, 0)\n\t}\n\treturn dup2(oldfd, newfd)\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\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//sys\tGetrandom(buf []byte, flags int) (n int, err error)\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\tNanosleep(time *Timespec, leftover *Timespec) (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//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64\n//sys   Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6\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// 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\n// issue 1435.\n// On linux Setuid and Setgid only affects the current thread, not the process.\n// This does not match what most callers expect so we must return an error\n// here rather than letting the caller think that the call succeeded.\n\nfunc Setuid(uid int) (err error) {\n\treturn EOPNOTSUPP\n}\n\nfunc Setgid(uid int) (err error) {\n\treturn EOPNOTSUPP\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 TimerfdCreate(clockid int, flags int) (fd int, err error)\n//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error)\n//sysnb TimerfdSettime(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\treadlen(fd int, p *byte, np int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE\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\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// offs2lohi splits offs into its lower and upper unsigned long. On 64-bit\n// systems, hi will always be 0. On 32-bit systems, offs will be split in half.\n// preadv/pwritev chose this calling convention so they don't need to add a\n// padding-register for alignment on ARM.\nfunc offs2lohi(offs int64) (lo, hi uintptr) {\n\treturn uintptr(offs), uintptr(uint64(offs) >> SizeofLong)\n}\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(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 := bytes2iovec(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 := bytes2iovec(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 := 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\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(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 := bytes2iovec(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 := bytes2iovec(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 := 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\n// mmap varies by architecture; see syscall_linux_*.go.\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\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\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// 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\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\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 == 0 {\n\t\treturn faccessat(dirfd, path, mode)\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} 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 {\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 nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT\n//sys openByHandleAt(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 (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n: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/*\n * Unimplemented\n */\n// AfsSyscall\n// Alarm\n// ArchPrctl\n// Brk\n// ClockNanosleep\n// ClockSettime\n// Clone\n// EpollCtlOld\n// EpollPwait\n// EpollWaitOld\n// Execve\n// Fork\n// Futex\n// GetKernelSyms\n// GetMempolicy\n// GetRobustList\n// GetThreadArea\n// Getitimer\n// Getpmsg\n// IoCancel\n// IoDestroy\n// IoGetevents\n// IoSetup\n// IoSubmit\n// IoprioGet\n// IoprioSet\n// KexecLoad\n// LookupDcookie\n// Mbind\n// MigratePages\n// Mincore\n// ModifyLdt\n// Mount\n// MovePages\n// MqGetsetattr\n// MqNotify\n// MqOpen\n// MqTimedreceive\n// MqTimedsend\n// MqUnlink\n// Mremap\n// Msgctl\n// Msgget\n// Msgrcv\n// Msgsnd\n// Nfsservctl\n// Personality\n// Pselect6\n// Ptrace\n// Putpmsg\n// Quotactl\n// Readahead\n// Readv\n// RemapFilePages\n// RestartSyscall\n// RtSigaction\n// RtSigpending\n// RtSigprocmask\n// RtSigqueueinfo\n// RtSigreturn\n// RtSigsuspend\n// RtSigtimedwait\n// SchedGetPriorityMax\n// SchedGetPriorityMin\n// SchedGetparam\n// SchedGetscheduler\n// SchedRrGetInterval\n// SchedSetparam\n// SchedYield\n// Security\n// Semctl\n// Semget\n// Semop\n// Semtimedop\n// SetMempolicy\n// SetRobustList\n// SetThreadArea\n// SetTidAddress\n// Shmat\n// Shmctl\n// Shmdt\n// Shmget\n// Sigaltstack\n// Swapoff\n// Swapon\n// Sysfs\n// TimerCreate\n// TimerDelete\n// TimerGetoverrun\n// TimerGettime\n// TimerSettime\n// Tkill (obsolete)\n// Tuxcall\n// Umount2\n// Uselib\n// Utimensat\n// Vfork\n// Vhangup\n// Vserver\n// Waitid\n// _Sysctl\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// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)\n// so that go vet can check that they are correct.\n\n// +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//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\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tInotifyInit() (fd int, err error)\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//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID32\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID32\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 getrlimit(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\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\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 accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT, 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 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\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"
  },
  {
    "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// +build amd64,linux\n\npackage unix\n\n//sys\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tinotifyInit() (fd int, err error)\n\nfunc InotifyInit() (fd int, err error) {\n\t// First try inotify_init1, because Android's seccomp policy blocks the latter.\n\tfd, err = InotifyInit1(0)\n\tif err == ENOSYS {\n\t\tfd, err = inotifyInit()\n\t}\n\treturn\n}\n\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\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 Pselect(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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (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\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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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\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\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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\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\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// +build amd64,linux\n// +build !gccgo\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// +build arm,linux\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\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\t// Try pipe2 first for Android O, then try pipe for kernel 2.6.23.\n\terr = pipe2(&pp, 0)\n\tif err == ENOSYS {\n\t\terr = pipe(&pp)\n\t}\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\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 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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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) = 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\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tInotifyInit() (fd int, err error)\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//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID32\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID32\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\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   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys   Pwrite(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 getrlimit(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\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\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\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\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// +build arm64,linux\n\npackage unix\n\nimport \"unsafe\"\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\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\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 Pselect(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//sysnb\tSetregid(rgid int, egid 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\tsetrlimit(resource int, rlim *Rlimit) (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\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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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//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\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 Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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\n// Setrlimit prefers the prlimit64 system call. See issue 38604.\nfunc Setrlimit(resource int, rlim *Rlimit) error {\n\terr := prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn setrlimit(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 InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\n// dup2 exists because func Dup3 in syscall_linux.go references\n// it in an unreachable path. dup2 isn't available on arm64.\nfunc dup2(oldfd int, newfd int) error\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\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\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, ts, nil)\n\t}\n\treturn ppoll(&fds[0], len(fds), ts, 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_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// +build linux,!gccgo\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// +build linux,!gccgo,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_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// +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// +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_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// +build linux\n// +build mips64 mips64le\n\npackage unix\n\n//sys\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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 Pselect(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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (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\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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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 Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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 InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(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"
  },
  {
    "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// +build linux\n// +build 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\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tSetregid(rgid int, egid 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\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 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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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//sysnb\tInotifyInit() (fd int, err error)\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//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe() (p1 int, p2 int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\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\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb getrlimit(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\n//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT\n\nfunc Setrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = prlimit(0, resource, rlim, nil)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\tif rlim.Cur == rlimInf64 {\n\t\trl.Cur = rlimInf32\n\t} else if rlim.Cur < uint64(rlimInf32) {\n\t\trl.Cur = uint32(rlim.Cur)\n\t} else {\n\t\treturn EINVAL\n\t}\n\tif rlim.Max == rlimInf64 {\n\t\trl.Max = rlimInf32\n\t} else if rlim.Max < uint64(rlimInf32) {\n\t\trl.Max = uint32(rlim.Max)\n\t} else {\n\t\treturn EINVAL\n\t}\n\n\treturn setrlimit(resource, &rl)\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\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"
  },
  {
    "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// +build linux\n// +build ppc64 ppc64le\n\npackage unix\n\n//sys\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tInotifyInit() (fd int, err error)\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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (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, 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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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\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//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\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\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// +build riscv64,linux\n\npackage unix\n\nimport \"unsafe\"\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\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\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 Pselect(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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (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\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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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//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\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 Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe2(&pp, 0)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\n\n//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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 InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\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\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, ts, nil)\n\t}\n\treturn ppoll(&fds[0], len(fds), ts, nil)\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// dup2 exists because func Dup3 in syscall_linux.go references\n// it in an unreachable path. dup2 isn't available on arm64.\nfunc dup2(oldfd int, newfd int) error\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// +build s390x,linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tdup2(oldfd int, newfd int) (err error)\n//sysnb\tEpollCreate(size int) (fd int, err error)\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//sysnb\tInotifyInit() (fd int, err error)\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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tSetreuid(ruid int, euid 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\n//sysnb pipe2(p *[2]_C_int, flags 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 = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0.\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\n}\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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn\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\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 accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\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 := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)}\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\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\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// +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\tdup2(oldfd int, newfd int) (err error)\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//sysnb\tInotifyInit() (fd 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)\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//sysnb\tSetregid(rgid int, egid 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\tSetrlimit(resource int, rlim *Rlimit) (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, 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\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, 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\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//sysnb pipe2(p *[2]_C_int, flags 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\terr = pipe2(&pp, flags)\n\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\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"
  },
  {
    "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\"runtime\"\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 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\n//sysnb pipe() (fd1 int, fd2 int, err error)\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tp[0], p[1], err = pipe()\n\treturn\n}\n\n//sys Getdents(fd int, buf []byte) (n int, err error)\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\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\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// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n//sys   sysctl(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 := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\truntime.KeepAlive(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\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\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\tSetrlimit(which int, lim *Rlimit) (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\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n */\n// ____semctl13\n// __clone\n// __fhopen40\n// __fhstat40\n// __fhstatvfs140\n// __fstat30\n// __getcwd\n// __getfh30\n// __getlogin\n// __lstat30\n// __mount50\n// __msgctl13\n// __msync13\n// __ntp_gettime30\n// __posix_chown\n// __posix_fchown\n// __posix_lchown\n// __posix_rename\n// __setlogin\n// __shmctl13\n// __sigaction_sigtramp\n// __sigaltstack14\n// __sigpending14\n// __sigprocmask14\n// __sigsuspend14\n// __sigtimedwait\n// __stat30\n// __syscall\n// __vfork14\n// _ksem_close\n// _ksem_destroy\n// _ksem_getvalue\n// _ksem_init\n// _ksem_open\n// _ksem_post\n// _ksem_trywait\n// _ksem_unlink\n// _ksem_wait\n// _lwp_continue\n// _lwp_create\n// _lwp_ctl\n// _lwp_detach\n// _lwp_exit\n// _lwp_getname\n// _lwp_getprivate\n// _lwp_kill\n// _lwp_park\n// _lwp_self\n// _lwp_setname\n// _lwp_setprivate\n// _lwp_suspend\n// _lwp_unpark\n// _lwp_unpark_all\n// _lwp_wait\n// _lwp_wakeup\n// _pset_bind\n// _sched_getaffinity\n// _sched_getparam\n// _sched_setaffinity\n// _sched_setparam\n// acct\n// aio_cancel\n// aio_error\n// aio_fsync\n// aio_read\n// aio_return\n// aio_suspend\n// aio_write\n// break\n// clock_getres\n// clock_gettime\n// clock_settime\n// compat_09_ogetdomainname\n// compat_09_osetdomainname\n// compat_09_ouname\n// compat_10_omsgsys\n// compat_10_osemsys\n// compat_10_oshmsys\n// compat_12_fstat12\n// compat_12_getdirentries\n// compat_12_lstat12\n// compat_12_msync\n// compat_12_oreboot\n// compat_12_oswapon\n// compat_12_stat12\n// compat_13_sigaction13\n// compat_13_sigaltstack13\n// compat_13_sigpending13\n// compat_13_sigprocmask13\n// compat_13_sigreturn13\n// compat_13_sigsuspend13\n// compat_14___semctl\n// compat_14_msgctl\n// compat_14_shmctl\n// compat_16___sigaction14\n// compat_16___sigreturn14\n// compat_20_fhstatfs\n// compat_20_fstatfs\n// compat_20_getfsstat\n// compat_20_statfs\n// compat_30___fhstat30\n// compat_30___fstat13\n// compat_30___lstat13\n// compat_30___stat13\n// compat_30_fhopen\n// compat_30_fhstat\n// compat_30_fhstatvfs1\n// compat_30_getdents\n// compat_30_getfh\n// compat_30_ntp_gettime\n// compat_30_socket\n// compat_40_mount\n// compat_43_fstat43\n// compat_43_lstat43\n// compat_43_oaccept\n// compat_43_ocreat\n// compat_43_oftruncate\n// compat_43_ogetdirentries\n// compat_43_ogetdtablesize\n// compat_43_ogethostid\n// compat_43_ogethostname\n// compat_43_ogetkerninfo\n// compat_43_ogetpagesize\n// compat_43_ogetpeername\n// compat_43_ogetrlimit\n// compat_43_ogetsockname\n// compat_43_okillpg\n// compat_43_olseek\n// compat_43_ommap\n// compat_43_oquota\n// compat_43_orecv\n// compat_43_orecvfrom\n// compat_43_orecvmsg\n// compat_43_osend\n// compat_43_osendmsg\n// compat_43_osethostid\n// compat_43_osethostname\n// compat_43_osetrlimit\n// compat_43_osigblock\n// compat_43_osigsetmask\n// compat_43_osigstack\n// compat_43_osigvec\n// compat_43_otruncate\n// compat_43_owait\n// compat_43_stat43\n// execve\n// extattr_delete_fd\n// extattr_delete_file\n// extattr_delete_link\n// extattr_get_fd\n// extattr_get_file\n// extattr_get_link\n// extattr_list_fd\n// extattr_list_file\n// extattr_list_link\n// extattr_set_fd\n// extattr_set_file\n// extattr_set_link\n// extattrctl\n// fchroot\n// fdatasync\n// fgetxattr\n// fktrace\n// flistxattr\n// fork\n// fremovexattr\n// fsetxattr\n// fstatvfs1\n// fsync_range\n// getcontext\n// getitimer\n// getvfsstat\n// getxattr\n// ktrace\n// lchflags\n// lchmod\n// lfs_bmapv\n// lfs_markv\n// lfs_segclean\n// lfs_segwait\n// lgetxattr\n// lio_listio\n// listxattr\n// llistxattr\n// lremovexattr\n// lseek\n// lsetxattr\n// lutimes\n// madvise\n// mincore\n// minherit\n// modctl\n// mq_close\n// mq_getattr\n// mq_notify\n// mq_open\n// mq_receive\n// mq_send\n// mq_setattr\n// mq_timedreceive\n// mq_timedsend\n// mq_unlink\n// mremap\n// msgget\n// msgrcv\n// msgsnd\n// nfssvc\n// ntp_adjtime\n// pmc_control\n// pmc_get_info\n// pollts\n// preadv\n// profil\n// pselect\n// pset_assign\n// pset_create\n// pset_destroy\n// ptrace\n// pwritev\n// quotactl\n// rasctl\n// readv\n// reboot\n// removexattr\n// sa_enable\n// sa_preempt\n// sa_register\n// sa_setconcurrency\n// sa_stacks\n// sa_yield\n// sbrk\n// sched_yield\n// semconfig\n// semget\n// semop\n// setcontext\n// setitimer\n// setxattr\n// shmat\n// shmdt\n// shmget\n// sstk\n// statvfs1\n// swapctl\n// sysarch\n// syscall\n// timer_create\n// timer_delete\n// timer_getoverrun\n// timer_gettime\n// timer_settime\n// undelete\n// utrace\n// uuidgen\n// vadvise\n// vfork\n// writev\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// +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// +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// +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// +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 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)\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\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn err\n}\n\n//sys Getdents(fd int, buf []byte) (n int, err error)\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\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\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\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 _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\nfunc setattrlistTimes(path string, times []Timespec, flags int) error {\n\t// used on Darwin for UtimesNano\n\treturn ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n\n//sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\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\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\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\tSetrlimit(which int, lim *Rlimit) (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\treadlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ\n//sys\twritelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Unimplemented\n */\n// __getcwd\n// __semctl\n// __syscall\n// __sysctl\n// adjfreq\n// break\n// clock_getres\n// clock_gettime\n// clock_settime\n// closefrom\n// execve\n// fhopen\n// fhstat\n// fhstatfs\n// fork\n// futimens\n// getfh\n// getgid\n// getitimer\n// getlogin\n// getresgid\n// getresuid\n// getthrid\n// ktrace\n// lfs_bmapv\n// lfs_markv\n// lfs_segclean\n// lfs_segwait\n// mincore\n// minherit\n// mount\n// mquery\n// msgctl\n// msgget\n// msgrcv\n// msgsnd\n// nfssvc\n// nnpfspioctl\n// preadv\n// profil\n// pwritev\n// quotactl\n// readv\n// reboot\n// renameat\n// rfork\n// sched_yield\n// semget\n// semop\n// setgroups\n// setitimer\n// setsockopt\n// shmat\n// shmctl\n// shmdt\n// shmget\n// sigaction\n// sigaltstack\n// sigpending\n// sigprocmask\n// sigreturn\n// sigsuspend\n// sysarch\n// syscall\n// threxit\n// thrsigdivert\n// thrsleep\n// thrwakeup\n// vfork\n// writev\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// +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// +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// +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// +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_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\"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\tp[0] = int(pp[0])\n\tp[1] = int(pp[1])\n\treturn nil\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\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), 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\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), 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] == '@' {\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 string(buf[:vallen-1]), 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\tbytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\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\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 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 = uint32(SizeofSockaddrAny)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*int8)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy int8\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.Accrightslen = int32(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\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\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//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\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\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 = uint32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*int8)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy int8\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.Accrightslen = int32(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\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\tioctl(fd int, req uint, arg uintptr) (err error)\n\nfunc IoctlSetTermio(fd int, req uint, value *Termio) (err error) {\n\treturn ioctl(fd, req, uintptr(unsafe.Pointer(value)))\n}\n\nfunc IoctlGetTermio(fd int, req uint) (*Termio, error) {\n\tvar value Termio\n\terr := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))\n\treturn &value, err\n}\n\n//sys   poll(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\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\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_llisten\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\tSetrlimit(which int, lim *Rlimit) (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//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\nfunc readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\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"
  },
  {
    "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// +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// +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\t\"golang.org/x/sys/internal/unsafeheader\"\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\tvar b []byte\n\thdr := (*unsafeheader.Slice)(unsafe.Pointer(&b))\n\thdr.Data = unsafe.Pointer(addr)\n\thdr.Cap = length\n\thdr.Len = 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 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\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"
  },
  {
    "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// +build darwin dragonfly freebsd linux netbsd openbsd solaris\n// +build !gccgo,!ppc64le,!ppc64\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// +build linux\n// +build ppc64le ppc64\n// +build !gccgo\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/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// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec converts a Timespec value into a number of\n// nanoseconds since the Unix epoch.\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\n// NsecToTimespec takes a number of nanoseconds since the Unix epoch\n// and returns the corresponding Timespec value.\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 converts a Timeval value into a number of nanoseconds\n// since the Unix epoch.\nfunc TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }\n\n// NsecToTimeval takes a number of nanoseconds since the Unix epoch\n// and returns the corresponding Timeval value.\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 ts as the number of seconds and nanoseconds elapsed since the\n// Unix epoch.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns tv as the number of seconds and nanoseconds elapsed since the\n// Unix epoch.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_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// +build ignore\n// +build aix\n\n/*\nInput to cgo -godefs.  See also mkerrors.sh and mkall.sh\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/limits.h>\n#include <sys/un.h>\n#include <utime.h>\n#include <sys/utsname.h>\n#include <sys/poll.h>\n#include <sys/resource.h>\n#include <sys/stat.h>\n#include <sys/statfs.h>\n#include <sys/termio.h>\n#include <sys/ioctl.h>\n\n#include <termios.h>\n\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n\n\n#include <dirent.h>\n#include <fcntl.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;     // this one gets used for fields\n\tstruct sockaddr_in s2;  // these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n\tPathMax        = C.PATH_MAX\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\ntype off64 C.off64_t\ntype off C.off_t\ntype Mode_t C.mode_t\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\ntype Timex C.struct_timex\n\ntype Time_t C.time_t\n\ntype Tms C.struct_tms\n\ntype Utimbuf C.struct_utimbuf\n\ntype Timezone C.struct_timezone\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit64\n\ntype Pid_t C.pid_t\n\ntype _Gid_t C.gid_t\n\ntype dev_t C.dev_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype StatxTimestamp C.struct_statx_timestamp\n\ntype Statx_t C.struct_statx\n\ntype Dirent C.struct_dirent\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype Linger C.struct_linger\n\ntype Msghdr C.struct_msghdr\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr = C.sizeof_struct_if_msghdr\n)\n\ntype IfMsgHdr C.struct_if_msghdr\n\n// Misc\n\ntype FdSet C.fd_set\n\ntype Utsname C.struct_utsname\n\ntype Ustat_t C.struct_ustat\n\ntype Sigset_t C.sigset_t\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Termio C.struct_termio\n\ntype Winsize C.struct_winsize\n\n//poll\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n//flock_t\n\ntype Flock_t C.struct_flock64\n\n// Statfs\n\ntype Fsid_t C.struct_fsid_t\ntype Fsid64_t C.struct_fsid64_t\n\ntype Statfs_t C.struct_statfs\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_darwin.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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define __DARWIN_UNIX03 0\n#define KERNEL\n#define _DARWIN_USE_64_BIT_INODE\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <unistd.h>\n#include <mach/mach.h>\n#include <mach/message.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat64\n\ntype Statfs_t C.struct_statfs64\n\ntype Flock_t C.struct_flock\n\ntype Fstore_t C.struct_fstore\n\ntype Radvisory_t C.struct_radvisory\n\ntype Fbootstraptransfer_t C.struct_fbootstraptransfer\n\ntype Log2phys_t C.struct_log2phys\n\ntype Fsid C.struct_fsid\n\ntype Dirent C.struct_dirent\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet4Pktinfo C.struct_in_pktinfo\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr    = C.sizeof_struct_if_msghdr\n\tSizeofIfData      = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr   = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr  = C.sizeof_struct_ifma_msghdr\n\tSizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2\n\tSizeofRtMsghdr    = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics   = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfmaMsghdr2 C.struct_ifma_msghdr2\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// uname\n\ntype Utsname C.struct_utsname\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.struct_fsid\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_freebsd.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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define\t_WANT_FREEBSD11_STAT\t1\n#define\t_WANT_FREEBSD11_STATFS\t1\n#define\t_WANT_FREEBSD11_DIRENT\t1\n#define\t_WANT_FREEBSD11_KEVENT  1\n\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/capsicum.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n// This structure is a duplicate of if_data on FreeBSD 8-STABLE.\n// See /usr/include/net/if.h.\nstruct if_data8 {\n\tu_char  ifi_type;\n\tu_char  ifi_physical;\n\tu_char  ifi_addrlen;\n\tu_char  ifi_hdrlen;\n\tu_char  ifi_link_state;\n\tu_char  ifi_spare_char1;\n\tu_char  ifi_spare_char2;\n\tu_char  ifi_datalen;\n\tu_long  ifi_mtu;\n\tu_long  ifi_metric;\n\tu_long  ifi_baudrate;\n\tu_long  ifi_ipackets;\n\tu_long  ifi_ierrors;\n\tu_long  ifi_opackets;\n\tu_long  ifi_oerrors;\n\tu_long  ifi_collisions;\n\tu_long  ifi_ibytes;\n\tu_long  ifi_obytes;\n\tu_long  ifi_imcasts;\n\tu_long  ifi_omcasts;\n\tu_long  ifi_iqdrops;\n\tu_long  ifi_noproto;\n\tu_long  ifi_hwassist;\n// FIXME: these are now unions, so maybe need to change definitions?\n#undef ifi_epoch\n\ttime_t  ifi_epoch;\n#undef ifi_lastchange\n\tstruct  timeval ifi_lastchange;\n};\n\n// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.\n// See /usr/include/net/if.h.\nstruct if_msghdr8 {\n\tu_short ifm_msglen;\n\tu_char  ifm_version;\n\tu_char  ifm_type;\n\tint     ifm_addrs;\n\tint     ifm_flags;\n\tu_short ifm_index;\n\tstruct  if_data8 ifm_data;\n};\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\nconst (\n\t_statfsVersion = C.STATFS_VERSION\n\t_dirblksiz     = C.DIRBLKSIZ\n)\n\ntype Stat_t C.struct_stat\n\ntype stat_freebsd11_t C.struct_freebsd11_stat\n\ntype Statfs_t C.struct_statfs\n\ntype statfs_freebsd11_t C.struct_freebsd11_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype dirent_freebsd11 C.struct_freebsd11_dirent\n\ntype Fsid C.struct_fsid\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Advice to Fadvise\n\nconst (\n\tFADV_NORMAL     = C.POSIX_FADV_NORMAL\n\tFADV_RANDOM     = C.POSIX_FADV_RANDOM\n\tFADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL\n\tFADV_WILLNEED   = C.POSIX_FADV_WILLNEED\n\tFADV_DONTNEED   = C.POSIX_FADV_DONTNEED\n\tFADV_NOREUSE    = C.POSIX_FADV_NOREUSE\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPMreqn C.struct_ip_mreqn\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPMreqn          = C.sizeof_struct_ip_mreqn\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_ATTACH     = C.PT_ATTACH\n\tPTRACE_CONT       = C.PT_CONTINUE\n\tPTRACE_DETACH     = C.PT_DETACH\n\tPTRACE_GETFPREGS  = C.PT_GETFPREGS\n\tPTRACE_GETFSBASE  = C.PT_GETFSBASE\n\tPTRACE_GETLWPLIST = C.PT_GETLWPLIST\n\tPTRACE_GETNUMLWPS = C.PT_GETNUMLWPS\n\tPTRACE_GETREGS    = C.PT_GETREGS\n\tPTRACE_GETXSTATE  = C.PT_GETXSTATE\n\tPTRACE_IO         = C.PT_IO\n\tPTRACE_KILL       = C.PT_KILL\n\tPTRACE_LWPEVENTS  = C.PT_LWP_EVENTS\n\tPTRACE_LWPINFO    = C.PT_LWPINFO\n\tPTRACE_SETFPREGS  = C.PT_SETFPREGS\n\tPTRACE_SETREGS    = C.PT_SETREGS\n\tPTRACE_SINGLESTEP = C.PT_STEP\n\tPTRACE_TRACEME    = C.PT_TRACE_ME\n)\n\nconst (\n\tPIOD_READ_D  = C.PIOD_READ_D\n\tPIOD_WRITE_D = C.PIOD_WRITE_D\n\tPIOD_READ_I  = C.PIOD_READ_I\n\tPIOD_WRITE_I = C.PIOD_WRITE_I\n)\n\nconst (\n\tPL_FLAG_BORN   = C.PL_FLAG_BORN\n\tPL_FLAG_EXITED = C.PL_FLAG_EXITED\n\tPL_FLAG_SI     = C.PL_FLAG_SI\n)\n\nconst (\n\tTRAP_BRKPT = C.TRAP_BRKPT\n\tTRAP_TRACE = C.TRAP_TRACE\n)\n\ntype PtraceLwpInfoStruct C.struct_ptrace_lwpinfo\n\ntype __Siginfo C.struct___siginfo\n\ntype Sigset_t C.sigset_t\n\ntype Reg C.struct_reg\n\ntype FpReg C.struct_fpreg\n\ntype PtraceIoDesc C.struct_ptrace_io_desc\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent_freebsd11\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tsizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr8\n\tsizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfData           = C.sizeof_struct_if_data8\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype ifMsghdr C.struct_if_msghdr\n\ntype IfMsghdr C.struct_if_msghdr8\n\ntype ifData C.struct_if_data\n\ntype IfData C.struct_if_data8\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfmaMsghdr C.struct_ifma_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion    = C.sizeof_struct_bpf_version\n\tSizeofBpfStat       = C.sizeof_struct_bpf_stat\n\tSizeofBpfZbuf       = C.sizeof_struct_bpf_zbuf\n\tSizeofBpfProgram    = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn       = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr        = C.sizeof_struct_bpf_hdr\n\tSizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfZbuf C.struct_bpf_zbuf\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfZbufHeader C.struct_bpf_zbuf_header\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR      = C.POLLERR\n\tPOLLHUP      = C.POLLHUP\n\tPOLLIN       = C.POLLIN\n\tPOLLINIGNEOF = C.POLLINIGNEOF\n\tPOLLNVAL     = C.POLLNVAL\n\tPOLLOUT      = C.POLLOUT\n\tPOLLPRI      = C.POLLPRI\n\tPOLLRDBAND   = C.POLLRDBAND\n\tPOLLRDNORM   = C.POLLRDNORM\n\tPOLLWRBAND   = C.POLLWRBAND\n\tPOLLWRNORM   = C.POLLWRNORM\n)\n\n// Capabilities\n\ntype CapRights C.struct_cap_rights\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_netbsd.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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/statvfs.h>\n#include <sys/sysctl.h>\n#include <sys/time.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Statvfs_t C.struct_statvfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.fsid_t\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Fstatvfs/Statvfs flags\n\nconst (\n\tST_WAIT   = C.ST_WAIT\n\tST_NOWAIT = C.ST_NOWAIT\n)\n\n// Advice to Fadvise\n\nconst (\n\tFADV_NORMAL     = C.POSIX_FADV_NORMAL\n\tFADV_RANDOM     = C.POSIX_FADV_RANDOM\n\tFADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL\n\tFADV_WILLNEED   = C.POSIX_FADV_WILLNEED\n\tFADV_DONTNEED   = C.POSIX_FADV_DONTNEED\n\tFADV_NOREUSE    = C.POSIX_FADV_NOREUSE\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\ntype Mclpool C.struct_mclpool\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfTimeval C.struct_bpf_timeval\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\ntype Ptmget C.struct_ptmget\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Sysctl\n\ntype Sysctlnode C.struct_sysctlnode\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_openbsd.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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/ptrace.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <uvm/uvmexp.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Statfs_t C.struct_statfs\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.fsid_t\n\n// File system limits\n\nconst (\n\tPathMax = C.PATH_MAX\n)\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Ptrace requests\n\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\n)\n\n// Events (kqueue, kevent)\n\ntype Kevent_t C.struct_kevent\n\n// Select\n\ntype FdSet C.fd_set\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr         = C.sizeof_struct_if_msghdr\n\tSizeofIfData           = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr\n\tSizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr\n\tSizeofRtMsghdr         = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics        = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype IfAnnounceMsghdr C.struct_if_announcemsghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\ntype Mclpool C.struct_mclpool\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfHdr C.struct_bpf_hdr\n\ntype BpfTimeval C.struct_bpf_timeval\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Winsize C.struct_winsize\n\n// fchmodat-like syscalls.\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n)\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\n)\n\n// Signal Sets\n\ntype Sigset_t C.sigset_t\n\n// Uname\n\ntype Utsname C.struct_utsname\n\n// Uvmexp\n\nconst SizeofUvmexp = C.sizeof_struct_uvmexp\n\ntype Uvmexp C.struct_uvmexp\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/types_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// +build ignore\n\n/*\nInput to cgo -godefs.  See README.md\n*/\n\n// +godefs map struct_in_addr [4]byte /* in_addr */\n// +godefs map struct_in6_addr [16]byte /* in6_addr */\n\npackage unix\n\n/*\n#define KERNEL\n// These defines ensure that builds done on newer versions of Solaris are\n// backwards-compatible with older versions of Solaris and\n// OpenSolaris-based derivatives.\n#define __USE_SUNOS_SOCKETS__          // msghdr\n#define __USE_LEGACY_PROTOTYPES__      // iovec\n#include <dirent.h>\n#include <fcntl.h>\n#include <netdb.h>\n#include <limits.h>\n#include <poll.h>\n#include <signal.h>\n#include <termios.h>\n#include <termio.h>\n#include <stdio.h>\n#include <unistd.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/param.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/statvfs.h>\n#include <sys/time.h>\n#include <sys/times.h>\n#include <sys/types.h>\n#include <sys/utsname.h>\n#include <sys/un.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_dl.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/icmp6.h>\n#include <netinet/tcp.h>\n#include <ustat.h>\n#include <utime.h>\n\nenum {\n\tsizeofPtr = sizeof(void*),\n};\n\nunion sockaddr_all {\n\tstruct sockaddr s1;\t// this one gets used for fields\n\tstruct sockaddr_in s2;\t// these pad it out\n\tstruct sockaddr_in6 s3;\n\tstruct sockaddr_un s4;\n\tstruct sockaddr_dl s5;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n*/\nimport \"C\"\n\n// Machine characteristics\n\nconst (\n\tSizeofPtr      = C.sizeofPtr\n\tSizeofShort    = C.sizeof_short\n\tSizeofInt      = C.sizeof_int\n\tSizeofLong     = C.sizeof_long\n\tSizeofLongLong = C.sizeof_longlong\n\tPathMax        = C.PATH_MAX\n\tMaxHostNameLen = C.MAXHOSTNAMELEN\n)\n\n// Basic types\n\ntype (\n\t_C_short     C.short\n\t_C_int       C.int\n\t_C_long      C.long\n\t_C_long_long C.longlong\n)\n\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timeval32 C.struct_timeval32\n\ntype Tms C.struct_tms\n\ntype Utimbuf C.struct_utimbuf\n\n// Processes\n\ntype Rusage C.struct_rusage\n\ntype Rlimit C.struct_rlimit\n\ntype _Gid_t C.gid_t\n\n// Files\n\ntype Stat_t C.struct_stat\n\ntype Flock_t C.struct_flock\n\ntype Dirent C.struct_dirent\n\n// Filesystems\n\ntype _Fsblkcnt_t C.fsblkcnt_t\n\ntype Statvfs_t C.struct_statvfs\n\n// Sockets\n\ntype RawSockaddrInet4 C.struct_sockaddr_in\n\ntype RawSockaddrInet6 C.struct_sockaddr_in6\n\ntype RawSockaddrUnix C.struct_sockaddr_un\n\ntype RawSockaddrDatalink C.struct_sockaddr_dl\n\ntype RawSockaddr C.struct_sockaddr\n\ntype RawSockaddrAny C.struct_sockaddr_any\n\ntype _Socklen C.socklen_t\n\ntype Linger C.struct_linger\n\ntype Iovec C.struct_iovec\n\ntype IPMreq C.struct_ip_mreq\n\ntype IPv6Mreq C.struct_ipv6_mreq\n\ntype Msghdr C.struct_msghdr\n\ntype Cmsghdr C.struct_cmsghdr\n\ntype Inet4Pktinfo C.struct_in_pktinfo\n\ntype Inet6Pktinfo C.struct_in6_pktinfo\n\ntype IPv6MTUInfo C.struct_ip6_mtuinfo\n\ntype ICMPv6Filter C.struct_icmp6_filter\n\nconst (\n\tSizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in\n\tSizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6\n\tSizeofSockaddrAny      = C.sizeof_struct_sockaddr_any\n\tSizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un\n\tSizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIPMreq           = C.sizeof_struct_ip_mreq\n\tSizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq\n\tSizeofMsghdr           = C.sizeof_struct_msghdr\n\tSizeofCmsghdr          = C.sizeof_struct_cmsghdr\n\tSizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo\n\tSizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo\n\tSizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo\n\tSizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter\n)\n\n// Select\n\ntype FdSet C.fd_set\n\n// Misc\n\ntype Utsname C.struct_utsname\n\ntype Ustat_t C.struct_ustat\n\nconst (\n\tAT_FDCWD            = C.AT_FDCWD\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_EACCESS          = C.AT_EACCESS\n)\n\n// Routing and interface messages\n\nconst (\n\tSizeofIfMsghdr  = C.sizeof_struct_if_msghdr\n\tSizeofIfData    = C.sizeof_struct_if_data\n\tSizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr\n\tSizeofRtMsghdr  = C.sizeof_struct_rt_msghdr\n\tSizeofRtMetrics = C.sizeof_struct_rt_metrics\n)\n\ntype IfMsghdr C.struct_if_msghdr\n\ntype IfData C.struct_if_data\n\ntype IfaMsghdr C.struct_ifa_msghdr\n\ntype RtMsghdr C.struct_rt_msghdr\n\ntype RtMetrics C.struct_rt_metrics\n\n// Berkeley packet filter\n\nconst (\n\tSizeofBpfVersion = C.sizeof_struct_bpf_version\n\tSizeofBpfStat    = C.sizeof_struct_bpf_stat\n\tSizeofBpfProgram = C.sizeof_struct_bpf_program\n\tSizeofBpfInsn    = C.sizeof_struct_bpf_insn\n\tSizeofBpfHdr     = C.sizeof_struct_bpf_hdr\n)\n\ntype BpfVersion C.struct_bpf_version\n\ntype BpfStat C.struct_bpf_stat\n\ntype BpfProgram C.struct_bpf_program\n\ntype BpfInsn C.struct_bpf_insn\n\ntype BpfTimeval C.struct_bpf_timeval\n\ntype BpfHdr C.struct_bpf_hdr\n\n// Terminal handling\n\ntype Termios C.struct_termios\n\ntype Termio C.struct_termio\n\ntype Winsize C.struct_winsize\n\n// poll\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLERR    = C.POLLERR\n\tPOLLHUP    = C.POLLHUP\n\tPOLLIN     = C.POLLIN\n\tPOLLNVAL   = C.POLLNVAL\n\tPOLLOUT    = C.POLLOUT\n\tPOLLPRI    = C.POLLPRI\n\tPOLLRDBAND = C.POLLRDBAND\n\tPOLLRDNORM = C.POLLRDNORM\n\tPOLLWRBAND = C.POLLWRBAND\n\tPOLLWRNORM = C.POLLWRNORM\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 (\n\t\"syscall\"\n\t\"unsafe\"\n)\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\tpathPtr, err := syscall.BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := syscall.BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\treturn nil\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\t// Both pointers must be nil.\n\tvar pathUnsafe, flagsUnsafe unsafe.Pointer\n\t_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)\n\tif e != 0 {\n\t\treturn e\n\t}\n\treturn nil\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// +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} else {\n\t\treturn unsafe.Pointer(_zero)\n\t}\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\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\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 && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\t\tif e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts := 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\t\tif e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\tcontinue\n\t\t} else if e != nil {\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tdestsiz -= s\n\t\tif destsiz < 0 {\n\t\t\tdestsiz = 0\n\t\t}\n\t\td = initxattrdest(dest, s)\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// +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// +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_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,darwin\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_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                            = 0x28\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_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\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                  = 0x41c7ff00\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_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\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                     = 0x4008426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETFNR                        = 0x8008427e\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8008426d\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\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\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                  = 0xf5\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_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                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\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\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\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_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\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_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_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\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_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_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\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_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_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 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                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\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_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\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_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\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_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_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\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_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_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\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_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_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\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_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\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\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\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                      = 0xc01c697b\n\tSIOCGETVLAN                       = 0xc020697f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALTMTU                     = 0xc0206948\n\tSIOCGIFASYNCMAP                   = 0xc020697c\n\tSIOCGIFBOND                       = 0xc0206947\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020695b\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDEVMTU                     = 0xc0206944\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFKPI                        = 0xc0206987\n\tSIOCGIFMAC                        = 0xc0206982\n\tSIOCGIFMEDIA                      = 0xc0286938\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\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCIFCREATE                      = 0xc0206978\n\tSIOCIFCREATE2                     = 0xc020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6981\n\tSIOCRSLVMULTI                     = 0xc008693b\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETVLAN                       = 0x8020697e\n\tSIOCSHIWAT                        = 0x80047300\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_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_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\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                  = 0x40087458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCDSIMICROCODE                  = 0x20007455\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\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                          = 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                     = 0x40087459\n\tTIOCUCNTL                         = 0x80047466\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\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                          = 0x20\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_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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                            = 0x28\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_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\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                  = 0x41c7ff00\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_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\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\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\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                  = 0xf5\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_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                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\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\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\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_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\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_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_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\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_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_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\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_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_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 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                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\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_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\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_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\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_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_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\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_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_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\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_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_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\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_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\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\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\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\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\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\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\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_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_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\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\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_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_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,darwin\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_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                            = 0x28\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_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\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                  = 0x41c7ff00\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_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\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\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\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                  = 0xf5\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_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                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\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\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\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_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\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_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_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\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_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_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\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_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_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 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                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\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_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\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_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\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_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_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\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_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_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\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_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_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\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_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\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\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\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\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\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\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\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_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_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\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\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_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// +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                            = 0x28\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_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tAF_UTUN                           = 0x26\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                  = 0x41c7ff00\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_UUID                     = 0x40000\n\tATTR_VOL_VALIDMASK                = 0xf007ffff\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\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\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                  = 0xf5\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_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                   = 0xf\n\tEVFILT_THREADMARKER               = 0xf\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\tF_ADDFILESIGS                     = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM        = 0x53\n\tF_ADDFILESIGS_RETURN              = 0x61\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_GETPROTECTIONCLASS              = 0x3f\n\tF_GETPROTECTIONLEVEL              = 0x4d\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_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_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\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_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_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                = 0x300\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_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_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVTCLASS                   = 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                       = 0x24\n\tIPV6_UNICAST_HOPS                 = 0x4\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_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\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_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\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_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_ROOTFS                        = 0x4000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UNKNOWNPERMISSIONS            = 0x200000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x17f0f5ff\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_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_IFLIST                     = 0x3\n\tNET_RT_IFLIST2                    = 0x6\n\tNET_RT_MAXID                      = 0xa\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_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_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\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_DELCLONE                      = 0x80\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_IFREF                         = 0x4000000\n\tRTF_IFSCOPE                       = 0x1000000\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\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSCM_TIMESTAMP_MONOTONIC           = 0x4\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\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\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\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\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_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_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\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\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_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// +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\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                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\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\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_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\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\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_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_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_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_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_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_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_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_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_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                     = 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_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\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_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf000\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                    = 0x118e72\n\tIFF_DEBUG                         = 0x4\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_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_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\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_FAITH                        = 0x1d\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_IPSEC_POLICY                 = 0x1c\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_FAITH                          = 0x16\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_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x15\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_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x6\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\tSIOCADDRT                         = 0x8040720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDELRT                         = 0x8040720b\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\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\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_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\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\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\tTIOCGSIZE                         = 0x40087468\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\tTIOCSSIZE                         = 0x80087467\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\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\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\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\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\tEUNUSED94       = syscall.Errno(0x5e)\n\tEUNUSED95       = syscall.Errno(0x5f)\n\tEUNUSED96       = syscall.Errno(0x60)\n\tEUNUSED97       = syscall.Errno(0x61)\n\tEUNUSED98       = syscall.Errno(0x62)\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{94, \"EUNUSED94\", \"unknown error: 94\"},\n\t{95, \"EUNUSED95\", \"unknown error: 95\"},\n\t{96, \"EUNUSED96\", \"unknown error: 96\"},\n\t{97, \"EUNUSED97\", \"unknown error: 97\"},\n\t{98, \"EUNUSED98\", \"unknown error: 98\"},\n\t{99, \"ELAST\", \"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// +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\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\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                       = 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_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x113\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_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_SEP                    = 0x21\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\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\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_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_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\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                       = 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\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\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\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_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_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\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\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_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\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_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\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_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_SESS_CWV              = 0x42a\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\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(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, \"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\", \"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}\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// +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\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\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                       = 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_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x113\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_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_SEP                    = 0x21\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\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\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_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_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\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                       = 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\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\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\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_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_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\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\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_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\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_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\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_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_SESS_CWV              = 0x42a\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\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(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, \"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\", \"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}\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// +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\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\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_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_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_PPP_WITHDIRECTION    = 0xa6\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                     = 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_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_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_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_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                = 0xc\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\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_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_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\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_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_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_SEP                    = 0x21\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_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_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_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\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\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_MAX_SOURCE_FILTER           = 0x400\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MIN_MEMBERSHIPS             = 0x1f\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_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_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\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_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\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_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0x2d8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VISFLAGMASK                = 0x3fef0ffff\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_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_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\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                       = 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_CACHING_CONTEXT             = 0x1\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_NORTREF                     = 0x2\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_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                   = 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\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\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\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\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\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_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_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_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_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\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\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_FASTOPEN                   = 0x401\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_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_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\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\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\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(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, \"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\", \"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}\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// +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\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\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                       = 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_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x113\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_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_SEP                    = 0x21\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\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\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_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_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\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                       = 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\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\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\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_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_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\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\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_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\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_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\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_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_SESS_CWV              = 0x42a\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\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(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, \"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\", \"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}\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.go; DO NOT EDIT.\n\n// +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                                      = 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_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\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_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\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\tBALLOON_KVM_MAGIC                           = 0x13661366\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_ADJ_ROOM_ENCAP_L2_MASK                  = 0xff\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                 = 0x38\n\tBPF_ALU                                     = 0x4\n\tBPF_ALU64                                   = 0x7\n\tBPF_AND                                     = 0x50\n\tBPF_ANY                                     = 0x0\n\tBPF_ARSH                                    = 0xc0\n\tBPF_B                                       = 0x10\n\tBPF_BUILD_ID_SIZE                           = 0x14\n\tBPF_CALL                                    = 0x80\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_DIV                                     = 0x30\n\tBPF_DW                                      = 0x18\n\tBPF_END                                     = 0xd0\n\tBPF_EXIST                                   = 0x2\n\tBPF_EXIT                                    = 0x90\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG         = 0x1\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP          = 0x4\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL     = 0x2\n\tBPF_FROM_BE                                 = 0x8\n\tBPF_FROM_LE                                 = 0x0\n\tBPF_FS_MAGIC                                = 0xcafe4a11\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_FIXED_GSO                    = 0x1\n\tBPF_F_ALLOW_MULTI                           = 0x2\n\tBPF_F_ALLOW_OVERRIDE                        = 0x1\n\tBPF_F_ANY_ALIGNMENT                         = 0x2\n\tBPF_F_CLONE                                 = 0x200\n\tBPF_F_CTXLEN_MASK                           = 0xfffff00000000\n\tBPF_F_CURRENT_CPU                           = 0xffffffff\n\tBPF_F_CURRENT_NETNS                         = -0x1\n\tBPF_F_DONT_FRAGMENT                         = 0x4\n\tBPF_F_FAST_STACK_CMP                        = 0x200\n\tBPF_F_HDR_FIELD_MASK                        = 0xf\n\tBPF_F_INDEX_MASK                            = 0xffffffff\n\tBPF_F_INGRESS                               = 0x1\n\tBPF_F_INVALIDATE_HASH                       = 0x2\n\tBPF_F_LOCK                                  = 0x4\n\tBPF_F_MARK_ENFORCE                          = 0x40\n\tBPF_F_MARK_MANGLED_0                        = 0x20\n\tBPF_F_MMAPABLE                              = 0x400\n\tBPF_F_NO_COMMON_LRU                         = 0x2\n\tBPF_F_NO_PREALLOC                           = 0x1\n\tBPF_F_NUMA_NODE                             = 0x4\n\tBPF_F_PSEUDO_HDR                            = 0x10\n\tBPF_F_QUERY_EFFECTIVE                       = 0x1\n\tBPF_F_RDONLY                                = 0x8\n\tBPF_F_RDONLY_PROG                           = 0x80\n\tBPF_F_RECOMPUTE_CSUM                        = 0x1\n\tBPF_F_REPLACE                               = 0x4\n\tBPF_F_REUSE_STACKID                         = 0x400\n\tBPF_F_SEQ_NUMBER                            = 0x8\n\tBPF_F_SKIP_FIELD_MASK                       = 0xff\n\tBPF_F_STACK_BUILD_ID                        = 0x20\n\tBPF_F_STRICT_ALIGNMENT                      = 0x1\n\tBPF_F_SYSCTL_BASE_NAME                      = 0x1\n\tBPF_F_TEST_RND_HI32                         = 0x4\n\tBPF_F_TEST_STATE_FREQ                       = 0x8\n\tBPF_F_TUNINFO_IPV6                          = 0x1\n\tBPF_F_USER_BUILD_ID                         = 0x800\n\tBPF_F_USER_STACK                            = 0x100\n\tBPF_F_WRONLY                                = 0x10\n\tBPF_F_WRONLY_PROG                           = 0x100\n\tBPF_F_ZERO_CSUM_TX                          = 0x2\n\tBPF_F_ZERO_SEED                             = 0x40\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_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_LSH                                     = 0x60\n\tBPF_MAJOR_VERSION                           = 0x1\n\tBPF_MAXINSNS                                = 0x1000\n\tBPF_MEM                                     = 0x60\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_NOEXIST                                 = 0x1\n\tBPF_OBJ_NAME_LEN                            = 0x10\n\tBPF_OR                                      = 0x40\n\tBPF_PSEUDO_CALL                             = 0x1\n\tBPF_PSEUDO_MAP_FD                           = 0x1\n\tBPF_PSEUDO_MAP_VALUE                        = 0x2\n\tBPF_RET                                     = 0x6\n\tBPF_RSH                                     = 0x70\n\tBPF_SK_STORAGE_GET_F_CREATE                 = 0x1\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                   = 0xf\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG                = 0x2\n\tBPF_SOCK_OPS_RTO_CB_FLAG                    = 0x1\n\tBPF_SOCK_OPS_RTT_CB_FLAG                    = 0x8\n\tBPF_SOCK_OPS_STATE_CB_FLAG                  = 0x4\n\tBPF_ST                                      = 0x2\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_XOR                                     = 0xa0\n\tBRKINT                                      = 0x2\n\tBS0                                         = 0x0\n\tBTRFS_SUPER_MAGIC                           = 0x9123683e\n\tBTRFS_TEST_MAGIC                            = 0x73727279\n\tCAN_BCM                                     = 0x2\n\tCAN_EFF_FLAG                                = 0x80000000\n\tCAN_EFF_ID_BITS                             = 0x1d\n\tCAN_EFF_MASK                                = 0x1fffffff\n\tCAN_ERR_FLAG                                = 0x20000000\n\tCAN_ERR_MASK                                = 0x1fffffff\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_MCNET                                   = 0x5\n\tCAN_MTU                                     = 0x10\n\tCAN_NPROTO                                  = 0x8\n\tCAN_RAW                                     = 0x1\n\tCAN_RAW_FILTER_MAX                          = 0x200\n\tCAN_RTR_FLAG                                = 0x40000000\n\tCAN_SFF_ID_BITS                             = 0xb\n\tCAN_SFF_MASK                                = 0x7ff\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_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                                = 0x25\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_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\tCFLUSH                                      = 0xf\n\tCGROUP2_SUPER_MAGIC                         = 0x63677270\n\tCGROUP_SUPER_MAGIC                          = 0x27e0eb\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_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_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_GENL_MCGRP_CONFIG_NAME              = \"config\"\n\tDEVLINK_GENL_NAME                           = \"devlink\"\n\tDEVLINK_GENL_VERSION                        = 0x1\n\tDEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14\n\tDEVPTS_SUPER_MAGIC                          = 0x1cd1\n\tDMA_BUF_MAGIC                               = 0x444d4142\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\tECRYPTFS_SUPER_MAGIC                        = 0xf15f\n\tEFD_SEMAPHORE                               = 0x1\n\tEFIVARFS_MAGIC                              = 0xde5e81e4\n\tEFS_SUPER_MAGIC                             = 0x414a53\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\tEROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2\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_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_ECONET                                = 0x18\n\tETH_P_EDSA                                  = 0xdada\n\tETH_P_ERSPAN                                = 0x88be\n\tETH_P_ERSPAN2                               = 0x22eb\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_MOBITEX                               = 0x15\n\tETH_P_MPLS_MC                               = 0x8848\n\tETH_P_MPLS_UC                               = 0x8847\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_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_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\tEXABYTE_ENABLE_NEST                         = 0xf0\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_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_EVENT_INFO_TYPE_FID                     = 0x1\n\tFAN_EVENT_METADATA_LEN                      = 0x18\n\tFAN_EVENT_ON_CHILD                          = 0x8000000\n\tFAN_MARK_ADD                                = 0x1\n\tFAN_MARK_DONT_FOLLOW                        = 0x4\n\tFAN_MARK_FILESYSTEM                         = 0x100\n\tFAN_MARK_FLUSH                              = 0x80\n\tFAN_MARK_IGNORED_MASK                       = 0x20\n\tFAN_MARK_IGNORED_SURV_MODIFY                = 0x40\n\tFAN_MARK_INODE                              = 0x0\n\tFAN_MARK_MOUNT                              = 0x10\n\tFAN_MARK_ONLYDIR                            = 0x8\n\tFAN_MARK_REMOVE                             = 0x2\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_ONDIR                                   = 0x40000000\n\tFAN_OPEN                                    = 0x20\n\tFAN_OPEN_EXEC                               = 0x1000\n\tFAN_OPEN_EXEC_PERM                          = 0x40000\n\tFAN_OPEN_PERM                               = 0x10000\n\tFAN_Q_OVERFLOW                              = 0x4000\n\tFAN_REPORT_FID                              = 0x200\n\tFAN_REPORT_TID                              = 0x100\n\tFAN_UNLIMITED_MARKS                         = 0x20\n\tFAN_UNLIMITED_QUEUE                         = 0x10\n\tFD_CLOEXEC                                  = 0x1\n\tFD_SETSIZE                                  = 0x400\n\tFF0                                         = 0x0\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_XTS                    = 0x1\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_FLAGS_VALID                  = 0xf\n\tFSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4\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_ENCRYPTION_MODE_SPECK128_256_CTS         = 0x8\n\tFS_ENCRYPTION_MODE_SPECK128_256_XTS         = 0x7\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_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                       = 0xf\n\tFS_VERITY_FL                                = 0x100000\n\tFS_VERITY_HASH_ALG_SHA256                   = 0x1\n\tFS_VERITY_HASH_ALG_SHA512                   = 0x2\n\tFUTEXFS_SUPER_MAGIC                         = 0xbad1dea\n\tF_ADD_SEALS                                 = 0x409\n\tF_DUPFD                                     = 0x0\n\tF_DUPFD_CLOEXEC                             = 0x406\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_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\tHOSTFS_SUPER_MAGIC                          = 0xc0ffee\n\tHPFS_SUPER_MAGIC                            = 0xf995e849\n\tHUGETLBFS_MAGIC                             = 0x958458f6\n\tIBSHIFT                                     = 0x10\n\tICMPV6_FILTER                               = 0x1\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                                     = 0xa\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_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\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_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_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_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_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_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_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_RECVERR                                  = 0xb\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\tIUTF8                                       = 0x4000\n\tIXANY                                       = 0x800\n\tJFFS2_SUPER_MAGIC                           = 0x72b6\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_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_S390                             = 0x160000\n\tKEXEC_ARCH_SH                               = 0x2a0000\n\tKEXEC_ARCH_X86_64                           = 0x3e0000\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\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_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\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\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_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\tLO_KEY_SIZE                                 = 0x20\n\tLO_NAME_SIZE                                = 0x40\n\tMADV_COLD                                   = 0x14\n\tMADV_DODUMP                                 = 0x11\n\tMADV_DOFORK                                 = 0xb\n\tMADV_DONTDUMP                               = 0x10\n\tMADV_DONTFORK                               = 0xa\n\tMADV_DONTNEED                               = 0x4\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_RANDOM                                 = 0x1\n\tMADV_REMOVE                                 = 0x9\n\tMADV_SEQUENTIAL                             = 0x2\n\tMADV_UNMERGEABLE                            = 0xd\n\tMADV_WILLNEED                               = 0x3\n\tMADV_WIPEONFORK                             = 0x12\n\tMAP_FILE                                    = 0x0\n\tMAP_FIXED                                   = 0x10\n\tMAP_FIXED_NOREPLACE                         = 0x100000\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\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                               = 0x3f\n\tMFD_HUGE_SHIFT                              = 0x1a\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\tMODULE_INIT_IGNORE_MODVERSIONS              = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC                 = 0x2\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_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_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_INODE_FS_MAGIC                          = 0x11307854\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\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                           = 0xc\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_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\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_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\tNSFS_MAGIC                                  = 0x6e736673\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_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\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\tPIPEFS_MAGIC                                = 0x50495045\n\tPPC_CMM_MAGIC                               = 0xc7571590\n\tPPPIOCGNPMODE                               = 0xc008744c\n\tPPPIOCNEWUNIT                               = 0xc004743e\n\tPRIO_PGRP                                   = 0x1\n\tPRIO_PROCESS                                = 0x0\n\tPRIO_USER                                   = 0x2\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_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_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_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_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_MPX_DISABLE_MANAGEMENT                   = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT                    = 0x2b\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_RESET_KEYS                           = 0x36\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_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_SPECULATION_CTRL                     = 0x35\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_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_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_TAGGED_ADDR_ENABLE                       = 0x1\n\tPR_TASK_PERF_EVENTS_DISABLE                 = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE                  = 0x20\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\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_SYSCALL_INFO                     = 0x420e\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_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\tQNX4_SUPER_MAGIC                            = 0x2f\n\tQNX6_SUPER_MAGIC                            = 0x68191122\n\tRAMFS_MAGIC                                 = 0x858458f6\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                           = 0xf\n\tRTAX_FEATURE_SACK                           = 0x2\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                                     = 0x1e\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_IRQF                                    = 0x80\n\tRTC_MAX_FREQ                                = 0x2000\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_DELCHAIN                                = 0x65\n\tRTM_DELLINK                                 = 0x11\n\tRTM_DELLINKPROP                             = 0x6d\n\tRTM_DELMDB                                  = 0x55\n\tRTM_DELNEIGH                                = 0x1d\n\tRTM_DELNETCONF                              = 0x51\n\tRTM_DELNEXTHOP                              = 0x69\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_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_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_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_GETVLAN                                 = 0x72\n\tRTM_MAX                                     = 0x73\n\tRTM_NEWACTION                               = 0x30\n\tRTM_NEWADDR                                 = 0x14\n\tRTM_NEWADDRLABEL                            = 0x48\n\tRTM_NEWCACHEREPORT                          = 0x60\n\tRTM_NEWCHAIN                                = 0x64\n\tRTM_NEWLINK                                 = 0x10\n\tRTM_NEWLINKPROP                             = 0x6c\n\tRTM_NEWMDB                                  = 0x54\n\tRTM_NEWNDUSEROPT                            = 0x44\n\tRTM_NEWNEIGH                                = 0x1c\n\tRTM_NEWNEIGHTBL                             = 0x40\n\tRTM_NEWNETCONF                              = 0x50\n\tRTM_NEWNEXTHOP                              = 0x68\n\tRTM_NEWNSID                                 = 0x58\n\tRTM_NEWNVLAN                                = 0x70\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_NR_FAMILIES                             = 0x19\n\tRTM_NR_MSGTYPES                             = 0x64\n\tRTM_SETDCB                                  = 0x4f\n\tRTM_SETLINK                                 = 0x13\n\tRTM_SETNEIGHTBL                             = 0x43\n\tRTNH_ALIGNTO                                = 0x4\n\tRTNH_COMPARE_MASK                           = 0x19\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_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_KERNEL                               = 0x2\n\tRTPROT_MROUTED                              = 0x11\n\tRTPROT_MRT                                  = 0xa\n\tRTPROT_NTK                                  = 0xf\n\tRTPROT_OSPF                                 = 0xbc\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_DSYNC                                   = 0x2\n\tRWF_HIPRI                                   = 0x1\n\tRWF_NOWAIT                                  = 0x8\n\tRWF_SUPPORTED                               = 0x1f\n\tRWF_SYNC                                    = 0x4\n\tRWF_WRITE_LIFE_NOT_SET                      = 0x0\n\tSCM_CREDENTIALS                             = 0x2\n\tSCM_RIGHTS                                  = 0x1\n\tSCM_TIMESTAMP                               = 0x1d\n\tSC_LOG_FLUSH                                = 0x100000\n\tSECCOMP_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 0x1\n\tSECURITYFS_MAGIC                            = 0x73636673\n\tSELINUX_MAGIC                               = 0xf97cff8c\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\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\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\tSMB_SUPER_MAGIC                             = 0x517b\n\tSOCKFS_MAGIC                                = 0x534f434b\n\tSOCK_DCCP                                   = 0x6\n\tSOCK_IOC_TYPE                               = 0x89\n\tSOCK_PACKET                                 = 0xa\n\tSOCK_RAW                                    = 0x3\n\tSOCK_RDM                                    = 0x4\n\tSOCK_SEQPACKET                              = 0x5\n\tSOL_AAL                                     = 0x109\n\tSOL_ALG                                     = 0x117\n\tSOL_ATM                                     = 0x108\n\tSOL_CAIF                                    = 0x116\n\tSOL_CAN_BASE                                = 0x64\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_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_TCP                                     = 0x6\n\tSOL_TIPC                                    = 0x10f\n\tSOL_TLS                                     = 0x11a\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_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_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_ENCRYPTED                        = 0x800\n\tSTATX_ATTR_IMMUTABLE                        = 0x10\n\tSTATX_ATTR_NODUMP                           = 0x40\n\tSTATX_ATTR_VERITY                           = 0x100000\n\tSTATX_BASIC_STATS                           = 0x7ff\n\tSTATX_BLOCKS                                = 0x400\n\tSTATX_BTIME                                 = 0x800\n\tSTATX_CTIME                                 = 0x80\n\tSTATX_GID                                   = 0x10\n\tSTATX_INO                                   = 0x100\n\tSTATX_MODE                                  = 0x2\n\tSTATX_MTIME                                 = 0x40\n\tSTATX_NLINK                                 = 0x4\n\tSTATX_SIZE                                  = 0x200\n\tSTATX_TYPE                                  = 0x1\n\tSTATX_UID                                   = 0x8\n\tSTATX__RESERVED                             = 0x80000000\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                           = 0xa\n\tTCIFLUSH                                    = 0x0\n\tTCIOFF                                      = 0x2\n\tTCIOFLUSH                                   = 0x2\n\tTCION                                       = 0x3\n\tTCOFLUSH                                    = 0x1\n\tTCOOFF                                      = 0x0\n\tTCOON                                       = 0x1\n\tTCP_BPF_IW                                  = 0x3e9\n\tTCP_BPF_SNDCWND_CLAMP                       = 0x3ea\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_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_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_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\tUDF_SUPER_MAGIC                             = 0x15013346\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\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_PORT_ANY                             = 0xffffffff\n\tVM_SOCKETS_INVALID_VERSION                  = 0xffffffff\n\tVQUIT                                       = 0x1\n\tVT0                                         = 0x0\n\tWALL                                        = 0x40000000\n\tWCLONE                                      = 0x80000000\n\tWCONTINUED                                  = 0x8\n\tWDIOC_SETPRETIMEOUT                         = 0xc0045708\n\tWDIOC_SETTIMEOUT                            = 0xc0045706\n\tWEXITED                                     = 0x4\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                              = 0xf\n\tXDP_FLAGS_MODES                             = 0xe\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_RING_NEED_WAKEUP                        = 0x1\n\tXDP_RX_RING                                 = 0x2\n\tXDP_SHARED_UMEM                             = 0x1\n\tXDP_STATISTICS                              = 0x7\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_UNALIGNED_CHUNK_FLAG               = 0x1\n\tXDP_USE_NEED_WAKEUP                         = 0x8\n\tXDP_ZEROCOPY                                = 0x4\n\tXENFS_SUPER_MAGIC                           = 0xabba1974\n\tXFS_SUPER_MAGIC                             = 0x58465342\n\tZ3FOLD_MAGIC                                = 0x33\n\tZONEFS_MAGIC                                = 0x5a4f4653\n\tZSMALLOC_MAGIC                              = 0x58295829\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/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\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\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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)\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/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build amd64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\n\tISIG                             = 0x1\n\tIUCLC                            = 0x200\n\tIXOFF                            = 0x1000\n\tIXON                             = 0x400\n\tMAP_32BIT                        = 0x40\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\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\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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)\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/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tESR_MAGIC                        = 0x45535201\n\tEXTPROC                          = 0x10000\n\tEXTRA_MAGIC                      = 0x45585401\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFPSIMD_MAGIC                     = 0x46508001\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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\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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1e\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1e\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mips64le,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1e\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build mipsle,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x100\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x80\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1e\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\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_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)\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_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build ppc64le,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x4000\n\tICANON                           = 0x100\n\tIEXTEN                           = 0x400\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x4\n\tONLCR                            = 0x2\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build riscv64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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)\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/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build s390x,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKRRPART                        = 0x125f\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\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\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\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x80000\n\tIN_NONBLOCK                      = 0x800\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x7b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0xb703\n\tNS_GET_OWNER_UID                 = 0xb704\n\tNS_GET_PARENT                    = 0xb702\n\tNS_GET_USERNS                    = 0xb701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_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_TIMESTAMPING                 = 0x25\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x36\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3a\n\tSCM_TIMESTAMPNS                  = 0x23\n\tSCM_TXTIME                       = 0x3d\n\tSCM_WIFI_STATUS                  = 0x29\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_BUSY_POLL                     = 0x2e\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\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_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERSEC                       = 0x1f\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\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_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)\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/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build sparc64,linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/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\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\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\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\tEPOLL_CLOEXEC                    = 0x400000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\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\tHUPCL                            = 0x400\n\tICANON                           = 0x2\n\tIEXTEN                           = 0x8000\n\tIN_CLOEXEC                       = 0x400000\n\tIN_NONBLOCK                      = 0x4000\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID   = 0x200007b9\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\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_NSTYPE                    = 0x2000b703\n\tNS_GET_OWNER_UID                 = 0x2000b704\n\tNS_GET_PARENT                    = 0x2000b702\n\tNS_GET_USERNS                    = 0x2000b701\n\tOLCUC                            = 0x2\n\tONLCR                            = 0x4\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\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\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\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_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_TIMESTAMPING                 = 0x23\n\tSCM_TIMESTAMPING_OPT_STATS       = 0x38\n\tSCM_TIMESTAMPING_PKTINFO         = 0x3c\n\tSCM_TIMESTAMPNS                  = 0x21\n\tSCM_TXTIME                       = 0x3f\n\tSCM_WIFI_STATUS                  = 0x25\n\tSFD_CLOEXEC                      = 0x400000\n\tSFD_NONBLOCK                     = 0x4000\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_BUSY_POLL                     = 0x30\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_COOKIE                        = 0x3b\n\tSO_DETACH_REUSEPORT_BPF          = 0x47\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_NOFCS                         = 0x27\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERGROUPS                    = 0x3d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_RCVTIMEO_NEW                  = 0x44\n\tSO_RCVTIMEO_OLD                  = 0x2000\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_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__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// +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\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// +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\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// +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\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// +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\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// +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\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_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_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\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\tDIOCOSFPFLUSH                     = 0x2000444e\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_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\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\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_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_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_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_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = -0x7\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_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\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_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\tIFA_ROUTE                         = 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_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_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_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_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_DIVERT_INIT               = 0x2\n\tIPPROTO_DIVERT_RESP               = 0x1\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_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\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_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_DIVERTFL                       = 0x1022\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_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_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\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_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\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_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_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMSG_BCAST                         = 0x100\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_MAXID                      = 0x6\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\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_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\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\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\tPT_MASK                           = 0x3ff000\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_NOFILE                     = 0x8\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_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xb\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\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_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x10f808\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_SOURCE                        = 0x20000\n\tRTF_STATIC                        = 0x800\n\tRTF_TUNNEL                        = 0x100000\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\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_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\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\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\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCALIFADDR                      = 0x8218691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8054693c\n\tSIOCBRDGADDS                      = 0x80546941\n\tSIOCBRDGARL                       = 0x806e694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8054693d\n\tSIOCBRDGDELS                      = 0x80546942\n\tSIOCBRDGFLUSH                     = 0x80546948\n\tSIOCBRDGFRL                       = 0x806e694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc054693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGSIFS                     = 0xc054693c\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0546942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80546955\n\tSIOCBRDGSIFFLGS                   = 0x8054693f\n\tSIOCBRDGSIFPRIO                   = 0x80546954\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8218691e\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFASYNCMAP                   = 0xc020697c\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\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFTIMESLOT                   = 0xc0206986\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFADDR                      = 0xc218691d\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFMEDIA                      = 0xc0206935\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFTIMESLOT                   = 0x80206985\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETID                       = 0x802069a6\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                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 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_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\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\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\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_MAXBURST                      = 0x4\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_NSTATES                       = 0xb\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\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\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\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\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\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\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(0x5b)\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\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\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\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, \"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\", \"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, \"ELAST\", \"not supported\"},\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_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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\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\tDIOCOSFPFLUSH                     = 0x2000444e\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\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_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_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_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_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x8\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                       = 0xf000\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_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_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\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\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_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\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                      = 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_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_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\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_LOCK                          = 0x8\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_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\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\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                    = 0xc0186941\n\tSIOCBRDGGFD                       = 0xc0186952\n\tSIOCBRDGGHT                       = 0xc0186951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0186953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0186950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0186946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80186940\n\tSIOCBRDGSFD                       = 0x80186952\n\tSIOCBRDGSHT                       = 0x80186951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80186953\n\tSIOCBRDGSPRI                      = 0x80186950\n\tSIOCBRDGSPROTO                    = 0x8018695a\n\tSIOCBRDGSTO                       = 0x80186945\n\tSIOCBRDGSTXHC                     = 0x80186959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\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\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\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\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\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSIOCSWGDPID                       = 0xc018695b\n\tSIOCSWGMAXFLOW                    = 0xc0186960\n\tSIOCSWGMAXGROUP                   = 0xc018695d\n\tSIOCSWSDPID                       = 0x8018695c\n\tSIOCSWSPORTNO                     = 0xc060695f\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_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_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\tTCP_MAXBURST                      = 0x4\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_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\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\tTIOCSTI                           = 0x80017472\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_MAXID                          = 0xc\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_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\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_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_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\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\tDIOCOSFPFLUSH                     = 0x2000444e\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_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\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\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_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_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_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_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = -0x7\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_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\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_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\tIFA_ROUTE                         = 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_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_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_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_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_DIVERT_INIT               = 0x2\n\tIPPROTO_DIVERT_RESP               = 0x1\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_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\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_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_DIVERTFL                       = 0x1022\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_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_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\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_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_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\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_MAXID                      = 0x6\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\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_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\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\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_NOFILE                     = 0x8\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_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xb\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\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_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x70f808\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_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\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\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\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_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\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\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\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCALIFADDR                      = 0x8218691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8054693c\n\tSIOCBRDGADDS                      = 0x80546941\n\tSIOCBRDGARL                       = 0x806e694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8054693d\n\tSIOCBRDGDELS                      = 0x80546942\n\tSIOCBRDGFLUSH                     = 0x80546948\n\tSIOCBRDGFRL                       = 0x806e694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc054693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGSIFS                     = 0xc054693c\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0546942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80546955\n\tSIOCBRDGSIFFLGS                   = 0x8054693f\n\tSIOCBRDGSIFPRIO                   = 0x80546954\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8218691e\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFASYNCMAP                   = 0xc020697c\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\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFTIMESLOT                   = 0xc0206986\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFADDR                      = 0xc218691d\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFASYNCMAP                   = 0x8020697d\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFMEDIA                      = 0xc0206935\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFTIMESLOT                   = 0x80206985\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\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_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_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\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\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_MAXBURST                      = 0x4\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_NSTATES                       = 0xb\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\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\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\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\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\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\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(0x5b)\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\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\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\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, \"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\", \"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, \"ELAST\", \"not supported\"},\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_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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\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\tDIOCOSFPFLUSH                     = 0x2000444e\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\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_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_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_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_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x8\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                       = 0xf000\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_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_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\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\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\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                      = 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_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_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\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\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                    = 0xc0186941\n\tSIOCBRDGGFD                       = 0xc0186952\n\tSIOCBRDGGHT                       = 0xc0186951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0186953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0186950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0186946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80186940\n\tSIOCBRDGSFD                       = 0x80186952\n\tSIOCBRDGSHT                       = 0x80186951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80186953\n\tSIOCBRDGSPRI                      = 0x80186950\n\tSIOCBRDGSPROTO                    = 0x8018695a\n\tSIOCBRDGSTO                       = 0x80186945\n\tSIOCBRDGSTXHC                     = 0x80186959\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\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\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSIOCSWGDPID                       = 0xc018695b\n\tSIOCSWGMAXFLOW                    = 0xc0186960\n\tSIOCSWGMAXGROUP                   = 0xc018695d\n\tSIOCSWSDPID                       = 0x8018695c\n\tSIOCSWSPORTNO                     = 0xc060695f\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_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_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\tTCP_MAXBURST                      = 0x4\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_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// +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\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\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\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_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\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_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_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                 = -0x3\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_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\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/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n// +build linux\n// +build 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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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 ptrace(PTRACE_GETREGSET, pid, uintptr(addr), uintptr(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 ptrace(PTRACE_SETREGSET, pid, uintptr(addr), uintptr(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// +build linux\n// +build 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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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// +build linux\n// +build 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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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// +build linux\n// +build 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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(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 ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n}\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// +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 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 fsync(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);\nint setrlimit64(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 uint, 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 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 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 Fsync(fd int) (err error) {\n\tr0, er := C.fsync(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 readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))\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 writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))\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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.setrlimit64(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// +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 uint, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, int(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 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 Fsync(fd int) (err error) {\n\t_, e1 := callfsync(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 readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callsetrlimit(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// +build aix,ppc64\n// +build !gccgo\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_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_fsync fsync \"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_setrlimit setrlimit \"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_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_fsync libc_fsync\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_setrlimit libc_setrlimit\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_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_fsync,\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_setrlimit,\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 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 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 callfsync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 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 callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 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// +build aix,ppc64\n// +build 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 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 fsync(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);\nint setrlimit(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)\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 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 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 callfsync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync(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 callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setrlimit(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_386.1_11.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,386,!go1.12\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 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 := Syscall6(SYS_GETXATTR, 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\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 := Syscall6(SYS_FGETXATTR, 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\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 := Syscall6(SYS_SETXATTR, 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\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 := Syscall6(SYS_FSETXATTR, 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\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(SYS_REMOVEXATTR, 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\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(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = 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, 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 := Syscall6(SYS_LISTXATTR, 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\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 := Syscall6(SYS_FLISTXATTR, 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\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 := Syscall(SYS_FCNTL, 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\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(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = 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 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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), 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 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 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 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(SYS_EXCHANGEDATA, 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\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 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 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 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, _, _ := RawSyscall(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 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 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 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)), 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 := Syscall(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 Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_GETDIRENTRIES64, 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 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 gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(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 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(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_FSTATAT64, 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_FSTATFS64, 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 getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT64, 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\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 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 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_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,386,go1.13\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 closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_closedir_trampoline()\n\n//go:linkname libc_closedir libc_closedir\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(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nfunc libc_readdir_r_trampoline()\n\n//go:linkname libc_readdir_r libc_readdir_r\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s",
    "content": "// go run mkasm_darwin.go 386\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.13\n\n#include \"textflag.h\"\nTEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nTEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nTEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,386,go1.12\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(funcPC(libc_getgroups_trampoline), 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\nfunc libc_getgroups_trampoline()\n\n//go:linkname libc_getgroups libc_getgroups\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(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgroups_trampoline()\n\n//go:linkname libc_setgroups libc_setgroups\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(funcPC(libc_wait4_trampoline), 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\nfunc libc_wait4_trampoline()\n\n//go:linkname libc_wait4 libc_wait4\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(funcPC(libc_accept_trampoline), 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\nfunc libc_accept_trampoline()\n\n//go:linkname libc_accept libc_accept\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(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_bind_trampoline()\n\n//go:linkname libc_bind libc_bind\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(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_connect_trampoline()\n\n//go:linkname libc_connect libc_connect\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(funcPC(libc_socket_trampoline), 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\nfunc libc_socket_trampoline()\n\n//go:linkname libc_socket libc_socket\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(funcPC(libc_getsockopt_trampoline), 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\nfunc libc_getsockopt_trampoline()\n\n//go:linkname libc_getsockopt libc_getsockopt\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(funcPC(libc_setsockopt_trampoline), 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\nfunc libc_setsockopt_trampoline()\n\n//go:linkname libc_setsockopt libc_setsockopt\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(funcPC(libc_getpeername_trampoline), 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\nfunc libc_getpeername_trampoline()\n\n//go:linkname libc_getpeername libc_getpeername\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(funcPC(libc_getsockname_trampoline), 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\nfunc libc_getsockname_trampoline()\n\n//go:linkname libc_getsockname libc_getsockname\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(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_shutdown_trampoline()\n\n//go:linkname libc_shutdown libc_shutdown\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(funcPC(libc_socketpair_trampoline), 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\nfunc libc_socketpair_trampoline()\n\n//go:linkname libc_socketpair libc_socketpair\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(funcPC(libc_recvfrom_trampoline), 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\nfunc libc_recvfrom_trampoline()\n\n//go:linkname libc_recvfrom libc_recvfrom\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(funcPC(libc_sendto_trampoline), 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\nfunc libc_sendto_trampoline()\n\n//go:linkname libc_sendto libc_sendto\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(funcPC(libc_recvmsg_trampoline), 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\nfunc libc_recvmsg_trampoline()\n\n//go:linkname libc_recvmsg libc_recvmsg\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(funcPC(libc_sendmsg_trampoline), 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\nfunc libc_sendmsg_trampoline()\n\n//go:linkname libc_sendmsg libc_sendmsg\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(funcPC(libc_kevent_trampoline), 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\nfunc libc_kevent_trampoline()\n\n//go:linkname libc_kevent libc_kevent\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(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_utimes_trampoline()\n\n//go:linkname libc_utimes libc_utimes\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(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_futimes_trampoline()\n\n//go:linkname libc_futimes libc_futimes\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(funcPC(libc_poll_trampoline), 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\nfunc libc_poll_trampoline()\n\n//go:linkname libc_poll libc_poll\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(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_madvise_trampoline()\n\n//go:linkname libc_madvise libc_madvise\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(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlock_trampoline()\n\n//go:linkname libc_mlock libc_mlock\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(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlockall_trampoline()\n\n//go:linkname libc_mlockall libc_mlockall\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(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mprotect_trampoline()\n\n//go:linkname libc_mprotect libc_mprotect\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(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_msync_trampoline()\n\n//go:linkname libc_msync libc_msync\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(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlock_trampoline()\n\n//go:linkname libc_munlock libc_munlock\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(funcPC(libc_munlockall_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlockall_trampoline()\n\n//go:linkname libc_munlockall libc_munlockall\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getattrlist_trampoline()\n\n//go:linkname libc_getattrlist libc_getattrlist\n//go:cgo_import_dynamic libc_getattrlist getattrlist \"/usr/lib/libSystem.B.dylib\"\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 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 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\nfunc libc_pipe_trampoline()\n\n//go:linkname libc_pipe libc_pipe\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(funcPC(libc_getxattr_trampoline), 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\nfunc libc_getxattr_trampoline()\n\n//go:linkname libc_getxattr libc_getxattr\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(funcPC(libc_fgetxattr_trampoline), 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\nfunc libc_fgetxattr_trampoline()\n\n//go:linkname libc_fgetxattr libc_fgetxattr\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(funcPC(libc_setxattr_trampoline), 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\nfunc libc_setxattr_trampoline()\n\n//go:linkname libc_setxattr libc_setxattr\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(funcPC(libc_fsetxattr_trampoline), 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\nfunc libc_fsetxattr_trampoline()\n\n//go:linkname libc_fsetxattr libc_fsetxattr\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(funcPC(libc_removexattr_trampoline), 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\nfunc libc_removexattr_trampoline()\n\n//go:linkname libc_removexattr libc_removexattr\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(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fremovexattr_trampoline()\n\n//go:linkname libc_fremovexattr libc_fremovexattr\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(funcPC(libc_listxattr_trampoline), 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\nfunc libc_listxattr_trampoline()\n\n//go:linkname libc_listxattr libc_listxattr\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(funcPC(libc_flistxattr_trampoline), 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\nfunc libc_flistxattr_trampoline()\n\n//go:linkname libc_flistxattr libc_flistxattr\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 setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setattrlist_trampoline()\n\n//go:linkname libc_setattrlist libc_setattrlist\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 fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), 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\nfunc libc_fcntl_trampoline()\n\n//go:linkname libc_fcntl libc_fcntl\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(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kill_trampoline()\n\n//go:linkname libc_kill libc_kill\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(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ioctl_trampoline()\n\n//go:linkname libc_ioctl libc_ioctl\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 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(funcPC(libc_sysctl_trampoline), 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\nfunc libc_sysctl_trampoline()\n\n//go:linkname libc_sysctl libc_sysctl\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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sendfile_trampoline()\n\n//go:linkname libc_sendfile libc_sendfile\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 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(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_access_trampoline()\n\n//go:linkname libc_access libc_access\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(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_adjtime_trampoline()\n\n//go:linkname libc_adjtime libc_adjtime\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(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chdir_trampoline()\n\n//go:linkname libc_chdir libc_chdir\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(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chflags_trampoline()\n\n//go:linkname libc_chflags libc_chflags\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(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chmod_trampoline()\n\n//go:linkname libc_chmod libc_chmod\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(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chown_trampoline()\n\n//go:linkname libc_chown libc_chown\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(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chroot_trampoline()\n\n//go:linkname libc_chroot libc_chroot\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(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_clock_gettime_trampoline()\n\n//go:linkname libc_clock_gettime libc_clock_gettime\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(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_close_trampoline()\n\n//go:linkname libc_close libc_close\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 Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup_trampoline()\n\n//go:linkname libc_dup libc_dup\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(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup2_trampoline()\n\n//go:linkname libc_dup2 libc_dup2\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(funcPC(libc_exchangedata_trampoline), 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\nfunc libc_exchangedata_trampoline()\n\n//go:linkname libc_exchangedata libc_exchangedata\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(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)\n\treturn\n}\n\nfunc libc_exit_trampoline()\n\n//go:linkname libc_exit libc_exit\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(funcPC(libc_faccessat_trampoline), 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\nfunc libc_faccessat_trampoline()\n\n//go:linkname libc_faccessat libc_faccessat\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(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchdir_trampoline()\n\n//go:linkname libc_fchdir libc_fchdir\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(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchflags_trampoline()\n\n//go:linkname libc_fchflags libc_fchflags\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(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchmod_trampoline()\n\n//go:linkname libc_fchmod libc_fchmod\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(funcPC(libc_fchmodat_trampoline), 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\nfunc libc_fchmodat_trampoline()\n\n//go:linkname libc_fchmodat libc_fchmodat\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(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchown_trampoline()\n\n//go:linkname libc_fchown libc_fchown\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(funcPC(libc_fchownat_trampoline), 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\nfunc libc_fchownat_trampoline()\n\n//go:linkname libc_fchownat libc_fchownat\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 Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_flock_trampoline()\n\n//go:linkname libc_flock libc_flock\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(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fpathconf_trampoline()\n\n//go:linkname libc_fpathconf libc_fpathconf\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(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fsync_trampoline()\n\n//go:linkname libc_fsync libc_fsync\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(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ftruncate_trampoline()\n\n//go:linkname libc_ftruncate libc_ftruncate\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 Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nfunc libc_getdtablesize_trampoline()\n\n//go:linkname libc_getdtablesize libc_getdtablesize\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(funcPC(libc_getegid_trampoline), 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nfunc libc_getegid_trampoline()\n\n//go:linkname libc_getegid libc_getegid\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(funcPC(libc_geteuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_geteuid_trampoline()\n\n//go:linkname libc_geteuid libc_geteuid\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(funcPC(libc_getgid_trampoline), 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nfunc libc_getgid_trampoline()\n\n//go:linkname libc_getgid libc_getgid\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(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpgid_trampoline()\n\n//go:linkname libc_getpgid libc_getpgid\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(funcPC(libc_getpgrp_trampoline), 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nfunc libc_getpgrp_trampoline()\n\n//go:linkname libc_getpgrp libc_getpgrp\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(funcPC(libc_getpid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nfunc libc_getpid_trampoline()\n\n//go:linkname libc_getpid libc_getpid\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(funcPC(libc_getppid_trampoline), 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nfunc libc_getppid_trampoline()\n\n//go:linkname libc_getppid libc_getppid\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(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpriority_trampoline()\n\n//go:linkname libc_getpriority libc_getpriority\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(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrlimit_trampoline()\n\n//go:linkname libc_getrlimit libc_getrlimit\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(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrusage_trampoline()\n\n//go:linkname libc_getrusage libc_getrusage\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(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getsid_trampoline()\n\n//go:linkname libc_getsid libc_getsid\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 Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_getuid_trampoline()\n\n//go:linkname libc_getuid libc_getuid\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(funcPC(libc_issetugid_trampoline), 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nfunc libc_issetugid_trampoline()\n\n//go:linkname libc_issetugid libc_issetugid\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(funcPC(libc_kqueue_trampoline), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kqueue_trampoline()\n\n//go:linkname libc_kqueue libc_kqueue\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(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lchown_trampoline()\n\n//go:linkname libc_lchown libc_lchown\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(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_link_trampoline()\n\n//go:linkname libc_link libc_link\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(funcPC(libc_linkat_trampoline), 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\nfunc libc_linkat_trampoline()\n\n//go:linkname libc_linkat libc_linkat\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(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_listen_trampoline()\n\n//go:linkname libc_listen libc_listen\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(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdir_trampoline()\n\n//go:linkname libc_mkdir libc_mkdir\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(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdirat_trampoline()\n\n//go:linkname libc_mkdirat libc_mkdirat\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(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkfifo_trampoline()\n\n//go:linkname libc_mkfifo libc_mkfifo\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(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mknod_trampoline()\n\n//go:linkname libc_mknod libc_mknod\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 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(funcPC(libc_open_trampoline), 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\nfunc libc_open_trampoline()\n\n//go:linkname libc_open libc_open\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(funcPC(libc_openat_trampoline), 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\nfunc libc_openat_trampoline()\n\n//go:linkname libc_openat libc_openat\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(funcPC(libc_pathconf_trampoline), 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\nfunc libc_pathconf_trampoline()\n\n//go:linkname libc_pathconf libc_pathconf\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(funcPC(libc_pread_trampoline), 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\nfunc libc_pread_trampoline()\n\n//go:linkname libc_pread libc_pread\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(funcPC(libc_pwrite_trampoline), 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\nfunc libc_pwrite_trampoline()\n\n//go:linkname libc_pwrite libc_pwrite\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(funcPC(libc_read_trampoline), 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\nfunc libc_read_trampoline()\n\n//go:linkname libc_read libc_read\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(funcPC(libc_readlink_trampoline), 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\nfunc libc_readlink_trampoline()\n\n//go:linkname libc_readlink libc_readlink\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(funcPC(libc_readlinkat_trampoline), 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\nfunc libc_readlinkat_trampoline()\n\n//go:linkname libc_readlinkat libc_readlinkat\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(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rename_trampoline()\n\n//go:linkname libc_rename libc_rename\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(funcPC(libc_renameat_trampoline), 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\nfunc libc_renameat_trampoline()\n\n//go:linkname libc_renameat libc_renameat\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(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_revoke_trampoline()\n\n//go:linkname libc_revoke libc_revoke\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(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rmdir_trampoline()\n\n//go:linkname libc_rmdir libc_rmdir\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, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), 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\nfunc libc_lseek_trampoline()\n\n//go:linkname libc_lseek libc_lseek\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(funcPC(libc_select_trampoline), 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\nfunc libc_select_trampoline()\n\n//go:linkname libc_select libc_select\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 Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setegid_trampoline()\n\n//go:linkname libc_setegid libc_setegid\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(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_seteuid_trampoline()\n\n//go:linkname libc_seteuid libc_seteuid\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(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgid_trampoline()\n\n//go:linkname libc_setgid libc_setgid\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(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setlogin_trampoline()\n\n//go:linkname libc_setlogin libc_setlogin\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(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpgid_trampoline()\n\n//go:linkname libc_setpgid libc_setpgid\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(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpriority_trampoline()\n\n//go:linkname libc_setpriority libc_setpriority\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(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setprivexec_trampoline()\n\n//go:linkname libc_setprivexec libc_setprivexec\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(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setregid_trampoline()\n\n//go:linkname libc_setregid libc_setregid\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(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setreuid_trampoline()\n\n//go:linkname libc_setreuid libc_setreuid\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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setrlimit_trampoline()\n\n//go:linkname libc_setrlimit libc_setrlimit\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"/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(funcPC(libc_setsid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setsid_trampoline()\n\n//go:linkname libc_setsid libc_setsid\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(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_settimeofday_trampoline()\n\n//go:linkname libc_settimeofday libc_settimeofday\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(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setuid_trampoline()\n\n//go:linkname libc_setuid libc_setuid\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(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_symlink_trampoline()\n\n//go:linkname libc_symlink libc_symlink\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(funcPC(libc_symlinkat_trampoline), 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\nfunc libc_symlinkat_trampoline()\n\n//go:linkname libc_symlinkat libc_symlinkat\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(funcPC(libc_sync_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sync_trampoline()\n\n//go:linkname libc_sync libc_sync\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(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_truncate_trampoline()\n\n//go:linkname libc_truncate libc_truncate\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(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nfunc libc_umask_trampoline()\n\n//go:linkname libc_umask libc_umask\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(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_undelete_trampoline()\n\n//go:linkname libc_undelete libc_undelete\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(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlink_trampoline()\n\n//go:linkname libc_unlink libc_unlink\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(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlinkat_trampoline()\n\n//go:linkname libc_unlinkat libc_unlinkat\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(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unmount_trampoline()\n\n//go:linkname libc_unmount libc_unmount\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(funcPC(libc_write_trampoline), 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\nfunc libc_write_trampoline()\n\n//go:linkname libc_write libc_write\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_syscall9(funcPC(libc_mmap_trampoline), 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\nfunc libc_mmap_trampoline()\n\n//go:linkname libc_mmap libc_mmap\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(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munmap_trampoline()\n\n//go:linkname libc_munmap libc_munmap\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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 := syscall_syscall6(funcPC(libc_ptrace_trampoline), 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\nfunc libc_ptrace_trampoline()\n\n//go:linkname libc_ptrace libc_ptrace\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 gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_gettimeofday_trampoline()\n\n//go:linkname libc_gettimeofday libc_gettimeofday\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 Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstat64_trampoline()\n\n//go:linkname libc_fstat64 libc_fstat64\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(funcPC(libc_fstatat64_trampoline), 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\nfunc libc_fstatat64_trampoline()\n\n//go:linkname libc_fstatat64 libc_fstatat64\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(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstatfs64_trampoline()\n\n//go:linkname libc_fstatfs64 libc_fstatfs64\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(funcPC(libc_getfsstat64_trampoline), 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\nfunc libc_getfsstat64_trampoline()\n\n//go:linkname libc_getfsstat64 libc_getfsstat64\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(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lstat64_trampoline()\n\n//go:linkname libc_lstat64 libc_lstat64\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 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(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_stat64_trampoline()\n\n//go:linkname libc_stat64 libc_stat64\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(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_statfs64_trampoline()\n\n//go:linkname libc_statfs64 libc_statfs64\n//go:cgo_import_dynamic libc_statfs64 statfs64 \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s",
    "content": "// go run mkasm_darwin.go 386\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.12\n\n#include \"textflag.h\"\nTEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nTEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nTEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nTEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nTEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nTEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nTEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nTEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nTEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nTEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nTEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nTEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nTEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nTEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nTEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nTEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nTEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nTEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nTEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nTEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nTEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nTEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nTEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nTEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nTEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nTEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nTEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nTEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nTEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getattrlist(SB)\nTEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nTEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nTEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nTEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nTEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nTEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nTEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nTEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nTEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nTEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nTEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nTEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nTEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nTEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nTEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nTEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nTEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nTEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nTEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nTEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nTEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nTEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nTEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nTEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nTEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nTEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nTEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nTEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nTEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nTEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nTEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nTEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nTEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nTEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nTEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nTEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nTEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nTEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nTEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nTEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nTEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nTEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nTEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nTEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nTEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nTEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nTEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nTEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nTEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nTEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nTEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nTEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nTEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nTEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nTEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nTEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nTEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nTEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nTEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nTEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nTEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nTEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nTEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nTEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nTEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nTEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nTEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nTEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nTEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nTEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nTEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nTEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nTEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nTEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nTEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nTEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nTEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nTEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nTEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nTEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nTEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nTEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nTEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nTEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nTEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nTEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrlimit(SB)\nTEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nTEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nTEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nTEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nTEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nTEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nTEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nTEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nTEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nTEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nTEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nTEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nTEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nTEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nTEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nTEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nTEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nTEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nTEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nTEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nTEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nTEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nTEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nTEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go",
    "content": "// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,amd64,!go1.12\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 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 := Syscall6(SYS_GETXATTR, 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\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 := Syscall6(SYS_FGETXATTR, 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\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 := Syscall6(SYS_SETXATTR, 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\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 := Syscall6(SYS_FSETXATTR, 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\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(SYS_REMOVEXATTR, 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\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(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = 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, 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 := Syscall6(SYS_LISTXATTR, 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\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 := Syscall6(SYS_FLISTXATTR, 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\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 := Syscall(SYS_FCNTL, 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\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(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = 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 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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SENDFILE, 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\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 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 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(SYS_EXCHANGEDATA, 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\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 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 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 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, _, _ := RawSyscall(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 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 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 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)), 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 := Syscall(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 Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_GETDIRENTRIES64, 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 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 gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(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 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(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_FSTATAT64, 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_FSTATFS64, 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 getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT64, 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\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 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 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_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go",
    "content": "// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,amd64,go1.13\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 closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_closedir_trampoline()\n\n//go:linkname libc_closedir libc_closedir\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(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nfunc libc_readdir_r_trampoline()\n\n//go:linkname libc_readdir_r libc_readdir_r\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s",
    "content": "// go run mkasm_darwin.go amd64\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.13\n\n#include \"textflag.h\"\nTEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nTEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nTEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64,go1.12 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// +build darwin,amd64,go1.12\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(funcPC(libc_getgroups_trampoline), 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\nfunc libc_getgroups_trampoline()\n\n//go:linkname libc_getgroups libc_getgroups\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(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgroups_trampoline()\n\n//go:linkname libc_setgroups libc_setgroups\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(funcPC(libc_wait4_trampoline), 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\nfunc libc_wait4_trampoline()\n\n//go:linkname libc_wait4 libc_wait4\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(funcPC(libc_accept_trampoline), 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\nfunc libc_accept_trampoline()\n\n//go:linkname libc_accept libc_accept\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(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_bind_trampoline()\n\n//go:linkname libc_bind libc_bind\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(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_connect_trampoline()\n\n//go:linkname libc_connect libc_connect\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(funcPC(libc_socket_trampoline), 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\nfunc libc_socket_trampoline()\n\n//go:linkname libc_socket libc_socket\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(funcPC(libc_getsockopt_trampoline), 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\nfunc libc_getsockopt_trampoline()\n\n//go:linkname libc_getsockopt libc_getsockopt\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(funcPC(libc_setsockopt_trampoline), 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\nfunc libc_setsockopt_trampoline()\n\n//go:linkname libc_setsockopt libc_setsockopt\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(funcPC(libc_getpeername_trampoline), 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\nfunc libc_getpeername_trampoline()\n\n//go:linkname libc_getpeername libc_getpeername\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(funcPC(libc_getsockname_trampoline), 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\nfunc libc_getsockname_trampoline()\n\n//go:linkname libc_getsockname libc_getsockname\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(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_shutdown_trampoline()\n\n//go:linkname libc_shutdown libc_shutdown\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(funcPC(libc_socketpair_trampoline), 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\nfunc libc_socketpair_trampoline()\n\n//go:linkname libc_socketpair libc_socketpair\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(funcPC(libc_recvfrom_trampoline), 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\nfunc libc_recvfrom_trampoline()\n\n//go:linkname libc_recvfrom libc_recvfrom\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(funcPC(libc_sendto_trampoline), 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\nfunc libc_sendto_trampoline()\n\n//go:linkname libc_sendto libc_sendto\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(funcPC(libc_recvmsg_trampoline), 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\nfunc libc_recvmsg_trampoline()\n\n//go:linkname libc_recvmsg libc_recvmsg\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(funcPC(libc_sendmsg_trampoline), 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\nfunc libc_sendmsg_trampoline()\n\n//go:linkname libc_sendmsg libc_sendmsg\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(funcPC(libc_kevent_trampoline), 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\nfunc libc_kevent_trampoline()\n\n//go:linkname libc_kevent libc_kevent\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(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_utimes_trampoline()\n\n//go:linkname libc_utimes libc_utimes\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(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_futimes_trampoline()\n\n//go:linkname libc_futimes libc_futimes\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(funcPC(libc_poll_trampoline), 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\nfunc libc_poll_trampoline()\n\n//go:linkname libc_poll libc_poll\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(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_madvise_trampoline()\n\n//go:linkname libc_madvise libc_madvise\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(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlock_trampoline()\n\n//go:linkname libc_mlock libc_mlock\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(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlockall_trampoline()\n\n//go:linkname libc_mlockall libc_mlockall\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(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mprotect_trampoline()\n\n//go:linkname libc_mprotect libc_mprotect\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(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_msync_trampoline()\n\n//go:linkname libc_msync libc_msync\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(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlock_trampoline()\n\n//go:linkname libc_munlock libc_munlock\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(funcPC(libc_munlockall_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlockall_trampoline()\n\n//go:linkname libc_munlockall libc_munlockall\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getattrlist_trampoline()\n\n//go:linkname libc_getattrlist libc_getattrlist\n//go:cgo_import_dynamic libc_getattrlist getattrlist \"/usr/lib/libSystem.B.dylib\"\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 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 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\nfunc libc_pipe_trampoline()\n\n//go:linkname libc_pipe libc_pipe\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(funcPC(libc_getxattr_trampoline), 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\nfunc libc_getxattr_trampoline()\n\n//go:linkname libc_getxattr libc_getxattr\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(funcPC(libc_fgetxattr_trampoline), 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\nfunc libc_fgetxattr_trampoline()\n\n//go:linkname libc_fgetxattr libc_fgetxattr\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(funcPC(libc_setxattr_trampoline), 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\nfunc libc_setxattr_trampoline()\n\n//go:linkname libc_setxattr libc_setxattr\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(funcPC(libc_fsetxattr_trampoline), 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\nfunc libc_fsetxattr_trampoline()\n\n//go:linkname libc_fsetxattr libc_fsetxattr\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(funcPC(libc_removexattr_trampoline), 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\nfunc libc_removexattr_trampoline()\n\n//go:linkname libc_removexattr libc_removexattr\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(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fremovexattr_trampoline()\n\n//go:linkname libc_fremovexattr libc_fremovexattr\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(funcPC(libc_listxattr_trampoline), 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\nfunc libc_listxattr_trampoline()\n\n//go:linkname libc_listxattr libc_listxattr\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(funcPC(libc_flistxattr_trampoline), 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\nfunc libc_flistxattr_trampoline()\n\n//go:linkname libc_flistxattr libc_flistxattr\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 setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setattrlist_trampoline()\n\n//go:linkname libc_setattrlist libc_setattrlist\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 fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), 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\nfunc libc_fcntl_trampoline()\n\n//go:linkname libc_fcntl libc_fcntl\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(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kill_trampoline()\n\n//go:linkname libc_kill libc_kill\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(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ioctl_trampoline()\n\n//go:linkname libc_ioctl libc_ioctl\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 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(funcPC(libc_sysctl_trampoline), 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\nfunc libc_sysctl_trampoline()\n\n//go:linkname libc_sysctl libc_sysctl\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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), 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\nfunc libc_sendfile_trampoline()\n\n//go:linkname libc_sendfile libc_sendfile\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 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(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_access_trampoline()\n\n//go:linkname libc_access libc_access\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(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_adjtime_trampoline()\n\n//go:linkname libc_adjtime libc_adjtime\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(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chdir_trampoline()\n\n//go:linkname libc_chdir libc_chdir\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(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chflags_trampoline()\n\n//go:linkname libc_chflags libc_chflags\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(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chmod_trampoline()\n\n//go:linkname libc_chmod libc_chmod\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(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chown_trampoline()\n\n//go:linkname libc_chown libc_chown\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(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chroot_trampoline()\n\n//go:linkname libc_chroot libc_chroot\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(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_clock_gettime_trampoline()\n\n//go:linkname libc_clock_gettime libc_clock_gettime\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(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_close_trampoline()\n\n//go:linkname libc_close libc_close\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 Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup_trampoline()\n\n//go:linkname libc_dup libc_dup\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(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup2_trampoline()\n\n//go:linkname libc_dup2 libc_dup2\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(funcPC(libc_exchangedata_trampoline), 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\nfunc libc_exchangedata_trampoline()\n\n//go:linkname libc_exchangedata libc_exchangedata\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(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)\n\treturn\n}\n\nfunc libc_exit_trampoline()\n\n//go:linkname libc_exit libc_exit\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(funcPC(libc_faccessat_trampoline), 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\nfunc libc_faccessat_trampoline()\n\n//go:linkname libc_faccessat libc_faccessat\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(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchdir_trampoline()\n\n//go:linkname libc_fchdir libc_fchdir\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(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchflags_trampoline()\n\n//go:linkname libc_fchflags libc_fchflags\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(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchmod_trampoline()\n\n//go:linkname libc_fchmod libc_fchmod\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(funcPC(libc_fchmodat_trampoline), 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\nfunc libc_fchmodat_trampoline()\n\n//go:linkname libc_fchmodat libc_fchmodat\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(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchown_trampoline()\n\n//go:linkname libc_fchown libc_fchown\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(funcPC(libc_fchownat_trampoline), 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\nfunc libc_fchownat_trampoline()\n\n//go:linkname libc_fchownat libc_fchownat\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 Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_flock_trampoline()\n\n//go:linkname libc_flock libc_flock\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(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fpathconf_trampoline()\n\n//go:linkname libc_fpathconf libc_fpathconf\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(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fsync_trampoline()\n\n//go:linkname libc_fsync libc_fsync\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(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ftruncate_trampoline()\n\n//go:linkname libc_ftruncate libc_ftruncate\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 Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nfunc libc_getdtablesize_trampoline()\n\n//go:linkname libc_getdtablesize libc_getdtablesize\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(funcPC(libc_getegid_trampoline), 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nfunc libc_getegid_trampoline()\n\n//go:linkname libc_getegid libc_getegid\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(funcPC(libc_geteuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_geteuid_trampoline()\n\n//go:linkname libc_geteuid libc_geteuid\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(funcPC(libc_getgid_trampoline), 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nfunc libc_getgid_trampoline()\n\n//go:linkname libc_getgid libc_getgid\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(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpgid_trampoline()\n\n//go:linkname libc_getpgid libc_getpgid\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(funcPC(libc_getpgrp_trampoline), 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nfunc libc_getpgrp_trampoline()\n\n//go:linkname libc_getpgrp libc_getpgrp\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(funcPC(libc_getpid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nfunc libc_getpid_trampoline()\n\n//go:linkname libc_getpid libc_getpid\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(funcPC(libc_getppid_trampoline), 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nfunc libc_getppid_trampoline()\n\n//go:linkname libc_getppid libc_getppid\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(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpriority_trampoline()\n\n//go:linkname libc_getpriority libc_getpriority\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(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrlimit_trampoline()\n\n//go:linkname libc_getrlimit libc_getrlimit\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(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrusage_trampoline()\n\n//go:linkname libc_getrusage libc_getrusage\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(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getsid_trampoline()\n\n//go:linkname libc_getsid libc_getsid\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 Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_getuid_trampoline()\n\n//go:linkname libc_getuid libc_getuid\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(funcPC(libc_issetugid_trampoline), 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nfunc libc_issetugid_trampoline()\n\n//go:linkname libc_issetugid libc_issetugid\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(funcPC(libc_kqueue_trampoline), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kqueue_trampoline()\n\n//go:linkname libc_kqueue libc_kqueue\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(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lchown_trampoline()\n\n//go:linkname libc_lchown libc_lchown\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(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_link_trampoline()\n\n//go:linkname libc_link libc_link\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(funcPC(libc_linkat_trampoline), 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\nfunc libc_linkat_trampoline()\n\n//go:linkname libc_linkat libc_linkat\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(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_listen_trampoline()\n\n//go:linkname libc_listen libc_listen\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(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdir_trampoline()\n\n//go:linkname libc_mkdir libc_mkdir\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(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdirat_trampoline()\n\n//go:linkname libc_mkdirat libc_mkdirat\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(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkfifo_trampoline()\n\n//go:linkname libc_mkfifo libc_mkfifo\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(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mknod_trampoline()\n\n//go:linkname libc_mknod libc_mknod\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 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(funcPC(libc_open_trampoline), 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\nfunc libc_open_trampoline()\n\n//go:linkname libc_open libc_open\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(funcPC(libc_openat_trampoline), 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\nfunc libc_openat_trampoline()\n\n//go:linkname libc_openat libc_openat\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(funcPC(libc_pathconf_trampoline), 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\nfunc libc_pathconf_trampoline()\n\n//go:linkname libc_pathconf libc_pathconf\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(funcPC(libc_pread_trampoline), 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\nfunc libc_pread_trampoline()\n\n//go:linkname libc_pread libc_pread\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(funcPC(libc_pwrite_trampoline), 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\nfunc libc_pwrite_trampoline()\n\n//go:linkname libc_pwrite libc_pwrite\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(funcPC(libc_read_trampoline), 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\nfunc libc_read_trampoline()\n\n//go:linkname libc_read libc_read\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(funcPC(libc_readlink_trampoline), 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\nfunc libc_readlink_trampoline()\n\n//go:linkname libc_readlink libc_readlink\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(funcPC(libc_readlinkat_trampoline), 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\nfunc libc_readlinkat_trampoline()\n\n//go:linkname libc_readlinkat libc_readlinkat\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(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rename_trampoline()\n\n//go:linkname libc_rename libc_rename\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(funcPC(libc_renameat_trampoline), 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\nfunc libc_renameat_trampoline()\n\n//go:linkname libc_renameat libc_renameat\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(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_revoke_trampoline()\n\n//go:linkname libc_revoke libc_revoke\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(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rmdir_trampoline()\n\n//go:linkname libc_rmdir libc_rmdir\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(funcPC(libc_lseek_trampoline), 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\nfunc libc_lseek_trampoline()\n\n//go:linkname libc_lseek libc_lseek\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(funcPC(libc_select_trampoline), 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\nfunc libc_select_trampoline()\n\n//go:linkname libc_select libc_select\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 Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setegid_trampoline()\n\n//go:linkname libc_setegid libc_setegid\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(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_seteuid_trampoline()\n\n//go:linkname libc_seteuid libc_seteuid\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(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgid_trampoline()\n\n//go:linkname libc_setgid libc_setgid\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(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setlogin_trampoline()\n\n//go:linkname libc_setlogin libc_setlogin\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(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpgid_trampoline()\n\n//go:linkname libc_setpgid libc_setpgid\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(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpriority_trampoline()\n\n//go:linkname libc_setpriority libc_setpriority\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(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setprivexec_trampoline()\n\n//go:linkname libc_setprivexec libc_setprivexec\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(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setregid_trampoline()\n\n//go:linkname libc_setregid libc_setregid\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(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setreuid_trampoline()\n\n//go:linkname libc_setreuid libc_setreuid\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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setrlimit_trampoline()\n\n//go:linkname libc_setrlimit libc_setrlimit\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"/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(funcPC(libc_setsid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setsid_trampoline()\n\n//go:linkname libc_setsid libc_setsid\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(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_settimeofday_trampoline()\n\n//go:linkname libc_settimeofday libc_settimeofday\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(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setuid_trampoline()\n\n//go:linkname libc_setuid libc_setuid\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(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_symlink_trampoline()\n\n//go:linkname libc_symlink libc_symlink\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(funcPC(libc_symlinkat_trampoline), 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\nfunc libc_symlinkat_trampoline()\n\n//go:linkname libc_symlinkat libc_symlinkat\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(funcPC(libc_sync_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sync_trampoline()\n\n//go:linkname libc_sync libc_sync\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(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_truncate_trampoline()\n\n//go:linkname libc_truncate libc_truncate\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(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nfunc libc_umask_trampoline()\n\n//go:linkname libc_umask libc_umask\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(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_undelete_trampoline()\n\n//go:linkname libc_undelete libc_undelete\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(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlink_trampoline()\n\n//go:linkname libc_unlink libc_unlink\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(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlinkat_trampoline()\n\n//go:linkname libc_unlinkat libc_unlinkat\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(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unmount_trampoline()\n\n//go:linkname libc_unmount libc_unmount\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(funcPC(libc_write_trampoline), 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\nfunc libc_write_trampoline()\n\n//go:linkname libc_write libc_write\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(funcPC(libc_mmap_trampoline), 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\nfunc libc_mmap_trampoline()\n\n//go:linkname libc_mmap libc_mmap\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(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munmap_trampoline()\n\n//go:linkname libc_munmap libc_munmap\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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 := syscall_syscall6(funcPC(libc_ptrace_trampoline), 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\nfunc libc_ptrace_trampoline()\n\n//go:linkname libc_ptrace libc_ptrace\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 gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_gettimeofday_trampoline()\n\n//go:linkname libc_gettimeofday libc_gettimeofday\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 Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstat64_trampoline()\n\n//go:linkname libc_fstat64 libc_fstat64\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(funcPC(libc_fstatat64_trampoline), 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\nfunc libc_fstatat64_trampoline()\n\n//go:linkname libc_fstatat64 libc_fstatat64\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(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstatfs64_trampoline()\n\n//go:linkname libc_fstatfs64 libc_fstatfs64\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(funcPC(libc_getfsstat64_trampoline), 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\nfunc libc_getfsstat64_trampoline()\n\n//go:linkname libc_getfsstat64 libc_getfsstat64\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(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lstat64_trampoline()\n\n//go:linkname libc_lstat64 libc_lstat64\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 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(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_stat64_trampoline()\n\n//go:linkname libc_stat64 libc_stat64\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(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_statfs64_trampoline()\n\n//go:linkname libc_statfs64 libc_statfs64\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_darwin.go amd64\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.12\n\n#include \"textflag.h\"\nTEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nTEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nTEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nTEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nTEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nTEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nTEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nTEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nTEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nTEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nTEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nTEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nTEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nTEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nTEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nTEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nTEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nTEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nTEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nTEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nTEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nTEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nTEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nTEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nTEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nTEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nTEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nTEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nTEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getattrlist(SB)\nTEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nTEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nTEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nTEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nTEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nTEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nTEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nTEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nTEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nTEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nTEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nTEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nTEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nTEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nTEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nTEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nTEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nTEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nTEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nTEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nTEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nTEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nTEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nTEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nTEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nTEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nTEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nTEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nTEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nTEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nTEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nTEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nTEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nTEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nTEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nTEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nTEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nTEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nTEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nTEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nTEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nTEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nTEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nTEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nTEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nTEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nTEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nTEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nTEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nTEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nTEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nTEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nTEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nTEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nTEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nTEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nTEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nTEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nTEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nTEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nTEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nTEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nTEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nTEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nTEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nTEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nTEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nTEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nTEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nTEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nTEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nTEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nTEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nTEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nTEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nTEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nTEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nTEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nTEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nTEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nTEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nTEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nTEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nTEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nTEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nTEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrlimit(SB)\nTEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nTEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nTEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nTEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nTEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nTEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nTEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nTEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nTEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nTEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nTEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nTEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nTEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nTEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nTEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nTEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nTEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nTEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nTEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nTEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nTEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nTEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nTEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nTEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm,!go1.12\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 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 := Syscall6(SYS_GETXATTR, 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\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 := Syscall6(SYS_FGETXATTR, 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\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 := Syscall6(SYS_SETXATTR, 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\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 := Syscall6(SYS_FSETXATTR, 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\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(SYS_REMOVEXATTR, 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\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(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = 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, 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 := Syscall6(SYS_LISTXATTR, 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\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 := Syscall6(SYS_FLISTXATTR, 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\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 := Syscall(SYS_FCNTL, 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\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(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = 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 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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), 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 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 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 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(SYS_EXCHANGEDATA, 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\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 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 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 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, _, _ := RawSyscall(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 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 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 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)), 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 := Syscall(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 Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(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 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 getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, 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\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 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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm,go1.13\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 closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_closedir_trampoline()\n\n//go:linkname libc_closedir libc_closedir\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(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nfunc libc_readdir_r_trampoline()\n\n//go:linkname libc_readdir_r libc_readdir_r\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s",
    "content": "// go run mkasm_darwin.go arm\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.13\n\n#include \"textflag.h\"\nTEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nTEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nTEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go",
    "content": "// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm,go1.12\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(funcPC(libc_getgroups_trampoline), 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\nfunc libc_getgroups_trampoline()\n\n//go:linkname libc_getgroups libc_getgroups\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(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgroups_trampoline()\n\n//go:linkname libc_setgroups libc_setgroups\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(funcPC(libc_wait4_trampoline), 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\nfunc libc_wait4_trampoline()\n\n//go:linkname libc_wait4 libc_wait4\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(funcPC(libc_accept_trampoline), 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\nfunc libc_accept_trampoline()\n\n//go:linkname libc_accept libc_accept\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(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_bind_trampoline()\n\n//go:linkname libc_bind libc_bind\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(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_connect_trampoline()\n\n//go:linkname libc_connect libc_connect\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(funcPC(libc_socket_trampoline), 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\nfunc libc_socket_trampoline()\n\n//go:linkname libc_socket libc_socket\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(funcPC(libc_getsockopt_trampoline), 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\nfunc libc_getsockopt_trampoline()\n\n//go:linkname libc_getsockopt libc_getsockopt\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(funcPC(libc_setsockopt_trampoline), 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\nfunc libc_setsockopt_trampoline()\n\n//go:linkname libc_setsockopt libc_setsockopt\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(funcPC(libc_getpeername_trampoline), 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\nfunc libc_getpeername_trampoline()\n\n//go:linkname libc_getpeername libc_getpeername\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(funcPC(libc_getsockname_trampoline), 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\nfunc libc_getsockname_trampoline()\n\n//go:linkname libc_getsockname libc_getsockname\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(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_shutdown_trampoline()\n\n//go:linkname libc_shutdown libc_shutdown\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(funcPC(libc_socketpair_trampoline), 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\nfunc libc_socketpair_trampoline()\n\n//go:linkname libc_socketpair libc_socketpair\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(funcPC(libc_recvfrom_trampoline), 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\nfunc libc_recvfrom_trampoline()\n\n//go:linkname libc_recvfrom libc_recvfrom\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(funcPC(libc_sendto_trampoline), 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\nfunc libc_sendto_trampoline()\n\n//go:linkname libc_sendto libc_sendto\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(funcPC(libc_recvmsg_trampoline), 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\nfunc libc_recvmsg_trampoline()\n\n//go:linkname libc_recvmsg libc_recvmsg\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(funcPC(libc_sendmsg_trampoline), 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\nfunc libc_sendmsg_trampoline()\n\n//go:linkname libc_sendmsg libc_sendmsg\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(funcPC(libc_kevent_trampoline), 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\nfunc libc_kevent_trampoline()\n\n//go:linkname libc_kevent libc_kevent\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(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_utimes_trampoline()\n\n//go:linkname libc_utimes libc_utimes\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(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_futimes_trampoline()\n\n//go:linkname libc_futimes libc_futimes\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(funcPC(libc_poll_trampoline), 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\nfunc libc_poll_trampoline()\n\n//go:linkname libc_poll libc_poll\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(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_madvise_trampoline()\n\n//go:linkname libc_madvise libc_madvise\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(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlock_trampoline()\n\n//go:linkname libc_mlock libc_mlock\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(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlockall_trampoline()\n\n//go:linkname libc_mlockall libc_mlockall\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(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mprotect_trampoline()\n\n//go:linkname libc_mprotect libc_mprotect\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(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_msync_trampoline()\n\n//go:linkname libc_msync libc_msync\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(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlock_trampoline()\n\n//go:linkname libc_munlock libc_munlock\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(funcPC(libc_munlockall_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlockall_trampoline()\n\n//go:linkname libc_munlockall libc_munlockall\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getattrlist_trampoline()\n\n//go:linkname libc_getattrlist libc_getattrlist\n//go:cgo_import_dynamic libc_getattrlist getattrlist \"/usr/lib/libSystem.B.dylib\"\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 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 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\nfunc libc_pipe_trampoline()\n\n//go:linkname libc_pipe libc_pipe\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(funcPC(libc_getxattr_trampoline), 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\nfunc libc_getxattr_trampoline()\n\n//go:linkname libc_getxattr libc_getxattr\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(funcPC(libc_fgetxattr_trampoline), 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\nfunc libc_fgetxattr_trampoline()\n\n//go:linkname libc_fgetxattr libc_fgetxattr\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(funcPC(libc_setxattr_trampoline), 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\nfunc libc_setxattr_trampoline()\n\n//go:linkname libc_setxattr libc_setxattr\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(funcPC(libc_fsetxattr_trampoline), 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\nfunc libc_fsetxattr_trampoline()\n\n//go:linkname libc_fsetxattr libc_fsetxattr\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(funcPC(libc_removexattr_trampoline), 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\nfunc libc_removexattr_trampoline()\n\n//go:linkname libc_removexattr libc_removexattr\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(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fremovexattr_trampoline()\n\n//go:linkname libc_fremovexattr libc_fremovexattr\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(funcPC(libc_listxattr_trampoline), 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\nfunc libc_listxattr_trampoline()\n\n//go:linkname libc_listxattr libc_listxattr\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(funcPC(libc_flistxattr_trampoline), 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\nfunc libc_flistxattr_trampoline()\n\n//go:linkname libc_flistxattr libc_flistxattr\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 setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setattrlist_trampoline()\n\n//go:linkname libc_setattrlist libc_setattrlist\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 fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), 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\nfunc libc_fcntl_trampoline()\n\n//go:linkname libc_fcntl libc_fcntl\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(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kill_trampoline()\n\n//go:linkname libc_kill libc_kill\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(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ioctl_trampoline()\n\n//go:linkname libc_ioctl libc_ioctl\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 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(funcPC(libc_sysctl_trampoline), 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\nfunc libc_sysctl_trampoline()\n\n//go:linkname libc_sysctl libc_sysctl\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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sendfile_trampoline()\n\n//go:linkname libc_sendfile libc_sendfile\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 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(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_access_trampoline()\n\n//go:linkname libc_access libc_access\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(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_adjtime_trampoline()\n\n//go:linkname libc_adjtime libc_adjtime\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(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chdir_trampoline()\n\n//go:linkname libc_chdir libc_chdir\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(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chflags_trampoline()\n\n//go:linkname libc_chflags libc_chflags\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(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chmod_trampoline()\n\n//go:linkname libc_chmod libc_chmod\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(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chown_trampoline()\n\n//go:linkname libc_chown libc_chown\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(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chroot_trampoline()\n\n//go:linkname libc_chroot libc_chroot\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(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_clock_gettime_trampoline()\n\n//go:linkname libc_clock_gettime libc_clock_gettime\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(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_close_trampoline()\n\n//go:linkname libc_close libc_close\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 Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup_trampoline()\n\n//go:linkname libc_dup libc_dup\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(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup2_trampoline()\n\n//go:linkname libc_dup2 libc_dup2\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(funcPC(libc_exchangedata_trampoline), 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\nfunc libc_exchangedata_trampoline()\n\n//go:linkname libc_exchangedata libc_exchangedata\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(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)\n\treturn\n}\n\nfunc libc_exit_trampoline()\n\n//go:linkname libc_exit libc_exit\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(funcPC(libc_faccessat_trampoline), 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\nfunc libc_faccessat_trampoline()\n\n//go:linkname libc_faccessat libc_faccessat\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(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchdir_trampoline()\n\n//go:linkname libc_fchdir libc_fchdir\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(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchflags_trampoline()\n\n//go:linkname libc_fchflags libc_fchflags\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(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchmod_trampoline()\n\n//go:linkname libc_fchmod libc_fchmod\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(funcPC(libc_fchmodat_trampoline), 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\nfunc libc_fchmodat_trampoline()\n\n//go:linkname libc_fchmodat libc_fchmodat\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(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchown_trampoline()\n\n//go:linkname libc_fchown libc_fchown\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(funcPC(libc_fchownat_trampoline), 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\nfunc libc_fchownat_trampoline()\n\n//go:linkname libc_fchownat libc_fchownat\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 Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_flock_trampoline()\n\n//go:linkname libc_flock libc_flock\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(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fpathconf_trampoline()\n\n//go:linkname libc_fpathconf libc_fpathconf\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(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fsync_trampoline()\n\n//go:linkname libc_fsync libc_fsync\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(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ftruncate_trampoline()\n\n//go:linkname libc_ftruncate libc_ftruncate\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 Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nfunc libc_getdtablesize_trampoline()\n\n//go:linkname libc_getdtablesize libc_getdtablesize\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(funcPC(libc_getegid_trampoline), 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nfunc libc_getegid_trampoline()\n\n//go:linkname libc_getegid libc_getegid\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(funcPC(libc_geteuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_geteuid_trampoline()\n\n//go:linkname libc_geteuid libc_geteuid\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(funcPC(libc_getgid_trampoline), 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nfunc libc_getgid_trampoline()\n\n//go:linkname libc_getgid libc_getgid\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(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpgid_trampoline()\n\n//go:linkname libc_getpgid libc_getpgid\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(funcPC(libc_getpgrp_trampoline), 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nfunc libc_getpgrp_trampoline()\n\n//go:linkname libc_getpgrp libc_getpgrp\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(funcPC(libc_getpid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nfunc libc_getpid_trampoline()\n\n//go:linkname libc_getpid libc_getpid\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(funcPC(libc_getppid_trampoline), 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nfunc libc_getppid_trampoline()\n\n//go:linkname libc_getppid libc_getppid\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(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpriority_trampoline()\n\n//go:linkname libc_getpriority libc_getpriority\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(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrlimit_trampoline()\n\n//go:linkname libc_getrlimit libc_getrlimit\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(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrusage_trampoline()\n\n//go:linkname libc_getrusage libc_getrusage\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(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getsid_trampoline()\n\n//go:linkname libc_getsid libc_getsid\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 Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_getuid_trampoline()\n\n//go:linkname libc_getuid libc_getuid\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(funcPC(libc_issetugid_trampoline), 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nfunc libc_issetugid_trampoline()\n\n//go:linkname libc_issetugid libc_issetugid\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(funcPC(libc_kqueue_trampoline), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kqueue_trampoline()\n\n//go:linkname libc_kqueue libc_kqueue\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(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lchown_trampoline()\n\n//go:linkname libc_lchown libc_lchown\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(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_link_trampoline()\n\n//go:linkname libc_link libc_link\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(funcPC(libc_linkat_trampoline), 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\nfunc libc_linkat_trampoline()\n\n//go:linkname libc_linkat libc_linkat\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(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_listen_trampoline()\n\n//go:linkname libc_listen libc_listen\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(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdir_trampoline()\n\n//go:linkname libc_mkdir libc_mkdir\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(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdirat_trampoline()\n\n//go:linkname libc_mkdirat libc_mkdirat\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(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkfifo_trampoline()\n\n//go:linkname libc_mkfifo libc_mkfifo\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(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mknod_trampoline()\n\n//go:linkname libc_mknod libc_mknod\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 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(funcPC(libc_open_trampoline), 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\nfunc libc_open_trampoline()\n\n//go:linkname libc_open libc_open\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(funcPC(libc_openat_trampoline), 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\nfunc libc_openat_trampoline()\n\n//go:linkname libc_openat libc_openat\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(funcPC(libc_pathconf_trampoline), 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\nfunc libc_pathconf_trampoline()\n\n//go:linkname libc_pathconf libc_pathconf\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(funcPC(libc_pread_trampoline), 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\nfunc libc_pread_trampoline()\n\n//go:linkname libc_pread libc_pread\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(funcPC(libc_pwrite_trampoline), 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\nfunc libc_pwrite_trampoline()\n\n//go:linkname libc_pwrite libc_pwrite\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(funcPC(libc_read_trampoline), 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\nfunc libc_read_trampoline()\n\n//go:linkname libc_read libc_read\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(funcPC(libc_readlink_trampoline), 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\nfunc libc_readlink_trampoline()\n\n//go:linkname libc_readlink libc_readlink\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(funcPC(libc_readlinkat_trampoline), 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\nfunc libc_readlinkat_trampoline()\n\n//go:linkname libc_readlinkat libc_readlinkat\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(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rename_trampoline()\n\n//go:linkname libc_rename libc_rename\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(funcPC(libc_renameat_trampoline), 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\nfunc libc_renameat_trampoline()\n\n//go:linkname libc_renameat libc_renameat\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(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_revoke_trampoline()\n\n//go:linkname libc_revoke libc_revoke\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(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rmdir_trampoline()\n\n//go:linkname libc_rmdir libc_rmdir\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, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), 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\nfunc libc_lseek_trampoline()\n\n//go:linkname libc_lseek libc_lseek\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(funcPC(libc_select_trampoline), 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\nfunc libc_select_trampoline()\n\n//go:linkname libc_select libc_select\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 Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setegid_trampoline()\n\n//go:linkname libc_setegid libc_setegid\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(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_seteuid_trampoline()\n\n//go:linkname libc_seteuid libc_seteuid\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(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgid_trampoline()\n\n//go:linkname libc_setgid libc_setgid\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(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setlogin_trampoline()\n\n//go:linkname libc_setlogin libc_setlogin\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(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpgid_trampoline()\n\n//go:linkname libc_setpgid libc_setpgid\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(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpriority_trampoline()\n\n//go:linkname libc_setpriority libc_setpriority\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(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setprivexec_trampoline()\n\n//go:linkname libc_setprivexec libc_setprivexec\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(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setregid_trampoline()\n\n//go:linkname libc_setregid libc_setregid\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(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setreuid_trampoline()\n\n//go:linkname libc_setreuid libc_setreuid\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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setrlimit_trampoline()\n\n//go:linkname libc_setrlimit libc_setrlimit\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"/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(funcPC(libc_setsid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setsid_trampoline()\n\n//go:linkname libc_setsid libc_setsid\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(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_settimeofday_trampoline()\n\n//go:linkname libc_settimeofday libc_settimeofday\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(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setuid_trampoline()\n\n//go:linkname libc_setuid libc_setuid\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(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_symlink_trampoline()\n\n//go:linkname libc_symlink libc_symlink\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(funcPC(libc_symlinkat_trampoline), 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\nfunc libc_symlinkat_trampoline()\n\n//go:linkname libc_symlinkat libc_symlinkat\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(funcPC(libc_sync_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sync_trampoline()\n\n//go:linkname libc_sync libc_sync\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(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_truncate_trampoline()\n\n//go:linkname libc_truncate libc_truncate\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(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nfunc libc_umask_trampoline()\n\n//go:linkname libc_umask libc_umask\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(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_undelete_trampoline()\n\n//go:linkname libc_undelete libc_undelete\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(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlink_trampoline()\n\n//go:linkname libc_unlink libc_unlink\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(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlinkat_trampoline()\n\n//go:linkname libc_unlinkat libc_unlinkat\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(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unmount_trampoline()\n\n//go:linkname libc_unmount libc_unmount\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(funcPC(libc_write_trampoline), 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\nfunc libc_write_trampoline()\n\n//go:linkname libc_write libc_write\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_syscall9(funcPC(libc_mmap_trampoline), 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\nfunc libc_mmap_trampoline()\n\n//go:linkname libc_mmap libc_mmap\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(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munmap_trampoline()\n\n//go:linkname libc_munmap libc_munmap\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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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(tp *Timeval) (sec int32, usec int32, err error) {\n\tr0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int32(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_gettimeofday_trampoline()\n\n//go:linkname libc_gettimeofday libc_gettimeofday\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 Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstat_trampoline()\n\n//go:linkname libc_fstat libc_fstat\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(funcPC(libc_fstatat_trampoline), 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\nfunc libc_fstatat_trampoline()\n\n//go:linkname libc_fstatat libc_fstatat\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(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstatfs_trampoline()\n\n//go:linkname libc_fstatfs libc_fstatfs\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(funcPC(libc_getfsstat_trampoline), 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\nfunc libc_getfsstat_trampoline()\n\n//go:linkname libc_getfsstat libc_getfsstat\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(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lstat_trampoline()\n\n//go:linkname libc_lstat libc_lstat\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 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(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_stat_trampoline()\n\n//go:linkname libc_stat libc_stat\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(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_statfs_trampoline()\n\n//go:linkname libc_statfs libc_statfs\n//go:cgo_import_dynamic libc_statfs statfs \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s",
    "content": "// go run mkasm_darwin.go arm\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.12\n\n#include \"textflag.h\"\nTEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nTEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nTEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nTEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nTEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nTEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nTEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nTEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nTEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nTEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nTEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nTEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nTEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nTEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nTEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nTEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nTEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nTEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nTEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nTEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nTEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nTEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nTEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nTEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nTEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nTEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nTEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nTEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nTEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getattrlist(SB)\nTEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nTEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nTEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nTEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nTEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nTEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nTEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nTEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nTEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nTEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nTEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nTEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nTEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nTEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nTEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nTEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nTEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nTEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nTEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nTEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nTEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nTEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nTEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nTEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nTEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nTEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nTEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nTEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nTEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nTEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nTEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nTEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nTEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nTEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nTEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nTEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nTEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nTEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nTEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nTEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nTEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nTEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nTEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nTEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nTEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nTEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nTEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nTEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nTEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nTEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nTEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nTEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nTEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nTEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nTEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nTEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nTEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nTEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nTEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nTEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nTEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nTEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nTEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nTEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nTEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nTEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nTEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nTEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nTEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nTEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nTEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nTEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nTEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nTEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nTEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nTEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nTEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nTEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nTEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nTEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nTEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nTEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nTEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nTEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nTEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nTEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrlimit(SB)\nTEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nTEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nTEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nTEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nTEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nTEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nTEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nTEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nTEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nTEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nTEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nTEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nTEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nTEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nTEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nTEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nTEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nTEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nTEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nTEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nTEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nTEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nTEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go",
    "content": "// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm64,!go1.12\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 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 := Syscall6(SYS_GETXATTR, 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\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 := Syscall6(SYS_FGETXATTR, 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\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 := Syscall6(SYS_SETXATTR, 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\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 := Syscall6(SYS_FSETXATTR, 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\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(SYS_REMOVEXATTR, 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\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(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = 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, 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 := Syscall6(SYS_LISTXATTR, 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\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 := Syscall6(SYS_FLISTXATTR, 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\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = 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 := Syscall(SYS_FCNTL, 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\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(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = 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 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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SENDFILE, 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\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 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 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(SYS_EXCHANGEDATA, 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\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 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 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 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, _, _ := RawSyscall(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 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 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 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)), 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 := Syscall(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 Setprivexec(flag int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIVEXEC, 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(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 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 getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, 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\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 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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go",
    "content": "// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build darwin,arm64,go1.13\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 closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_closedir_trampoline()\n\n//go:linkname libc_closedir libc_closedir\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(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nfunc libc_readdir_r_trampoline()\n\n//go:linkname libc_readdir_r libc_readdir_r\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s",
    "content": "// go run mkasm_darwin.go arm64\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.13\n\n#include \"textflag.h\"\nTEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nTEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nTEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64,go1.12 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// +build darwin,arm64,go1.12\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(funcPC(libc_getgroups_trampoline), 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\nfunc libc_getgroups_trampoline()\n\n//go:linkname libc_getgroups libc_getgroups\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(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgroups_trampoline()\n\n//go:linkname libc_setgroups libc_setgroups\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(funcPC(libc_wait4_trampoline), 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\nfunc libc_wait4_trampoline()\n\n//go:linkname libc_wait4 libc_wait4\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(funcPC(libc_accept_trampoline), 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\nfunc libc_accept_trampoline()\n\n//go:linkname libc_accept libc_accept\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(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_bind_trampoline()\n\n//go:linkname libc_bind libc_bind\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(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_connect_trampoline()\n\n//go:linkname libc_connect libc_connect\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(funcPC(libc_socket_trampoline), 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\nfunc libc_socket_trampoline()\n\n//go:linkname libc_socket libc_socket\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(funcPC(libc_getsockopt_trampoline), 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\nfunc libc_getsockopt_trampoline()\n\n//go:linkname libc_getsockopt libc_getsockopt\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(funcPC(libc_setsockopt_trampoline), 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\nfunc libc_setsockopt_trampoline()\n\n//go:linkname libc_setsockopt libc_setsockopt\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(funcPC(libc_getpeername_trampoline), 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\nfunc libc_getpeername_trampoline()\n\n//go:linkname libc_getpeername libc_getpeername\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(funcPC(libc_getsockname_trampoline), 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\nfunc libc_getsockname_trampoline()\n\n//go:linkname libc_getsockname libc_getsockname\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(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_shutdown_trampoline()\n\n//go:linkname libc_shutdown libc_shutdown\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(funcPC(libc_socketpair_trampoline), 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\nfunc libc_socketpair_trampoline()\n\n//go:linkname libc_socketpair libc_socketpair\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(funcPC(libc_recvfrom_trampoline), 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\nfunc libc_recvfrom_trampoline()\n\n//go:linkname libc_recvfrom libc_recvfrom\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(funcPC(libc_sendto_trampoline), 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\nfunc libc_sendto_trampoline()\n\n//go:linkname libc_sendto libc_sendto\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(funcPC(libc_recvmsg_trampoline), 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\nfunc libc_recvmsg_trampoline()\n\n//go:linkname libc_recvmsg libc_recvmsg\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(funcPC(libc_sendmsg_trampoline), 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\nfunc libc_sendmsg_trampoline()\n\n//go:linkname libc_sendmsg libc_sendmsg\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(funcPC(libc_kevent_trampoline), 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\nfunc libc_kevent_trampoline()\n\n//go:linkname libc_kevent libc_kevent\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(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_utimes_trampoline()\n\n//go:linkname libc_utimes libc_utimes\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(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_futimes_trampoline()\n\n//go:linkname libc_futimes libc_futimes\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(funcPC(libc_poll_trampoline), 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\nfunc libc_poll_trampoline()\n\n//go:linkname libc_poll libc_poll\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(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_madvise_trampoline()\n\n//go:linkname libc_madvise libc_madvise\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(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlock_trampoline()\n\n//go:linkname libc_mlock libc_mlock\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(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mlockall_trampoline()\n\n//go:linkname libc_mlockall libc_mlockall\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(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mprotect_trampoline()\n\n//go:linkname libc_mprotect libc_mprotect\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(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_msync_trampoline()\n\n//go:linkname libc_msync libc_msync\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(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlock_trampoline()\n\n//go:linkname libc_munlock libc_munlock\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(funcPC(libc_munlockall_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munlockall_trampoline()\n\n//go:linkname libc_munlockall libc_munlockall\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 getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getattrlist_trampoline()\n\n//go:linkname libc_getattrlist libc_getattrlist\n//go:cgo_import_dynamic libc_getattrlist getattrlist \"/usr/lib/libSystem.B.dylib\"\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 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 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\nfunc libc_pipe_trampoline()\n\n//go:linkname libc_pipe libc_pipe\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(funcPC(libc_getxattr_trampoline), 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\nfunc libc_getxattr_trampoline()\n\n//go:linkname libc_getxattr libc_getxattr\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(funcPC(libc_fgetxattr_trampoline), 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\nfunc libc_fgetxattr_trampoline()\n\n//go:linkname libc_fgetxattr libc_fgetxattr\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(funcPC(libc_setxattr_trampoline), 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\nfunc libc_setxattr_trampoline()\n\n//go:linkname libc_setxattr libc_setxattr\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(funcPC(libc_fsetxattr_trampoline), 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\nfunc libc_fsetxattr_trampoline()\n\n//go:linkname libc_fsetxattr libc_fsetxattr\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(funcPC(libc_removexattr_trampoline), 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\nfunc libc_removexattr_trampoline()\n\n//go:linkname libc_removexattr libc_removexattr\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(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fremovexattr_trampoline()\n\n//go:linkname libc_fremovexattr libc_fremovexattr\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(funcPC(libc_listxattr_trampoline), 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\nfunc libc_listxattr_trampoline()\n\n//go:linkname libc_listxattr libc_listxattr\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(funcPC(libc_flistxattr_trampoline), 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\nfunc libc_flistxattr_trampoline()\n\n//go:linkname libc_flistxattr libc_flistxattr\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 setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setattrlist_trampoline()\n\n//go:linkname libc_setattrlist libc_setattrlist\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 fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), 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\nfunc libc_fcntl_trampoline()\n\n//go:linkname libc_fcntl libc_fcntl\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(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kill_trampoline()\n\n//go:linkname libc_kill libc_kill\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(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ioctl_trampoline()\n\n//go:linkname libc_ioctl libc_ioctl\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 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(funcPC(libc_sysctl_trampoline), 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\nfunc libc_sysctl_trampoline()\n\n//go:linkname libc_sysctl libc_sysctl\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 sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), 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\nfunc libc_sendfile_trampoline()\n\n//go:linkname libc_sendfile libc_sendfile\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 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(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_access_trampoline()\n\n//go:linkname libc_access libc_access\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(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_adjtime_trampoline()\n\n//go:linkname libc_adjtime libc_adjtime\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(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chdir_trampoline()\n\n//go:linkname libc_chdir libc_chdir\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(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chflags_trampoline()\n\n//go:linkname libc_chflags libc_chflags\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(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chmod_trampoline()\n\n//go:linkname libc_chmod libc_chmod\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(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chown_trampoline()\n\n//go:linkname libc_chown libc_chown\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(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_chroot_trampoline()\n\n//go:linkname libc_chroot libc_chroot\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(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_clock_gettime_trampoline()\n\n//go:linkname libc_clock_gettime libc_clock_gettime\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(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_close_trampoline()\n\n//go:linkname libc_close libc_close\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 Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup_trampoline()\n\n//go:linkname libc_dup libc_dup\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(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_dup2_trampoline()\n\n//go:linkname libc_dup2 libc_dup2\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(funcPC(libc_exchangedata_trampoline), 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\nfunc libc_exchangedata_trampoline()\n\n//go:linkname libc_exchangedata libc_exchangedata\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(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)\n\treturn\n}\n\nfunc libc_exit_trampoline()\n\n//go:linkname libc_exit libc_exit\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(funcPC(libc_faccessat_trampoline), 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\nfunc libc_faccessat_trampoline()\n\n//go:linkname libc_faccessat libc_faccessat\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(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchdir_trampoline()\n\n//go:linkname libc_fchdir libc_fchdir\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(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchflags_trampoline()\n\n//go:linkname libc_fchflags libc_fchflags\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(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchmod_trampoline()\n\n//go:linkname libc_fchmod libc_fchmod\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(funcPC(libc_fchmodat_trampoline), 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\nfunc libc_fchmodat_trampoline()\n\n//go:linkname libc_fchmodat libc_fchmodat\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(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fchown_trampoline()\n\n//go:linkname libc_fchown libc_fchown\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(funcPC(libc_fchownat_trampoline), 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\nfunc libc_fchownat_trampoline()\n\n//go:linkname libc_fchownat libc_fchownat\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 Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_flock_trampoline()\n\n//go:linkname libc_flock libc_flock\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(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fpathconf_trampoline()\n\n//go:linkname libc_fpathconf libc_fpathconf\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(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fsync_trampoline()\n\n//go:linkname libc_fsync libc_fsync\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(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_ftruncate_trampoline()\n\n//go:linkname libc_ftruncate libc_ftruncate\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 Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nfunc libc_getdtablesize_trampoline()\n\n//go:linkname libc_getdtablesize libc_getdtablesize\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(funcPC(libc_getegid_trampoline), 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nfunc libc_getegid_trampoline()\n\n//go:linkname libc_getegid libc_getegid\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(funcPC(libc_geteuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_geteuid_trampoline()\n\n//go:linkname libc_geteuid libc_geteuid\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(funcPC(libc_getgid_trampoline), 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nfunc libc_getgid_trampoline()\n\n//go:linkname libc_getgid libc_getgid\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(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpgid_trampoline()\n\n//go:linkname libc_getpgid libc_getpgid\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(funcPC(libc_getpgrp_trampoline), 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nfunc libc_getpgrp_trampoline()\n\n//go:linkname libc_getpgrp libc_getpgrp\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(funcPC(libc_getpid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nfunc libc_getpid_trampoline()\n\n//go:linkname libc_getpid libc_getpid\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(funcPC(libc_getppid_trampoline), 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nfunc libc_getppid_trampoline()\n\n//go:linkname libc_getppid libc_getppid\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(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getpriority_trampoline()\n\n//go:linkname libc_getpriority libc_getpriority\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(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrlimit_trampoline()\n\n//go:linkname libc_getrlimit libc_getrlimit\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(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getrusage_trampoline()\n\n//go:linkname libc_getrusage libc_getrusage\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(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_getsid_trampoline()\n\n//go:linkname libc_getsid libc_getsid\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 Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nfunc libc_getuid_trampoline()\n\n//go:linkname libc_getuid libc_getuid\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(funcPC(libc_issetugid_trampoline), 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nfunc libc_issetugid_trampoline()\n\n//go:linkname libc_issetugid libc_issetugid\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(funcPC(libc_kqueue_trampoline), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_kqueue_trampoline()\n\n//go:linkname libc_kqueue libc_kqueue\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(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lchown_trampoline()\n\n//go:linkname libc_lchown libc_lchown\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(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_link_trampoline()\n\n//go:linkname libc_link libc_link\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(funcPC(libc_linkat_trampoline), 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\nfunc libc_linkat_trampoline()\n\n//go:linkname libc_linkat libc_linkat\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(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_listen_trampoline()\n\n//go:linkname libc_listen libc_listen\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(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdir_trampoline()\n\n//go:linkname libc_mkdir libc_mkdir\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(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkdirat_trampoline()\n\n//go:linkname libc_mkdirat libc_mkdirat\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(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mkfifo_trampoline()\n\n//go:linkname libc_mkfifo libc_mkfifo\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(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_mknod_trampoline()\n\n//go:linkname libc_mknod libc_mknod\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 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(funcPC(libc_open_trampoline), 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\nfunc libc_open_trampoline()\n\n//go:linkname libc_open libc_open\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(funcPC(libc_openat_trampoline), 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\nfunc libc_openat_trampoline()\n\n//go:linkname libc_openat libc_openat\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(funcPC(libc_pathconf_trampoline), 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\nfunc libc_pathconf_trampoline()\n\n//go:linkname libc_pathconf libc_pathconf\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(funcPC(libc_pread_trampoline), 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\nfunc libc_pread_trampoline()\n\n//go:linkname libc_pread libc_pread\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(funcPC(libc_pwrite_trampoline), 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\nfunc libc_pwrite_trampoline()\n\n//go:linkname libc_pwrite libc_pwrite\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(funcPC(libc_read_trampoline), 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\nfunc libc_read_trampoline()\n\n//go:linkname libc_read libc_read\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(funcPC(libc_readlink_trampoline), 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\nfunc libc_readlink_trampoline()\n\n//go:linkname libc_readlink libc_readlink\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(funcPC(libc_readlinkat_trampoline), 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\nfunc libc_readlinkat_trampoline()\n\n//go:linkname libc_readlinkat libc_readlinkat\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(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rename_trampoline()\n\n//go:linkname libc_rename libc_rename\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(funcPC(libc_renameat_trampoline), 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\nfunc libc_renameat_trampoline()\n\n//go:linkname libc_renameat libc_renameat\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(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_revoke_trampoline()\n\n//go:linkname libc_revoke libc_revoke\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(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_rmdir_trampoline()\n\n//go:linkname libc_rmdir libc_rmdir\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(funcPC(libc_lseek_trampoline), 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\nfunc libc_lseek_trampoline()\n\n//go:linkname libc_lseek libc_lseek\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(funcPC(libc_select_trampoline), 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\nfunc libc_select_trampoline()\n\n//go:linkname libc_select libc_select\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 Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setegid_trampoline()\n\n//go:linkname libc_setegid libc_setegid\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(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_seteuid_trampoline()\n\n//go:linkname libc_seteuid libc_seteuid\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(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setgid_trampoline()\n\n//go:linkname libc_setgid libc_setgid\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(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setlogin_trampoline()\n\n//go:linkname libc_setlogin libc_setlogin\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(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpgid_trampoline()\n\n//go:linkname libc_setpgid libc_setpgid\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(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setpriority_trampoline()\n\n//go:linkname libc_setpriority libc_setpriority\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(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setprivexec_trampoline()\n\n//go:linkname libc_setprivexec libc_setprivexec\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(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setregid_trampoline()\n\n//go:linkname libc_setregid libc_setregid\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(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setreuid_trampoline()\n\n//go:linkname libc_setreuid libc_setreuid\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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setrlimit_trampoline()\n\n//go:linkname libc_setrlimit libc_setrlimit\n//go:cgo_import_dynamic libc_setrlimit setrlimit \"/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(funcPC(libc_setsid_trampoline), 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setsid_trampoline()\n\n//go:linkname libc_setsid libc_setsid\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(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_settimeofday_trampoline()\n\n//go:linkname libc_settimeofday libc_settimeofday\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(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_setuid_trampoline()\n\n//go:linkname libc_setuid libc_setuid\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(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_symlink_trampoline()\n\n//go:linkname libc_symlink libc_symlink\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(funcPC(libc_symlinkat_trampoline), 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\nfunc libc_symlinkat_trampoline()\n\n//go:linkname libc_symlinkat libc_symlinkat\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(funcPC(libc_sync_trampoline), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_sync_trampoline()\n\n//go:linkname libc_sync libc_sync\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(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_truncate_trampoline()\n\n//go:linkname libc_truncate libc_truncate\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(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nfunc libc_umask_trampoline()\n\n//go:linkname libc_umask libc_umask\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(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_undelete_trampoline()\n\n//go:linkname libc_undelete libc_undelete\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(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlink_trampoline()\n\n//go:linkname libc_unlink libc_unlink\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(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unlinkat_trampoline()\n\n//go:linkname libc_unlinkat libc_unlinkat\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(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_unmount_trampoline()\n\n//go:linkname libc_unmount libc_unmount\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(funcPC(libc_write_trampoline), 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\nfunc libc_write_trampoline()\n\n//go:linkname libc_write libc_write\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(funcPC(libc_mmap_trampoline), 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\nfunc libc_mmap_trampoline()\n\n//go:linkname libc_mmap libc_mmap\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(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_munmap_trampoline()\n\n//go:linkname libc_munmap libc_munmap\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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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(tp *Timeval) (sec int64, usec int32, err error) {\n\tr0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)\n\tsec = int64(r0)\n\tusec = int32(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_gettimeofday_trampoline()\n\n//go:linkname libc_gettimeofday libc_gettimeofday\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 Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstat_trampoline()\n\n//go:linkname libc_fstat libc_fstat\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(funcPC(libc_fstatat_trampoline), 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\nfunc libc_fstatat_trampoline()\n\n//go:linkname libc_fstatat libc_fstatat\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(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_fstatfs_trampoline()\n\n//go:linkname libc_fstatfs libc_fstatfs\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(funcPC(libc_getfsstat_trampoline), 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\nfunc libc_getfsstat_trampoline()\n\n//go:linkname libc_getfsstat libc_getfsstat\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(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_lstat_trampoline()\n\n//go:linkname libc_lstat libc_lstat\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 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(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_stat_trampoline()\n\n//go:linkname libc_stat libc_stat\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(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc libc_statfs_trampoline()\n\n//go:linkname libc_statfs libc_statfs\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_darwin.go arm64\n// Code generated by the command above; DO NOT EDIT.\n\n// +build go1.12\n\n#include \"textflag.h\"\nTEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nTEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nTEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nTEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nTEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nTEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nTEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nTEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nTEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nTEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nTEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nTEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nTEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nTEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nTEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nTEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nTEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nTEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nTEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nTEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nTEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nTEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nTEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nTEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nTEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nTEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nTEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nTEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nTEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getattrlist(SB)\nTEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nTEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nTEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nTEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nTEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nTEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nTEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nTEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nTEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nTEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nTEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nTEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nTEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nTEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nTEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nTEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nTEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nTEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nTEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nTEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nTEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nTEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nTEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nTEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nTEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nTEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nTEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nTEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nTEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nTEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nTEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nTEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nTEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nTEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nTEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nTEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nTEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nTEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nTEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nTEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nTEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nTEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nTEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nTEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nTEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nTEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nTEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nTEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nTEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nTEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nTEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nTEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nTEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nTEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nTEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nTEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nTEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nTEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nTEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nTEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nTEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nTEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nTEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nTEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nTEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nTEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nTEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nTEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nTEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nTEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nTEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nTEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nTEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nTEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nTEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nTEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nTEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nTEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nTEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nTEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nTEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nTEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nTEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nTEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nTEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nTEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrlimit(SB)\nTEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nTEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nTEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nTEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nTEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nTEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nTEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nTEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nTEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nTEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nTEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nTEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nTEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nTEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nTEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nTEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nTEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nTEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nTEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nTEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nTEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nTEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nTEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(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// +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 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 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 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 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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// +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 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 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 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_freebsd11_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 fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, 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_freebsd11_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 fstatat_freebsd12(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_FREEBSD12, 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_freebsd11_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, 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 *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 getdirentries_freebsd12(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_FREEBSD12, 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_freebsd11_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 mknodat_freebsd12(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_FREEBSD12, 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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_freebsd11_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_freebsd11_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 statfs_freebsd12(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_FREEBSD12, 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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// +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 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 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 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_freebsd11_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 fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, 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_freebsd11_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 fstatat_freebsd12(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_FREEBSD12, 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_freebsd11_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, 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 *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 getdirentries_freebsd12(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_FREEBSD12, 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_freebsd11_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 mknodat_freebsd12(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_FREEBSD12, 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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_freebsd11_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_freebsd11_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 statfs_freebsd12(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_FREEBSD12, 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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// +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 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 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 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 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 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_freebsd11_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 fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, 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_freebsd11_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 fstatat_freebsd12(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_FREEBSD12, 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_freebsd11_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, 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 *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 getdirentries_freebsd12(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_FREEBSD12, 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_freebsd11_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 mknodat_freebsd12(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_FREEBSD12, 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)), 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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_freebsd11_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_freebsd11_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 statfs_freebsd12(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_FREEBSD12, 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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// +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 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 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 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_freebsd11_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 fstat_freebsd12(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, 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_freebsd11_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 fstatat_freebsd12(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_FREEBSD12, 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_freebsd11_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, 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 *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 getdirentries_freebsd12(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_FREEBSD12, 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_freebsd11_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 mknodat_freebsd12(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_FREEBSD12, 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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_freebsd11_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_freebsd11_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 statfs_freebsd12(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_FREEBSD12, 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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// +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\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\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev 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 = 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 = 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 = 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 = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge.go; DO NOT EDIT.\n\n// +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 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 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 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 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 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 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 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 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 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 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 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\tr0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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 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 prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (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 readlen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, p *byte, np int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 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 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID32, 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 Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID32, 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_SETRESUID32, 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 Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID32, 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 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 setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 inotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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_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// +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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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_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 Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID32, 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 Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID32, 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_SETRESUID32, 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 Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID32, 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 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 setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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// +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 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 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 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 setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 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 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 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 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 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 pipe() (p1 int, p2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tp1 = int(r0)\n\tp2 = 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 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 setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 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"
  },
  {
    "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// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 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 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 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 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 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 pipe() (p1 int, p2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tp1 = int(r0)\n\tp2 = 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 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 setrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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"
  },
  {
    "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\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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"
  },
  {
    "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// +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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, 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 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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 dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)\n\tif e1 != 0 {\n\t\terr = 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 InotifyInit() (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 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 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 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 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 Setrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 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 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 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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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"
  },
  {
    "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// +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 pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = 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 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 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_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// +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 pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = 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 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 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_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// +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 pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = 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 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 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_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// +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 pipe() (fd1 int, fd2 int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tfd1 = int(r0)\n\tfd2 = 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 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 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -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// +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 := 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 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 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 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 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 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 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 Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 := 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -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// +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 := 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 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 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 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 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 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 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 Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -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// +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 := 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 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 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 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 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 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 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 Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 := 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -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// +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 := 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 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 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 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 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 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 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 Getrtable() (rtable int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = 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 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 Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRLIMIT, 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 Setrtable(rtable int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writelen(fd int, buf *byte, nbuf int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_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// +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_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_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_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_llisten __xnet_llisten \"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_setrlimit setrlimit \"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_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\n//go:linkname procpipe libc_pipe\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 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 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_llisten libc___xnet_llisten\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 procSetrlimit libc_setrlimit\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 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\nvar (\n\tprocpipe,\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\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\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_llisten,\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\tprocSetrlimit,\n\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\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 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = e1\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go",
    "content": "// mksysctl_openbsd.pl\n// Code generated by the command above; DO NOT EDIT.\n\n// +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.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.pagesize\", []_C_int{6, 7}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\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.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.arandom\", []_C_int{1, 37}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\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.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.cryptodevallowsoft\", []_C_int{1, 53}},\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.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.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.random\", []_C_int{1, 31}},\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.tty.maxptys\", []_C_int{1, 44, 6}},\n\t{\"kern.tty.nptys\", []_C_int{1, 44, 7}},\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.userasymcrypto\", []_C_int{1, 60}},\n\t{\"kern.usercrypto\", []_C_int{1, 52}},\n\t{\"kern.usermount\", []_C_int{1, 30}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.vnode\", []_C_int{1, 13}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\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.arpqueued\", []_C_int{4, 2, 0, 36}},\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.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\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.mobileip.allow\", []_C_int{4, 2, 55, 1}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.pim.stats\", []_C_int{4, 2, 103, 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.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.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.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_prune\", []_C_int{4, 24, 30, 6}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.nd6_useloopback\", []_C_int{4, 24, 30, 11}},\n\t{\"net.inet6.icmp6.nodeinfo\", []_C_int{4, 24, 30, 13}},\n\t{\"net.inet6.icmp6.rediraccept\", []_C_int{4, 24, 30, 2}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.accept_rtadv\", []_C_int{4, 24, 17, 12}},\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.maxifdefrouters\", []_C_int{4, 24, 17, 47}},\n\t{\"net.inet6.ip6.maxifprefixes\", []_C_int{4, 24, 17, 46}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\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.rr_prune\", []_C_int{4, 24, 17, 22}},\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.inet6.ip6.v6only\", []_C_int{4, 24, 17, 24}},\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.maxloop_inkernel\", []_C_int{4, 33, 4}},\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.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// +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.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\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.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.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\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.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.dnsjackport\", []_C_int{1, 13}},\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.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.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.version\", []_C_int{1, 4}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\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.mobileip.allow\", []_C_int{4, 2, 55, 1}},\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.maxloop_inkernel\", []_C_int{4, 33, 4}},\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.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// +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.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.pagesize\", []_C_int{6, 7}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\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.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.arandom\", []_C_int{1, 37}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\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.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.cryptodevallowsoft\", []_C_int{1, 53}},\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.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.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.random\", []_C_int{1, 31}},\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.tty.maxptys\", []_C_int{1, 44, 6}},\n\t{\"kern.tty.nptys\", []_C_int{1, 44, 7}},\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.userasymcrypto\", []_C_int{1, 60}},\n\t{\"kern.usercrypto\", []_C_int{1, 52}},\n\t{\"kern.usermount\", []_C_int{1, 30}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.vnode\", []_C_int{1, 13}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\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.arpqueued\", []_C_int{4, 2, 0, 36}},\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.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\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.mobileip.allow\", []_C_int{4, 2, 55, 1}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.pim.stats\", []_C_int{4, 2, 103, 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.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.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.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_prune\", []_C_int{4, 24, 30, 6}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.nd6_useloopback\", []_C_int{4, 24, 30, 11}},\n\t{\"net.inet6.icmp6.nodeinfo\", []_C_int{4, 24, 30, 13}},\n\t{\"net.inet6.icmp6.rediraccept\", []_C_int{4, 24, 30, 2}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.accept_rtadv\", []_C_int{4, 24, 17, 12}},\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.maxifdefrouters\", []_C_int{4, 24, 17, 47}},\n\t{\"net.inet6.ip6.maxifprefixes\", []_C_int{4, 24, 17, 46}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\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.rr_prune\", []_C_int{4, 24, 17, 22}},\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.inet6.ip6.v6only\", []_C_int{4, 24, 17, 24}},\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.maxloop_inkernel\", []_C_int{4, 33, 4}},\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.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// +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.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.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.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.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.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.version\", []_C_int{1, 4}},\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.mobileip.allow\", []_C_int{4, 2, 55, 1}},\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.maxloop_inkernel\", []_C_int{4, 33, 4}},\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_386.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build 386,darwin\n\npackage unix\n\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_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// +build amd64,darwin\n\npackage unix\n\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_arm.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// +build arm,darwin\n\npackage unix\n\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_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// +build arm64,darwin\n\npackage unix\n\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// +build amd64,dragonfly\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\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\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(char *path, int flags); }\n\tSYS_FCHFLAGS      = 35  // { int fchflags(int fd, int 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, 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  // { 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  // { 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(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_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }\n\tSYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }\n\tSYS_UNAME         = 164 // { int uname(struct utsname *name); }\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\t// SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int\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, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_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(char *path, int 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, int 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)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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_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, 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); } 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  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const 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_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\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_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\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 // { int 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_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_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_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\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_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\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, 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_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_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\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_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\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,\t\tconst struct mq_attr *attr,\t\tstruct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\tchar *msg_ptr, size_t msg_len,\tunsigned *msg_prio,\t\t\tconst struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\tconst char *msg_ptr, size_t msg_len,unsigned msg_prio,\t\t\tconst struct timespec *abs_timeout);}\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\tconst 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_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\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_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { int 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_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }\n\tSYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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_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, 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); } 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  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const 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_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\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_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\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 // { int 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_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_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_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\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_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\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, 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_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_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\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_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\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,\t\tconst struct mq_attr *attr,\t\tstruct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\tchar *msg_ptr, size_t msg_len,\tunsigned *msg_prio,\t\t\tconst struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\tconst char *msg_ptr, size_t msg_len,unsigned msg_prio,\t\t\tconst struct timespec *abs_timeout);}\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\tconst 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_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\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_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { int 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_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }\n\tSYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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_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, 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); } 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  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const 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_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\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_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\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 // { int 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_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_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_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\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_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\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, 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_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_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\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_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\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,\t\tconst struct mq_attr *attr,\t\tstruct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\tchar *msg_ptr, size_t msg_len,\tunsigned *msg_prio,\t\t\tconst struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\tconst char *msg_ptr, size_t msg_len,unsigned msg_prio,\t\t\tconst struct timespec *abs_timeout);}\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\tconst 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_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\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_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { int 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_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }\n\tSYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_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_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, 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); } 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  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise ovadvise_args int\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(const 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_STAT                     = 188 // { int stat(char *path, struct stat *ub); }\n\tSYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }\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_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\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 // { int 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_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_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_GETDENTS                 = 272 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }\n\tSYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }\n\tSYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }\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_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\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, 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_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_KEVENT                   = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\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_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_STATFS                   = 396 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\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,\t\tconst struct mq_attr *attr,\t\tstruct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd,\tchar *msg_ptr, size_t msg_len,\tunsigned *msg_prio,\t\t\tconst struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd,\t\tconst char *msg_ptr, size_t msg_len,unsigned msg_prio,\t\t\tconst struct timespec *abs_timeout);}\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd,\t\tconst 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_FSTATAT                  = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\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_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { int 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_NUMA_GETAFFINITY         = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }\n\tSYS_NUMA_SETAFFINITY         = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +build arm,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_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_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_FSTATAT                = 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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 5437\n\tSYS_PIDFD_GETFD            = 5438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 5437\n\tSYS_PIDFD_GETFD            = 5438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_FSTATAT                = 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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\n)\n"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_OPENAT2                = 437\n\tSYS_PIDFD_GETFD            = 438\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// +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// +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// +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// +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// +build 386,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_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// +build amd64,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_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// +build arm,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_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// +build arm64,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/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// +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\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// +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\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_386.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// +build 386,darwin\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 Timeval32 struct{}\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     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]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]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}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint32\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags       uint32\n\tContigbytes int64\n\tDevoffset   int64\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 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 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    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 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   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\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_       [2]byte\n\tData    IfData\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 Timeval\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\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_       [2]byte\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\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\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   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\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 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_       [2]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            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\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"
  },
  {
    "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// +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\t_       [4]byte\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]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]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_     [8]byte\n\t_     [8]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 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\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [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 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    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 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]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\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_       [2]byte\n\tData    IfData\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 IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\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\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\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   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]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\t_     [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  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\t_      [4]byte\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)\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go",
    "content": "// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_darwin.go\n\n// +build arm,darwin\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 Timeval32 [0]byte\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     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]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]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}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint32\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags       uint32\n\tContigbytes int64\n\tDevoffset   int64\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 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 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    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 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   int32\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\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_       [2]byte\n\tData    IfData\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 Timeval\n\tUnused2    uint32\n\tHwassist   uint32\n\tReserved1  uint32\n\tReserved2  uint32\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_       [2]byte\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\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\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   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\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 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_       [2]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            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\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"
  },
  {
    "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// +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\t_       [4]byte\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]int8\n\tMntonname   [1024]int8\n\tMntfromname [1024]int8\n\tReserved    [8]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_     [8]byte\n\t_     [8]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 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\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [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 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    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 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]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\tSizeofIfData      = 0x60\n\tSizeofIfaMsghdr   = 0x14\n\tSizeofIfmaMsghdr  = 0x10\n\tSizeofIfmaMsghdr2 = 0x14\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_       [2]byte\n\tData    IfData\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 IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\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\t_        [2]byte\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\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   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tFiller   [4]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\t_     [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  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\t_      [4]byte\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)\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"
  },
  {
    "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// +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\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare1 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\t_           [4]byte\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]int8\n\tMntonname   [80]int8\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]int8\n\tSpares2     int16\n\t_           [4]byte\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\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\t_          [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 = 0x36\n\tSizeofLinger           = 0x8\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        = 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_       [2]byte\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\t_          [2]byte\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\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\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 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_       [2]byte\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\t_         [4]byte\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\t_     [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  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)\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// +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 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 stat_freebsd11_t struct {\n\tDev     uint32\n\tIno     uint32\n\tMode    uint16\n\tNlink   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\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBtim    Timespec\n\t_       [8]byte\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 statfs_freebsd11_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 [88]byte\n\tMntonname   [88]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 dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\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 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\tSizeofLinger           = 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_ATTACH     = 0xa\n\tPTRACE_CONT       = 0x7\n\tPTRACE_DETACH     = 0xb\n\tPTRACE_GETFPREGS  = 0x23\n\tPTRACE_GETFSBASE  = 0x47\n\tPTRACE_GETLWPLIST = 0xf\n\tPTRACE_GETNUMLWPS = 0xe\n\tPTRACE_GETREGS    = 0x21\n\tPTRACE_GETXSTATE  = 0x45\n\tPTRACE_IO         = 0xc\n\tPTRACE_KILL       = 0x8\n\tPTRACE_LWPEVENTS  = 0x18\n\tPTRACE_LWPINFO    = 0xd\n\tPTRACE_SETFPREGS  = 0x24\n\tPTRACE_SETREGS    = 0x22\n\tPTRACE_SINGLESTEP = 0x9\n\tPTRACE_TRACEME    = 0x0\n)\n\nconst (\n\tPIOD_READ_D  = 0x1\n\tPIOD_WRITE_D = 0x2\n\tPIOD_READ_I  = 0x3\n\tPIOD_WRITE_I = 0x4\n)\n\nconst (\n\tPL_FLAG_BORN   = 0x100\n\tPL_FLAG_EXITED = 0x200\n\tPL_FLAG_SI     = 0x20\n)\n\nconst (\n\tTRAP_BRKPT = 0x1\n\tTRAP_TRACE = 0x2\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __Siginfo\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 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 PtraceIoDesc struct {\n\tOp   int32\n\tOffs *byte\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   int32\n\tUdata  *byte\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_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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)\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// +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 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 stat_freebsd11_t struct {\n\tDev     uint32\n\tIno     uint32\n\tMode    uint16\n\tNlink   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\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBtim    Timespec\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 statfs_freebsd11_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 [88]byte\n\tMntonname   [88]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 dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\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 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\tSizeofLinger           = 0x8\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_ATTACH     = 0xa\n\tPTRACE_CONT       = 0x7\n\tPTRACE_DETACH     = 0xb\n\tPTRACE_GETFPREGS  = 0x23\n\tPTRACE_GETFSBASE  = 0x47\n\tPTRACE_GETLWPLIST = 0xf\n\tPTRACE_GETNUMLWPS = 0xe\n\tPTRACE_GETREGS    = 0x21\n\tPTRACE_GETXSTATE  = 0x45\n\tPTRACE_IO         = 0xc\n\tPTRACE_KILL       = 0x8\n\tPTRACE_LWPEVENTS  = 0x18\n\tPTRACE_LWPINFO    = 0xd\n\tPTRACE_SETFPREGS  = 0x24\n\tPTRACE_SETREGS    = 0x22\n\tPTRACE_SINGLESTEP = 0x9\n\tPTRACE_TRACEME    = 0x0\n)\n\nconst (\n\tPIOD_READ_D  = 0x1\n\tPIOD_WRITE_D = 0x2\n\tPIOD_READ_I  = 0x3\n\tPIOD_WRITE_I = 0x4\n)\n\nconst (\n\tPL_FLAG_BORN   = 0x100\n\tPL_FLAG_EXITED = 0x200\n\tPL_FLAG_SI     = 0x20\n)\n\nconst (\n\tTRAP_BRKPT = 0x1\n\tTRAP_TRACE = 0x2\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __Siginfo\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 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 PtraceIoDesc struct {\n\tOp   int32\n\tOffs *byte\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}\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_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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)\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// +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 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 stat_freebsd11_t struct {\n\tDev     uint32\n\tIno     uint32\n\tMode    uint16\n\tNlink   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\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBtim    Timespec\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]int8\n\tMntfromname [1024]int8\n\tMntonname   [1024]int8\n}\n\ntype statfs_freebsd11_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]int8\n\tMntfromname [88]int8\n\tMntonname   [88]int8\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 dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\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 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\tSizeofLinger           = 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_ATTACH     = 0xa\n\tPTRACE_CONT       = 0x7\n\tPTRACE_DETACH     = 0xb\n\tPTRACE_GETFPREGS  = 0x23\n\tPTRACE_GETFSBASE  = 0x47\n\tPTRACE_GETLWPLIST = 0xf\n\tPTRACE_GETNUMLWPS = 0xe\n\tPTRACE_GETREGS    = 0x21\n\tPTRACE_GETXSTATE  = 0x45\n\tPTRACE_IO         = 0xc\n\tPTRACE_KILL       = 0x8\n\tPTRACE_LWPEVENTS  = 0x18\n\tPTRACE_LWPINFO    = 0xd\n\tPTRACE_SETFPREGS  = 0x24\n\tPTRACE_SETREGS    = 0x22\n\tPTRACE_SINGLESTEP = 0x9\n\tPTRACE_TRACEME    = 0x0\n)\n\nconst (\n\tPIOD_READ_D  = 0x1\n\tPIOD_WRITE_D = 0x2\n\tPIOD_READ_I  = 0x3\n\tPIOD_WRITE_I = 0x4\n)\n\nconst (\n\tPL_FLAG_BORN   = 0x100\n\tPL_FLAG_EXITED = 0x200\n\tPL_FLAG_SI     = 0x20\n)\n\nconst (\n\tTRAP_BRKPT = 0x1\n\tTRAP_TRACE = 0x2\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __Siginfo\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\tX_reason [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR      [13]uint32\n\tR_sp   uint32\n\tR_lr   uint32\n\tR_pc   uint32\n\tR_cpsr uint32\n}\n\ntype FpReg struct {\n\tFpr_fpsr uint32\n\tFpr      [8][3]uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs *byte\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   int32\n\tUdata  *byte\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_       [2]byte\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\t_       [2]byte\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_       [2]byte\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 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_       [2]byte\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_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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)\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// +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 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 stat_freebsd11_t struct {\n\tDev     uint32\n\tIno     uint32\n\tMode    uint16\n\tNlink   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\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBtim    Timespec\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 statfs_freebsd11_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 [88]byte\n\tMntonname   [88]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 dirent_freebsd11 struct {\n\tFileno uint32\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\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 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\tSizeofLinger           = 0x8\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_ATTACH     = 0xa\n\tPTRACE_CONT       = 0x7\n\tPTRACE_DETACH     = 0xb\n\tPTRACE_GETFPREGS  = 0x23\n\tPTRACE_GETLWPLIST = 0xf\n\tPTRACE_GETNUMLWPS = 0xe\n\tPTRACE_GETREGS    = 0x21\n\tPTRACE_IO         = 0xc\n\tPTRACE_KILL       = 0x8\n\tPTRACE_LWPEVENTS  = 0x18\n\tPTRACE_LWPINFO    = 0xd\n\tPTRACE_SETFPREGS  = 0x24\n\tPTRACE_SETREGS    = 0x22\n\tPTRACE_SINGLESTEP = 0x9\n\tPTRACE_TRACEME    = 0x0\n)\n\nconst (\n\tPIOD_READ_D  = 0x1\n\tPIOD_WRITE_D = 0x2\n\tPIOD_READ_I  = 0x3\n\tPIOD_WRITE_I = 0x4\n)\n\nconst (\n\tPL_FLAG_BORN   = 0x100\n\tPL_FLAG_EXITED = 0x200\n\tPL_FLAG_SI     = 0x20\n)\n\nconst (\n\tTRAP_BRKPT = 0x1\n\tTRAP_TRACE = 0x2\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __Siginfo\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 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 PtraceIoDesc struct {\n\tOp   int32\n\tOffs *byte\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}\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_REMOVEDIR        = 0x800\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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)\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.go; DO NOT EDIT.\n\n// +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\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\t_               [14]uint64\n}\n\ntype Fsid struct {\n\tVal [2]int32\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\t_                         [4]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\t_        [8]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 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\tZero      [4]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 _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}\n\ntype CanFilter struct {\n\tId   uint32\n\tMask 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\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           = 0x68\n\tSizeofCanFilter         = 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\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_MAX                = 0x36\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\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\tSizeofNlMsghdr          = 0x10\n\tSizeofNlMsgerr          = 0x14\n\tSizeofRtGenmsg          = 0x1\n\tSizeofNlAttr            = 0x4\n\tSizeofRtAttr            = 0x4\n\tSizeofIfInfomsg         = 0x10\n\tSizeofIfAddrmsg         = 0x8\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 IfAddrmsg struct {\n\tFamily    uint8\n\tPrefixlen uint8\n\tFlags     uint8\n\tScope     uint8\n\tIndex     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\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\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_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\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 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\nconst PERF_IOC_FLAG_GROUP = 0x1\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_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_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)\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}\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_              [948]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)\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\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\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\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\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS   = 0x1\n\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\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\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\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\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\n\tPERF_CONTEXT_HV     = -0x20\n\tPERF_CONTEXT_KERNEL = -0x80\n\tPERF_CONTEXT_USER   = -0x200\n\n\tPERF_CONTEXT_GUEST        = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL = -0x880\n\tPERF_CONTEXT_GUEST_USER   = -0xa00\n\n\tPERF_FLAG_FD_NO_GROUP = 0x1\n\tPERF_FLAG_FD_OUTPUT   = 0x2\n\tPERF_FLAG_PID_CGROUP  = 0x4\n\tPERF_FLAG_FD_CLOEXEC  = 0x8\n)\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\t_         uint32\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\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_NUMHOOKS = 0x1\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\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_MAX                       = 0x19\n\tNFTA_LIST_UNPEC                   = 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_CSUM_NONE             = 0x0\n\tNFT_PAYLOAD_CSUM_INET             = 0x1\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\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\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)\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 XDPStatistics struct {\n\tRx_dropped       uint64\n\tRx_invalid_descs uint64\n\tTx_invalid_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\n\tSOF_TIMESTAMPING_LAST = 0x4000\n\tSOF_TIMESTAMPING_MASK = 0x7fff\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_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_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_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           = 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_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_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_STACK_BUILD_ID_EMPTY              = 0x0\n\tBPF_STACK_BUILD_ID_VALID              = 0x1\n\tBPF_STACK_BUILD_ID_IP                 = 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_OK                                = 0x0\n\tBPF_DROP                              = 0x2\n\tBPF_REDIRECT                          = 0x7\n\tBPF_LWT_REROUTE                       = 0x80\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_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                    = 0xd\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_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)\n\nconst (\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)\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}\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_MAX                           = 0x44\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_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_MAX                          = 0x8c\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)\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\ntype NexthopGrp struct {\n\tId     uint32\n\tWeight uint8\n\tResvd1 uint8\n\tResvd2 uint16\n}\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\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_                         [4]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}\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\t_      [122]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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_       [4]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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\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_                         [4]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}\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\t_      [122]uint8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/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// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\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_                         [4]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}\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\t_      [122]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\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_                         [4]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}\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\t_      [122]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]uint8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]uint8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]uint8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/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// +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\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\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\nconst (\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\t_             [0]uint64\n\t_             [32]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\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "path": "vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n// +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\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\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\nconst (\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\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\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}\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\t_      [118]int8\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 XDPUmemReg struct {\n\tAddr     uint64\n\tLen      uint64\n\tSize     uint32\n\tHeadroom uint32\n\tFlags    uint32\n\t_        [4]byte\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"
  },
  {
    "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// +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\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_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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 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// +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\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_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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 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// +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]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\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_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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 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// +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\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_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x200\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 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// +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        uint32\n\tFlags          uint32\n\tGen            uint32\n\tX__st_birthtim 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]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\n\tPad_cgo_0     [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\tX__d_padding [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\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         = 0xec\n\tSizeofIfData           = 0xd4\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\tPad          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\tCapabilities uint32\n\tLastchange   Timeval\n\tMclpool      [7]Mclpool\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\tGrown int32\n\tAlive uint16\n\tHwm   uint16\n\tCwm   uint16\n\tLwm   uint16\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\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 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\tPad_cgo_0 [2]byte\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_SYMLINK_FOLLOW   = 0x4\n\tAT_SYMLINK_NOFOLLOW = 0x2\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\tAnonpages          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\tNanonneeded        int32\n\tNfreeanon          int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tObsolete_swapins   int32\n\tObsolete_swapouts  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\tZeroaborts         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\tPdreanon           int32\n\tPdrevnode          int32\n\tPdrevtext          int32\n\tFpswtch            int32\n\tKmapent            int32\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_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// +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_       [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]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\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\t_          [4]byte\n\tIov        *Iovec\n\tIovlen     uint32\n\t_          [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 = 0x20\n\tSizeofLinger           = 0x8\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\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\ntype Mclpool struct{}\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\t_     [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\t_       [2]byte\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_SYMLINK_FOLLOW   = 0x4\n\tAT_SYMLINK_NOFOLLOW = 0x2\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\tAnonpages          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\tNanonneeded        int32\n\tNfreeanon          int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tObsolete_swapins   int32\n\tObsolete_swapouts  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\tZeroaborts         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\tPdreanon           int32\n\tPdrevnode          int32\n\tPdrevtext          int32\n\tFpswtch            int32\n\tKmapent            int32\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_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// +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]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\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\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\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\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 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\t_       [2]byte\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_SYMLINK_FOLLOW   = 0x4\n\tAT_SYMLINK_NOFOLLOW = 0x2\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 = 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_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// +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]int8\n\tF_mntonname   [90]int8\n\tF_mntfromname [90]int8\n\tF_mntfromspec [90]int8\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\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     = 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  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\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_SYMLINK_FOLLOW   = 0x4\n\tAT_SYMLINK_NOFOLLOW = 0x2\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 = 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_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// +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\t_       [4]byte\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\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\tX__sin6_src_id 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 *int8\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\t_            [4]byte\n\tIov          *Iovec\n\tIovlen       int32\n\t_            [4]byte\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\tX__icmp6_filt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\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\t_       [2]byte\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\t_          [1]byte\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\t_       [2]byte\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       [2]byte\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\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\t_     [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 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"
  },
  {
    "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// +build windows\n// +build go1.9\n\npackage windows\n\nimport \"syscall\"\n\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\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 LazyDLL\n// with System set to true, 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 failes.\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// 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\tswitch len(a) {\n\tcase 0:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)\n\tcase 1:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)\n\tcase 2:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)\n\tcase 3:\n\t\treturn syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])\n\tcase 4:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)\n\tcase 5:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)\n\tcase 6:\n\t\treturn syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])\n\tcase 7:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)\n\tcase 8:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)\n\tcase 9:\n\t\treturn syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])\n\tcase 10:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)\n\tcase 11:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)\n\tcase 12:\n\t\treturn syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])\n\tcase 13:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)\n\tcase 14:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)\n\tcase 15:\n\t\treturn syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])\n\tdefault:\n\t\tpanic(\"Call \" + p.Name + \" with too many arguments \" + itoa(len(a)) + \".\")\n\t}\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.\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\tconst LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800\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\ntype errString string\n\nfunc (s errString) Error() string { return string(s) }\n"
  },
  {
    "path": "vendor/golang.org/x/sys/windows/empty.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// +build !go1.12\n\n// This file is here to allow bodyless functions with go:linkname for Go 1.11\n// and earlier (see https://golang.org/issue/23311).\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\"unicode/utf16\"\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\tblockp := uintptr(unsafe.Pointer(block))\n\tfor {\n\t\tentry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:]\n\t\tfor i, v := range entry {\n\t\t\tif v == 0 {\n\t\t\t\tentry = entry[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(entry) == 0 {\n\t\t\tbreak\n\t\t}\n\t\tenv = append(env, string(utf16.Decode(entry)))\n\t\tblockp += 2 * (uintptr(len(entry)) + 1)\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// +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\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\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\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"
  },
  {
    "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          = 0x01\n\tPAGE_READONLY          = 0x02\n\tPAGE_READWRITE         = 0x04\n\tPAGE_WRITECOPY         = 0x08\n\tPAGE_EXECUTE_READ      = 0x20\n\tPAGE_EXECUTE_READWRITE = 0x40\n\tPAGE_EXECUTE_WRITECOPY = 0x80\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; }\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\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// +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\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// +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// +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\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\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\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\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 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// 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) = 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\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\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 UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(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 = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0]))\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(&make([]byte, daclSize)[0]))\n\t}\n\tif saclSize > 0 {\n\t\tsacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0]))\n\t}\n\tif ownerSize > 0 {\n\t\towner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0]))\n\t}\n\tif groupSize > 0 {\n\t\tgroup = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0]))\n\t}\n\terr = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize,\n\t\tdacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize)\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\tsdBytes := make([]byte, selfRelativeSD.Length())\n\tcopy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)])\n\treturn (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[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.\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\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)])\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// +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\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\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\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\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\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 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\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"
  },
  {
    "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// +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// +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\"syscall\"\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\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == 0 {\n\t\t\treturn nil, syscall.EINVAL\n\t\t}\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// 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\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype Handle uintptr\n\nconst (\n\tInvalidHandle = ^Handle(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 values of SleepEx and other APC functions\n\tSTATUS_USER_APC    = 0x000000C0\n\tWAIT_IO_COMPLETION = STATUS_USER_APC\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\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == 0 {\n\t\t\treturn nil, syscall.EINVAL\n\t\t}\n\t}\n\treturn utf16.Encode([]rune(s + \"\\x00\")), nil\n}\n\n// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,\n// with a terminating NUL removed.\nfunc UTF16ToString(s []uint16) string {\n\tfor i, v := range s {\n\t\tif v == 0 {\n\t\t\ts = s[0:i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn string(utf16.Decode(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\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 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 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\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\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)\n//sys\tWriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)\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\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\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 uint32, threadcnt uint32) (handle Handle, err error)\n//sys\tGetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error)\n//sys\tPostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, 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\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\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) (err error) = 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\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\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 *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW\n//sys\tLocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]\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\tCreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = 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\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\tCertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW\n//sys   CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore\n//sys\tCertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore\n//sys   CertAddCertificateContextToStore(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   CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain\n//sys   CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain\n//sys   CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext\n//sys   CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext\n//sys   CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy\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\tGetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId\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\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\tCreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot\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) = kernel32.CreateEventW\n//sys\tCreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = 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) = kernel32.CreateMutexW\n//sys\tCreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = 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\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\tOpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)\n//sys\tSetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost\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\tMessageBox(hwnd Handle, 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\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\trtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion\n//sys\trtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers\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\n// Process Status API (PSAPI)\n//sys\tEnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses\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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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\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 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\tif raceenabled && done > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), int(done))\n\t}\n\treturn int(done), nil\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\tCloseOnExec(r)\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\tcuroffset, e := Seek(fd, 0, 1)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer Seek(fd, curoffset, 0)\n\t_, e = Seek(fd, length, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\te = SetEndOfFile(fd)\n\tif e != nil {\n\t\treturn e\n\t}\n\treturn nil\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 Close(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 Close(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\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\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\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\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\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\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), 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\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), 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] == '@' {\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 (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\tbytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]\n\t\tsa.Name = string(bytes)\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, 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 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\trsa, l, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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) { return -1, syscall.EWINDOWS }\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}\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}\nfunc SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn syscall.EWINDOWS\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\ntype Signal int\n\nfunc (s Signal) Signal() {}\n\nfunc (s Signal) String() string {\n\tif 0 <= s && int(s) < len(signals) {\n\t\tstr := signals[s]\n\t\tif str != \"\" {\n\t\t\treturn str\n\t\t}\n\t}\n\treturn \"signal \" + itoa(int(s))\n}\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 UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(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"
  },
  {
    "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\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\nconst (\n\tFILE_LIST_DIRECTORY   = 0x00000001\n\tFILE_APPEND_DATA      = 0x00000004\n\tFILE_WRITE_ATTRIBUTES = 0x00000100\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_COMPUTERNAME_LENGTH = 15\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_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// 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// filters for ReadDirectoryChangesW\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\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\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\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/* 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/* 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\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\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\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\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 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 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\n\t// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460\n\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\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\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\n\tSHUT_RD   = 0\n\tSHUT_WR   = 1\n\tSHUT_RDWR = 2\n\n\tWSADESCRIPTION_LEN = 256\n\tWSASYS_STATUS_LEN  = 128\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\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\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\t// Not implemented\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\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_GET_REPARSE_POINT          = 0x900A8\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\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\nconst GAA_FLAG_INCLUDE_PREFIX = 0x00000010\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\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\t/* more fields might be present here. */\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\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\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 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\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\n\tJobObjectAssociateCompletionPortInformation = 7\n\tJobObjectBasicLimitInformation              = 2\n\tJobObjectBasicUIRestrictions                = 4\n\tJobObjectCpuRateControlInformation          = 15\n\tJobObjectEndOfJobTimeInformation            = 6\n\tJobObjectExtendedLimitInformation           = 9\n\tJobObjectGroupInformation                   = 11\n\tJobObjectGroupInformationEx                 = 14\n\tJobObjectLimitViolationInformation2         = 35\n\tJobObjectNetRateControlInformation          = 32\n\tJobObjectNotificationLimitInformation       = 12\n\tJobObjectNotificationLimitInformation2      = 34\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"
  },
  {
    "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"
  },
  {
    "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"
  },
  {
    "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"
  },
  {
    "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_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_CRITICAL_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_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_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_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_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_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\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\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_CRITICAL_THREAD                                                                  = ERROR_TIME_CRITICAL_THREAD\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_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_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_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\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\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\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)\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)\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 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\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocRegisterEventSourceW                                 = modadvapi32.NewProc(\"RegisterEventSourceW\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocReportEventW                                         = modadvapi32.NewProc(\"ReportEventW\")\n\tprocOpenSCManagerW                                       = modadvapi32.NewProc(\"OpenSCManagerW\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocOpenServiceW                                         = modadvapi32.NewProc(\"OpenServiceW\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocStartServiceW                                        = modadvapi32.NewProc(\"StartServiceW\")\n\tprocQueryServiceStatus                                   = modadvapi32.NewProc(\"QueryServiceStatus\")\n\tprocQueryServiceLockStatusW                              = modadvapi32.NewProc(\"QueryServiceLockStatusW\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocStartServiceCtrlDispatcherW                          = modadvapi32.NewProc(\"StartServiceCtrlDispatcherW\")\n\tprocSetServiceStatus                                     = modadvapi32.NewProc(\"SetServiceStatus\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocQueryServiceConfigW                                  = modadvapi32.NewProc(\"QueryServiceConfigW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocQueryServiceConfig2W                                 = modadvapi32.NewProc(\"QueryServiceConfig2W\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocQueryServiceStatusEx                                 = modadvapi32.NewProc(\"QueryServiceStatusEx\")\n\tprocNotifyServiceStatusChangeW                           = modadvapi32.NewProc(\"NotifyServiceStatusChangeW\")\n\tprocGetLastError                                         = modkernel32.NewProc(\"GetLastError\")\n\tprocLoadLibraryW                                         = modkernel32.NewProc(\"LoadLibraryW\")\n\tprocLoadLibraryExW                                       = modkernel32.NewProc(\"LoadLibraryExW\")\n\tprocFreeLibrary                                          = modkernel32.NewProc(\"FreeLibrary\")\n\tprocGetProcAddress                                       = modkernel32.NewProc(\"GetProcAddress\")\n\tprocGetModuleFileNameW                                   = modkernel32.NewProc(\"GetModuleFileNameW\")\n\tprocGetModuleHandleExW                                   = modkernel32.NewProc(\"GetModuleHandleExW\")\n\tprocGetVersion                                           = modkernel32.NewProc(\"GetVersion\")\n\tprocFormatMessageW                                       = modkernel32.NewProc(\"FormatMessageW\")\n\tprocExitProcess                                          = modkernel32.NewProc(\"ExitProcess\")\n\tprocIsWow64Process                                       = modkernel32.NewProc(\"IsWow64Process\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocReadFile                                             = modkernel32.NewProc(\"ReadFile\")\n\tprocWriteFile                                            = modkernel32.NewProc(\"WriteFile\")\n\tprocGetOverlappedResult                                  = modkernel32.NewProc(\"GetOverlappedResult\")\n\tprocSetFilePointer                                       = modkernel32.NewProc(\"SetFilePointer\")\n\tprocCloseHandle                                          = modkernel32.NewProc(\"CloseHandle\")\n\tprocGetStdHandle                                         = modkernel32.NewProc(\"GetStdHandle\")\n\tprocSetStdHandle                                         = modkernel32.NewProc(\"SetStdHandle\")\n\tprocFindFirstFileW                                       = modkernel32.NewProc(\"FindFirstFileW\")\n\tprocFindNextFileW                                        = modkernel32.NewProc(\"FindNextFileW\")\n\tprocFindClose                                            = modkernel32.NewProc(\"FindClose\")\n\tprocGetFileInformationByHandle                           = modkernel32.NewProc(\"GetFileInformationByHandle\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetCurrentDirectoryW                                 = modkernel32.NewProc(\"GetCurrentDirectoryW\")\n\tprocSetCurrentDirectoryW                                 = modkernel32.NewProc(\"SetCurrentDirectoryW\")\n\tprocCreateDirectoryW                                     = modkernel32.NewProc(\"CreateDirectoryW\")\n\tprocRemoveDirectoryW                                     = modkernel32.NewProc(\"RemoveDirectoryW\")\n\tprocDeleteFileW                                          = modkernel32.NewProc(\"DeleteFileW\")\n\tprocMoveFileW                                            = modkernel32.NewProc(\"MoveFileW\")\n\tprocMoveFileExW                                          = modkernel32.NewProc(\"MoveFileExW\")\n\tprocLockFileEx                                           = modkernel32.NewProc(\"LockFileEx\")\n\tprocUnlockFileEx                                         = modkernel32.NewProc(\"UnlockFileEx\")\n\tprocGetComputerNameW                                     = modkernel32.NewProc(\"GetComputerNameW\")\n\tprocGetComputerNameExW                                   = modkernel32.NewProc(\"GetComputerNameExW\")\n\tprocSetEndOfFile                                         = modkernel32.NewProc(\"SetEndOfFile\")\n\tprocGetSystemTimeAsFileTime                              = modkernel32.NewProc(\"GetSystemTimeAsFileTime\")\n\tprocGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc(\"GetSystemTimePreciseAsFileTime\")\n\tprocGetTimeZoneInformation                               = modkernel32.NewProc(\"GetTimeZoneInformation\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocPostQueuedCompletionStatus                           = modkernel32.NewProc(\"PostQueuedCompletionStatus\")\n\tprocCancelIo                                             = modkernel32.NewProc(\"CancelIo\")\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocCreateProcessW                                       = modkernel32.NewProc(\"CreateProcessW\")\n\tprocOpenProcess                                          = modkernel32.NewProc(\"OpenProcess\")\n\tprocShellExecuteW                                        = modshell32.NewProc(\"ShellExecuteW\")\n\tprocSHGetKnownFolderPath                                 = modshell32.NewProc(\"SHGetKnownFolderPath\")\n\tprocTerminateProcess                                     = modkernel32.NewProc(\"TerminateProcess\")\n\tprocGetExitCodeProcess                                   = modkernel32.NewProc(\"GetExitCodeProcess\")\n\tprocGetStartupInfoW                                      = modkernel32.NewProc(\"GetStartupInfoW\")\n\tprocGetProcessTimes                                      = modkernel32.NewProc(\"GetProcessTimes\")\n\tprocDuplicateHandle                                      = modkernel32.NewProc(\"DuplicateHandle\")\n\tprocWaitForSingleObject                                  = modkernel32.NewProc(\"WaitForSingleObject\")\n\tprocWaitForMultipleObjects                               = modkernel32.NewProc(\"WaitForMultipleObjects\")\n\tprocGetTempPathW                                         = modkernel32.NewProc(\"GetTempPathW\")\n\tprocCreatePipe                                           = modkernel32.NewProc(\"CreatePipe\")\n\tprocGetFileType                                          = modkernel32.NewProc(\"GetFileType\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocGetEnvironmentStringsW                               = modkernel32.NewProc(\"GetEnvironmentStringsW\")\n\tprocFreeEnvironmentStringsW                              = modkernel32.NewProc(\"FreeEnvironmentStringsW\")\n\tprocGetEnvironmentVariableW                              = modkernel32.NewProc(\"GetEnvironmentVariableW\")\n\tprocSetEnvironmentVariableW                              = modkernel32.NewProc(\"SetEnvironmentVariableW\")\n\tprocCreateEnvironmentBlock                               = moduserenv.NewProc(\"CreateEnvironmentBlock\")\n\tprocDestroyEnvironmentBlock                              = moduserenv.NewProc(\"DestroyEnvironmentBlock\")\n\tprocGetTickCount64                                       = modkernel32.NewProc(\"GetTickCount64\")\n\tprocSetFileTime                                          = modkernel32.NewProc(\"SetFileTime\")\n\tprocGetFileAttributesW                                   = modkernel32.NewProc(\"GetFileAttributesW\")\n\tprocSetFileAttributesW                                   = modkernel32.NewProc(\"SetFileAttributesW\")\n\tprocGetFileAttributesExW                                 = modkernel32.NewProc(\"GetFileAttributesExW\")\n\tprocGetCommandLineW                                      = modkernel32.NewProc(\"GetCommandLineW\")\n\tprocCommandLineToArgvW                                   = modshell32.NewProc(\"CommandLineToArgvW\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocSetHandleInformation                                 = modkernel32.NewProc(\"SetHandleInformation\")\n\tprocFlushFileBuffers                                     = modkernel32.NewProc(\"FlushFileBuffers\")\n\tprocGetFullPathNameW                                     = modkernel32.NewProc(\"GetFullPathNameW\")\n\tprocGetLongPathNameW                                     = modkernel32.NewProc(\"GetLongPathNameW\")\n\tprocGetShortPathNameW                                    = modkernel32.NewProc(\"GetShortPathNameW\")\n\tprocCreateFileMappingW                                   = modkernel32.NewProc(\"CreateFileMappingW\")\n\tprocMapViewOfFile                                        = modkernel32.NewProc(\"MapViewOfFile\")\n\tprocUnmapViewOfFile                                      = modkernel32.NewProc(\"UnmapViewOfFile\")\n\tprocFlushViewOfFile                                      = modkernel32.NewProc(\"FlushViewOfFile\")\n\tprocVirtualLock                                          = modkernel32.NewProc(\"VirtualLock\")\n\tprocVirtualUnlock                                        = modkernel32.NewProc(\"VirtualUnlock\")\n\tprocVirtualAlloc                                         = modkernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualFree                                          = modkernel32.NewProc(\"VirtualFree\")\n\tprocVirtualProtect                                       = modkernel32.NewProc(\"VirtualProtect\")\n\tprocTransmitFile                                         = modmswsock.NewProc(\"TransmitFile\")\n\tprocReadDirectoryChangesW                                = modkernel32.NewProc(\"ReadDirectoryChangesW\")\n\tprocCertOpenSystemStoreW                                 = modcrypt32.NewProc(\"CertOpenSystemStoreW\")\n\tprocCertOpenStore                                        = modcrypt32.NewProc(\"CertOpenStore\")\n\tprocCertEnumCertificatesInStore                          = modcrypt32.NewProc(\"CertEnumCertificatesInStore\")\n\tprocCertAddCertificateContextToStore                     = modcrypt32.NewProc(\"CertAddCertificateContextToStore\")\n\tprocCertCloseStore                                       = modcrypt32.NewProc(\"CertCloseStore\")\n\tprocCertGetCertificateChain                              = modcrypt32.NewProc(\"CertGetCertificateChain\")\n\tprocCertFreeCertificateChain                             = modcrypt32.NewProc(\"CertFreeCertificateChain\")\n\tprocCertCreateCertificateContext                         = modcrypt32.NewProc(\"CertCreateCertificateContext\")\n\tprocCertFreeCertificateContext                           = modcrypt32.NewProc(\"CertFreeCertificateContext\")\n\tprocCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc(\"CertVerifyCertificateChainPolicy\")\n\tprocRegOpenKeyExW                                        = modadvapi32.NewProc(\"RegOpenKeyExW\")\n\tprocRegCloseKey                                          = modadvapi32.NewProc(\"RegCloseKey\")\n\tprocRegQueryInfoKeyW                                     = modadvapi32.NewProc(\"RegQueryInfoKeyW\")\n\tprocRegEnumKeyExW                                        = modadvapi32.NewProc(\"RegEnumKeyExW\")\n\tprocRegQueryValueExW                                     = modadvapi32.NewProc(\"RegQueryValueExW\")\n\tprocGetCurrentProcessId                                  = modkernel32.NewProc(\"GetCurrentProcessId\")\n\tprocGetConsoleMode                                       = modkernel32.NewProc(\"GetConsoleMode\")\n\tprocSetConsoleMode                                       = modkernel32.NewProc(\"SetConsoleMode\")\n\tprocGetConsoleScreenBufferInfo                           = modkernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocWriteConsoleW                                        = modkernel32.NewProc(\"WriteConsoleW\")\n\tprocReadConsoleW                                         = modkernel32.NewProc(\"ReadConsoleW\")\n\tprocCreateToolhelp32Snapshot                             = modkernel32.NewProc(\"CreateToolhelp32Snapshot\")\n\tprocProcess32FirstW                                      = modkernel32.NewProc(\"Process32FirstW\")\n\tprocProcess32NextW                                       = modkernel32.NewProc(\"Process32NextW\")\n\tprocThread32First                                        = modkernel32.NewProc(\"Thread32First\")\n\tprocThread32Next                                         = modkernel32.NewProc(\"Thread32Next\")\n\tprocDeviceIoControl                                      = modkernel32.NewProc(\"DeviceIoControl\")\n\tprocCreateSymbolicLinkW                                  = modkernel32.NewProc(\"CreateSymbolicLinkW\")\n\tprocCreateHardLinkW                                      = modkernel32.NewProc(\"CreateHardLinkW\")\n\tprocGetCurrentThreadId                                   = modkernel32.NewProc(\"GetCurrentThreadId\")\n\tprocCreateEventW                                         = modkernel32.NewProc(\"CreateEventW\")\n\tprocCreateEventExW                                       = modkernel32.NewProc(\"CreateEventExW\")\n\tprocOpenEventW                                           = modkernel32.NewProc(\"OpenEventW\")\n\tprocSetEvent                                             = modkernel32.NewProc(\"SetEvent\")\n\tprocResetEvent                                           = modkernel32.NewProc(\"ResetEvent\")\n\tprocPulseEvent                                           = modkernel32.NewProc(\"PulseEvent\")\n\tprocCreateMutexW                                         = modkernel32.NewProc(\"CreateMutexW\")\n\tprocCreateMutexExW                                       = modkernel32.NewProc(\"CreateMutexExW\")\n\tprocOpenMutexW                                           = modkernel32.NewProc(\"OpenMutexW\")\n\tprocReleaseMutex                                         = modkernel32.NewProc(\"ReleaseMutex\")\n\tprocSleepEx                                              = modkernel32.NewProc(\"SleepEx\")\n\tprocCreateJobObjectW                                     = modkernel32.NewProc(\"CreateJobObjectW\")\n\tprocAssignProcessToJobObject                             = modkernel32.NewProc(\"AssignProcessToJobObject\")\n\tprocTerminateJobObject                                   = modkernel32.NewProc(\"TerminateJobObject\")\n\tprocSetErrorMode                                         = modkernel32.NewProc(\"SetErrorMode\")\n\tprocResumeThread                                         = modkernel32.NewProc(\"ResumeThread\")\n\tprocSetPriorityClass                                     = modkernel32.NewProc(\"SetPriorityClass\")\n\tprocGetPriorityClass                                     = modkernel32.NewProc(\"GetPriorityClass\")\n\tprocSetInformationJobObject                              = modkernel32.NewProc(\"SetInformationJobObject\")\n\tprocGenerateConsoleCtrlEvent                             = modkernel32.NewProc(\"GenerateConsoleCtrlEvent\")\n\tprocGetProcessId                                         = modkernel32.NewProc(\"GetProcessId\")\n\tprocOpenThread                                           = modkernel32.NewProc(\"OpenThread\")\n\tprocSetProcessPriorityBoost                              = modkernel32.NewProc(\"SetProcessPriorityBoost\")\n\tprocDefineDosDeviceW                                     = modkernel32.NewProc(\"DefineDosDeviceW\")\n\tprocDeleteVolumeMountPointW                              = modkernel32.NewProc(\"DeleteVolumeMountPointW\")\n\tprocFindFirstVolumeW                                     = modkernel32.NewProc(\"FindFirstVolumeW\")\n\tprocFindFirstVolumeMountPointW                           = modkernel32.NewProc(\"FindFirstVolumeMountPointW\")\n\tprocFindNextVolumeW                                      = modkernel32.NewProc(\"FindNextVolumeW\")\n\tprocFindNextVolumeMountPointW                            = modkernel32.NewProc(\"FindNextVolumeMountPointW\")\n\tprocFindVolumeClose                                      = modkernel32.NewProc(\"FindVolumeClose\")\n\tprocFindVolumeMountPointClose                            = modkernel32.NewProc(\"FindVolumeMountPointClose\")\n\tprocGetDiskFreeSpaceExW                                  = modkernel32.NewProc(\"GetDiskFreeSpaceExW\")\n\tprocGetDriveTypeW                                        = modkernel32.NewProc(\"GetDriveTypeW\")\n\tprocGetLogicalDrives                                     = modkernel32.NewProc(\"GetLogicalDrives\")\n\tprocGetLogicalDriveStringsW                              = modkernel32.NewProc(\"GetLogicalDriveStringsW\")\n\tprocGetVolumeInformationW                                = modkernel32.NewProc(\"GetVolumeInformationW\")\n\tprocGetVolumeInformationByHandleW                        = modkernel32.NewProc(\"GetVolumeInformationByHandleW\")\n\tprocGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc(\"GetVolumeNameForVolumeMountPointW\")\n\tprocGetVolumePathNameW                                   = modkernel32.NewProc(\"GetVolumePathNameW\")\n\tprocGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc(\"GetVolumePathNamesForVolumeNameW\")\n\tprocQueryDosDeviceW                                      = modkernel32.NewProc(\"QueryDosDeviceW\")\n\tprocSetVolumeLabelW                                      = modkernel32.NewProc(\"SetVolumeLabelW\")\n\tprocSetVolumeMountPointW                                 = modkernel32.NewProc(\"SetVolumeMountPointW\")\n\tprocMessageBoxW                                          = moduser32.NewProc(\"MessageBoxW\")\n\tprocExitWindowsEx                                        = moduser32.NewProc(\"ExitWindowsEx\")\n\tprocInitiateSystemShutdownExW                            = modadvapi32.NewProc(\"InitiateSystemShutdownExW\")\n\tprocSetProcessShutdownParameters                         = modkernel32.NewProc(\"SetProcessShutdownParameters\")\n\tprocGetProcessShutdownParameters                         = modkernel32.NewProc(\"GetProcessShutdownParameters\")\n\tprocCLSIDFromString                                      = modole32.NewProc(\"CLSIDFromString\")\n\tprocStringFromGUID2                                      = modole32.NewProc(\"StringFromGUID2\")\n\tprocCoCreateGuid                                         = modole32.NewProc(\"CoCreateGuid\")\n\tprocCoTaskMemFree                                        = modole32.NewProc(\"CoTaskMemFree\")\n\tprocRtlGetVersion                                        = modntdll.NewProc(\"RtlGetVersion\")\n\tprocRtlGetNtVersionNumbers                               = modntdll.NewProc(\"RtlGetNtVersionNumbers\")\n\tprocGetProcessPreferredUILanguages                       = modkernel32.NewProc(\"GetProcessPreferredUILanguages\")\n\tprocGetThreadPreferredUILanguages                        = modkernel32.NewProc(\"GetThreadPreferredUILanguages\")\n\tprocGetUserPreferredUILanguages                          = modkernel32.NewProc(\"GetUserPreferredUILanguages\")\n\tprocGetSystemPreferredUILanguages                        = modkernel32.NewProc(\"GetSystemPreferredUILanguages\")\n\tprocEnumProcesses                                        = modpsapi.NewProc(\"EnumProcesses\")\n\tprocWSAStartup                                           = modws2_32.NewProc(\"WSAStartup\")\n\tprocWSACleanup                                           = modws2_32.NewProc(\"WSACleanup\")\n\tprocWSAIoctl                                             = modws2_32.NewProc(\"WSAIoctl\")\n\tprocsocket                                               = modws2_32.NewProc(\"socket\")\n\tprocsendto                                               = modws2_32.NewProc(\"sendto\")\n\tprocrecvfrom                                             = modws2_32.NewProc(\"recvfrom\")\n\tprocsetsockopt                                           = modws2_32.NewProc(\"setsockopt\")\n\tprocgetsockopt                                           = modws2_32.NewProc(\"getsockopt\")\n\tprocbind                                                 = modws2_32.NewProc(\"bind\")\n\tprocconnect                                              = modws2_32.NewProc(\"connect\")\n\tprocgetsockname                                          = modws2_32.NewProc(\"getsockname\")\n\tprocgetpeername                                          = modws2_32.NewProc(\"getpeername\")\n\tproclisten                                               = modws2_32.NewProc(\"listen\")\n\tprocshutdown                                             = modws2_32.NewProc(\"shutdown\")\n\tprocclosesocket                                          = modws2_32.NewProc(\"closesocket\")\n\tprocAcceptEx                                             = modmswsock.NewProc(\"AcceptEx\")\n\tprocGetAcceptExSockaddrs                                 = modmswsock.NewProc(\"GetAcceptExSockaddrs\")\n\tprocWSARecv                                              = modws2_32.NewProc(\"WSARecv\")\n\tprocWSASend                                              = modws2_32.NewProc(\"WSASend\")\n\tprocWSARecvFrom                                          = modws2_32.NewProc(\"WSARecvFrom\")\n\tprocWSASendTo                                            = modws2_32.NewProc(\"WSASendTo\")\n\tprocgethostbyname                                        = modws2_32.NewProc(\"gethostbyname\")\n\tprocgetservbyname                                        = modws2_32.NewProc(\"getservbyname\")\n\tprocntohs                                                = modws2_32.NewProc(\"ntohs\")\n\tprocgetprotobyname                                       = modws2_32.NewProc(\"getprotobyname\")\n\tprocDnsQuery_W                                           = moddnsapi.NewProc(\"DnsQuery_W\")\n\tprocDnsRecordListFree                                    = moddnsapi.NewProc(\"DnsRecordListFree\")\n\tprocDnsNameCompare_W                                     = moddnsapi.NewProc(\"DnsNameCompare_W\")\n\tprocGetAddrInfoW                                         = modws2_32.NewProc(\"GetAddrInfoW\")\n\tprocFreeAddrInfoW                                        = modws2_32.NewProc(\"FreeAddrInfoW\")\n\tprocGetIfEntry                                           = modiphlpapi.NewProc(\"GetIfEntry\")\n\tprocGetAdaptersInfo                                      = modiphlpapi.NewProc(\"GetAdaptersInfo\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tprocWSAEnumProtocolsW                                    = modws2_32.NewProc(\"WSAEnumProtocolsW\")\n\tprocGetAdaptersAddresses                                 = modiphlpapi.NewProc(\"GetAdaptersAddresses\")\n\tprocGetACP                                               = modkernel32.NewProc(\"GetACP\")\n\tprocMultiByteToWideChar                                  = modkernel32.NewProc(\"MultiByteToWideChar\")\n\tprocTranslateNameW                                       = modsecur32.NewProc(\"TranslateNameW\")\n\tprocGetUserNameExW                                       = modsecur32.NewProc(\"GetUserNameExW\")\n\tprocNetUserGetInfo                                       = modnetapi32.NewProc(\"NetUserGetInfo\")\n\tprocNetGetJoinInformation                                = modnetapi32.NewProc(\"NetGetJoinInformation\")\n\tprocNetApiBufferFree                                     = modnetapi32.NewProc(\"NetApiBufferFree\")\n\tprocLookupAccountSidW                                    = modadvapi32.NewProc(\"LookupAccountSidW\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocGetLengthSid                                         = modadvapi32.NewProc(\"GetLengthSid\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocIsWellKnownSid                                       = modadvapi32.NewProc(\"IsWellKnownSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocGetSidIdentifierAuthority                            = modadvapi32.NewProc(\"GetSidIdentifierAuthority\")\n\tprocGetSidSubAuthorityCount                              = modadvapi32.NewProc(\"GetSidSubAuthorityCount\")\n\tprocGetSidSubAuthority                                   = modadvapi32.NewProc(\"GetSidSubAuthority\")\n\tprocIsValidSid                                           = modadvapi32.NewProc(\"IsValidSid\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocOpenProcessToken                                     = modadvapi32.NewProc(\"OpenProcessToken\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocSetThreadToken                                       = modadvapi32.NewProc(\"SetThreadToken\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocGetTokenInformation                                  = modadvapi32.NewProc(\"GetTokenInformation\")\n\tprocSetTokenInformation                                  = modadvapi32.NewProc(\"SetTokenInformation\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocGetUserProfileDirectoryW                             = moduserenv.NewProc(\"GetUserProfileDirectoryW\")\n\tprocGetSystemDirectoryW                                  = modkernel32.NewProc(\"GetSystemDirectoryW\")\n\tprocGetWindowsDirectoryW                                 = modkernel32.NewProc(\"GetWindowsDirectoryW\")\n\tprocGetSystemWindowsDirectoryW                           = modkernel32.NewProc(\"GetSystemWindowsDirectoryW\")\n\tprocWTSQueryUserToken                                    = modwtsapi32.NewProc(\"WTSQueryUserToken\")\n\tprocWTSEnumerateSessionsW                                = modwtsapi32.NewProc(\"WTSEnumerateSessionsW\")\n\tprocWTSFreeMemory                                        = modwtsapi32.NewProc(\"WTSFreeMemory\")\n\tprocGetSecurityInfo                                      = modadvapi32.NewProc(\"GetSecurityInfo\")\n\tprocSetSecurityInfo                                      = modadvapi32.NewProc(\"SetSecurityInfo\")\n\tprocGetNamedSecurityInfoW                                = modadvapi32.NewProc(\"GetNamedSecurityInfoW\")\n\tprocSetNamedSecurityInfoW                                = modadvapi32.NewProc(\"SetNamedSecurityInfoW\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocInitializeSecurityDescriptor                         = modadvapi32.NewProc(\"InitializeSecurityDescriptor\")\n\tprocGetSecurityDescriptorControl                         = modadvapi32.NewProc(\"GetSecurityDescriptorControl\")\n\tprocGetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorDacl\")\n\tprocGetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorSacl\")\n\tprocGetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"GetSecurityDescriptorOwner\")\n\tprocGetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"GetSecurityDescriptorGroup\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"GetSecurityDescriptorRMControl\")\n\tprocIsValidSecurityDescriptor                            = modadvapi32.NewProc(\"IsValidSecurityDescriptor\")\n\tprocSetSecurityDescriptorControl                         = modadvapi32.NewProc(\"SetSecurityDescriptorControl\")\n\tprocSetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorDacl\")\n\tprocSetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorSacl\")\n\tprocSetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"SetSecurityDescriptorOwner\")\n\tprocSetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"SetSecurityDescriptorGroup\")\n\tprocSetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"SetSecurityDescriptorRMControl\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocMakeAbsoluteSD                                       = modadvapi32.NewProc(\"MakeAbsoluteSD\")\n\tprocMakeSelfRelativeSD                                   = modadvapi32.NewProc(\"MakeSelfRelativeSD\")\n\tprocSetEntriesInAclW                                     = modadvapi32.NewProc(\"SetEntriesInAclW\")\n)\n\nfunc RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DeregisterEventSource(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procReportEventW.Addr(), 9, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CloseServiceHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall15(procCreateServiceW.Addr(), 13, 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)), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DeleteService(service Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {\n\tr1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall12(procChangeServiceConfigW.Addr(), 11, 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)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall12(procEnumServicesStatusExW.Addr(), 10, 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)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {\n\tr0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, 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 GetLastError() (lasterr error) {\n\tr0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)\n\tif r0 != 0 {\n\t\tlasterr = syscall.Errno(r0)\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.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FreeLibrary(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetVersion() (ver uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)\n\tver = uint32(r0)\n\tif ver == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ExitProcess(exitcode uint32) {\n\tsyscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)\n\t*isWow64 = _p0 != 0\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {\n\tr0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)\n\tnewlowoffset = uint32(r0)\n\tif newlowoffset == 0xffffffff {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CloseHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetStdHandle(stdhandle uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetStdHandle(stdhandle uint32, handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc findNextFile1(handle Handle, data *win32finddata1) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindClose(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetCurrentDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc RemoveDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DeleteFile(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc MoveFile(from *uint16, to *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetComputerName(buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetEndOfFile(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetSystemTimeAsFileTime(time *Filetime) {\n\tsyscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)\n\treturn\n}\n\nfunc GetSystemTimePreciseAsFileTime(time *Filetime) {\n\tsyscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)\n\treturn\n}\n\nfunc GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)\n\trc = uint32(r0)\n\tif rc == 0xffffffff {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CancelIo(s Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CancelIoEx(s Handle, o *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, 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)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procShellExecuteW.Addr(), 6, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {\n\tr0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc TerminateProcess(handle Handle, exitcode uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetStartupInfo(startupInfo *StartupInfo) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFileType(filehandle Handle) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CryptReleaseContext(provhandle Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetEnvironmentStrings() (envs *uint16, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)\n\tenvs = (*uint16)(unsafe.Pointer(r0))\n\tif envs == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FreeEnvironmentStrings(envs *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetEnvironmentVariable(name *uint16, value *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DestroyEnvironmentBlock(block *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getTickCount64() (ms uint64) {\n\tr0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0)\n\tms = uint64(r0)\n\treturn\n}\n\nfunc SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFileAttributes(name *uint16) (attrs uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\tattrs = uint32(r0)\n\tif attrs == INVALID_FILE_ATTRIBUTES {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetFileAttributes(name *uint16, attrs uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetCommandLine() (cmd *uint16) {\n\tr0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)\n\tcmd = (*uint16)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\tr0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))\n\tif argv == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc LocalFree(hmem Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)\n\thandle = Handle(r0)\n\tif handle != 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FlushFileBuffers(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc UnmapViewOfFile(addr uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FlushViewOfFile(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc VirtualLock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc VirtualUnlock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)\n\tvalue = uintptr(r0)\n\tif value == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertCloseStore(store Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertFreeCertificateChain(ctx *CertChainContext) {\n\tsyscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)\n\treturn\n}\n\nfunc CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertFreeCertificateContext(ctx *CertContext) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {\n\tr0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegCloseKey(key Handle) (regerrno error) {\n\tr0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)\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.Syscall12(procRegQueryInfoKeyW.Addr(), 12, 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 RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {\n\tr0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, 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)), 0)\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.Syscall6(procRegQueryValueExW.Addr(), 6, 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 GetCurrentProcessId() (pid uint32) {\n\tr0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)\n\tpid = uint32(r0)\n\treturn\n}\n\nfunc GetConsoleMode(console Handle, mode *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetConsoleMode(console Handle, mode uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))\n\tif r1&0xff == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))\n\tif r1&0xff == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetCurrentThreadId() (id uint32) {\n\tr0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)\n\tid = uint32(r0)\n\treturn\n}\n\nfunc CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ResetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc PulseEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ReleaseMutex(mutex Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)\n\tret = uint32(r0)\n\treturn\n}\n\nfunc CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc AssignProcessToJobObject(job Handle, process Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc TerminateJobObject(job Handle, exitCode uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetErrorMode(mode uint32) (ret uint32) {\n\tr0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0)\n\tret = uint32(r0)\n\treturn\n}\n\nfunc ResumeThread(thread Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)\n\tret = uint32(r0)\n\tif ret == 0xffffffff {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetPriorityClass(process Handle, priorityClass uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetPriorityClass(process Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)\n\tret = uint32(r0)\n\tif ret == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {\n\tr0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)\n\tret = int(r0)\n\tif ret == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetProcessId(process Handle) (id uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)\n\tid = uint32(r0)\n\tif id == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindVolumeClose(findVolume Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetDriveType(rootPathName *uint16) (driveType uint32) {\n\tr0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0)\n\tdriveType = uint32(r0)\n\treturn\n}\n\nfunc GetLogicalDrives() (drivesBitMask uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0)\n\tdrivesBitMask = uint32(r0)\n\tif drivesBitMask == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procGetVolumeInformationW.Addr(), 8, 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), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, 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), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) {\n\tr0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0)\n\tret = int32(r0)\n\tif ret == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ExitWindowsEx(flags uint32, reason uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tvar _p1 uint32\n\tif rebootAfterShutdown {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetProcessShutdownParameters(level uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) {\n\tr0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {\n\tr0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax))\n\tchars = int32(r0)\n\treturn\n}\n\nfunc coCreateGuid(pguid *GUID) (ret error) {\n\tr0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoTaskMemFree(address unsafe.Pointer) {\n\tsyscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0)\n\treturn\n}\n\nfunc rtlGetVersion(info *OsVersionInfoEx) (ret error) {\n\tr0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) {\n\tsyscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber)))\n\treturn\n}\n\nfunc getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {\n\tvar _p0 *uint32\n\tif len(processIds) > 0 {\n\t\t_p0 = &processIds[0]\n\t}\n\tr1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WSAStartup(verreq uint32, data *WSAData) (sockerr error) {\n\tr0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc WSACleanup() (err error) {\n\tr1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procWSAIoctl.Addr(), 9, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc socket(af int32, typ int32, protocol int32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen))\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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.Syscall6(procrecvfrom.Addr(), 6, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc listen(s Handle, backlog int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc shutdown(s Handle, how int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Closesocket(s Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, 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)), 0)\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.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)\n\tif r1 == socket_error {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procWSARecvFrom.Addr(), 9, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall9(procWSASendTo.Addr(), 9, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\th = (*Hostent)(unsafe.Pointer(r0))\n\tif h == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)\n\ts = (*Servent)(unsafe.Pointer(r0))\n\tif s == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc Ntohs(netshort uint16) (u uint16) {\n\tr0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)\n\tu = uint16(r0)\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.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\tp = (*Protoent)(unsafe.Pointer(r0))\n\tif p == nil {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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.Syscall6(procDnsQuery_W.Addr(), 6, 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.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)\n\treturn\n}\n\nfunc DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {\n\tr0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)\n\tsame = r0 != 0\n\treturn\n}\n\nfunc GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {\n\tr0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)\n\tif r0 != 0 {\n\t\tsockerr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeAddrInfoW(addrinfo *AddrinfoW) {\n\tsyscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)\n\treturn\n}\n\nfunc GetIfEntry(pIfRow *MibIfRow) (errcode error) {\n\tr0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)\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.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {\n\tr0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))\n\tn = int32(r0)\n\tif n == -1 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {\n\tr0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetACP() (acp uint32) {\n\tr0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)\n\tacp = uint32(r0)\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.Syscall6(procMultiByteToWideChar.Addr(), 6, 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\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)\n\tif r1&0xff == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))\n\tif r1&0xff == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {\n\tr0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)\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.Syscall(procNetGetJoinInformation.Addr(), 3, 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 NetApiBufferFree(buf *byte) (neterr error) {\n\tr0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif r0 != 0 {\n\t\tneterr = syscall.Errno(r0)\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.Syscall9(procLookupAccountSidW.Addr(), 7, 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)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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.Syscall9(procLookupAccountNameW.Addr(), 7, 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)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {\n\tr1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetLengthSid(sid *SID) (len uint32) {\n\tr0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall12(procAllocateAndInitializeSid.Addr(), 11, 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)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) {\n\tr0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0)\n\tisWellKnown = r0 != 0\n\treturn\n}\n\nfunc FreeSid(sid *SID) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)\n\tif r1 != 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {\n\tr0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)\n\tisEqual = r0 != 0\n\treturn\n}\n\nfunc getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) {\n\tr0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)\n\tauthority = (*SidIdentifierAuthority)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthorityCount(sid *SID) (count *uint8) {\n\tr0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)\n\tcount = (*uint8)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) {\n\tr0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0)\n\tsubAuthority = (*uint32)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc isValidSid(sid *SID) (isValid bool) {\n\tr0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc OpenProcessToken(process Handle, access uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ImpersonateSelf(impersonationlevel uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc RevertToSelf() (err error) {\n\tr1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetThreadToken(thread *Handle, token Token) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) {\n\tr1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0)\n\tlen = uint32(r0)\n\tif len == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WTSQueryUserToken(session uint32, token *Token) (err error) {\n\tr1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc WTSFreeMemory(ptr uintptr) {\n\tsyscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)\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.Syscall9(procGetSecurityInfo.Addr(), 8, 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)), 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\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) {\n\tsyscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)\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.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, 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)), 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\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.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\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.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, 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 initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tvar _p1 uint32\n\tif *daclDefaulted {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)\n\t*daclPresent = _p0 != 0\n\t*daclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tvar _p1 uint32\n\tif *saclDefaulted {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)\n\t*saclPresent = _p0 != 0\n\t*saclDefaulted = _p1 != 0\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))\n\t*ownerDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))\n\t*groupDefaulted = _p0 != 0\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {\n\tr0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)\n\tlen = uint32(r0)\n\treturn\n}\n\nfunc getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {\n\tr0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {\n\tr0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)\n\tisValid = r0 != 0\n\treturn\n}\n\nfunc setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tvar _p1 uint32\n\tif daclDefaulted {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tvar _p1 uint32\n\tif saclDefaulted {\n\t\t_p1 = 1\n\t} else {\n\t\t_p1 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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} else {\n\t\t_p0 = 0\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {\n\tsyscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)\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.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\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.Syscall12(procMakeAbsoluteSD.Addr(), 11, 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)), 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = errnoErr(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {\n\tr0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n"
  }
]